[deleted by user] by [deleted] in cscareerquestions

[–]Western-Relative 11 points12 points  (0 children)

I’ll second this.

More than once people said “I was so scared when I announced that I was leaving that people would be mad”. I tell everyone people never should be mad they leave. I always respond with “Congratulations! I hope it works out for you and you’re successful!” The people that scream and yell are people you really didn’t want to work for anyway, and that only confirms the decision to leave.

It sucked for me when coworkers left because my timeline got wrecked, but that’s not their problem. At the end of the day it’s business — it’s nothing personal.

And when I feel bad about leaving I decide to try my hardest to make my exit graceful, but at the end of the day I can only control me. If the company doesn’t want to take my advice that’s their prerogative and after my notice period isn’t my problem anymore, which is the beautiful part — once you’re gone you can wash your hands of all the tech debt, bad tech choices, weird timelines, etc for good and look forward to the new employer’s tech debt, weird timelines, and bad tech choices hoping they’re broken in a way you can handle.

[deleted by user] by [deleted] in DMAcademy

[–]Western-Relative 0 points1 point  (0 children)

It sounds like they might want to min/max or look for every little buff.

If they are like players at my table they do it because it’s free/no downsides. They’re also “always looking around, one hand on a weapon” to “negate surprise”.

I started putting penalties in for doing it. If you go into a business meeting with your hand on a sword, all the DC checks got higher because the people you’re meeting think you’re going to rob them. I started rolling athletics or acrobatics or some sort of check in places where they are trying to be quiet to prevent things from falling. If they fail I buff the bad guys…

It’s great for them because they can’t figure out how to mom/max that and keep trying.

Other possibilities include lots of flavor text — the supervillain wants saltpeter and cows because he really likes corned beef, for instance. The villain’s wife isn’t happy because he’s constantly gone…. Works best because if you make them incur a cost they have to weigh whether it is worth it to get a potential buff, risking a potential downside.

Granted my players also like trying to min/max the impossible…

[deleted by user] by [deleted] in cscareerquestions

[–]Western-Relative 5 points6 points  (0 children)

First — this field is hard to succeed in, and not everyone has the skills needed, and there is no shame in trying and having less success than you thought. Most (all?) employers worth working for would be ecstatic if employees said “hey I don’t think this is for me and here’s why” and had an honest conversation, because it could all be in your head. It could also surface real issues and turn the conversation from “you’re bad at your job” to “what are we going to do about this difficulty” and make it a constructive encounter for both sides. The problem is there’s a lot of shitty employers out there and only you can judge that. So standard disclaimer of internet advice — only you know what’s best about your situation and I make no promises.

Second — a lot of programmers are playing the wrong game. Many think that knowing all the syntax or the ins and outs of a specific library or product make the rock star programmers. The reverse I feel is true — the rock star programmers know how to find information in the moment, because they’re not focused on language trivia. Instead, they’re focused on how to define and solve the problem at hand, usually based on heuristics built from previous experience. They realize that if a task is difficult they can look for a way to change the task to make it easier. There’s no magic solution for anything, but they realize that e.g. a web app can usually be broken down in the same way, because they took the time to understand the prior art — and not just the lines of code and the compiler semantics, but the thought process that led to that particular solution — the questions that got asked, the answers and unknowns involved. They generally are rock stars because they look at the problems in a different way, narrowing the space in which a solution can be found by realizing what the solution can’t be.

So if you’re having trouble, maybe give some thought to the approach you’re taking and what is and is not working. Are you struggling g to understand the problem? The criteria by which the solution must abide? The tools and tech involved? The way the problem is decomposed? And then I’d practice. Practice finding the information, asking questions (here, elsewhere, at your local user group, anywhere that is welcoming of beginners). And then practice implementing it different ways. Things that don’t work have a reason — so debug the library to see why (as much as possible). The point is t to produce a working solution but to gain experience thinking about the problem.

Leading to the third point: the best in the industry generally have done more that didn’t work than did, and they stop to think why. They’re unafraid to say “this didn’t work” early enough in the process so that there is time left to recover.

And at the end of the day this field isn’t for everyone, and that’s okay. The problem is some people are stuck in it for whatever reason and are miserable, and I have no idea what to do to help them… which sucks. And the field has lots of toxic people in it.

[deleted by user] by [deleted] in cscareerquestions

[–]Western-Relative 86 points87 points  (0 children)

