How I Made $200k When I Was 16 Years Old Through Coding (2018) - <AUTHOR> https://medium.com/tech-product-and-life/how-i-made-200-000-when-i-was-16-years-old-304f0e87cfb6 <comment><USER3> Games with strong user-hosted server ecosystems seem to be a great way for kids to start gaining serious coding experience. I went a similar path with Minecraft servers (and also first started with Runescape, both are in Java) - making a server in highschool and grossing ~$150k in a year and a half.

Before making a server, I thought coding was cool, but had never done much beyond running some basic programs. Making a server gave me clear goals that helped me learn coding much faster. "I need to figure out how to add custom bosses so my server will be more fun!" is _much_ more fun and interesting to a teenager than "I need to figure out how to remove a Car object from this list of Car objects". There's also the very important social aspect - seeing other real people enjoy code you wrote is extremely satisfying.

And you can do really cool stuff with servers that teaches you real things, moreso than any class could. My own experience writing a ton of custom code for my Minecraft server taught me things like Unix, Redis, MySQL, web dev, reading obfuscated code, networking (like running 8 servers and writing code to pass players from one to another), deployment, basic security, pathfinding algorithms, writing scripting engines, etc. etc. all of which I had no experience with before, and would not have learned for several years otherwise. I'm graduating with my master's in CS now and still haven't been taught in class many of the things I had to figure out to make what I wanted to make. The few other devs of big servers that I knew had similar experiences - started off as beginner programmers, and gained a huge amount of experience from building out a passion project.

