8 ms·
A Letter from _why (2005)
- tomcam 4y ago> If you worry too much about being clean and tidy, you can't push the boundaries. I disagree and I don’t really see how they’re connected.
- viraptor 4y agoI think the difference is in "worry too much". You can write shitty code and push boundaries. You can write clean code and push boundaries. But if you're spending too much time worrying about if your code is tidy enough to publish what you created (or not publish because it isn't), then that's time wasted on not exploring the idea. There's been a few posts on HN that I remember which could be summarised as "I made this cool and useful thing, but I'm worried I'll be criticised because it's not polished enough. Should I just throw it away?" That's the "worry too much" view.
- Sephr 4y agoIf you're developing something that you aren't currently capable of testing or keeping 'tidy', should you just give up? If you focus on developing that thing and make the tests work later, it is absolutely possible to push boundaries. There was no testing framework capable of testing my latest JS library so I built my own; but here's the catch: the testing framework for the library is bootstrapped by the library itself, necessitating building a large amount of the functionality before getting CI in place.
- lbotos 4y agoI’ve spent the last two weeks agonizing over the design of some API endpoints for a side project I’m working on (clean and tidy). This is stopping me from actually making any meaningful progress on some other challenges in the codebase. (pushing boundaries) And for the actual problem: is drawing a card actually move with a source and destination? /player1/draw /move/player1_deck/to/player1_hand I keep getting hung up on the fact that move feels “more right abstractly” but now the move endpoint has to know about _all states_ to know if the move is valid.
- dm03514 4y agoLucky stiff
- btown 4y agoThis is a 2009 post referencing a 2005 letter. Got my hopes up that _why was back! For those unaware, https://en.wikipedia.org/wiki/Why_the_lucky_stiff https://en.wikipedia.org/wiki/Why_the_lucky_stiff _why’s legacy from things like https://poignant.guide/ https://poignant.guide/ was a radical shift in how web programming could be taught, and how fun and approachable (for folks of all backgrounds, academic and otherwise) it could be to learn. IMO we owe a tremendous amount of the modern startup landscape to him.
- xrd 4y ago_why is not the Messiah. He's actually still in Seattle, last I heard. He's more of an idea and an ideal anyway. It's better this way, better that he never "returns." Who wants to see Instagram posts of _why talking about the shitty hamburger he ate? He's always going to be a mystery to me and that's so much better than anything else could ever be. And the reason he is legendary only increases because of that. Thanks so much for that, _why, whenever you are.
- msla 4y ago_why will never return even if the person comes back into the limelight because _why was a character played by a specific person at a specific point in time. David Bowie did that a few times, some (The Thin White Duke) being more regrettable than others (Ziggy Stardust) but none of them being truly him, or really meant to last.
- codezero 4y agowhat is a messiah really?
- hnuser123456 4y agoa messenger of great knowledge/savior, this this case a reference to jesus as used by GP
- codezero 4y ago
- faitswulff 4y ago_why mentions Autrijus Tang - is this in reference to the same person as Taiwan’s digital minister, Audrey Tang?
- mattbaker 4y agoI got curious too and I think so, if this is correct she used that name prior to her transition: https://www.nippon.com/en/japan-topics/g00837/digital-minister-audrey-tang-taiwan%E2%80%99s-genius-and-her-unique-past.html https://www.nippon.com/en/japan-topics/g00837/digital-minist...
- hgsgm 4y agoYes. https://en.m.wikipedia.org/wiki/Audrey_Tang https://en.m.wikipedia.org/wiki/Audrey_Tang
- calebegg 4y ago@dang this should have (2009) in the title
- superfamicom 4y agoShared previously in 2011 with some good discussion: https://news.ycombinator.com/item?id=2915537 https://news.ycombinator.com/item?id=2915537
- readthenotes1 4y ago"If you worry too much about being clean and tidy," Explains why I've replaced so much inconceivably tortured code over the years
- bruce511 4y agoI am not a Ruby programmer, so this is the first I've heard of _why. I don't think it's fair to comment on the person based on one letter - although I will say the tone is reminiscent of some folk in my community who have their own demons. I can see that as advice to a new programmer, a call to experiment, play around, stretch skills, share small scripts etc is useful. Once you start building more meaningful, long term, things in a team context, then things like consistency, tests, comments and do on become a lot more important. I've been lucky enough to work with very bright people over the years. But for some of them, their code is hard to read, somewhat prone to bugs, and generally working with it is "disliked." It is slowly being replaced. I include some of my early code in this. Over the years personally I've tried to change from writing "clever" code to "clear" code. The latter seems less impressive but ultimately lasts longer. Wherever _why is, I wish him well.
- deanCommie 4y agoI think it's still good advice for programmers of all experiences. I have worked with too many programmers that know everything about engineering and process but can't actually DO THE WORK or solving problems, applying data structures, innovating their way out of a corner. They can go a long way with senior management because they speak all the right lingo. But when push comes to shove, and a new system needs to be built, or a bug needs to be solved quickly and safely in production without backwards incompatible changes, or business requirements collide against technology options...they are lost.
- bruce511 4y agoYou are describing "bad" programmers, and clearly there are no shortage of those. But the advice in the post doesn't make bad programmers into good programmers - it just makes bad programmers "try to be clever" - which frankly doesn't end well. Do some of these techniques help bad programmers _become_ good programmers? Sometimes yes. But then it should come with the caveat never to do it in "real" code. It might be a good learning tool, but it's a terrible production tool.
- 4y ago
- nixpulvis 4y agoThis makes me yearn for the days back when programming was still fun. Back when Ruby was my main language and the sky was dark at night despite my eyes being wide open. All I could see was code!
- rgrmrts 4y agoI just wrote some Ruby for a side project after ~7 years. The language is still fun, ecosystem is good, and things have progressed nicely. I never worried about "Ruby is slow" because I never used it at the scale/for software where it mattered much. That said, it's much faster now! Give it a shot again. I really enjoyed doing so.
- nixpulvis 4y agoMaybe I'll go back to some Sinatra and CLI work I have been putting off... Gotta say, last time I checked up on Rails though, it really depressed me how bloated it got. Maybe I'll just use ActiveRecord and ActiveSupport... but there was so much to love about Rails, I'm just really sad all the JS support kinda overwhelmed it from my perspective.
- jemmyw 4y agoI've been doing Rails for a long time now and I'm not sure this is true. The latest release seems sleeker than the Rails 3 series. Back then we had RJS still going on and UJS becoming a thing. It's a web framework so JS will always have a place, and if anything I'd say they've finally sorted out the JS side to give you some saner options from the beginning - turbo/hotwire being just one of the options.
- viraptor 4y agoOr even try Crystal if you do want something more modern and faster. Same fun but with types and easier deployment. (Using both a lot)
- sergiotapia 4y ago2011 college me liked his ideas. The me of today rolls my eyes. I want to finish this bugfix/feature and get home to my family. I cleaned up a few times after cowboy coders, it's never fun or enlightening.
- codesnik 4y agowell, you've cleaned something existing and running, and also received some money doing that. Who knows, maybe with uptight approach those things would never happen.
- nixpulvis 4y agoThere's a balance to all things. _why's message lands aptly upon those who cannot see the value in experimentalism. It takes a backwards kind of discipline to force yourself to push code you know isn't perfect. Sometimes seeing the whole before each part. This mentality is what led me to my own methodology: Write everything twice, from scratch". Of course, in practice there's never enough time for as much experimentation and rewriting as we'd like. Still I believe it's an ideal worth aspiring towards.
- usermame 4y ago[flagged]
- deleted 4y ago[deleted]
- tptacek 4y agoIf ever something begged for a (2005)...
- jemmyw 4y agoI loved his writing. I wish we could let _why go though. His creator did. It was a point in time, it wouldn't work the same now, and his final writing alluded to that. Programming has culturally shifted. It's not as fun as it used to be, but it is more accessible and has less mystery about it. That was my time as a young programmer, if you missed out on that then that's too bad, but I missed out on previous and probably even more wild times - both my parents were programmers and I envy their experience. I'm sure there's slices of programming culture now that I have no access to that are again wild and exciting in their own way, just not in web or application programming. So the wheel turns.
- deleted 4y ago[deleted]
- msla 4y agoDifferent things are fun, and the same things are fun in different ways. Hardware hacking, for example, is "back" in that it's once again in the limelight for beginner programmers after a period of being too expensive and too limiting to be attractive to a lot of people. It never went away, certainly, but in the late 1990s it looked more like this: https://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-killer/ https://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-k... That's a webpage which compares the BASIC Stamp to an Arduino setup. The upshot? The BASIC Stamp was about $120 all-in to buy the hardware plus a proprietary development environment, whereas a comparable setup for the Arduino is $60 (or less) for the hardware plus a more pleasant development environment, especially if you're coming from Python or ECMAScript and don't like the idea of learning a SHOUTY LINE-BASED 1960s CRUFTFEST that isn't even something cool like assembly language. So in some ways we've circled back around, but it's more like a helix: Yes, kids are Making LEDs Blink Again, but this time it's with a language that isn't a dead-end and it's with hardware they don't have to be so paranoid about blowing up. Experimentation is more fun if you're not afraid of failure. It's the same point in some dimensions, but it's a few miles different in a different dimension. Speaking of dimensions, Web programming has gained a whole new set of dimensions. Say what you will about webdev as a whole, there's few easier ways to show off your work than being able to give your friends a URL so they can just load and go. Shadertoy alone is, from a 1990s perspective, so cool my teenage self would have gone of the deep end with it.
- moloch-hai 4y agoIt is a mystery why Ruby collapsed, and Python came to eat its lunch. Python was there first, and took a very long time to gain its hegemony. Pandas and Jupyter could in principle have been built on Ruby: why weren't they? Python suffered massively in the 2->3 transition and has only just begun to essay thread-safety, which both should have given Ruby a leg up. Was it a core implementation group's superior openness to the needs of such projects?
- alrs 4y agoRuby was the prettier and more consistent language that was slow, prone to weird regressions, and a huge pain-in-the-ass to put into production compared to Python. Ruby metaprogramming made for some write-once-read-never codebases.
- eric_h 4y agoHaving worked with both in production code, I wouldn’t put one or the other on top in terms of “pain-in-the-ass to put into production”
- alrs 4y agoBack when you could deploy Python with apache and mod_wsgi straight out of your distribution's package directory. Ruby meant mongrel or fcgi, usually hand-built off in /usr/local, usually leaking memory, usually coughing up core dumps on the regular. Ruby libraries that linked to C libraries usually depended on bleeding-edge versions that were on developer Macbooks, but not the versions that were packaged in Debian or Redhat.
- bluishgreen 4y agoPython attracted certain types of folks who wanted to say quickly understand the latest output of the large hadron collider, about the size of life peoples let’s say. Ruby attracted live action role playing larger than life sage type of people. Seems people just about the size of life is what is needed to make languages flourish.
- ameliaquining 4y agoThe top Disqus comment, by Steve Klabnik: "As someone who maintains _why's code these days, please, write some tests."
- steveklabnik 4y agoI don’t have a ton of time right now, so I’ll just say: I have very complicated feelings about that comment, and have for years now.
- turtleyacht 4y agoThank-you, Steve.
- ameliaquining 4y agoThat's entirely fair. I do think the sentiment is basically good advice for people working on projects that involve more than one person over time.
- aliqot 4y agono time like the present, we're all here seated at the secret meeting of the midnight society :)
- nextaccountic 4y ago_why was an extremely influential programmer, but he optimized for fun while writing, at expense of misery while debugging or changing the code years later. This can be felt in the whole Ruby ecosystem even today. His distaste for tests is just a consequence of that.
- jancsika 4y agoI love how the curator of _why's code showed up in the first disqus comment to remind people to write tests[1]. Edit: 1: Eleven years ago!
- pmarreck 4y agoHe played in a band at a RailsConf and it was one of the most charming nerdy things I'd ever witnessed.
- 1f60c 4y agoThis is only tangentially related, but is https://poignant.guide/ https://poignant.guide/ missing some chapters? Chapter 3^ says (among other things) > Two chapters from now you'll be writing your own Ruby programs. In fact, it's right about there that I'll have you start writing your own role-playing game, your own file-sharing network (a la BitTorrent), as well as a program that will pull genuine random numbers from the Internet. Which always sounded cool to me (and still does), but it's never brought up again in the book. Were those meant (and I realize no one can say for sure) merely as examples of projects one could do, or did (a version of) the book walk you through their implementations? Or am I missing something? ^ https://poignant.guide/book/chapter-3.html https://poignant.guide/book/chapter-3.html