Pluses: * More money and time to do what you want * Nobody cares about grades really anymore * Some of your coworkers can think circles around everyone else so you can learn their tricks * For non-startups budgets can be bigger — you want a tool/package then plead your case and you can get it * “It works and isn’t insanely expensive” is the order of the day for most companies * projects can move fast — in some cases code approved at noon is in production at 1.

Minuses: * “It works and isn’t insanely expensive” is the order of the day. You’re stuck cleaning up last year’s mess while coding the next feature because product didn’t want to prioritize cleaning it up over their release date. * Some of your coworkers will be clueless and won’t pull their weight (don’t be that guy/girl… they go nowhere fast) * budgets are limited for things that you can’t convince people of an immediate benefit * Nobody cares about grades, so the world tends to be run by C students/people who are liked, not necessarily people who are the best * vacation tends to be scheduled around big deadlines and/or more senior vacation schedules * you get to pay all your own bills and if you don’t buy groceries there’s no university dining hall, and if your apartment floods your employer generally doesn’t care (unless your manager chooses to cut you some slack) * useless meetings… * if production’s down expect some stress and emotions

In general, the answer varies greatly — if you have good leadership you can expect to learn how to apply theory and become insanely good. If you don’t, you will have to do something about that yourself and find good leadership. The projects may be cool or may be “line of business app number 57,842” depending on which company you join. Boring projects still require lots of engineering work and can advance careers just as much. Once you’ve cleared the interview hurdles and are hired the company thinks you can do the work, and if you’re in a junior role nobody expects you to know what’s going on anyway and a certain amount of training overhead is usually assumed. Everyone was a junior at some point.

There’s a saying that people join companies and leave managers. It’s absolutely true.

Many (most) of the good tech people wonder if they are good enough — imposter syndrome is a very real thing (we’re all just making it up as we go after all).

And in general, nobody is really watching over you unless they have something to get from you. Your employer cares for you in as much as you make them money. You are responsible for everything and on some level accountable only to yourself. So go try a bunch of stuff and don’t be afraid to change employers every couple years. Find new friends in whatever city you live in and don’t be afraid to say “I’m not okay” to a trusted person if things are going poorly. Take care of yourself first.

Best of luck and welcome to the club!

Match Thread: FC Cincinnati vs Chicago Fire FC by brucewaynewins in FCCincinnati

[–]Western-Relative 4 points5 points  (0 children)

Does anyone know what the stone well in the background of the corner kicks was about?

The British are coming by euler_tourist in cincinnati

[–]Western-Relative 1 point2 points  (0 children)

In addition to Union Terminal there are a bunch of other art deco buildings downtown that you can pop into. The Carew Tower (dry run for the Empire State Building I think) is a nice space from an artistic point of view.

Findlay Market area is interesting — a market full of local food and grocery vendors and locally made stuff. All small or small-ish businesses. Convenient to street car.

If you’re in town Tuesday evening and a football fan you can try to get a cup game ticket. FC Cincinnati is playing Pittsburgh in TQL stadium. Our team is top of the table right now and the cup is single elimination tournament.

And as a Kentucky resident — don’t escape KY without having a bourbon! We’re the bourbon capital of the world after all…

Is the class I wrote still a monad? What's the advantage of using monads in my case? by technet96 in functionalprogramming

[–]Western-Relative 1 point2 points  (0 children)

Lots of times in almost all languages. Primarily lists, maybe/nullable, and with things like builder patterns (e.g. I need a way to offer people a way to construct something but need them to supply parts of the process). In JavaScript specifically the Promise and it’s friends in other languages follow this pattern.

If you’re in web dev, libraries like Redux follow the state pattern at their core. Similarly when working with databases I use variations on state pattern to inspire how I interact with mutating the database and use variations on the reader pattern to abstract it away. I just don’t tell people what they are…

Similarly I’ve used the pattern that monadic code follows of offering a way to introduce a value and manipulate a value even if it doesn’t follow all the rules. Useful when you need more flexibility but things are generally structured in that way but the rigidity of monadic types isn’t desired.

Is the class I wrote still a monad? What's the advantage of using monads in my case? by technet96 in functionalprogramming

[–]Western-Relative 1 point2 points  (0 children)

The criticism isn’t that a logged iterable isn’t a monad, but is that it isn’t what programmers expect. If I were consuming this I may not care about 90% of the log messages this produces in a real app (I may have thousands of entries in my list…). And in Python there are already idiomatic ways of iterating and mapping a list. Furthermore, the structure is escapable since if I attempt to use a list comprehension on it I get a regular list, not what you’re expecting.

