"I probably had my personal "moment of truth" around the beginning of Doom 3's development, when it became clear that it is no longer possible to deeply understand every single part of a modern application. There is just too much. Nevertheless, I found that I could still enjoy my work when confined to a subset of the entire project, and I have thus remained committed to the high end. However, the appeal of smaller systems still lingers." [0]
I am very much having this moment with the current state of web/app development. Being a generalist, you end up primarily working to meet a product end, be it new user features or product milestones. All the time making many compromises along the way, as any good engineer should. Yet the depth of the web/mobile stack, the sprawl of libraries, and the abundance of computation for most tasks makes you operate at a very high level (30,000 ft) and only dive down to the bits when absolutely necessary. This has its own joys, primarily one of productivity, but it does starve a primordial part of most developers' brains that craves order/perfection/optimality/complete understanding.
I never understood why some people would play with a low level language like C or assembly outside of work in their free times. After 10 years of professional application coding, I get it.
I feel this is especially true in a web/API world, where a lot of what isn't automated is usually rather similar between projects.
I deal with some daily major systems and some critical security architectures, but most of the time I feel like a digital janitor who is mainly making sure the SOA pipeline doesn't clog up.
I'll pass on the recommendation that previous HNers have to me: if you haven't read Masters of Doom yet, do it. Whether you're an entrepreneur or an engineer or both, it's a really inspirational and informative tale. It also talks about these .plan files.
I enjoyed both Master of Doom and the two Mechner books (for Karateka and PoP). Can anyone suggest similar long-form blogs or books where a single developer talks about a programming journey they took? (Nat Friedman - Ximian - had a great blog 2002-2006ish of this nature, but it has since gone down.)
I can recommend Stay Awhile and Listen by David L. Craddock which tells the story of how the original Diablo was made. It's mostly told in interviews, so while it's not a single developer's story a lot of it is first hand.
I'm definitely getting it if he does. For others, I never played Karateka (got the retro iOS version a while ago) but the book stands on its own without having played any of the involved games (of course, having lived through it helps, so you know what games in those days involved)
Fantastic book. Find the audiobook version, narrated by Wil Wheaton — it's a captivating listen. (And a joy for anyone who grew up with PC shareware back in the 90's.)
It's unfortunate that this comment got down-voted. If you wanted to see someone's .plan file. You use the finger command. ie, finger jcarmack@facebook.com. Of course, very few people if any still run the finger service. The above post was a subtle humor that needs a history lesson.
True. So maybe it would be better to stick this one-liner in your inetd.conf.
perl -MLWP::Simple -MCGI=escape -MHTML::Entities -MEncode -e '$u="";read(STDIN,$u,1,length($u)) while length($u)<128 and $u!~/\n/;$u=~s/^\/w//i;$u=~s/\s//g;if(!$u){print "This server cannot enumerate users.\r\n";exit}elsif(length($u)>128){exit}elsif($u=~/@/){print "Finger forwarding denied.\n";exit}foreach (split /\r?\n/,get("https://twitrss.me/twitter_user_to_rss/?user=".escape($u))) { if(/<title>([^<]+)/){$title=decode_entities($1)}elsif(/<dc:creator>.*\(@([^)<]+)\)/){$author=decode_entities($1)}elsif(/<\/item>/){print encode("utf8","$author: $title\r\n")}}'
On the bright side, Finger is a simple enough protocol you can implement a full-featured RFC1288-compliant server (except for some optional features) in under 600 characters. Remind me again why nobody uses it anymore?
The protocol is so simple and the client so pervasive (it's even on Windows by default) that you could still do something semi-interesting with it today, I reckon (for command line dwellers only though, it's just as easy to hit a URL and get some text back..)
One of my favorite parts is when he talks about buying a gigantic $10,000 "portable" computer (an early Pentium, I believe) and just going to an out-of-state hotel and working for a few days with no contact with the outside world. On his return, he decides to repeat the exercise every few months. I've been considering the same (but with Internet access).
I was doing this every few weekends, while living/working in Toronto but getting a hotel for a weekend in one of the suburbs. I used this time to work on my own projects and long-term reflection, since I was working on the client work so much it was hard to detach enough to work on my own stuff in the same environments I worked on other people's work in.
To be fair, it never had much of a life to begin with. I bet I can count on one finger (sorry) the number of folks who ever saw the cute ASCII art in my .plan.
Carmack may well have been the only person in history to have put finger to good use. Even back in those days, using your .plan for actual status updates was virtually unheard-of.
At one university where I studied at for a bit around the period of 2009 - 2012, they had and, judging from their Wiki, still do have, finger daemons running on most Linux servers and workstation -- perhaps even on all of them.
Furthermore, the vast majority of workstation computers at the department for informatics and at the department of mathematics are running RHEL, so it's not just a handful of computers.
As for how many were actually making active use of finger and in particular .plan files, that was probably just a handful of people. I was one such person for a while after having learned about it and thinking it was kind of neat, but I eventually gave up on maintaining my .plan file and focused on other ways to share things.
The problem with finger is that it exposes information that is now considered sensitive while it provides very little benefit. And of course because it is an old protocol there were some security issues with the daemon.
It's a neat idea but if you want to share information about yourself, why not have a webpage?
Yeah when I was at university (1998 - 2002) .plans were used by a lot of students as a primitive blogging mechanism. I also wrote some perl scripts to show .plans on the web, and even added some basic markup features. I bet a lot of people did that as their first experiments in cgi programming!
I think he just went back and changed the text file a few days later. I don't know how this works with the finger protocol (never used it), so it might just've been for himself.
I am very much having this moment with the current state of web/app development. Being a generalist, you end up primarily working to meet a product end, be it new user features or product milestones. All the time making many compromises along the way, as any good engineer should. Yet the depth of the web/mobile stack, the sprawl of libraries, and the abundance of computation for most tasks makes you operate at a very high level (30,000 ft) and only dive down to the bits when absolutely necessary. This has its own joys, primarily one of productivity, but it does starve a primordial part of most developers' brains that craves order/perfection/optimality/complete understanding.
I never understood why some people would play with a low level language like C or assembly outside of work in their free times. After 10 years of professional application coding, I get it.
[0] https://raw.githubusercontent.com/ESWAT/john-carmack-plan-ar...