I’ve been trying this recently but it’s extremely difficult! I’ve always been a really slow-starter when it comes to programming - I take forever to adjust to codebases and digest a problem. I need to spend a while reading through and thinking about things to map out a solution in my head before I start coding. I also take a while to adjust to new workflows and build up a groove for getting fixes out quickly. And sometimes it’s those later hours that give me the room to avoid distractions.

Maybe that’s just a sign that we need better tooling and I need to improve my ability to focus though. I mean, I am on Lobsters right now.

I’m like you and used to also grind pretty long hours in the beginning (when encountering a new codebase, now paradigms, etc), but I tried to do something similar to what this article suggests (for me it was motivated more by carving out personal time for side projects) and developed some skills to help me get into a new problem.
Delivering on time with a balanced work-life balance is its own skill and it’s a shame the industry doesn’t try and develop it more.

Employers think the elder employees have families and want more work-life balance, so they won’t work over-time without complaint like fresh graduates.

It’s true. I’m 34 and I do care more about getting a weekend hike in or working on my book than rendering additional hours, for free, unto capitalism. Even in terms of career investment, I’m generally more adept at investing in my own career than some duplicitous corporate manager who says he has my back but is really out for himself.

Older people know more. They’ve made their bad decisions already. (Some of us have made more than enough for two or three lifetimes.) All that stuff makes us better at everything… but harder to take advantage of.

The reason the pre-20th-century geniuses like Keats and Galois peaked so early is… they died. Before 1900, the age of 50 was fairly old and you were very lucky if you got to 60 with your health intact. (It happened; it wasn’t common.) We live in a different era and the intellectual peak seems to be quite late– at least 30, probably around 50– with the decline being extremely slow (if not nonexistent) in people who stay in good health.

As a 24 year old, I hate the fact that enough people my age work long hours such that it is almost expected of me. Everyone is free to do what they want, but I can’t imagine not having enough hobbies so you willingly fill time doing work. Even with my strict 8 hour schedule I feel like I don’t have enough time to do what I want!

Also, almost every young programmer I’ve seen put long hours to “impress” bosses has failed. Software doesn’t work like that and most spend the extra time tabbing in and out of Reddit anyway.

I relate to that (as a 26yo that was doing +12h/day). I read some books about work life balance (Off Balance) and others (Dream Manager, The Rythm Of Life) from Matthew Kelly, and then tried to apply.

When I changed job recently, I decided to add a challenge and directly told my future manager that I won’t work more than the legal 8 hours per day. He was comprehensive and even if he overworks a lot, I don’t feel pressured to do the same.

At the beginning coming home earlier was a pain, I wondered what to do, and spent hours reading HN/Lobsters/The Guardian, watching YouTube/Netflix etc…

Then I started to cook a bit more complex stuff and challenged myself to impress my girlfriend with it, I started to contribute on Github (very small things but I cleared myself from computers at home so I do my PR from and iPad now!), I’m reading more than ever, I now sleep much better, probably because I’m out of screens earlier, so I can wake up at 6 and go to the gym…

I really think that if you try to un-focus from work, you’ll find things to do. Play a musical instrument, help a local community, or if you still want to dev, dev for yourself or the community !

This is so awesome. A total goldmine of great tips around building a better mindset as a software engineer, wrapped in an easy-to-digest & share format.

I remember seeing the pages around asking good questions linked around a year or two ago, and as someone who always felt worried about coming off as dumb, it really helped improve my mindset! I’m definitely going to share this around.

One thing that worries me slightly about nesting helper functions inside of other functions is that it can break up the flow for the reader. Generally when I read a function, I expect to see a list of statements that will be executed, creating code flows. Nesting a helper around these statements always trips me up a bit, because I have to skip over its declaration and find its usages to trace the code execution correctly.

That being said I think it’s fine for small one- or two-liner helpers, especially in languages that have a concise syntax for lambdas. And I definitely agree that polluting the top-level scope with lots of helpers can make your code feel really cluttered and messy. So there’s a balance(as with everything style-related).