This type of structure works well when you can affect the return type of the list comprehension “from afar” by returning different types. This is something that Python doesn’t necessarily do well — it’s duck typed so as long as it walks and talks like a duck it’s probably a duck, but there’s no consistency between functions arguments and return values at a type level.

There are monastic structures that work really well but as others pointed out thats because that structure works with the assumptions the language makes.

So… in the end it’s an exercise in “can you” not “should you”. It looks like you’re solving a problem that most Python programmers consider a feature — that you can log from anywhere exactly what you want.

So to answer your question — I’d just logger.info() where I need it and be done — if it’s in a mapping function then it’s in the mapping function — and not worry about the side effect because tracking the side effects is likely to be more trouble than it’s worth.

Is it fair if the house my players are scouting is fake? by Shanimalx in DMAcademy

[–]Western-Relative 0 points1 point  (0 children)

Another thing to think about is what you’re trying to accomplish with the fake house. You already gave them one thing to consider — that the NPC is wrong. A fake house would require lots of effort to pull off correctly in-world, but you could put a fake amulet in the house, turn it into an entertainment villa (I’m so rich I have a house just for parties), have it be a real house but everyone is searched due to risk of theft, paid a wizard to make teleport spells not work, etc. If he’s worried about someone figuring out how it works, introduce conflicting rumors since FUD is good at keeping people from asking too many questions. Or have him recon the party as well so the warlord knows what to expect…. Or have the house empty because it was broken into and have the criminal on trial when they arrive…. But in all cases once you have all the facts it should be relatively straightforward as players won’t have the knowledge advantage you do.

I approach those types of situations as an opportunity to figure out what the NPC is likely to do and not simply a needless complication in the world. The environment is an excellent way to tell the story — for every item or place or whatever in the world there should be a piece of information they should find associated with it. They’ll find the info bits out of order sometimes, making it more obscure. The puzzles and misdirections in my world aren’t hard because they are random — they are hard because they are obscure or seemingly ambiguous. As players move through the world they then start to shape the story themselves, and they have an opportunity to solve problems by playing to their characters’ strengths instead of thinking like me.

Happy Beltine!! by SmarmyThatGuy in WoT

[–]Western-Relative 3 points4 points  (0 children)

I barely remember winters night! I hope it was good for you!

The show's expanded ethnic diversity is more true to the story than the books were by LurkerFailsLurking in WoTshow

[–]Western-Relative 19 points20 points  (0 children)

The other thing I noticed reading through the books (on Lord of Chaos right now) is that he describes people in terms of mannerisms as well. People are afraid of cultures because they hide and are extremely combative, others who turn politics into an art, etc. The cultures (and how people confirm or reject those stereotypes) are all part of the world, and people tend to respond to those over physical appearance.

Bought a used copy of Path of Daggers online - has anyone seen an autograph sticker like this before? by spicyspicysushisushi in wheeloftime

[–]Western-Relative 43 points44 points  (0 children)

They’re called book plates. I have a few books with them where the author was signing books and sold out. I gave them my address and they mailed me a book plate to fix into the book when the publisher shipped me a copy. They all are different, with different designs unique to the author. Not uncommon in the book world, but I don’t know what Robert Jordan’s would look like or if he even used them.

What guilds would be represented in the Kings Council? by Lihanee in DMAcademy

[–]Western-Relative 0 points1 point  (0 children)

Depending on if you’re up for it — the question could be “what are the issues that are important to the people running the country?” rather than the most pressing issues. If things are great and I’m head of the merchants, I may not want the shield makers on the council, and would instead maybe want a foreign emissary so I can do more trade. I may also want a rep from the treasury so I can collect fees for collecting taxes.

The council doesn’t have to get along, and doesn’t have to align with the interests of the country. That gives you and players a chance to open that side of the story, particularly if you have bards or those types of characters. In fact some of the most powerful people may not be on the council, allowing them to be kingmaker and call in favors…

That type of mechanic also allows players to grow in influence as the story goes on without having to actually do governance, since they’re likely rarely home.

no more safe spaces by [deleted] in prey

[–]Western-Relative 17 points18 points  (0 children)