<comment><USER4> A similar story here. I was into the game and started running a Minecraft server hosting company in high school (selling VPS'es with a Minecraft control panel, effectively). I ended up learning and doing the operations, maintenance, support, marketing, taxes--the usual jack-of-all trades of being a startup. My connections and experience there led directly to me joining another company, which has subsequently been acquired and landed me at Microsoft.

I wish more CS/programming classes, particularly pre-college, were game- oriented. A Java course I took in school had us writing a 'database' command line app that held fake enrollment information. Had that kind of thing been the only exposure to programming that I was given, I almost certainly would not have entered the field. But show someone like me a way to automate or expand something like Runescape or Minecraft? That, I'm interested in.

<comment><USER5> > _A Java course I took in school had us writing a 'database' command line app > that held fake enrollment information. Had that kind of thing been the only > exposure to programming that I was given, I almost certainly would not have > entered the field._

Me neither. That said, in retrospect, I believe university is more similar to real jobs that people give it credit for - the _tedium_ only gets worse in a typical dayjob. As much as I hate "fake enrollment DB" exercises, they're pretty accurate description of how the work looks like.

(I used to want to go into gamedev professionally; due to various life events I went a different way. Judging by stories from both HN and IRL people I know from the industry, I may have dodged a bullet here.)

<comment><USER6> The thing that always bothered me is that the "fake enrollment DB" doesn't solve a problem anyone has. It's play-acting at solving a problem. So you get the tedium of work instead of the fun of play, but the productivity of play instead of work.

Yeah, you can get there that way but it's a slog, and the reward is a long way off. That's not like work. At work you get a regular paycheck even if enrollment DB isn't thrilling.

<comment><USER7> I'm a teaching assistant for an intro to programming class, and I do feel that solving an endless train of toy problems is problematic for students. From my experience, the best way to learn is to understand a real problem, determine it's requirements, then design a solution. However the professor and I struggle to find real problems that are approachable for novices with varied backgrounds.

I saw an open source class called nand to tetris where students had a semester to create a machine that could play tetris, starting with only nand gates. I thought that seemed like a much more fun progression for computer hardware than the undergrad courses I took. I would love to discover something similar for programming but so far I haven't found it.

<comment><USER8> Some things I'd have loved to be told to build:

        Simple 2d game
        To do app
        Timesheet app
        Implement a clone of x with something extra of your choosing
        Top Twitter celebrity app using its API
        Building a search engine
        Creating a programming language

An issue with the programming courses at my uni was that none of them used a database. The programs were toy apps by design. Instruct students to use sqlite or MongoDB, and encourage them to use PostgreSQL/MySQL.

Our database class did use databases, but we had no integration of the two subjects.

<comment><USER9> To do app has always seemed an optimal one to me, since it should be relatively accessible, no matter your prior experience, but infinitely customizable. I remember a YC founder telling me that both pg and sama didn't think there was a broadly available to do app that met their needs, so they both rolled their own (and continue to update it as their needs change). That seems like a pretty optimal intro project to me

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> It's eerie how similar my own introduction to programming and business matches the author's. I started playing Runescape in elementary school (I logged many thousands of hours on the game) and eventually started programming because I desperately needed to automate some aspects of the game (my parents restricted video games to weekends only, which made it extremely difficult to meet my in- game goals). After teaching myself Java, I moved onto Android development and built a mobile app development agency that I ran throughout high school and college.

People tend not to consider the positive impacts of gaming, but I think there's something to be said for MMORPGs. Runescape has a complex economy, captivating story telling, and complex inter-player dynamics - in other words, a consequence-free playground that prepares kids for real life.

When I first started playing the game, I remember spending many hours aimlessly walking around. It felt like I was an explorer of old; I'd come across something new every hour. That feeling persisted throughout the years as I unravelled new experience after new experience: learning to become a merchant, joining a clan, killing a challenging boss for the first time, and so on. Compared to the day-to-day boredom of middle school and high school, perhaps it is only natural that kids gravitate to these online worlds.

<comment><USER11> The vast majority of people "lost in the gaming world" is not going into programming or learning anything useful. Socially, it's a lot of "GG" and insults to each others mothers. Connections in "clans" or "squads" are mostly incredibly shallow and abstract, compared to hiking or playing sports in a team or otherwise engaging in groups irl. Kids are physically underdeveloped [1], programming MMORPGs is mostly treated as cheating and not encouraged. Sure, in a billion life-years spent in games good things can happen, but compared to the time invested? Not much imo.

It's absolutely understandable why kids gravitate to these online worlds but I regret the time lost in games and if I could go back I'd really limit my gaming to brief, enjoyable sessions, and invest my energy to more challenging and ultimately rewarding things. Building skills, building real relationships.

[1] [https://www.bbc.com/news/education-46019429](https://www.bbc.com/news/education-46019429)

<comment><USER12> > Socially, it's a lot of "GG" and insults to each others mothers. Connections > in "clans" or "squads" are mostly incredibly shallow and abstract, compared > to hiking or playing sports in a team or otherwise engaging in groups irl.

The best man at my wedding was a friend I played video games with that I met online (in "clans"). In fact, I'm sitting in a Discord server right now with about ten people that I've sat in a chat server of some sort since I was 14 years old (I'm 34 now). We meet up several times a year at different locations for vacations. Some of us now live close together and regularly hang out with each other's wives and kids. We still game together on a near nightly basis.

Maybe the relationships are only superficial and shallow if that's the level of effort you put into them.

</comment></comment></comment><comment><USER13> A key take-away from this is that the author learned to code because he had a real incentive to do so - in order to create bots to get better at runescape and make lots of money as a side-effect of that. He quickly saw how knowing how to code gave him abilities that his peers didn't have.

Now imagine if he tried to learn java by attending a class for it - i.e. sitting there for an hour listening to some guy explain how a for loop works. Chances are he would be bored silly and never get anywhere with coding. I think its important for people learning how to code to have a genuine motivation behind it - have something you actually WANT to build. Don't just learn it so you can get a job.

<comment><USER14> This is a really, really ignorant comment. I learned to code in the classroom with no other motivation besides paid employment and wasn't "bored silly." I've made a very successful career for myself in the many years since.

Programmers are not different from other professions no matter how special you may feel.

<comment><USER13> Hence why I said "Chances are" \- meaning "there is a high probably that".

</comment></comment></comment><comment><USER15> The Runescape "blackmarket" was a fun world to play in!

Like the author, I got into creating Runescape bots for a bit - but never works to sell them, just made my own for fun and (in-game) profit.

As I dove deeper into the world, I came across people who would purchase a monthly VPS and install botting software on it. There were plenty of guides on how to go through - but no easy solutions for those who weren't technical.

Realizing I had an opportunity to capitalize on this - I built up a hosting company dedicated to the Runescape botting niche. Each VPS would come pre- installed with all the required software and make it dead simple to begin botting within 5 minutes or so.

At my peak, I think I had over 100 dedicated servers each running anywhere from 4-16 VPS on them. Some of my customers were using it to level up their personal accounts, others were running gold-farming operations.

The business was fairly passive, and I learned a ton from the experience. Things eventually came crumbling down when the creators of Runescape broke the bots (This would happen on occasion, but things would be up and running within a day or two normally) for a long time. I had to shut down as all my customers left overnight.

<comment><USER16> how did they break the bots? I made a very basic runescape autoclicker at [https://www.garyshood.com/rsclient/](https://www.garyshood.com/rsclient/) I wonder if it gets banned in game now.

<comment><USER17> That's you? Well first of all, thanks!

But I think your auto-typer was really one of the only "allowed" 3rd party programs, and auto-clicking was never really enforced strictly.

When the bots got advanced, they pretty much had two methods via either injection or emulation of the entire game. So either they broke them through making a bunch of fundamental changes of ingame systems or the ability to connect to the servers.

</comment></comment></comment><comment><USER18> Oh yeah, loved to read this! Gaming and especially moddable games are a great entry into programming.

It wasn't exactly my entry, as I had programmed stuff before, but I learned a huge lot during my university time while writing a database site for World of Warcraft, which also had a distributed data collection mechanism by which hundreds of thousands of users could upload data gathered while playing the game to my site, where it would all be distilled into a database, of which a special, minified copy was then compiled and offered to be downloaded by the players right into the game, to be used while playing as a knowledge base. And alongside of that, people could query the database via a web frontend that used all the latest shit (it was 2007 or 2008, AJAX was a big deal back then, reactive layouts were in their infancy, but I had one, and I even wrote a 3D model viewer in the browser and something like Google Maps to view pre- rendered maps of the game world that looked like satellite images). That thing was 60k LOC Java (data processing and website), 30k LOC Lua (for the addon in the game), about 5k LOC ActionScript, some hundred lines of PHP and Bash scripts, and about 5-10k LOC of C++ for the native client to do data uploads and downloads. I eventually sold it for about 60k€ including maintenance, and maintained it as a side project for 7 years total (most of the time I was also actively playing WoW) and then it was abandoned because the site didn't catch on enough among the competition, and the game itself assimilated lots of the functionality provided by my in-game database (which was named MobMap and did catch on massively with the players, I counted at least 1.1 million installs over it's lifetime) so that successful service became redundant over time and was eventually discontinued as well.

But that project brought me lots of experience. Different programming languages and runtime environments and contexts, operating a multi-server infrastructure all by myself, using the latest web tech before there were frameworks that did all the hard things for you, maintaining a codebase over a long period, reverse-engineering (to get some of the data out of the game you had to reverse the original game data file formats, and since they changed with every patch, that was a continued activity done by a very small community of people in obscure online wikis, to which I eventually started contributing), updating large numbers of client installs in a secure and reliable way, processing gigabytes of raw data per day into a concise database (I think it was about 50GB XML incoming per day and the final DB was 4GB MySQL - and it was pre-SSDs, so I had to work all in memory with that DB to get the insert and update speeds I needed), this project had it all, and I continue to draw from those lessons in my job today.

<comment><USER19> Hey I probably used this back in BC. Thanks!

</comment></comment><comment> fbi-director A nice story of how a young boy's enthusiasm and unhindered spirit got in the right place at the right time. I feel happy for him and his family to stumble upon this path in life - and then smashing it an building his own gold road! Alas, I also feel sad at the same time, for myself not having that opportunity and having wasted my programming skills all together after I went to university,due to outside pressures and chasing my own dick, so to say.

<comment><USER20> If it's any comfort the alternative doesn't turn out much better. Most of my life I looked down on prurient interests and instead chose to master my profession, convinced it had to be the smart choice.

Now I find myself on the wrong side of 30 with a collection of useless money and assets slowly coming to accept that I'll never have that ideal lifelong relationship with someone that matters. Soon I'll have more years behind me than there are ahead and anyone I find will never have the shared experience of being with me during my prime years. They can never be a life partner now, they are simply a partner joining me as I age and go downhill from here.

I wish I had spent more time on the hunt when I still had my entire life ahead of me. So if that's what you did, don't worry, it works out better in the end.

<comment><USER21> What is tough with happiness is that the more things you have the harder it is to achieve. Or a perspective that effectively erase the chance of being allowed to be happy.

My own path was to start dancing, a tough one like argentine tango, since it requires full mental awareness. Which in effect means that you always come home with a grin from side to side. This will be true with any form of activity that actually makes you focus.

You always have the rest of your life ahead of you, it's up to you to make something meaningful out of it. Don't set out to find a partner but rather your passion (that involves other human beings not computers), and love will find you. And as others wrote, it's a bit of luck involved, but you have to give luck a chance to strike you.

I guess it's never too late, regretting stuff is always a downward spiral.

<comment><USER22> Same here. Took-up Argentine Tango at 45 and met more women than I could have imagimed. Finally met my life partner at 52.

<comment><USER21> It balances up computer related work pretty well wouldn't you say?

<comment><USER22> More than that. In my mid-40s I had a weird back/neurological problem and spent several futile years with physios, osteopaths and chiropractors. Then I started going to a gym where an assistant recommended tango. The back problem soon cleared-up.

<comment><USER21> Great for you!

For me it solved the puzzle of the meaning of life. After a couple of years I had a dance where everything just flowed perfectly. I clearly remember the feeling of 'dying' and being 'reborned'. That is now my point of reference going forward.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> Holy shit! This is literally my story too. Playing runescape and writing scripts for botting programs was literally how I learned to program.

I ended up becoming a moderator on the RsBot forums and I remember Autofighter Pro when it came out. Super popular, and I didn't even realize it was made by someone the same age as me back then!

Anyways, even though I didn't make any money (I gave my scripts away for free!), I did learn a lot. I'm currently an engineer at Google and I honestly owe it to the incredible monotony of playing Runescape.

<comment><USER24> Exactly the same story here. When I was 12 or 13 I tried to use bots in Tibia to make some money on selling gold, eventually leading me to the path of trying to write my own bots for different games. I had one of the first proof of concept bot for Path of Exile which I reverse engineered myself.

I think it's really a great way to get into programming, since it's SUPER rewarding to make the computer game work for you especially if you can sell some of this work afterwards. I know for some people it can be viewed as a shady practice, but I regret nothing ;)

<comment><USER25> Tibia bot developer checking in as well. Started in 8th grade with Open Tibia and have been at it since.

</comment></comment></comment><comment><USER26> Just for arguments sake if this was titled "How I made $200,000 gaming Hacker news" where it's the exact same story but instead of writing for RSbots he was writing bots for a site to game HN submissions and comments and manipulating HN rankings instead we would have a completely different reaction, regardless if it happened years ago.

Just a thought to put things into perspective.

<comment><USER27> _Yes._ As criticizing and nitpicking which HN can be, it's amazing how uncritical many people here are as long as something simply _makes money_. Doesn't matter what it is – if it involves technology and makes money, then it gets nothing but heaps of praise from the HN crowd.

<comment><USER28> Whenever a post about privacy or freedom or some other unethical practice of a tech company surfaces, I always wonder if people are critical for direct reasons or because they can't have a piece of the pie.

There are white-hat hackers out there and people driven by passion, but even Richard Stallman has enough income or social capital to lead a decent life. Being a paragon of virtue is a luxury predicated on meeting a minimum living standard.

<comment><USER29> I notice a similar phenomenon with posts about Bitcoin; I always wonder if criticism is due to genuine belief or jealousy/regret in missing out on the first several orders-of-magnitude increase in value.

<comment><USER30> They were offered an easy, fun, tech-intensive, intellectually stimulating game to play with the possibility of becoming a multi-millionaire if they simply played. And they didn't. So now they wish for its demise.

<comment><USER29> Precisely. They either wish its demise ("Bitcoin sucks and/or it's dumb") or they want to invent a new game ("buy my altcoin!!") in hopes that it generates the same success.

I'm pretty convinced that anti-Bitcoin sentiment will be forgotten and/or disdained in a few decades.

</comment></comment></comment></comment></comment></comment><comment><USER31> I like reading all the posts where people are like, "Hey, that's my story, too!" Uplifting thread.

It most certainly takes motivation (I say passion) to become a self-taught programmer. I think the "larval stage" ([http://www.hacker- dictionary.com/terms/larval-stage](http://www.hacker- dictionary.com/terms/larval-stage)) is critical. That transformation makes you a different kind of programmer.

I am also a self-taught programmer, but I came at it from a different angle, long before this internet age. I wasn't hacking on games (although I did do that sometimes). I was hacking the machine (PC-XT!) and the OS and software that ran on it. I was fascinated. I went from command-line, to scripting, to Microsoft C, and then it took off from there, and I've been at it professionally uninterrupted since 1990.

I didn't go back to school for CS, though. I wish I did, and am happy to see other people here have. I think that's important. I had to teach myself all the best practices (thank goodness for "Code Complete") or learn them on the job.

This probably isn't 100% kosher, but this kind of story is a good indicator when hiring. If you ask how someone got their start and it's this kind of self-motivated journey they invariably make good employees. Over the years we've most certainly noticed there is a significant difference in value between someone who chose programming because it's a job and someone where programming chose them.

</comment><comment><USER32> Ah, its nice to reminicse!

Back in my day, games weren't online, and I didn't really have the hardware to do them justice, nor the money to buy good hardware or games either. I remember playing Wolfenstein 3D from a cover-disk in a tiny postage-stamp sized window. At school we used to pass around cover-disks because we couldn't all afford to buy every mag.

Anyway, I kind of started programming from the get-go, and for a long time, programming _was_ my game. By the time I got to uni I found myself writing modding tools and editors for various games that my friends played or wanted to make mods for.

By then I had somehow found myself in a 'rogue' part of a very big company. I was surrounded by contractors making £60/hour so I started my own contracting company and was soon making way more money than I've ever made since.

Once I graduated I went into normal being-an-employee mode, and things have been getting financially worse ever since.

So its interesting, scary and confusing to read this guy's account of how he dropped out of school and has set up a stream of companies to sell his small products. Interesting, obviously. Scary, because I fear that some young people are reading it and thinking "I don't need school! I can make money!". Its the same way I get all scared when my daughters tell me how much youtubers apparently make. And confusing, because I can't spot the value in any of the products and stuff he has created recently. I guess I really don't get this whole social online world?! Perhaps I went in entirely the wrong direction all those years ago when I went and got a normal job?

Good luck to him!

Not sure what advice I'd give to a young kid now, though. To be honest, I'm not very keen on being an employee. But would you tell a kid to drop out of school and try and get funding for an app they sell to colleges etc?

<comment><USER33> > I was surrounded by contractors making £60/hour so I started my own > contracting company and was soon making way more money than I've ever made > since.

> Once I graduated I went into normal being-an-employee mode, and things have > been getting financially worse ever since.

> Scary, because I fear that some young people are reading it and thinking "I > don't need school! I can make money!".

Um... did you need school? You skipped the part where it helped you. (And were explicit that it hurt!) Why did you leave your personal contracting company?

<comment><USER32> I was part of a big company graduate-recruitment-program so I spent my summers interning with them. Luckily I landed in a team they called 'FastTrack' and that was where these contractors were. One of my war stories from that time: [https://williamedwardscoder.tumblr.com/post/17282439831/an-e...](https://williamedwardscoder.tumblr.com/post/17282439831/an- eight-in-a-million-chance)

When I went back to uni, I set up my contracting company and continued to work for them, but now as a contractor. I even managed to get on their 'preferred supplier' list, which was a really major coup. Anyway, it paid for uni.

</comment></comment></comment><comment><USER34> wow, this is kinda similar to how I got into coding and reverse engineering. what got me into it was Ultima Online and my first serious effort at learning coding was in C# of all languages. I focused on macroing and I helped pioneer/consolidate hacks across (hundred+?) client versions. I made a macroing client with built in script compilation (C# of course) which included code completion and syntax highlighting back when it was pretty difficult to do. the main difference is I decided to become a drug dealer instead of a professional coder and though I had pretty amazing short term success I'm now considered a violent felon by the state of California.

</comment><comment><USER35> When I was a kid, I learned so much about programming by doing those kinds of "illegal" activities. When you are young you are reckless, adventurous, you want to cheat the system. My first introduction to programming was through a bot for a MMORPG too, which was used to harvest resources. I then started to build bot for mini games where you could win prizes if you had the highest score, and resold those prizes on second hand markets. I also learned about "hacking" because it felt cool and underground. I believe kids should be protected from the heavy legal repercussion you could have by doing those things, as long as the intent was curiosity and a lack of awareness of laws. Every thing is getting more protected/regulated and it has become so easy to ruin your parents life if you are a little bit too curious. I don't really know what the solution is, but I hope my kids will be able to experience like I did !

</comment><comment><USER36> I'm jealous. I made $700 for a two year project that started when I was 15. :)

When the project started, my partner and I (that's right, the $700 was for both of us) thought that $700 was an enormous sum and that we were being very clever. (This was in 1984).

After two years (18 months of which was after my partner left for college) I finally was able to bring the project over the finish line.

<comment><USER37> > thought that $700 was an enormous sum and that we were being very clever. > (This was in 1984)

This made me laugh out loud, it reminds me of the prizes Atari would give software devs via Atari Program Exchange (APX) contests, some of which teens won, which would be a few hundred bucks (or sometimes more) of credit for hardware usually, plus royalties on sales of the software

</comment></comment><comment><USER38> I don't know why, but cheating in Runescape is hardest drug ever. I've got banned in 2005, never touched gaming after that.

Anyone remember SCAR?

<comment><USER39> For those that don't know, SCAR is a scripting IDE. It was originally created for Runescape, but it can easily be used for many other games or automated tasks. Scripts are written in the Pascal programming language (super old school!). The IDE provides the ability to focus on windows, track screen coordinates, and get pixel color values. There is a large standard library of functions- MoveMouse(), ClickMouse(), FindBitmap(), FindColor(), TypeKeys('asdf')- basically all the building blocks necessary to emulate human input. There are probably better scripting IDEs out there nowadays, but back then, this was one of the best.

</comment></comment><comment><USER40> I remember back around the same time in 2008ish, I was reading the old WoW Glider (Glider was a Bot for WoW) forums and came across someone who was running a massive WoW farm from Germany racking in close to 150k a year. It's so interesting to see the transition both games have gone through to embrace the Pay-To-(Somewhat)-Get-Ahead with both WoW offering Tokens ($20 for 150k gold) and RuneScape offering Bonds ($7 for 4 million GP).

<comment><USER41> I dabbled in selling scripts for Wow, D3, RS, NeoPets way way back, even wall hacks and auto-aim bits for FPS games... Wow was the best in my opinion - <USER2> was fun waking every morning with an ungodly amount of loot, felt like Christmas.

It led to a passion for process automation, both hardware and software.

The one thing I could never overcome were the people in my surroundings - family, school, work ... they all said I was a cheat and if I cheat at video games what else wouldn't I cheat at, why stop there. I haven't noticed one comment regarding the ethics or morality of process automation for video games even though almost all games ban it under TOS. Would be fun to have a game encourage scripting.

</comment></comment><comment><USER42> "I began to spend much less time gaming, and the majority of my time developing my bot."

That's what happened to me. I started playing games, then modifying them, then writing my own, then the coding consumed all my time.

[https://www.classicempire.com/history.html](https://www.classicempire.com/history.html)

</comment><comment><USER43> It's kinda sad how games don't really work this way anymore. There are few open-world sandbox games and mods aren't really a thing. It's "free-to-play" skinner box treadmills from here on out.

<comment><USER34> reverse engineering is your friend. i've modded all sorts of stuff that never intended it... Full Tilt Poker back in the day, MechWarrior Online, Ultima Online, etc. Learning how to hook into a program's functions and extract real- time data without destroying the stack, properly calling game functions with your own arguments, and translating your patches to new client versions is all pretty interesting and gratifying IMO.

<comment><USER44> If you do this in any recent game you'll get banned. If you do this in any Valve game you'll get VAC banned.

<comment> sean-duffy Bots get you banned in Runescape too, which is what the OP article is about. What's your point?

<comment><USER45> Botting/cheat detection mechanisms have changed and evolved since RS.

</comment></comment></comment></comment></comment><comment><USER46> I also got started programming writing RS bots, private servers, cheat clients, and eventually reverse engineering the game client (and sometimes other people's scripts) to write bot frameworks. I remember talking smack to the article author in the private RSBots script authors forums as a 13 year old and getting banned a few times. Good memories of a great community, with lots of people who ended up in solid careers doing impressive engineering work. Every so often I get a DM from somebody who wants to meet up IRL to grab a coffee almost 15yrs later. If anyone reading this remembers Bomb/Contra/RFTO/RECoders hit me up!

</comment><comment><USER47> I wonder how many people got into coding because of Runescape like the author... I have almost the same origin story [1] and I know a lot of people who also do.

[1] [https://victorzhou.com/blog/how-i-became-a- programmer/](https://victorzhou.com/blog/how-i-became-a-programmer/)

<comment><USER48> Douglas Rushkoff's Cyberia (1994) has some coverage on the idea of a true hacker and the "curious" personality archetype that matches it. It was more than 10 years ago that I read it and it resonated strongly with me, so perhaps it's worth a read if you like to understand more of the psychological roots.

[https://www.amazon.com/Cyberia-Trenches-Cyberspace- Douglas-R...](https://www.amazon.com/Cyberia-Trenches-Cyberspace-Douglas- Rushkoff/dp/1903083249)

<comment><USER49> Great author.

Both fiction and non-fiction.

I highly recommend 'Exit Strategy'.

</comment></comment></comment><comment><USER50> Wow, exactly how I got into programming too! although I made 40$ in the end instead of 200k :D The timing also matches up pretty well, I wonder if we bumped into each other on the forums. I was on the scar forums, then SRL, but the period I was most active was on villavu (iRobot), after Arga came out I started to become less active. I wasn't at all involved with the RSbot scene and knew almost nothing about it.

<comment><USER51> Hi there!

<comment><USER50> THE GenoDemoN?? How are you and ruler doing? Do you remember Lardmaster?

(I also remember that I became inactive, and then some scammer hacked my account, which may have left a bad taste in your mouth because you thought it was me)

</comment></comment></comment><comment><USER48> I had a similar idea for Asheron's Call, to build a modular plugin system for its bots. People could in theory be authorized to receive a plugin, which would be beamed from the server and dynamically injected at runtime. Reasonably secure copy-protection (aside from the rare determined and skilled hacker). I even had about 10k lines of code written, but it wasn't very impressive (although there were some interesting gems). Sadly, the game started getting DDOSed, which led to a sharp drop in population and abandonment of the project around 2014. The game shut down within a couple years after that.

I love the concept of making interesting bots for games that aren't originally intended for bots, but it's becoming harder and harder to do so given the issue of cheating. Makes for a major risk to a project that is already hard to justify doing. I believe Blizzard has sued someone for making and selling a game bot, so there is precedent for legal trouble as well, which is very unfortunate for hobbyists.

<comment><USER52> I got my start programming because I was interested in writing plugins for the Decal framework.

</comment></comment><comment><USER53> I'm assuming that these bots impact other gamers -- either through some negative consequence for human gamers or overall inflation of the MMO marketplace. If that's the case, then these bots seem terribly antisocial. OTOH it seems like youthful mischief is a rite of passage for software developers.

Regardless of how you started: good for you, and good luck with your career!

<comment><USER45> As much as I despise them, they basically are to be expected in any MMO these days. There isn't much to be done against them. These big third-party marketplaces using hundreds of bot accounts don't really care about getting banned - as long as they make enough sales, they can just buy new accounts ad vitam aeternam. I wouldn't be surprised if some of the more shady ones used stolen accounts.

</comment></comment><comment><USER54> A "teenager does X" post that is actually worth reading.

<comment><USER55> Including or excluding the 40% fluff that was added seemingly because the author wanted to tell a good story more than anything? :P

</comment></comment><comment><USER56> Apologies for not really related question - is there a way to bypass Medium "login wall"? That's probably the third time this week I see "sign up for extra free reading". No any intention to sign up to Medium tbh.

<comment><USER57> Further to the comments below, you can also just delete the sites cookies, assuming that you're not logged in

</comment></comment><comment><USER58> Does anyone remember The New Yorker article from June 2018 about the magazine "Teen Boss" that described similar stories regularly, except that it was marketed to pre-teens and teens?

The cover of one of their issues is really something to behold: [https://www.newyorker.com/books/page-turner/the-very- unnervi...](https://www.newyorker.com/books/page-turner/the-very-unnerving- existence-of-teen-boss-a-magazine-for-girls)

<comment><USER59> I don't know what I was expecting, but it wasn't that.

</comment></comment><comment><USER60> I also got into programming through game mods, but for me in started with making maps for Duke Nukem 3D (yes, of '96 vintage!), and then 3D modelling and QuakeC mods.

A lot of people I collaborated with ended up working in the games industry, either on games like Unreal, or in journalism. I ended up working in the enterprise, but from the many bad stories of life in the games industry, perhaps it was a lucky escape :)

</comment><comment><USER61> The perfect mix of dumb luck and foolishness. Bet he had no idea of the business opportunity that was arising. And to think that many people spend their lives trying to find a small niche and build businesses and fail each time.

</comment><comment><USER62> Reading this article + accompanying comments has me reminiscing on how awesome the Runescape community was back in the day. Scripting for SCAR, Moderating on Sythe.org (screen name Puto & Heist if anyone's out there) and trafficking massive amounts of internet goods via PayPal bring back some of my fondest memories on the internet.

I credit a good portion of my career success today to Runescape-centric experiences in CS, Business and Community Politics.

Thank you Andrew Gower + JaGeX team for creating a game much larger than itself.

<comment><USER63> Runescape was great for anyone with parents who wouldn't let you install things. All you needed was a browser and java, super low bar for entry into the world of grinding.

</comment></comment><comment><USER64> You may want to address some of the comments upon your twitter app, if your going to promote it as an achievement. Though appreciate that it was last updated in 2014, so API's being as they are - change over time and would explain the aspect that it doesn't work now.

But amazing stuff and self-taught is kinda how many get into coding. How I got into IT back in the 80's. The aspect of bailing out your parents, that is something to be extremely proud of and a life achievement anybody can respect.

</comment><comment><USER65> So... made money to cheat the game? How is that a great story?

</comment><comment><USER66> I love reading stories like this.

Gaming is also one of the main things that got me into web development and programming too.

One of my first real projects beyond a Geocities personal site was a gaming ladder in 2000ish that a friend coded and I designed. It was basically a SAAS app for people to schedule, report and rank competitive Quake 3 matches. That project alone helped kick off a career in freelancing and I haven't stopped in nearly 20 years.

</comment><comment><USER67> This is a great story. In my experience this sort of gaming-based route to programming expertise is not uncommon among programmers, and I suspect that it is a contributing factor to the gender imbalance. Scanning the quite large thread, I'm curious whether anyone is actually non-male at all.

</comment><comment><USER68> A couple of quick questions I wanted to ask the author (if he sees this):

How did you manage to hide the money from your family and friends when you were still keeping your programming secret, before you told your parents? Did you have any problems getting certain bank accounts or cards because of age restrictions?

</comment><comment><USER69> I made an actual robot to automate hi alching for me a year or two ago, to work around the whole "no software" thing. It just pressed the mouse button for over a month every ~0.6 seconds. Totally worth it. Just had to check on it every 24 hours when the client timed itself out.

</comment><comment><USER70> Great story, Rodney! You've done very well for yourself.

My background shares some similar elements of yours during the same time period albeit with a different game, Habbo Hotel, and a lot less money :-).

In a few years we'll start to see more from the Minecraft and redstone generation.

</comment><comment><USER71> What I find the most impressive is that someone was able to get a serious career start from one of the "Teach Yourself X in 21 days" books. I'd always dismissed these as proto-clickbait without any meaningful content. Shows what I know

<comment><USER13> That book was not his sole source of information.

</comment></comment><comment><USER72> I've learned tree searching and tree pruning when trying to write a bot finding the optimal way to play OGame (was about 14-15y old).

Never really manage to write the full bot, didn't know English well enough and the resources in my language were poor ;-(

</comment><comment><USER73> I love this, because I can relate to it a lot, my story is very similar.

I started at age 12, with QBasic and VB6, writing Trojans because that was what fascinated me at the time. A few years later, when .NET was introduced, I moved over to VB.NET. At the time, I was playing a web-based game called "BootLeggers.us". When I got into an accident, my leg was messed up, and I couldn't move off of a couch for a few days (stairs were not possible), I was still young and alone @home for a week because my parents were on holiday. I laid on that couch for 3 days, playing BootLeggers on a laptop, with my arm on a side-table. The worst position ever. I did this nearly 3 days straight, and it was when I first got carpal tunnel. I couldn't do anything for quite a while because it felt like my arms were on fire all the time :-/

Some time passes, and I can use a computer again for a bit, without too much pain, but I was no longer able to play Bootleggers, since I could not stay on the PC for that lang due to my carpal tunnel.

The game is basically a set of actions you can do every X time. I had written small 'timer' applications that warn you when your next action is available, and I thought: why not automate a bit more of the game, since I can't play it for the duration I want to myself, so I started creating an application to do so. I've spent about a year and created a bot that could do everything in the game. It used an embedded webbrowser that was fully automated, so it was not detectable. You could play the game yourself in the application, and if you'd stop, the app would take over and continue playing, that way you could do complex interactions with people yourself if you wanted, and add some non- obvious behaviour, making it harder to detect.

At the time, I was able to run the bot for weeks on end; I had it set up to take around 3 hours of downtime each day to make sure it would be 'defendable' to have a lot of activity, still, my account would rank faster than any other on the platform.

The game then introduced CAPCHAs to the game, and the bot would not be able to continue. So, I created my own OCR engine and got it working again. Over the time, I've written 3 complete new implementations of the OCR engine, each working better than the previous. It was amazing to do and I learned a lot from it. Had a whole crew who I shared my programs with, had it locked down on your CPU serialnumber, HDD serialnumber and mac address to prevent it spreading to people who were not 'authorised', etc.

It was definetively the thing that really made me more in love than ever with programming, the sheer power you wield and adoration you get from people you share your stuff with was amazing.

Only thing that came close to this, was when I created the first online rainbowtable lookup serivce for hacking Tompson modems (got me on national tv news for a feature peace years later as well. It's dutch but you can watch it here if you want: [https://www.youtube.com/watch?v=zFfCEe9MuZg](https://www.youtube.com/watch?v=zFfCEe9MuZg) ).

Been writing software ever since I was 12, and still love it now. I started my own company finally two months ago after being the CTO of a startup for a year, and I'm so happy I did it, because I feel like, now I might get some time to get into some crazy project again :)

I have so much more to tell, but I think I'll take some more time later on and just write a big blogpost, but it was fun to relive some of that history again :)

</comment><comment><USER74> These stories are entertaining but one must always remember there is some element of luck when things like this happen, and plenty of people coding side projects and not making a dime. So don't feel bad if you didn't make enough money top buy a house while you were are school!

<comment><USER42> You've got to give luck an opportunity to find you, by getting involved in things.

Once the author saw the opportunity, he then pivoted to exploit it through a lot of time and effort. It's pretty clear that other bot makers did not see that opportunity, or saw it and did little.

<comment><USER74> My perspective is you make your own luck - and really you are making a lottery ticket with probably much better odds than a real lottery ticket, and other upsides (if you fail you gain experience). But it's still a lottery ticket so it is not always useful to disect someone else success and say "oh they woke up at 4am every day, so I'll do that to be successful" etc.

</comment></comment></comment><comment><USER75> There are MacBook images strewn about the article, which definitely fits with hip coder culture, but I doubt he started coding in the Mac ecosystem, given how he started out in gaming? More likely he started coding in Windows....

if so, then all the MAC art in the article is slightly curious to me. Totally fine (I am currently a Mac user, and I'm sure the author is now as well) of course.

</comment><comment><USER76> this story checks the "solve your own problem/scratch your own itch" advice for entrepreneurs/makers, you can tell it must be very satisfactory, it is motivating to read such stories.

</comment><comment><USER77> How I made minimum when I was 16 and I was underpaid. Cherypicking story.

</comment><comment><USER78> @rodneyg_, the link to 'cold-emailing Mark Cuban' is broken

<comment><AUTHOR> Thank you so much for pointing it out!! Fixed it.

</comment></comment><comment><USER79> for me it was similar but with the game Tibia

</comment><comment><USER80> How come a listing with full details available publically can never make it to top of Ycombinator but a medium article with gated content ranks on top?

<comment><USER81> What do you mean by "a listing with full details available publically"? Can you give examples of articles you feel should make it to the top to HN but haven't?

The answer to why this one is doing well is clear from the comments: a lot of readers found a lot to identify with in the article. That's the important thing, not what site it appears on.

</comment></comment><comment><USER82> Hey Rodney. Nice to see you on HN. - You know who :)

<comment><AUTHOR> Hey Kyle!!! It's been awhile. ;)</comment></comment>


HTTP/2 Is Done - <AUTHOR> https://www.mnot.net/blog/2015/02/18/http2 <comment><USER2> It's time to begin the long process of unwinding all the hacks that we've built to make HTTP/1.1 fast. No more concatenation of static assets, no more domain sharding.

The future looks more like this, as the default, with no special effort required: [https://http2.golang.org/gophertiles](https://http2.golang.org/gophertiles)

May nobody else have to suffer through writing an interoperable HTTP/1.1 parser!

<comment><USER3> > May nobody else have to suffer through writing an interoperable HTTP/1.1 > parser!

Yes, now it'll be much easier than parsing plain-text. Now they just have to write a TLS stack (several key exchange algorithms; block ciphers; stream ciphers; and data integrity algorithms); then implement the new HPACK compression; then finally a new parser for the HTTP/2 headers themselves.

Now instead of taking maybe one day to write an HTTP/1.1 server, it'll only take a single engineer several years to write an HTTP/2 server (and one mistake will undermine all of its attempts at security.)

If you are going to say, "well use someone else's TLS/HPACK/etc library!", then I'll say the same, "use someone else's HTTP/1.1 header parsing library!"

HTTP/2 may turn out to be great for a lot of things. But making things easier/simpler to program is certainly not one of them. This is a massive step back in terms of simplicity.

<comment><USER4> Have you tried writing anything more than a very simple HTTP/1.1 parser/server? It's actually not as easy as it seems at first - edge cases everywhere, different user agents doing subtly different things, etc. etc.

Your argument is invalid in my opinion. HTTP/1.1 is not simple to implement to any decent level of completeness and correctness, and HTTP/2 does fix a fair few things.

Anyway, there are already plenty of good tools for debugging HTTP/2 streams (Wireshark filters, etc.), and there's only going to be plenty more as time goes by.

<comment><USER5> So won't HTTP/2 have these edge cases also?

<comment><USER6> Essentially, no.

HTTP/1.1 contains tons of optional features. Practially no two implementations support the same set.

HTTP/2 is all 100% mandatory. Any compliant HTTP/2 implementation will support an EXACT set of known features.

<comment><USER7> > HTTP/2 is all 100% mandatory. Any compliant HTTP/2 implementation will > support an EXACT set of known features.

But over the next couple of years, won't people come up with new ideas and add them as optional extensions? How is that handled?

I suspect some of these optional extensions will be really useful in special cases such as support for LZMA/LZHAM compression in addition to just gzip.

<comment><USER6> There is support for extensions, but they're, well, extensions. The only thing the protocol specifies is that a compliant implementation must pass-through unchanged any block it doesn't understand.

Compare with HTTP/1.1 where for instance the entire content negotiation mechanism is optional and clients need to be able to deal with it not being available.

<comment><USER8> > There is support for extensions, but they're, well, extensions.

So down the line, it will be pretty much _exactly_ like HTTP 1.0 and 1.1 then.

Good to hear someone thought this thoroughly through before creating a mega- complex protocol unimplementable by most industry-grade engineers, which will also need to be debugged and maintained for all internet-eternity.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I read Daniel Stenberg's (he is a maintainer of curl, I think?) "http2 explained" pdf the other day, and it's by far the best comprehensive explanation of http2 that I have seen. Well worth a read if you're curious what's coming with http2. [http://daniel.haxx.se/http2/](http://daniel.haxx.se/http2/)

<comment><USER10> Hacker News thread: [https://news.ycombinator.com/item?id=9038613](https://news.ycombinator.com/item?id=9038613)

</comment></comment><comment><USER11> I know I'm apparently not meant to be, but I'm genuinely keen to start using HTTP/2\. If you've been following some of the things being done in HTML recently (rel=subresource, rel=dns-prefetch), I think it's starting to become a little obvious that for most people HTTP is the bottleneck. HTTP/2 seems to be a good, solid step forwards. If it's not perfect, well, it doesn't have to be; 2 isn't the last number.

<comment><USER12> Agreed. I can't wait to start using it. Speed is a very important feature.

</comment></comment><comment><USER13> this seems nice, pretty conservative.

[https://tools.ietf.org/html/draft-ietf-httpbis- http2-17](https://tools.ietf.org/html/draft-ietf-httpbis-http2-17)

"

Abstract

       This specification describes an optimized expression of the semantics
       of the Hypertext Transfer Protocol (HTTP).  HTTP/2 enables a more
       efficient use of network resources and a reduced perception of
       latency by introducing header field compression and allowing multiple
       concurrent exchanges on the same connection.  It also introduces
       unsolicited push of representations from servers to clients.

       This specification is an alternative to, but does not obsolete, the
       HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.

"

all these changes seem good without a large change, just an improved user experience. (the Introduction section is also good - "HTTP/2 addresses these issues by defining an optimized mapping of HTTP's semantics to an underlying connection", I'd quote more but why not click through the link at the top of this comment. basically just some compression of headers, none of the funky stuff to keep connections alive for server push, prioritizing important requests, etc. all without changing semantics much - great.)

</comment><comment><USER14> Did that anti-encryption backdoor get put in in the end or not? News reporting on it went quiet a while back...

</comment><comment><USER15> Does anyone have any information about HTTP/2 development in Apache? Searching the bug list I don't immediately see anything and the only thing I can find from a Google search is a mailing list entry with someone asking about http/2 development and being told that it isn't really being worked on [1]

[1] [http://mail-archives.apache.org/mod_mbox/httpd- dev/201408.mb...](http://mail-archives.apache.org/mod_mbox/httpd- firstname.lastname@example.com%3E)

</comment><comment><USER16> I wish instead of a protocol improvement that focused solely on network resources, the next version will also include improvements for users such as encryption by default and doing away with cookies.

<comment><USER17> You can begin today to do away with cookies on your own sites and services. Start implementing richer clients and leveraging Open ID Connect and OAuth2.

Cookies solve real use case problems. Unless we all start building and experiencing and improving the alternatives, progress won't be made.

That said, good luck on getting rid of cookies all together.

<comment><USER18> Excuse my ignorance, but how can I do session management without using cookies?

I tried searching on the net, but it doesn't seem to give any concrete/valid results.

Can you give me any pointers?

Edit: I do use OAuth2.0 on my services and use Mozilla Persona to manage user logins, but I am not clear how can I keep sessions between requests if I don't use cookies.

<comment><USER19> You can carry the session ID in the URL. This also has the benefit of eliminating XSRF. The downside is that you have a horrendous URL if that type if thing bothers you, and you can't have a "remember me" check box in your login.

<comment><USER20> This approach has some massive downsides - the session ID is sent via Referer to outbound links, URLs are logged all over the place (including browser histories), it's easy for people to publicly share it without thinking which then ends up in Google as well...

</comment></comment></comment></comment></comment><comment><USER21> Stupid question: would you rather have server push serving static content from the application server or a CDN for the static assets? If a CDN, how can server push be leveraged when the assets are not related to each others (and the server can't tell in which order they will be requested).

<comment><USER22> Where sites serve the base page through a CDN, then the CDN has the potential to start making intelligent decisions on what should be pushed.

As the simplest level this might be just the CSS, and JS in the <head> but obviously as different UA's behave differently there's scope for much granular optimisations.

<comment><USER21> That's the easy, but relatively rare scenario. Today most content is dynamic.

Naively, it looks to me that server push will mostly be an improvement for small websites that do not use a CDN, but I can't see how it can coexist with a CDN.

Or it would require a new syntax, where the html tells the browser to start connecting to the CDN with this particular URL, which contains a token, and should be downloaded first which would tell the CDN that a particular list of assets will be needed for that page, and then the CDN will use server push to send these static assets.

Alternatively the CDN would become a proxy for the underlying html page, which would still be generated by the application server. That would probably be simpler.

<comment><USER22> CDNs aren't limited to just static content, it's quite common for large dynamic sites to deliver their base pages though CDNs.

They can use features like ESI to assemble the final page on the edge from static and dynamic parts, or they can just act as a proxy to the origin with the dynamic page generated there.

Even when the CDN is just acting as a proxy back to the origin there can be performance advantages e.g. lower latency TCP and TLS negotiation between edge to client, and permanent connection between edge and origin i.e. single TCP negotiation for all clients, larger congestion windows leading to higher throughput.

In short CDNs aren't just for static content!

</comment></comment></comment></comment><comment><USER23> Question: I originally heard HTTP/2 would force TLS and have it baked into the protocol. Is this still the case? If so, is this going to be strictly enforced? I think it's a really terrible idea to melt a protocol and a transport together. Or am I misunderstanding how it works?

<comment><USER24> This says yes for Chrome and FF but no such requirement for cURL or IE: [http://daniel.haxx.se/http2/](http://daniel.haxx.se/http2/)

How accurate it is, I'm not sure.

</comment></comment><comment><USER25> I'd really like to know what this means in the context of MeteorJS - particularly how the HTTP Push feature will affect MeteorJS in the long run. Does it make MeteorJS redundant?

</comment><comment><USER26> [placeholder for commentary about how HTTP/2 is a bad protocol because it's binary and everything could have been fixed in a text protocol follow by ad nauseum repetition of all the same old arguments]

<comment><USER27> The fact that there's so much disagreement and discontent surrounding this should concern everyone involved. Trade-offs are being made that may benefit some people and organizations, but these trade-offs are also causing significant problems for others.

While there has always been some degree of disagreement regarding technological matters, I think we're really seeing a lot more of it these days, especially when it comes to projects that are open source, or standards that are supposedly open. HTTP/2 is a good example. But we've also got GNOME 3, systemd, how systemd has been included in various Linux distros, many of the recent changes to Firefox, and so forth.

Not only is this disagreement more prevalent, it's also much harsher than what we've seen in the past. Instead of seeing compromise, we're seeing marginalization. We're repeatedly seeing a small number of people force their preferences upon increasingly larger masses of unwilling victims. We're seeing consensus being claimed, but this is only an illusion that barely masks the resentment that is building.

What we're seeing goes beyond mere competition between factions with differing situations. We're seeing any sort of competition, or even just dissent, being highly discouraged, suppressed, or even prevented wherever possible. Those whose needs aren't being met end up backed into a corner and shunned, rather than any effort being put into cooperating with them, with helping them, or even just with considering their views.

This isn't a healthy situation for the community to be in, especially when it comes to projects that allegedly pride themselves on openness. We've already seen this kind of polarization severely harm the GNOME 3 project. We're seeing things get pretty bad within the Debian project. And the HTTP/2 situation hasn't been very encouraging, either.

<comment><USER28> > While there has always been some degree of disagreement regarding > technological matters, I think we're really seeing a lot more of it these > days

I don't have any way to dispute this, but I don't think it's easy to provide evidence for it either. I feel that there may simply be more individuals involved in these kinds of discussions these days.

Obviously at some point you have to stop discussing something and start building it. That's not to say that discussion isn't important or shouldn't be encouraged (quite the contrary), but I find it very difficult to make generalizations about where the line should be drawn.

<comment><USER29> _Obviously at some point you have to stop discussing something and start building it._

No, see, that's where we are having problems: there is a perfectly valid answer of "It's good enough, or simple enough, that we will leave it as-is barring a really big leap".

Assuming that you've got to build something to replace the status quo is _still itself_ an assumption. Saying, in effect, "Hey, we've got to build _something_ " naturally disallows a reasonable engineering conservatism.

Software gets better not as you add things, but as you remove them--people keep forgetting this.

</comment></comment></comment></comment><comment><USER30> Another year, another wheel reinvented.

<comment><USER31> I know you're being somewhat facetious, but have you considered how much the wheel _has actually been reinvented_?

The first wheels were probably logs under rocks. Then axles got developed, then spokes, then tyres etc.

Everything from the gyroscope to the LHC can attribute it's beginnings to the humble wheel.

Reinvention is, if not always good, always admirable.

<comment><USER30> Up to a point, I agree. Beyond that point it becomes churn and reinvention for the sake of itself.

</comment></comment></comment><comment><USER32> HTTP/2 is a bad protocol, that much is clear by now. Luckily most of us won't have to deal with it, because it will be deployed merely as an optimization, with a new generation of reverse-proxy servers, like H2O. [https://github.com/h2o/h2o](https://github.com/h2o/h2o)

<comment><USER33> Care to at least explain why you think it's a bad protocol?

<comment><USER34> It is not a bad protocol for what is in there, it is bad for what is not.

It seems like it was built for the big players to eek out 5% more performance. How about the average website? What is in there help standardize authentication? What is in there to help protect privacy?

In the end it looks more HTTP 1.2, with header compression being the only new feature. The rest of what makes up HTTP 2 is basically implementing a new transport layer protocol at the application level.

<comment><USER35> On tests on a rather average SPA site I worked on, adding the letters "spdy" to the nginx config produced double-digit% performance benefits.

Keeping it backwards compatible with HTTP 1.1 as far as semantics means it will actually get real adoption, very easily, as you can seamlessly enable it via middleware without changing app code anywhere.

I don't know what you mean to "standardize auth", but seeing what a clusterfuck OAuth2 turned into, it'd probably guarantee HTTP2 wouldn't ship for a long time, then ship a mess.

To protect privacy, major browsers plan to only support HTTP2 over TLS. That should be a major incentive for more websites to force TLS. Pretty clever, sorta, even if we might have technical objections to requiring TLS for no "real" reason.

<comment><USER34> Double-digit performance for a bunch a little files probably. It is less than 5% when compared against concatenated CSS and JavaScript, image sprites, and domain sharding. Its great that HTTP2 saves a build step but it is hardly going to make the web a lot faster.</comment></comment></comment></comment></comment>


11 Facts About The Ongoing Fukushima Nuclear Fallout - <AUTHOR> http://thesurvivalplaceblog.com/2013/08/20/11-facts-about-the-ongoing-fukushima-nuclear-holocaust-that-are-almost-too-horrifying-to-believe/

<comment><USER2> We are all screwed... Don't eat any fish from the Pacific Ocean..</comment>


New Cr-48 Shipments are Coming with Decals - <AUTHOR> http://www.thechromesource.com/new-cr-48-shipments-are-coming-with-decals/ <comment><USER2> I bet the CR48's arrive before this page actually loads for me

<comment><USER3> Looking at the google cache shows that this is the source for the article: <http://twitter.com/LuigiMontanez/status/29625344294133760#>

<comment><USER4> I posted more pictures:

<http://luigimontanez.com/2011/cr-48-with-decals/>

</comment></comment></comment><comment><USER5> Flagged. The hacker content of this article is purely incidental. It could be about the stickers on any highly marketed luxury item. This is not a fanclub.

<comment><USER6> I think the relevance is that CR-48's are shipping again (after shipments were halted in early December)</comment></comment>


No one needs libraries any more? What rubbish (2017) - <AUTHOR> https://www.theguardian.com/commentisfree/2017/oct/26/no-one-use-libraries-any-more-rubbish-sanctuaries--enrich-communities <comment><USER2> I live in a fairly typical middle class suburb in NJ, and the library here is a hive of activity. I go there a couple times a month to print or fax something, because it's cheap and easy and the only print shop in town closed last year.

The township has a population of about 30,000, and at any given time, about 25-50 people are at the library. They've got a full schedule of events almost every day of the year, for children and adults.

The books are really a secondary aspect of the library. Sure, plenty of people are checking books out, some are sitting there and reading, but it's more of a community center. Most people are there for one of the childrens' workshops, or an adult learning workshop, various craft groups, or to use computers. It's a great resource.</comment>


Usercfg – remote account configuration tool for developers - <AUTHOR> http://pkamenarsky.github.io/usercfg

<comment><USER2> great idea! i like the hipster logo. :)

</comment><comment><USER3> nice! is there gonna be a version also for windows? thank u!</comment>


Saner routing for growing Flask applications - <AUTHOR> http://flask-via.soon.build/

<comment><USER2> I'm not clear what Blueprints aren't providing here that the author needs, but aside from that, a slightly bigger point:

I really like Flask, but Flask's entire point is that it's a thin, user- friendly wrapper around Werkzeug. Werkzeug isn't my favorite low-level web framework for Python (that'd be WebOb), but the fact that it is trivial to dive into Werkzeug from Flask is Flask's killer feature: its whole raison d'être is that you can _smoothly and cleanly replace Flask with your own application-specific Werkzeug middleware as you grow big_.

So I guess the only thing that surprises me somewhat here is that the author has approached this as a way of scaling Flask up, rather than providing a clean way of moving Flask out in a way that eases transition to pure Werkzeug. I know that Flask has gradually been growing in some ways via its extensions, and maybe that is indeed its future. But I still think that Flask is best used as the training wheels to get a small app up quickly, and that gradually removing it as you grow is likely the best course of action. Otherwise, I think you'd likely be much better off using a framework like Django, with all the bells and whistles you need for any normal CRUD app, rather than rolling it all yourself in Flask in the first place.

<comment><USER3> The idea that Flask is only good for small apps is naive. Plenty of folks have built large, successful, production level Flask apps. All Flask does is act as the glue between Werkzeug and Jinja2 and give you some nice patterns like the app and request contexts. If you're a decent Python developer you're going to end up writing something very similar if you just start with Werkzeug.

</comment></comment><comment><USER4> Doesn't flask Already provide methods for this? I have an app in which I create a urls.py and do

      app.add_url_rule('/endpoint', view_func=views.my_func, methods=['GET', 'POST'])

</comment><comment><USER5> How is this different to [http://werkzeug.pocoo.org/docs/routing/](http://werkzeug.pocoo.org/docs/routing/)

<comment><USER6> Flask, under the hood, uses Werkzeug routing. Basically, this is a wrapper over Werkzeug, just like Flask routing is.

</comment></comment><comment><USER6> Am I the only one who thinks that routes should be defined near views, just like default Flask does?

<comment><USER7> You're not the only one; this is also my experience. However, I'm prepared to believe others' claims that there are drawbacks involved with doing this on "large" apps. I wonder whether they mostly value this "all routes in one place" technique for the purpose of documentation, and perhaps a simple Flask helper function that printed out all registered routes would be just as useful for them?

<comment><USER8> It already exists. app.url_map contains the mappings from paths to endpoints.

Personally I treat the flask web as a really thin layer around my other more complex libraries (the core of the application). I use blueprints to group things together but I still try to make sure each of those is very simple, say - routing, data marshalling and session management - but anything more complex lives somewhere else.

Each function inside your views just gets a little data together and proxies it down to the real application.

As you say, maybe it gets more complex as the app grows in size, but to me that sounds like the app is trying to do too much. Over time I've learnt that thinking of your app as a 'flask application' (django, rails, whatever) means that it will grow in a way that's hard to maintain later.

</comment></comment></comment><comment><USER9> I'm personally a fan of defining routes near the views with the good old @app.route() call, but it's great to have a lot of options for people beyond the defaults.

As others have mentioned though, this is very similar to app.add_url_rule. Could you explain how this differs?

</comment><comment><USER10> GitHub: [https://github.com/thisissoon/Flask- Via](https://github.com/thisissoon/Flask-Via)

</comment><comment><USER11> I've built and maintain several python webapps including both django and flask apps. The routing in flask is the main reason I don't start large projects in flask. This package looks good, I'll certainly be giving it a try.

<comment><USER12> Are you aware of Blueprints?

<comment><USER13> Correct. I built a fairly big api in flask, and managed to get everything properly isolated using blueprints. Nothing to worry on that side for me.

<comment><USER14> Do you have any good pointers to reference API implementations in Flask that you really like?

<comment><USER12> [https://www.youtube.com/watch?v=FGrIyBDQLPg](https://www.youtube.com/watch?v=FGrIyBDQLPg) [http://flaskbook.com/](http://flaskbook.com/) [https://github.com/miguelgrinberg/flask- examples](https://github.com/miguelgrinberg/flask-examples)</comment></comment></comment></comment></comment>


Finally Redis collections are iterable - <AUTHOR> http://antirez.com/news/63 <comment><USER2> For more context pieter's original pull request is here: [https://github.com/antirez/redis/pull/579](https://github.com/antirez/redis/pull/579)

</comment><comment><USER3> This is cool and helpful, but not a game-changer. For things like garbage- collecting I've been using probabilistic techniques (just get a random element and check it, make sure you check enough to have guarantees you need) with great success. The new scanning doesn't provide any tight guarantees (it can't, really, without sacrificing a lot of what Redis stands for), so it will be more of a convenience than a really new paradigm.

Still, it is nice to see -- so, thanks!

<comment><USER4> I agree that for some data type like Sets you could use SRANDMEMBER, however to sample all the elements by random sampling you need to perform a lot more work. For example for a 10000 elements collection in average you are going to need around 10 times the requests.

<comment><USER3> Yes. I was lucky to have applications where that wasn't a problem — mostly because this kind of work was done regularly and incrementally, rather than rarely and in a big chunk.

</comment></comment></comment><comment><USER5> This completely blew my mind. One of the most clever algorithms and implementation that I have seen in the recent times. It was like seeing Radix sort for the first time and realizing that sorting still works even if you sort by least significant bit first!

</comment><comment><USER6> _Elements added during the iteration may be returned, or not, at random._

I can't be the only one who thinks this is crazy behaviour.

<comment><USER7> It is actually very reasonable. Other alternative is that iterator returns an error if underlying collection was modified (fail fast iterators).

<comment><USER4> There are alternatives but all will cost something... especially memory :-)

For example every element may have an epoch, and every time a new element is added the epoch is incremented. Then what you could do is to only remember elements with epoch <= the epoch at which you started iterating, so that all the new elements will not be returned.

We tried to do our best with the state available, that is just a 64 bit counter the server does not even need to remember, but just to return back to the caller, and get as argument in the next iterator call.

<comment><USER7> Is 64bit counter part of hash which points to current position in Hash Tree?

I implemented something similar for HTreeMap, but in Java.

<comment><USER4> It's actually something like a counter that counts starting from the most significant bits first, in the article there is a link to a comment that explains the implementation.

<comment><USER7> So it was hard because hash table could resize between calls?

For HTreeMap I used expanding Hash Tree. There are 4 dir levels, each with 128 entries. If dir becomes full (or has too many collisions), it splits into another 128 dirs.

Iterations is done by increasing counter. If dir at level 2 is not found, it is increased by 128^2. Writing iterators took single day.

</comment></comment></comment></comment></comment></comment><comment><USER8> So, I'm trying to work out how this actually works, and thought I'd share my working (especially the reversed bit counter). No idea if my thinking out loud will help anyone else.

TL;DR: Because we count reversed, when the table shrinks (shrinking is done live, so the old table sticks around for a while) we will continue to iterate only from the position in the sequence where all of the masked bit combinations (those bits of the hash that are ignored in the smaller table) have already been explored. If we counted normally, then on a shrink we would end up skipping parts of the old table. Lines [https://github.com/antirez/redis/blob/unstable/src/dict.c#L7...](https://github.com/antirez/redis/blob/unstable/src/dict.c#L717-L721) explain it perfectly, now I understand it.

Looking at the code, the increment works as follows:

        counter |= ~mask;
        counter = reverse(counter);
        counter++;
        counter = reverse(counter);

The mask is the size of the hash table, minus one, so it always looks something like 0b00001111.

So the first step sets all the unimportant high bits. This means that, after the reverse, all of the unimportant low bits are set, which means an increment will set all of the unimportant bits to zero, and increment the important part of the reversed counter.

So this could be rewritten as:

        counter = reverse(counter);
        counter += (1 << (32-log_size));
        counter = reverse(counter);

Sometimes a collection is made up of two tables, one larger, one smaller. There is an extra loop in each iteration to go through all of the elements of the larger table that share a hash prefix with the counter.

Now, why the reversed counter? If the table stays the same size, it doesn't matter what order you iterate. If the table grows, the prefix system still works, so that can't be it. So, by process of elimination, it must be necessary for collections that shrink.

Say we have an 8 element collection, and have iterated 000 and 100, and next is 010. Then it starts shrinking to a 4 element collection. So next is 010 (which is interpreted as 10 in the new, smaller table, and 010 and 110 in the old table), then 01 (01, 001, 101), then 11 (11, 011, 111), then done.

Well, that worked (we visited all 8 places in the old table). Let's try a non- reverse increment.

000, 001. Next is 010.

Switch to size 4, and then visit (10,010,110), (11,011,111), done. We missed 100 and 101.

Okay, I'm happy. It sort of makes intuitive sense that if the shrink is what's important, and the high end is lost during the shrink, then incrementing from the high end will work better because throwing away the high end will still cover the whole range, as long as you still look at every bit in the thrown away section. Whereas incrementing from the low end will result in gaps.

Go from size 256 to 4 to really show it:

        0,128,64,192|2,1,3,0

vs

        0,1,2,3|0 (which examines only the top quarter of the old hash table)

Or to put it another way, look at this sequence: size 8: 0,4,2,6,1,5,3,7. The bottom bit is set only after all of the possiblities with the bottom bit reset have been explored. So if remove some of the top bits, either the bottom bits will not be set, or every combination of top bits with those bottom bits set will already have been explored.

</comment><comment> lost-theory Great addition, I can finally replace my probabilistic key dumper (lua procedure that grabbed 1k RANDOMKEYs at a time and ran forever).

</comment><comment><USER9> For some reason my brain read this as "Finally Redis collections are terrible"

</comment><comment><USER10> In this day and age, that move was like shooting yourself in the foot. This is the second page like this to make page #1 of hacker news... we're in the sharing information age people, you can't do stuff like this.</comment>


Gentoo Linux Releases LiveDVD Iron Penguin Edition - <AUTHOR> http://www.gentoo.org/news/20140826-livedvd.xml

<comment><USER2> I have very fond memories of Gentoo Linux.

My first Linux distribution was Mandrake 7. After a few months, unsatisfied with the experience, I found out about Gentoo and Portage. The idea of having running a system that was fine-tuned to my hardware intrigued me, so I decided to try it. That was 10 years ago.

I downloaded the Stage 1 Live CD and ran it off my main box. I loved its colorful framebuffered background, and the way it simply dropped you in a terminal. We didn't have desktop virtualization back then, so I had to read the docs on my brothers PC and go back and forth between his computer and mine.

With my very little experience with Linux, I hardly understood the commands I was typing in. Somehow I made some progress. I managed to partition the hard disk (burning the bridges - as the say), chroot into the boostrap environment, and use portage to update my system. I remember setting my CFLAGS with the most unstable options possible ( -O3 for everything, obviously), compiling GCC three times, and then beginning to slowly compile all the essential packages.

Finally, I reached the crowning moment of the installation: configuring my first kernel. Unfortunately, I made a mistake somewhere between "make menuconfig" (I went through _each_ option!) and installing LILO, and was rewarded with my first Kernel Panic, and a bricked system.

After several failed attempts, I managed to get a working system and log in. I remember the great sense of achievement. It still was less challenging than whipping up an LFS system, but - what a ride!

I later abandoned Windows, became a Linux system administrator, converted an entire webfarm (80+ servers) to Gentoo, started a career as a web developer, and became lazy. Today, I am happy with Xubuntu on my desktop, and CentOS on my servers.

On #gentoo, denigrators would often link to [https://web.archive.org/web/20050217094757/http://funroll- lo...](https://web.archive.org/web/20050217094757/http://funroll-loops.org) (now a spam site) and laugh about all the pain and time to get that 0.02% increase in overall system performance.

<comment><USER3> Ah, old times.

This weekend I will retire my last desktop machine running Gentoo (still have some servers running it). It's been serving my mother for almost ten years with only minor hitches along the way. The machine is an AMD Sempron at 1.8 GHz so updating Gentoo is such a pain that in the last few years I would only update when she was away for a few days. So she would leave it on and I would update the computer remotely which creates its own set of possible problems.

Why didn't I switch to some other distro? Well, I tried, but this is the only machine I have ever used where there is a significant effect of all the Gentoo toiling involved. Ubuntu would take minutes to just display the login screen and starting firefox meant a whole different dimension of time for grabbing a coffee (lunch, rather). After a brief attempt, back to Gentoo it was. So the trade-off up to now is usable everyday speed vs. excruciatingly slow updates.

The new machine will run Ubuntu, though, because my mother wants to be able to update her computer herself these days (parents grow up too fast, _sigh_ ). Still, I owe to Gentoo much of what I know about Linux and computers, in particular to only shoot myself in the foot very carefully when the docs warn me that whatever I am doing is a bad idea. Chasing bizarre build failures taught me that not all hard- and software is created equal, no matter what some "standard" says. Sometimes hardware implementation of some feature is plain broken and sometimes I tried to install that singular combination of software that just won't work. Or I forgot to include drivers for, say, mass storage...

It's good to see Gentoo is alive and kicking.

</comment></comment><comment><USER4> I ran Gentoo for about 5 years. Most people miss the point of it. It was created to create other "distributions." Where I worked, we actually needed that capability, but never found the time to create our own profile, and prune our own portage tree. Missed opportunity! If you need that sort of thing, great, but don't run it on a desktop thinking that it will give you any more "performance" than another distro. That's been debunked handily.

</comment><comment><USER5> Gentoo is often ridiculed for trying to squeeze more performance by using platform-specific compiler settings, but this misses the point.

It is the only distribution that can deal with the rapidly-changing nature of open-source software. Most open-source libraries are not designed with long- term viability in mind, and are not ready for binary distribution. Distribution makers put a lot of effort into actually making things work in the long term. Gentoo takes a different approach: just assume that you will be recompiling pretty much everything, regularly.

The result is a surprisingly maintainable system. As long as you update it regularly, it won't tell you to perform this monstrous cliffhanger upgrade, or reinstall using a newer version.

Sure, there is always breakage, but Gentoo has a different tradeoff: minor breakage happening more often vs major breakage happening when major releases are done.

<comment><USER6> Last weekend I had to do exactly that, taming the monstrous cliffhanger upgrade of my MythTv system that still was running a kernel 2.6.15 and hasn't really seen much change since 2009.

I don't think any other distro would have allowed me to upgrade the system without a reinstall. Even though I screwed up because I didn't RTFM and didn't install everything necessary for booting the system with OpenRC, I still could salvage the system by booting with a rescue stick (based on Gentoo of course) and chrooting into my system and fix it this way.

Now it's running a current kernel and it is ready for the installation of the new digital receiver card.

</comment></comment><comment><USER7> I've been running Gentoo pretty much exclusively since about 2002 (on servers, desktops, and laptops). I absolutely love it.

A while ago, there was a post on HN (mainly harshing on systemd) that complained about the way Linux was starting to converge into something that gave the user little choice about what to install. The OP was using Ubuntu, and all I could think was that if this is a problem for you, you should certainly give Gentoo a spin. It would be hard to imagine having more control over a Linux configuration (short of building a system without a distro).

I'll also say that if you're new to Linux and are interested in how it all fits together, Gentoo is a really nice way to learn. The Gentoo Handbook (the main install doc) is, in my opinion, one of the best pieces of technical documentation I've ever read.

</comment><comment><USER8> Gentoo is awesome. I'm a big fan of the amount of control it affords me over what it installs (i.e. it allows really focused, minimal base installs), and I generally find the package manager really nice to work with (definitely nicer than yum, or even brew). To be fair, I only use it on servers; I could imagine having to compile Gnome or KDE is a little more bothersome.

Note also that e.g. CoreOS and ChromeOS (or are those the same these days?) are built on Gentoo technology IIUC.

Thanks to all the developers who helped put this release together!

<comment><USER9> _To be fair, I only use it on servers; I could imagine having to compile Gnome or KDE is a little more bothersome._

I feel the same about Gentoo, but my approach to desktops and servers is the opposite. If my laptop or desktop breaks during a Gentoo upgrade, it's an interesting learning experience (after much gnashing of teeth and shaking of fist). If a server breaks during an upgrade that's a business impacting outage. So I prefer to run Red Hat or CentOS on servers despite distinct lack of awesome latest packages.

I never bothered with a Gnome or KDE desktop. Compiling XFCE, Firefox and Chromium takes long enough.

<comment><USER10> KDE takes about 30 hours to compile on my core i7-4790k even threading it out to all 8 threads.

<comment><USER11> That is too long. On my i7-3630QM laptop it takes about six hours or less. I haven't seen KDE (with almost all use flags enabled) take 30 hours since 2006 on my Pentium 4 and I have emerged every major and minor update since then. Even on Pentium 4 I think the usual emerge duration was around 18 hours most of the time.

<comment><USER10> I think I maybe counting KDE's dependencies into that figure. Not just KDE alone.

</comment></comment></comment></comment></comment><comment><USER12> I know something about Linux (can build a package, set variables, do some configs and simple stuff in terminal/vi/emacs), is weekend enough to install Gentoo?

<comment><USER13> Putting cm-t's words nicely, the Gentoo Handbook is fantastic!

I first built a Gentoo install maybe around 2007, and had no problems up until the Grub install (however, I had done kernel compilations before). With Gentoo, the two hardest problems you arrive at _during installation_ are kernel configuration, and grub configuration. The former has now been solved with having great prebuilt kernels, or even just a way to use their configs. The latter may still be an issue, but once you wrap your head around it you'll be fine.

I haven't done a new install in a couple years - it just keeps running as-is, so I don't know about the state of affairs, but I would hardly doubt they got worse! I'm sure it's even easier than before.

A weekend is certainly enough time to build a base Gentoo system, and get enough packages installed to be able to use it for daily work.

If you have any problems I would be happy to help someone with a *ntoo setup! My email is in my profile if you run into any issues :)

<comment><USER14> Regarding grub, 2.x is torture. All hdd's with even traces of its code should be collected and shot to the sun to make sure noone would ever recreate something as painful to use as grub2. Even more, samples of their configs should be posted on the walls of every CS class, together with charges of crimes against humanity against all developers responsible for that abomination - as a warning to anyone thinking of going their road.

Most systems these days have EFI bioses, just create a 512M EFI partition[1] and put your kernel(s)(with a set kernel-command line) to EFI/Boot(bootx64.efi is usually the default being loaded). You don't need a bootloader at all(+you'll get a few s off of your boot time too). Many bioses let you choose a kernel at boot time, so you don't even have to play with efibootmgr[2] if running multiple kernels/OS's.

It gets more tricky if you want LVM root fe(which I'd recommend) - in that case genkernel[3] may make your life a lot easier, but even here you don't require a boot loader.

If you do want a nice(er) boot menu, just copy refind[4] to your EFI partition, configuration takes seconds and you can tune it very - VERY - easily

Also, folks @ #gentoo are very helpful, feel free to give them a visit if you are stuck.

And the last thing I want to add - you don't have to compile your binaries on your nb/slow hw, just setup a binhost[5] and compile your tailored packages on your beefy PC/server@work - you can then share them with your devices via http for example

Ok, last one - if you like elementary os, you can get the same look&feel running on gentoo, although it may take some hacks at this stage

[1] [http://wiki.gentoo.org/wiki/EFI_stub_kernel](http://wiki.gentoo.org/wiki/EFI_stub_kernel) [2] [http://linux.die.net/man/8/efibootmgr](http://linux.die.net/man/8/efibootmgr) [3] [http://wiki.gentoo.org/wiki/Genkernel](http://wiki.gentoo.org/wiki/Genkernel) [4] [http://www.rodsbooks.com/refind/](http://www.rodsbooks.com/refind/) [5] [http://wiki.gentoo.org/wiki/Binary_package_guide](http://wiki.gentoo.org/wiki/Binary_package_guide)

..a buildroot micro-system running other distributions as overlays is also a nice time-waster and only a step away from gentoo(+ with lxc/docker there is a lot of long-hanging fruit to collect)

</comment></comment></comment><comment><USER15> As a Gentoo user,

what I enjoy (freedom of choice):

[ebuild R ] media-video/ffmpeg-1.2.6-r1 USE="X alsa bzip2 encode fontconfig hardcoded-tables iconv jpeg2k libass libcaca mmx mp3 network openal opus sdl ssse3 theora threads truetype v4l vorbis x264 zlib -3dnow -3dnowext -aac -aacplus (-altivec) -amr -avx -bindist -bluray -cdio (-celt) -cpudetection -debug -doc -examples -faac -fdk -flite -frei0r -gnutls -gsm -iec61883 -ieee1394 -jack -libsoxr -libv4l -mmxext -modplug (-neon) -openssl -oss -pic -pulseaudio -rtmp -schroedinger -speex -static-libs {-test} -twolame -vaapi -vdpau (-vis) -vpx -xvid" ABI_X86="(64) (-32) (-x32)" FFTOOLS="aviocat cws2fws ffescape ffeval fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart trasher" 0 kB

what I suffer through:

Currently merging 1 out of 7

* www-client/chromium-38.0.2125.44

           current merge time: 31 minutes and 45 seconds.
           ETA: 1 hour, 37 minutes and 10 seconds.

</comment><comment><USER16> I have a passing interest in Gentoo, but two thing have put me off; 1) the community seems bit splintered with Gentoo, Funtoo, Exherbo, and probably others I'm not aware of. It is not really clear which one I want. 2) The "stable" repository(?) seemed to be in somewhat bad health.

Any gentooists willing to give their opinion of my (possibly quite faulty) impressions?

<comment><USER17> Gentoo user since late 2002 here.

I agree that the state of stable is quite poor of late. I surmised there're a variety of reasons behind this: I'd say the explosive growth of Arch Linux is part of this, personally I've seen much of the community move there. If you look at the state of Arch Linux's community and documentation, you'll see strong parallels with Gentoo a couple years back. Another is Docker leading many people to want a homogenous environemnt using Docker and Debian, Centos or Ubuntu.

That said, I've no plan to move away from Gentoo and found that sentiment mirrored amongst a substantial core of Gentoo "power users" for the lack of a better description.

Why?

       Ebuilds, when you want something "just so", you roll 'em "just so"
       Use flags, ties into the above
       OpenRC.ymmv, but systemd is an anathema, there's been much discussion on the topic so I'll leave that out
       hardened-sources
       Given privacy and concerns I will never trust a binary only system any more than I trust the organistion behind it. With gentoo I need never trust a binary blob should I choose not to

It's worth pointing out that this current state of affairs is relative to the pinacle a few years ago, and that even in its current state the Gentoo community is way more responsive than many comparable communities. I had Firefox 32 (~amd64) within minutes of release, no such luck on my Macbook.

I'd still never recommend Gentoo to new Linux users that lack the curiosity to find out precisely how all facets of their system fit together. If you want a system that "just works", Gentoo isn't it. If customisation uber alles is your battle cry, then you'll find no parrallel.

<comment><USER16> > I had Firefox 32 (~amd64) within minutes of release, no such luck on my > Macbook.

On the other hand, stable apparently still is on Firefox 24 even though the next ESR (which I suppose stable would be tracking), 31, was released in July.

[http://packages.gentoo.org/package/www- client/firefox](http://packages.gentoo.org/package/www-client/firefox)

<comment><USER17> Indeed, it'd be intersting to know how many people use stable.

</comment></comment></comment></comment><comment><USER18> Gentoo was the first distro that I used full-time on the desktop. It was my distro of choice through most of college, running on my trusty (albeit excruciatingly slow) Fujitsu P-2046 laptop. This laptop (really one of the first netbooks) had an 800 Mhz Transmeta Crusoe processor and 256 MB of RAM (later upgraded to the maximum of 384). Needless to say, software installation and upgrades were extremely painful. A larger package (X11, OpenOffice, Firefox) would take over a day to compile, during which time the computer was only somewhat usable.

Those were the days. I've been mostly a Kubuntu user since then, and have enjoyed having my software installations be constrained by network and disk speed. I've also enjoyed not having things break on a regular basis (though Canonical has really tried to emulate that functionality at times).

</comment><comment><USER19> I also have fond memories of gentoo. I got my start in linux using GentooX on a chipped Xbox :). I had a dedicated TSOP flashed Xbox running Cromwell bios as my main server throughout my middleschool / highschool years. I did stage1 installs on all my machines and it was a blast and great learning experience.

</comment><comment><USER20> I use funtoo for my personal server... It's partly because I've used gentoo for so long that I understand it well and I find it very easy to mainting. I also love the fact that it's just easy to install newer versions of any software I need which is great for development and testing (which tends to be more of a problem with ubuntu and debian in my experience where I often end up having to compile from source). That said while I use funtoo on my server, I use ubuntu LTS on the servers of my clients. It's just much easier if there are other people working together.

I used to use gentoo for my laptop and desktop until I switched to Mac and while I do like Mac OS X, I kind of miss the freedom I had with running gentoo. I enjoyed spending hours to scripting fvwm just the way I liked it :-)

</comment><comment><USER21> I use gentoo to stay away from systemd.</comment>