Yeah, it sounds like she got a number of good changes implemented while she was there! I’m sorry her experience was so terrible. It’d be great to still have her there, pushing for this sort of change.

Reading between the lines a bit, it sounds like GitHub leadership may have made the move to hire her without really getting buy in from the company about the need for a greater degree of empathy and consideration for marginalized groups. So she comes in having gotten a great song and dance about how they want to change, but the rank and file are hostile.

They were probably hostile to any changes due to whatever lack of empathy or consideration they had. Maybe some deliberate discrimination, too. Who knows but I assume some to a lot given SV’s demographics. ;) Then, they see a possibly-recognizable, political extremist that attacks or censors anyone disagreeing with her on a campaign to benefit everyone but them. She’s also loads the team up with people as unlike them as possible who all agree people like them are the problem. This combo is a powder keg for political infighting.

This story has enough villains who think they’re heroes to be a lot worse than it was. I’m glad it stayed as civil as it did with some benefits coming out of it. That said, your comment totally neglects the aggressive politics and censorship she pushes in your description of why there would be resistance. I remember one story submitted to Lobsters that thankfully didn’t get upvotes where the author talks about having “two, token, white men.”

I looked at that thinking, “Really? They say they’re about inclusiveness and equality but just said the word token followed by a race with no serious consequences?” Maybe it was a joke. I doubt it given the article similarly acted like Coraline’s opponents appeared out of thin air and only wanted to stop good deeds. So, again, her political aggression w/ censorship goals and apparently anti-white-male attitude should be considered when assessing response in an organization with lots of people who might not cooperate with such things.

Token white men is an obvious joke. Yes, it is not a joke when it refers to minorities but it is a joke when it refers to white men. Yes, in an imaginary world where all races are equal this wouldn’t be a joke. Perhaps the joke is about the fact that we do not live in that imaginary world. Perhaps getting worked up about the diction by an entirely different writer in a one-year old article is completely irrelevant to this thread and has no bearing on the author’s supposed hidden political agenda and anti-white-male attitude.

I honestly do not understand why anybody would give Github the benefit of the doubt. How many awful things are we going to hear about Github, written under the bylines of people who are risking their careers and their reputations – authors who know that anonymous commenters on threads like these will drag their names through the mud a million times over, dredging up old posts and using shitty three-letter acronyms invented by angry white men –, before we start believing that they might contain a kernel of truth? A comment on Lobsters asking Coraline to be more like Martin Luther King, Jr. has 54 upvotes right now; at least 54 people have bought into the idea that if you are less morally upstanding that Martin Luther King, Jr. then you do not deserve to publish an article on your own blog detailing your own experiences. This is a two-billion dollar company that does not need your help defending it. To the people who are writing screeds against the author here, this single blog post is not some sort of silver-bullet shot fired at your culture: You have already won. You have the money, the executives, the jobs, the social networks, the access. You are winning. Congratulations. Jesus fucking Christ.

“Yes, it is not a joke when it refers to minorities but it is a joke when it refers to white men.”

That’s exactly the kind of structural, reverse racism I’ve had to deal with. Also a double standard. They’re in a position of power, they’re minimizing any white/male people as much as possible, they write up an article about what they’re doing, and mention token, white males as a joke. Discrimination ain’t funny. Calling them out on hypocrisy is certainly worth my time.

The bigger part of that article wasn’t the joke so much as it’s a bunch of people with SJW politics misleading readers into thinking they’re taking hate just because they’re minorities or getting people to play nice. They leave out political domination, launching mobs against Github projects, etc. Supports their false narrative where they’re the victims of attackers rather than the attackers themselves meeting both political resistance and just self-defense by those they’re targeting or trying to control.

I think there’s a very thin line that needs to be respected when discussing these topics. This same argument has frequently been used to diminish the arguments of minorities who rightfully speak out against prejudice. I don’t know enough about this particular instance to comment about it, but we should be careful about the vocabulary that we choose in these discussions, because some phrases have unfortunate implications.