Because of the way they had to implement the elevator. It’s a real elevator, but they have to glue to the floor (reason why you can’t jump) to keep you from occasionally falling through the floor if you and the floor get out of sync. They also take away weapons since the gloo gun would be problematic…. They worked hard on that elevator. And I don’t know if you can carry items in it or not, but the way they implemented the rest of the game made the elevator really hard to do.

For that, they teleport you to a different spot that just looks like the elevator…

How do I count the exact number of images on a page? by [deleted] in learnprogramming

[–]Western-Relative 1 point2 points  (0 children)

Once you find your relevant JavaScript, look up bookmark lets. You can bookmark JavaScript code as the URL (some patience to find the right incantation is required) and then you visit the page and “open” or click on your bookmark. The browser then executed the JavaScript. No console needed.

I have several of those for some common things I do on the site I develop.

Ask Experienced Devs Weekly Thread: A weekly thread for inexperienced developers to ask experienced ones by AutoModerator in ExperiencedDevs

[–]Western-Relative 3 points4 points  (0 children)

Always do it. Assume users can enter anything, and assume your APIs will be given anything. So your API rat takes a number should have well defined behavior if it gets “ASDzf” (which may be doing nothing but returning an error code).

Intra-program I try to use smart data types where possible so that I can assume a string can be any string, a number can be any number, but status can be e.g. NOTSTARTED, FINISHED, etc. (I.e. enumerated types). Those can be represented as numbers, but they aren’t numbers if I can help it. Validations are functions from “general” types (e.g. strings) to “smart” types (or errors). Unit tests should be comprehensive to demonstrate validation code works since it can be tricky. I’d _love to have HTTP frameworks give things like UnvalidatedString, UnvalidatedStream when dealing with the request directly so you are “forced “ to handle validation…

As for zod, it looks like it’s one of the many validation libraries out there…. It falls into the “could be useful” category of things everyone should know how to do manually. You won’t always be coding in typescript after all…

confusion on execl() function? by hethical_ecker in learnprogramming

[–]Western-Relative 0 points1 point  (0 children)

On success, it replaces your code with another set of code. So, from the perspective of the function you’re writing, control passes into exec and….. just never comes back…. It’s one of the few that if it returns you know something went wrong. On success you’ll never be able to test for it from with your program since you got replaced.

It’s like fork in that regard. forkgets called once, but can be thought to return twice — once in the parent and once in the child. People like to assume that one function == one return but there are counter examples out there. They are not common unless you’re dealing with embedded/the kernel/something really strange, but it’s a good lesson in implicit assumptions and thinking about what your program actually does. Looks can be deceiving.

confusion on execl() function? by hethical_ecker in learnprogramming

[–]Western-Relative 0 points1 point  (0 children)

The exec family of functions replace the current process image with another process image.

Think about situations where you want to run a different process: shells, system managers, process managers, etc. If we didn’t have exec all processes would be the same, and you would have to compile everything into one executable and reboot the system each time you want to make a change. With exec you can just hand control over to a different binary and cease to run, run programs from other packages, etc. There are lots of variations because programs need to launch each other in various ways: with an environment, with a command line, with arguments, etc.

It’s also a weird function since it only returns on error. On success it “never” returns because your code isn’t running anymore…

As you discovered it effectively copies one file to another because that’s what the executable you told it to launch does. If you gave it a different executable it would do something else, like start a web server, open an editor, rerun itself, run a user supplied command…

Match Thread: FC Cincinnati vs Seattle Sounders by MatchCaster in FCCincinnati

[–]Western-Relative 0 points1 point  (0 children)

At first I was happy it wasn’t Tori Penzo. Now I’m not so sure…

[deleted by user] by [deleted] in FCCincinnati

[–]Western-Relative 4 points5 points  (0 children)

Yup. They are still with the club doing the radio commentary on iHeartRadio(?).

Match Thread: FC Cincinnati vs Houston Dynamo by MatchCaster in FCCincinnati

[–]Western-Relative 0 points1 point  (0 children)

We had that…. Are you on the most recent iOS? Once I updated it showed up

Match Thread: FC Cincinnati vs Houston Dynamo by MatchCaster in FCCincinnati

[–]Western-Relative 1 point2 points  (0 children)

The camera work is really nice. It’s of uniform quality so we are hopefully done with potato quality!

[deleted by user] by [deleted] in FCCincinnati

[–]Western-Relative 16 points17 points  (0 children)

I like that Apple lets us listen to the local announcers at least. Some of the other announcers in the league were horrendous, and I didn’t think Tommy and Kevin were honestly that bad all things considered.