Ask HN: what was the best life/programming choice you ever made?
For me:
Life: deciding that I wanted to take care of my body.
Programming: deciding that I wanted to master 1 new tool and a language every year. Last year was Python/Emacs and this year it is Rust/DTrace.
229 comments
[ 3.3 ms ] story [ 270 ms ] threadprogramming: going to college
Programming: quitting permie jobs and going for a contract in London.
Programming: The realisation that once you understand the same basic structures (declarations, loops, recursion, data types) and the underlying paradigm in one programming language, you can easily learn any other programming language.
Programming: The day I pulled my head out of my ass and started learning from my peers.
"The universe has absolutely no compulsion to be orderly or just."
Your life will be a mess. The world will be incredibly unjust. Billions do and will suffer. You are helpless to affect this in any meaningful way. Your task is to learn to cope with all this and find path to inner serenity.
--
Reading Stephen Mitchell's translation of the Tao Te Ching helped form some structure around this idea for me by fitting it into a framework for positive action and providing a number of helpful mantras: http://academic.brooklyn.cuny.edu/core9/phalsall/texts/taote...
That was the one of the greatest turning point in my life too.
Programming: attempting to build an MMO each year and getting further each time. The problems are hard and very interesting to me, so I love to learn in this area
programming: learning ruby in 2001. Not the language per se, but the community at the time was full of smart people (lispers, smalltalkers, random PL geeks) and dumber people like me would learn a lot.
Professional: Working as an independent developer, instead of as a wage slave.
Programming: writing an Atari ST emulator (it landed me a job offer by a prestigious game company)
I'm currently working on a project which is set to become my master's thesis (I'm writing my final undergrad exams this month). I started it a few weeks ago; before that I never thought I would go to grad school and I had a severe distaste for academia.
Now I'm feeling academia suck me in. It's hard to describe, but I'm "good" at the aspects of academia that I hate--the bizarre politics of it, for one. I also really enjoy having the freedom to work on hard problems without any immediate paths to monetisation.
Do I get out now? Is it okay to do this for a while? I am obviously not asking strangers on a message board to make my life decisions for me, but I'm very curious to hear your thoughts.
You can probably go a long way just by programming by the specifications with some literature on designing interpreters, but good assembly language skills on the emulated system will be extremely useful, because that's what you'll be looking at all the time while debugging.
Life: having a family, emigration, travel, stop caring about money beyond what I need for day to day living
programming: read more code instead of writing more code
Work: realising that I am not stupid and that I can make a difference, I began to apply a three-word philosophy to life: "Belief, Thought, Action." All beliefs that withstand scrutiny must be acted upon.
Programming: ignoring fads and applying engineering discipline to problems.
Programming: leaving a couple of fun and well-paying jobs to go to places where I wasn't the best at everything. Learning from others (and teaching others in areas where I excel) has given me more happiness/satisfaction/growth than any single language, project or other discrete event.
Programming: Diving farther into photoshop. I know thats not programming, but I really like to play around in photoshop during long code sessions. It helps my brain relax.
Maybe you're talking about losing body fat. I'm not sure why you're preaching about that, though, since the parent/GP didn't mention weight loss being a goal.
Programming: Be very aggressive with learning. Set a goal of books to read, programming languages to learn, per half a year. Read a TON of code in the process.
Work: Scoping out and learning new technologies. I've been iPhone programming for ages and realised I hadn't really dived into other stacks such as Rails or JS programming. Definitely need to do more of this though.
If I hadn't done that, I'd still be stuck in front of a game somewhere.
Those things will eat your life.
And if you like puzzles, there's spacechem.
SpaceChem is awesome, I played it a lot on PC and also now on tablet (it's more playable with mouse, though).
Also worth checking are all other games by Zachronics Industries (maker of SpaceChem)[0] - I particularly liked "The Bureau of Steam Engineering", where the goal is to route steam via pipes, valves, etc. inside a mech to make it fight other mechs.
[0] - http://www.zachtronicsindustries.com/
Spec Ops: The Line is one of the first games I've really seen traverse from the collection of descriptors we normally use for video games (childish, immature, time waster, brainless fun, etc) into the realm of what I'll call "deep media". I'll define deep media as the collection of literary and artistic work which is created not with the primary goal of entertainment, but with conveying an outlook or a perspective of the world.
Spec Ops: The Line is not a pretty, nor particularly fun game, but by golly is it good.
That's probably a good indicator of deep media. Not whether something is entertaining, or was created for entertainment, but whether it can be considered good regardless of entertainment value (ignoring technical value, which is generally only useful to a small subgroup of consumers).
http://www.ted.com/talks/daphne_bavelier_your_brain_on_video...
However, there are several ways to enjoy video games these days that involve a community and are much healthier. And I am not talking about a massively multiplayer game where the "community" is really just another gameplay element pulling you in. I'm talking about an external community that draws you to actively participate, to enjoy the game for something more than what it is at face value. This comes in many different forms, and I think most people would be hard pressed to say that they are "eating the life" of anyone. Maybe I can just list a few of them and let you decide:
1. Speedrunning community. I list this first because it's my favorite. Speedrunners revitalize games old and new by practicing and playing them to almost complete technical perfection. The communities are large, positive, supportive, and full of energy. Both speedrunners and viewers get to enjoy games they already loved in a completely new way, and engage in a meta-competition that is much more tangible and community-oriented than numbers on a screen beside user IDs. There are large communities in both Japan and the US/Europe (though the two don't interact much). The Japanese community generally interacts in the form of videos posted on Nico Nico [1]. The Western community has a forum and video site at Speed Demos Archive [2]. To give an example of the size and positivity of SDA, in particular, they run several marathons a year like this one [3] that draw thousands of viewers and raise tens of thousands of dollars for charity.
2. Indie game development. I don't think I need to say a lot about this; this community interacts enough with HN for its vitality to be clear enough. Even for lone developers, the creative aspect makes this a healthy pursuit.
3. Romhacking community. This is related to the indie game development community in spirit, but on a much more casual level. Using tools built to quickly make levels for games like Sonic and Super Mario World, members of these communities make completely new games out of old engines and assets. These new games - called "romhacks" because of the way they are made - are often posted on forums or at sites like SMW Central [4] or Sonic Retro [5]. It's a very unique kind of community that draws together creativity and games. This one is also related to #4:
4. "Let's Play" community, probably the youngest of these. Much like speedrunning, this community aims to revitalize games by playing them in an entertaining way and publishing the videos (which are then called "Let's Play"s or LPs). These videos were usually posted on forums like Something Awful, but increasingly these communities are centered on Youtube. Very often the games played are indie games or even romhacks.
Edit: There is also a community related to #1, the Tool-Assisted Speedrun community [6] that aims to play games to literal technical perfection with the benefit of tools like savestates, frame-advance, and recording provided by emulators like zsnes. Such tools are obviously frowned upon in the normal speedrunning community.
[1]: http://www.nicovideo.jp/
[2]: http://speeddemosarchive.com/
[3]: http://marathon.speeddemosarchive.com/
[4]: http://www.smwcentral.net/
[5]: http://info.sonicretro.org/Sonic_hacks
[6]: http://tasvideos.org/
The interactive fiction community has also produced one of the strangest useful programming languages of all time, Inform 7[3].
[1] http://www.ifwiki.org/index.php/Main_Page
[2] http://playthisthing.com/slouching-towards-bedlam
[3] https://en.wikipedia.org/wiki/Inform#Example_game_2
Playing videogames, I used to have thoughts like, "It'd be cool you could level up like this in the real world to become uber powerful by just training a lot like this". It turns out you can [in our industry].
I still do enjoy videogames a bit, but not with any sorts of long term thinking with it. It acts as the chill-out activity now.
Programming : Working for myself and not for a monthly pay-check. To do work that I enjoy doing while earning enough for day to day living.
Programming: Teaching myself Lisp and Emacs, dropping Agile methodologies, ditching OOP for functional, writing my code as if I'm replaceable and the next guy needs to pick up where I left without any trouble. The last point actually gives me more value in the eyes of my employer!
[1] http://www.ted.com/talks/dave_meslin_the_antidote_to_apathy.... [2] http://www.ted.com/talks/eli_pariser_beware_online_filter_bu...
I'm a programmer so for me mainstream translates to Singleton<FilteredWorldEventsStream> mainStream; and that's, as Steve Yegge would say[1], a case of the Simpleton pattern; as a fun note, it's about the appropriate LISP to C++ translation too!
If this were the only API offered to you, you'd probably hack your unfiltered stream library on the side too; oh but it's C++ and everything useful is private under proprietary licensing, good luck. Isn't that how open-source was born in the first place? It seems to be doing pretty well compared to proprietary mainstream software nowadays.
Secondly, I believe sticking to your own world is a very good thing. This is where your imagination lives, this is where you create links between ideas to better picture them and therefore understand them. Be it for art, science or faith, this is where fresh ideas comes from to then be adopted by the mainstream, who forgot they too have this ability.
People don't participate in governance because they believe it isn't their 'job', they did vote and it ends there for them; they just had a hard day and want to spend the evening watching American Idol, the results of a consumption society. Our society is based on work for money, not work for the bettering of said society. Otherwise we wouldn't need marketing, public relations, sales, and other jobs we had to came up with to keep the illusion of it all going on.
This led me to disconnecting from the mainstream. However, you don't really disconnect from the community since the internet provides an open and free media platform to build your own filters upon; it also happens to build critical thinking. What you disconnect from is the endless stream of bullshit goods and services produced for the sole purpose of profits going through the mainstream pipes.
I've always liked to view capitalism as a dog chasing it's own tail; produce goods or services to make money, to spend on goods and services. If it does so for a while, you'll notice all the money going to the center due to the centripetal force of its circular motion. Why isn't society about collectively working to go forward instead of in circles? Mainstream.
I'm not for anarchy either, that's just as bad on the opposite end of the spectrum. But the open source model would definitely be interesting to apply to society as a whole; drop the ideas of government and corporations, structure society as an hierarchical flatland and let everyone contribute to everything they want to.
Until then, I'll be quietly hacking away since I actually learn useful things that way, which I can then use to help create a better world.
[1] https://sites.google.com/site/steveyegge2/singleton-consider...
Although don't you think that by reading HN you could end up being part of a "group think" mentality since most of all of us here are involved in IT?