1. 6

    I think this is a great example of how to compassionately blog about language concerns. The author’s two concerns are:

    • the trade-offs of inclusive vs. exclusive behavior for the hat & range operators
    • the awkwardness of using default interface methods compared to other trait systems

    They raise these questions thoughtfully and with reference to previous discussion. They show strong code examples illustrating their points. Their stance is not angry or self-righteous. They praise other language features and don’t call into question the intelligence of the people writing the proposals.

    I would be much happier if all blog posts of this sort showed so much consideration towards others.

    1. 12

      I don’t know. Isn’t picking up new skills a bit more nuanced than that? I don’t disagree with the points you’re making here, but I just always wonder how much these inspirational blog posts actually help people. Are we just setting people up to get discouraged when the simple truths you’ve laid out here don’t mesh with the messiness of the learning process? I don’t know how to write about those complications effectively, but I think they’re important for people to hear.

      I’m also a bit worried about the impact of hackathon culture on programming. I’ve had a lot of fun at hackathons, don’t get me wrong – they’re a great tool for adjusting to new frameworks, meeting people and building better entrepreneurial skills. But it feels like most hackathons have become about the fancy landing pages and the business pitch you give at the end, compared to the actual act of programming and development of strong systems that happens along the way.

      I’ve preferred game jams over regular hackathons because you can’t really bullshit a game feeling nice and polished. But either way, they also encourage unhealthy working habits that can lead to massive burnout and exhaustion. I’ve got into really tense situations with close friends from doing hackathons together, and while that can bring you closer together, it also hurts a lot.

      Sorry, I don’t want to be elitist or exclude people from getting involved in the developer community though. I just wonder if this is the right framework for teaching people.

      1. 2

        Is there a reason why the Pandas data loading logic couldn’t be rewritten to use C++ underneath the hood, so you can still keep the Python API while reaping the performance benefits?

        1. 1

          I’ve often wondered that as well. I’m not sure what the development plans are for Pandas, but since its creator is now working on Apache Arrow, I expect that may become a major backend at some point.

        1. 6

          I agree with every word of this. It’s good to have a suitable label that nicely encapsulates the concept.

          I would like to see some examples. I would say that https://www.gov.uk/ would be one of the best examples of brutalist web design. What do you think?

          1. 3

            I was worried that I clicked into a spam site when I visited it!

            1. 3

              Like the sibling comment, I, too, had my “parked domain” flags triggered. However, the actual practice of using the gov.uk constellation of websites is fantastic. Very easy to use.

              The login.gov stuff and related things in the US are catching up to the usability of the UK sites.

              1. 2

                Like the sibling comment, I, too, had my “parked domain” flags triggered.

                I agree, but once you scroll down it improves a lot. Nice site.

            1. 4

              Great idea!

              I think being more explicit about what “fresh and clean” means in the README would be helpful. I was unaware of the nonfree software part until I clicked into this thread, and assumed it was about code quality.

              It would also be reassuring to see some comments around strategy for keeping this up-to-date with new features, bugfixes etc. from the main filezilla repo (if that is the plan).

              1. 3

                Videos are back online now.

                1. 4

                  I really like having the Q&A in text so I can read through it without having audio to watch the video! I’m not sure how much effort it is for you to maintain though, feels like the sort of thing that could get exhausting to write quickly.

                  It’s not super-related to formal property verification, but I’ve been messing with bats lately to do some quick tests for one-off Python scripts that I write. It’s kinda like functional testing for bash scripts, verifying that certain lines are output and that the right error code is returned. Here’s a good tutorial, and here are some tests that I’ve written with it.

                  1. 2

                    It’s amazing to me how little code is involved for this! What a client.

                    1. 2

                      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.

                      1. 1

                        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.

                      1. 6

                        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.

                        1. 9

                          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.

                          1. 3

                            Everyone is free to do what they want, but I can’t imagine not having enough hobbies so you willingly fill time doing work.

                            :( as a 25-year old who doesn’t have enough hobbies and fills his time sometimes doing work, ouch.

                            1. 4

                              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 !

                              1. 1

                                He was comprehensive and even if he overworks a lot, I don’t feel pressured to do the same.

                                That’s an interesting choice of words.

                                1. 2

                                  Oh sorry, got messed up in the translation! I meant understanding!

                        1. 2

                          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.

                          1. 2

                            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).

                            1. 2

                              It’s also problematic if you want to test the nested function. Most languages don’t provide (sane) ways of accessing them.

                            1. 35

                              Well, to take something positive out of it, I didn’t know that @coraline ’s team was responsible for first-time contributor badges and the new repo invite email process! Thanks!

                              1. 16

                                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.

                                1. 16

                                  I see it both ways:


                                  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.

                                  1. 5

                                    Maybe it was a joke.

                                    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.

                                    1. 6

                                      “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.

                                      1. 9

                                        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.

                                        1. 1

                                          “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. :)

                              1. 2

                                This is a great example of somebody who really knows their shit making what would prove to be an incorrect long-term choice.

                                Not only that, but it would land Id in legal dispute with Creative Labs because of a patent problem, which they settled.

                                1. 4

                                  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.

                                  [0] https://en.wikipedia.org/wiki/Shadow_volume#Depth_fail

                                  1. 5

                                    Shadow maps (for rasterized/realtime graphics) have overtaken shadow volumes in most cases. There’s a decent summary of why here.

                                1. 2

                                  Also worth a read is this paper on GOOL, the predecessor to GOAL. It doesn’t have the same crazy compiler that GOAL does, but still very cool.

                                  This comes from the excellent “Making Crash Bandicoot” series of blog posts.

                                  1. 12

                                    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.

                                    1. 5

                                      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?

                                      1. 7

                                        Ruby has the advantage of being a significantly more mature language, with all of the pros (and cons) that brings. So I still think it’s a reasonable choice in the end. As always, it depends.

                                        1. 3

                                          i think this is at least the 3rd just like ruby but static language I’ve seen

                                          I’m curious, what are the other two?

                                          1. 6

                                            One of the jruby devs was working on one. You can get some speed ups by calling methods normally instead of reflection for everything. :)

                                            1. 3

                                              Mirah is the one from the JRuby folks.

                                              1. 1

                                                Ruby folks named it after a gemstone in Japanese, eh? Last dynamic one used in mission-critical stuff just straight up said Gemstone:


                                                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. :)

                                                1. 2

                                                  And to you as well

                                          2. 2

                                            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?

                                            1. 2

                                              For some reason, as I continued to read through the post, I assumed that the “second opinion” phrasing was a joke that was going to end with “you might as well use Crystal”.

                                            1. 4

                                              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.

                                              1. 6

                                                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.

                                                1. 4

                                                  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.

                                                  1. 4

                                                    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.

                                                1. 2

                                                  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:

                                                  1. 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.
                                                  2. 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.
                                                  3. 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.

                                                  There’s also Job Simulator and Fantastic Contraption, which are really good at encouraging the user to play around.

                                                  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.