In particular, “SJW” has frequently been used as a catch-all phrase to disparage people who speak out against racism/sexism. I think if we’re going discuss this topic on this site, we should have a better understanding of the connotations our words carry.

A lot of this same argument, with the same sort of vocabulary, was invoked by more extreme members of the GamerGate community, who did a massive amount of damage to minorities in the gaming industry. Seeing you use it here damages the credibility of your position for me.

“This same argument has frequently been used to diminish the arguments of minorities who rightfully speak out against prejudice. “

Which doesn’t really matter if it was coming from obvious racists or sexists ignoring data or selectively using it to push their agenda. They can be called out on those grounds. The SJW’s actually like that, though, since it lets them just associate such people with any use of the term and then ask people stop using it. You’re doing that as well but maybe for more honest reasons.

“I think if we’re going discuss this topic on this site, we should have a better understanding of the connotations our words carry.”

I’ve been very specific in at least two comments about what kinds of people SJW term is about. I’ve also linked to examples of their behavior involving forcing a minority in a minority view on people, using sophist tactics, censoring opponents, and going after their jobs or projects. These are not people just fighting racism or sexism that provably exists. I’m one of those people. I obviously wouldn’t dismiss just that with some BS label.

“A lot of this same argument, with the same sort of vocabulary, was invoked by more extreme members of the GamerGate community,”

It’s funny you mention that because it was my first realization these people existed in some big trend. I’ve studied and countered disinformation tactics for quite some time but not known about assaults on media, forums, and so on. The GamerGate reporting I read about in gamer-oriented media was extremely one-sided only showing what the feminists/activists said. I thought it was about minorities expressing some opinions, a relationship breakup w/ revenge porn, and the examples from gamers were all pure hate mail that apparently came out of nowhere. Some smart folks I know sent me a video that blew my mind:

In this video, new information is introduced that I didn’t see in half a dozen articles I read. The author mentions at least two women involved were claiming gamers were unnecessarily violence-loving, sexist, and racist. Whether true or false, that was an attack which has predictable consequences for anyone who knows gamers. One had an academic paper saying how games should be done in a totally different way or developers + players were just evil. On top of it, the females developing games were doing some of the same behavior on the list of No No’s to make money. Interestingly, they also ignore that the supply side responds to market demand, the games that are like their list don’t sell, the games doing the complaints do, and that demand side includes a huge chunk of women. So, they were claiming bad things about all gamers, ignoring women gamers’ views on the matter, and hypocritically doing what they said shouldn’t happen for money. And then the hate rolled in.

Quite justified although obviously not supporting the extremist stuff. The regular gripes, mockery and so on makes sense with that backdrop. The thing that shocked me was it wasn’t reported in the articles I read from publications for gamers. Somehow, the gamers’ side of things with very, legitimate counterpoints was censored. Why was that? Why were these people not mentioning their negative claims about gamers or how they did the same things for money? Why were they only mentioning how they tried to do some nice things about (social justice stuff here) with the gamers just doing horrible things because they’re evil males and stuff who were unprovoked? Then someone told me they were SJW’s with this being their default tactic of looking like a victim, making news afraid to report whole thing, and causing big shitstorms. More research found similar attacks on many social issues where one side made a decree then declared holy war on enemies always claiming harassment, asking foes be censored, and so on.

If you thought GamerGate was evidence feminists were treated unfairly, then it damages your credibility for me because you may have never known what those select few did to gamers, you may not know why the information was censored at media level, and you would’ve been griping about their victims while supporting the original perpetrators. I can’t blame you as I did it early on not knowing anything about how these deceptive, manipulating “activists” operate. Thanks for reminding me about my wake up call on the subject, though. :)

I’m a graphics dummy - how are shadows handled nowadays? I tried to get more context from the Wiki article on shadow volumes[0] but nothing really stood out to me as an explanation for where this falls short.

I strongly admire the amount of work he put into this, and as he says at the end of the article, the knowledge he gained from it will certainly be helpful towards his(hopefully Googley) career.

However, please heed his advice and don’t do this, as he says several times. It is an obscene amount of work to put into just preparing for an interview. I can’t begin to imagine the heartbreak that would follow if you failed afterwards. Even the Google Interview University page he links seems like complete overkill, although I can only give my perspective from having done the new grad-level interview twice.

I failed my first on-site with them because I had built it up to be some amazing haven that I absolutely had to get into after university, or else I would be a failure. The sheer amount of pressure made it extremely difficult to stay calm and collected. Every time I made a mistake, I couldn’t recover from it and reset my thinking, because I couldn’t take a step back and relax. The tech interview, for better or worse, is largely testing your mindset under pressure.

Yes, Google is a great company that tries to recruit great talent, but at the end of the day it’s still just one of many large tech companies. The people I know who have done the best on the interviews had done some amount of preparation from the standard resources, but most importantly they went into it thinking of Google as just one of many options open to them. This helped them relax and stay composed, which leads to a much more comfortable interview atmosphere.

This would be a good reason to switch to crystal (although i think this is at least the 3rd just like ruby but static language I’ve seen, so maybe wait a bit). Going through all this work to find bugs in ruby code, and then continuing to develop the ruby version sounds downright painful though. You’re going to add another feature to the ruby code and then do this all again next week?

A lot of things get named same thing in IT. Maybe just sheer volume of stuff we make. Btw, I saw Braintree on Basecamp’s Bootstrapped and Proud article. It was one of my favorites, esp owners' strategy of upselling on people who really knew why they needed product. I was thinking about trying something similar but as a non-profit or public benefit company chartered carefully for long-term safety of customers. Maybe franchise as well for growth strategy. Braintree could do that. Good luck to yall anway. :)

It’s hard to say with a contrived example but the syntax looks close enough to make me wonder if you could have ruby ignore the type annotations - test and check with crystal but develop and run with ruby, maybe?

I think this is something that could be pretty useful, actually. I’ve been working in Elm for the last while, and one of my main complaints with the language is that getting things done requires a fair amount of boilerplate that could be generated by another tool instead – hooking up child components to parent components, propagating data from a parent down to a child via messages, passing requests for side-effects upwards to the root of the program. I would be curious to see if a visual programming tool like Luna’s editor helps with addressing those sorts of concerns.

I read this a while back and liked it, but I’m not sure I’d use it as a teacher. I was trying to think of an alternative model that doesn’t necessarily test the students' understanding of the grading system. Although the model presented here is nice for students in a decision making class, is it the best model for an art history class? Should I really fail somebody for getting a 100% confidence answer about Picasso wrong? It seems more likely the student failed to understand the test criteria than the subject matter.

As an alternative, I thought of weighting answers based on how many other students get it right or wrong. Each right answer is worth the % that got it wrong, and each wrong answer is worth negative the % that got it right.

So, if question X is answered 90% correct, 10% incorrect by the class, we determine it’s easy. Get it right, earn ten points. Get it wrong, lose 90 points. Getting an easy question right doesn’t prove much, but getting it wrong does.

Or if only 20% of the class gets question Y right, that’s a hard question. You deserve 80 points for getting it right.

If a question is blank, we’ll count that as wrong for purposes of determining its value, but will neither award nor subtract points from the student’s score.

Or if only 20% of the class gets question Y right, that’s a hard question. You deserve 80 points for getting it right.

Not sure if this is necessarily correct. Sometimes it just means that the question was poorly-worded/unclear/covered an obscure part of the course material. While this does mean the question is difficult, I’m not sure if it’s the sort of difficulty that should be rewarded with lots of points.

Isn’t that what we’re looking for? Students who know the obscure material (and possibly those who can decode poorly phrased questions) are likely most correlated with students who best understand the material. In isolation, one question can be guessed, but in aggregate I think this is a good measure of who knows the material. It doesn’t assign partial credit on a per question basis, but by dynamically weighting questions, it expands the range. In particular, it differentiates the 95/100 from one another.

The problem with the original proposed method is it doesn’t really measure knowledge, it measures one’s ability to accurately estimate one’s own confidence in knowledge. Certainly a useful skill, but beyond the scope of many classes. I’m not looking forward to explaining the rules to a class of second graders.

There’s a lot of philosophy here, but I don’t like testing techniques where devising an answering strategy can be more rewarding than studying the material. As the optimal strategy begins to deviate from “answer every question to the best of your ability” I think the test is increasingly unfair. Having contestants wager before answering a question adds excitement and strategy to Jeopardy, but I don’t think it’s a good teaching tool.

The Google Cardboard VR folks seem to know this and basically suggest that applications make it seem like we’re basically standing still and just turning our heads around (which we really are - so no nausea). That’ll work - but it’s not going to get you an immersive 1st person shooter game…or a car racing game…or…well, pretty much anything immersive.

A device which does give you some pretty immersive first person experiences while avoiding nausea in VR is the HTC Vive. Having tried one for two hours in a row, I didn’t experience nausea during usage or after removing the device, and I’ve gotten pretty nauseous from other devices before. A friend of mine who had never tried anything in VR had a similar experience, no nausea from an hour and a half of use.

There are a few features of the device that allow for really awesome experiences without forcing the user to move in-game:

You define your play environment using two cameras that you fix at two opposite corners of your room, up to 5.5 meters apart(although I’ve had mild success with larger distances). You are then able to move within this space while playing a game, and the device will subtly show you a wireframe wall whenever you start walking close to the boundaries, hinting you towards staying at the center of the room. The games don’t force the player to move, but allow them to move around.

The device has two awesome hand controllers which are tracked and represented very accurately within the game, including rotation + subtle movements. They also have triggers on the back which you can use to fire guns, grab objects, etc.

For more extended movement, games can implement a teleportation feature which fades the screen to black and brings you to another location. This isn’t totally ideal, but works well enough in practice.

There are a number of really great games that demo this. I was really impressed by Space Pirate Trainer, which made me feel like a badass action movie star without any sort of tutorial. At one point an enemy robot flew above me while another one prepared to fire in front of me. I lifted my right hand up and squeezed the trigger to fire blindly above, while using my vision + left hand to shield against the incoming bullets, and it worked out perfectly fine. There was no prompting by the game to do anything of the sort – you just naturally figure out your own playstyle. The video shows how movement comes into play, as well.

I wasn’t convinced about the Vive and I’ve had doubts about VR, but after trying it I’m completely floored. I probably sound like a shill right now, but honestly it’s just the way this hardware makes me feel. It’s completely above anything else I’ve experienced in VR, and it really sold me on compelling VR games being feasible without inducing nausea.

Finishing up my first video game with a friend. We spent the weekend implementing Pong in Rust for fun (and watching, or in my case re-watching, Marvel’s Jessica Jones), and are setting our sites on something a little more complicated next. It’s just a for-fun thing, and we are purposefully not setting timetables on anything.

Besides that, I’m trying to get back into contributing to the Rust site. I’ve got a collection of FAQ answers to add, and some other small sundry updates to make PRs for. Hopefully the end result is a slightly more useful website for everyone.

Finally, I’d like to get a list of Rust blogs going, so people have a single place to go to find Rust things they can subscribe to. This is a first step toward getting a quality Rust Planet setup. There’s been some interest so far, but I figure the legwork is valuable even if the Planet doesn’t happen.

brinker wouldn’t clamp down about Rust, so I thought, hey, why not. Turns out it is easier to get stuff done than I thought, given that I had previously treated Rust like Haskell, which has that stigma of “great theoretical knowledge is required to do things well.” Turns out that isn’t true for Haskell (mostly), and it definitely isn’t true for Rust. SDL bindings were straight-forward, docs were thorough, and the compiler warnings were markedly sensical.

Recently I’ve been taking to blogging about Unity3D and packaging up some utilities that I’ve written. I published UnityTimer last week, which is probably the single most useful class I’ve had by my side during game development.

This weekend I went to TOJam and made a competitive train robbery beat-em-up game with a couple of friends from Ottawa. We went for a unique Paper Mario-esque vibe to make the visuals stand out, which worked really effectively. We focused a bit too much on polishing the combat aspects of the game to make it as satisfying as possible, which led to a few usability problems in the final product. Falling off the train made it remarkably difficult to find your way back on, and the action was chaotic to the point of making it difficult to tell which character you were playing. Still, I’m happy with the amount we were able to accomplish in such a short period of time.

This week, I’m mostly prepping for an upcoming interview at YouTube/Google. I’m a bit stressed out over it(super rusty on data structures), but we’ll see how it goes. Does anyone have any advice?

But of course, Vim isn’t perfect. Vim script is nobody’s preferred programming language; the out-of-box experience is terrible; you need to install a half-dozen third-party plugins (and a third-party plugin manager at that) to get basic functionality working; its modal nature makes it difficult to approach; and there are some fundamental limitations to its extensibility (particularly visually).

I was surprised to see no mention of Neovim at the end given those criticisms, but then I realized that this post is from 2014.

which does not lose much at all in terms of readability from the Python or Haskell versions, and could be simplified further with appropriate use of helper methods.

C# gained LINQ with 3.0, which added a bunch of extension methods to collections to write much more functional code with lazy evaluation. And since then, C# has continued to grow closer to feature parity with functional programming languages. I am particularly excited for the addition of tuples + record types + pattern matching in version 7, bringing in my favorite part of Haskell + Elm https://www.kenneth-truyers.net/2016/01/20/new-features-in-c-sharp-7/

C# brings together an awesome mix of functional + imperative programming with an amazing set of tools built behind it, and I think it would be a shame to dismiss it based on this outdated blog post.

I’m all for more features in C#, but the way they’ve decided to implement Pattern Matching irks me. C# Pattern Matching will be more like sugar around the switch statement; likely you’ll need to either provide a “default” case, or there won’t be any warnings/errors if you “forget” one of the cases, as opposed to languages with discriminated unions built in from the start. The lack of this feature means that you don’t really get any of the productivity benefits of using the compiler to direct where to fix things when the program changes (For example, when you add a new abstract method, you’re forced to update all of the subclasses"). the C# folks are considering an additional “match” keyword that might provide this, but it’s still up in the air.

For work, doing a project at a consulting firm with the Hololens right now. Trying to figure out how best to use it to impress a client. I have lots of ideas for side projects, but ideally I would want to make my work project exciting enough that I feel that same sort of enthusiasm.

For side projects, learning Windows 10 deving so I can do 2D apps for the HL.

The conclusion section of the paper is a bit underwhelming: “plan ahead for risks, iterate often and prototype your important ideas, limit your scope, and don’t be overly optimistic with your scheduling” are all tips that you learn pretty early on in the game development process.

However, the main content of the paper has insights on a wide variety of topics, including tools, marketing, analytics, and testing.

Programming language is Lua! This is an interesting choice. I personally prefer statically typed languages for game development, but I really enjoy Lua’s simplicity.

Event-driven architecture is heavily emphasized. Components that you add into your game come with an on_message method that they can use to react to game events. Your game comes with an input file that triggers events.

You need a google account to make Defold games, as far as I can tell. Projects are created on the Defold dashboard online and then opened with your downloaded editor. This leads to some nice benefits(you always have version control, you get a dashboard + analytics for free) but also some downsides(it doesn’t feel like you really own the project, even if their legal page says you do).

The editor is “powered by King”, whatever that means. Apparently the editor was in development before it was acquired(?) by the company King, who make mobile F2P games such as Candy Crush Saga. The forums were quick to point out their hesitation about making their game and uploading it to servers owned by a company that was once infamous for shamelessly cloning another dev’s game. For me, King owning the editor encouraged me to check it out, since I felt assured that the editor would have features competitive with other game development engines.