
I'm Slowly Losing My Mind - blackhole
http://blackhole12.blogspot.com/2013/02/im-slowly-losing-my-mind.html
======
ChuckMcM
Ah the existential crisis that is college graduation. Nothing quite like it.
Certainly not for the clever and yet lost ones.

Eric is suffering from a common ailment, lack of an agenda and fear of
employment. Suffering from tales of drudgery and pain that is the "9 to 5 job"
he dreams of something larger, but because he has no agenda there is nothing
to target, nothing to attack. I hope he avoids a game studio initally, they
chew up these guys and spit them out as spent rags into the world suffering
from post tramautic coding disorder.

Spend the summer after graduation helping people. People with real problems in
the real world. Buy a one way ticket to another place and work your way back,
drive from the polar circle to the southern tip of Brazil. Engage with the
world, find the place where you can apply positive good with your skills and
do that for a while. You'll feel better about yourself and the world will be
better for it.

Or find someone you respect and you can learn from and join them in their
quest to make the world a better place.

~~~
jacquesm
> I hope he avoids a game studio initally, they chew up these guys and spit
> them out as spent rags into the world suffering from post tramautic coding
> disorder.

I can second that one from experience. On the other hand games are an
excellent school and will prepare you for anything from physics to systems
programming. Once you get over the burn-out...

~~~
seivan
Third.

Happened to me on my first real gig. Weekends, nights, 4 all nighters in a
row.

Not a game company, but ad agency.

~~~
derefr
I kind of wonder: what happens to people who start work at a game company, but
just clock 9-5 and stubbornly refuse to work more? Are they fired, shunned,
badmouthed in the industry? I never hear about them--kind of like I never hear
about lazy medical interns, I guess.

~~~
wtracy
I don't know what's normal across the game industry, but I know that Valve
uses a stack-ranking system: Every year, the least-productive 10-20% of the
company gets fired.

~~~
dualogy
Oh, they figured out how to measure "productivity" in a largely creative line
of work? Surely they're not measuring LoC #s?

~~~
derefr
Recalling another HN article I read on Valve's process, and what Microsoft's
own stack-ranking system is like, I think the parent's use of "ranking" is/was
literal: each employee lists all the other employees in order of what _they
think_ their productivity is. These ranking-vectors are then multiplied
together to give an average ranking. So nothing is being "measured" any more
than polling the populace about the length of the Emperor's nose is
"measuring" it. It's more a way of saying, the _justifiably least-popular_
10-20% are fired.

~~~
iso-8859-1
It sounds absolutely terrible. What prevents the organization from being
filled with evil people just supporting one another? How come a organization
filled with quiet hard-working people doesn't outmatch them?

------
noonespecial
You sound like (younger) me and you seem to be getting some flak here from
people who should know better. And if you are like me, I've got some good news
and some bad news.

The tl;dr is: Just hold on. It gets better. Much better.

The bad news: You've probably got a good case of ADHD, coupled with mild
depression, the usual existential angst, all made worse by a huge impending
transition. The "tools" you're building (I was building) were really giant
abstraction layers between myself and "the real world" (if that makes any
sense). I'd start out with a specific purpose of course, but falter as the
scope expanded until I was trying to encapsulate all of reality (or
possibility?). I'd get excited when I'd discover parallels between the
projects I'd started and excitedly think to myself "wow, when I get this thing
done its going to do _everything_! Its a whole new way to see the entire
creative space!" Really they were just all running together like melting
crayons in the global namespace of possibility. What you're feeling about
these projects is _inexperience_. I know it doesn't seem like it, but it will
looking back.

The hard realization was that the stuff in my head just _couldn't_ be
expressed by any real world media, even of my own design. Reality sucks like
that. Worse, I only had so much energy in a day, and only so many days to
live. If I had 10 lives I still couldn't explore half of what I already wanted
to. The worst of all? Lots of people felt just like I did. They were better at
most things than I was too. I was no-one special.

The good news: I think you'll probably just outgrow it. And I'm seriously
trying not to be condescending here. I think I was about 25 or 26 when I
noticed that my mind was starting to get "quiet" for lack of a better term(1).
I didn't feel desperately pulled in a thousand directions anymore. All of
those world changing projects I'd desperately started and only built 30% of
when I was young turned out to be completely useless. But the experience I
gained wasn't. The soul-sucking jobs that had seemed so impenetrable were
actually made of interesting little problems that were fun to solve. Soon I
was comfortable enough to strike out on my own as a consultant, then start a
business.

I guess what I'm telling you, hopefully without even a hint of judgment or
condescension is to hang on, I think I was a lot like you and it got much
better for me through no special effort or grand insight of my own. I think it
will for you too. Its just growing up. Not "growing up" in the awful,
condescending way people say it when they want something from you. Just what
happens. I truly wish the best of luck to you.

(1) Apparently this is fairly common for many adolescent sufferers of ADHD.

~~~
mistercow
The other good news, if it's ADHD, is that if it doesn't go away (or you don't
want to wait), there's a lot of cheap medicine out there that works really
well.

~~~
mixedbit
I'm not sure if this a good recommendation. According to this talk:
<https://www.youtube.com/watch?v=zDZFcDGpL4U> ADHD are normal symptoms that
occur when a creative mind has to perform dull tasks. ADHD becomes bigger and
bigger problem, because today, there are much more stimulants that cause
things like traditional school or work to be boring.

According to the speaker, curing ADHD with pills solves the problem by
reducing creative potential of a mind. A better approach would be to create an
environment where people with ADHD can thrive.

(Note, that I don't have any real experience with ADHD, this comment is based
only on the talk).

~~~
derefr
I have a friend. He has to be listening to music, watching television, reading
some article online, chatting with people, _and_ playing some video-game--all
simultaneously, all the time--or he feels like his mind is collapsing in on
him from the weight of all his thoughts and ideas and ambitions. He often gets
drunk just so he can concentrate on only doing one thing--composing a song,
say. Even when intensely interested in something--watching a movie with
friends, say--he can't actually focus long enough to follow the plot. He ends
up having to ask for a summary because he has no idea what happened.

And this is in his _optimal_ environment, completely under his control.

He is not "thriving." He is _cache-thrashing_.

------
KVFinn
Your approach to game development reminds me a bit of:

<http://news.quelsolaar.com/#post42>

>Game developers Conference was a very strange experience. I used to love
going to GDC sessions, because there was so much to learn. As you evolve your
skills that cant last, but now it feels like I'm operating on a completely
different plane, I cant learn anything because I have nothing in common with
anyone in "the industry". Almost no one is talking about programming, and when
they do they talk about problems i don't recognize, and techniques i don't
use. My "reinvent everything" policy has taken me so far away form what others
do that I can no longer relate. I was talking to someone about size of code
base and realized that their games code base was ten time the size of mine,
yet we couldn't account for the difference in what our engines could do. Am i
missing some point? Its like we have developed two completely different
branches of evolution to solve the same problem. I found my self sitting in
session after session thinking that I would never do anything they would do.

>What strikes me the most is how complicated they have made it. There are
managers, producers, directors, scripters, leads, and assistants yet noting
seams to become easier. Everyone agrees that's the way to do it, yet no one
seams to prove it. Is no one asking why? We are doing the same things in games
that we have always done, just now we make it so much more complicated for
ourselves. Since what we could easily do in the past is now hard we cant do
anything new, and we become stuck. Destructible environments now are hard, yet
in Super Mario bros they where easy. We are raising the bar but we less
gracefully clear it. We try to tell stories, yet we still cant do better then
a text adventure. If we want to tell stories I cant understand why we make
games at all.

<http://news.quelsolaar.com/#post41>

------
yesimahuman
Honestly, it just sounds like you need to practice the art of _getting things
out there_. It's a really hard skill to learn, but you only learn it by
releasing little bits as soon as they are at least usable, and never a moment
later.

After awhile you'll be more content with imperfection, and you'll realize
perfection isn't really worth it (or feasible). And if you do start putting
price tags on things, you'll learn how to make your dreams a financial
reality.

You are just graduating, many people _never_ learn this. Start shipping
something now, because it takes a good amount of time to learn and improve
this process.

------
dollar
Word to the wise - just stop. Get a life. Do something else with your time. Go
see movies. Spend time with friends. Just sit outside in the sunshine and
breathe the air. Do exactly nothing for a while. What are you trying to prove,
and who are you trying to prove it to? In all likelihood you are not going to
change the world one little bit. Enjoy yourself, it's later than you think.

------
defrost
The good news is that there is a demand for and opportunities for those
obsessed with building entire tool chains from top to bottom (or at least with
coming to grips with non standard stripped out libraries).

The typical application areas are bespoke high performance robust
instrumentation; satellite communications, downhole radar systems, autonomous
civilian drone projects, scientific instrumentation. Even gadgets like the
recent leap motion device benefit from having custom drivers developed for it
that seamlessly and compactly fill the layer between raw hardware and a clean
and simple device API.

Erik may never get to reuse and apply the bulk of the code he's already
developed but he can leverage the fact that he has built his own components as
opposed to simply banging together existing library routines.

One way out of this particular hole might be to join a team with greater
breadth and take on their demands as an external driving force.

------
ChrisNorstrom
Eric, I think you need to find your other half. Not a wife or girlfriend but
your "Non-Competing Non-Biological Brother". Jobs had Wozniak, Brin has Page,
and the list goes on and on from YouTube to Yahoo to Microsoft to Valve. A lot
of big things are built when one man finds his non-competing other half. Men
need other men to serve as a balancing force for their weaknesses and
strengths. Otherwise you're going to end up like Nicoli Tesla and all the
other brilliant people who died penniless.

------
gfodor
Good art comes by embracing constraints. By obsessively building your own
tools you are desperately trying to remove the very constraints that will
cause what you create to be amazing.

Try embracing the constraints you so fear and see what you can do with them.
Only once you have truly hit the barrier can you truthfully tell yourself the
constraint is real and not imaginary, anyway.

~~~
cpeterso
A change in perspective can help, too. Instead of aiming for "perfect code",
try finding the "perfect compromise" to get to the important work.

------
davidandgoliath
The silliest part of this whole article? "I graduate college in 2 months. I'm
running out of time." Ah ha! You've got all the time in the world to practice
& hone your craft, why the rush? Graduation is just the beginning, not the
end.

~~~
jdavis703
Not to be pedantic, but those who believe their time here is a scarce
commodity are often driven to do great things (e.g. Steve Jobs).

~~~
chromaticorb
why is that pedantic?

------
freework
This guy needs to build something with the tools he's making. How does he know
his tools are going to work well if he doesn't ever use them? I've built many
tools in my day, but never in a vacuum.

------
plaguuuuuu
A normal job _will_ kill you. Source: I have a normal job, and it's killing
me.

It's not really fun in the way that hobby programming is fun. What I really
live for tho is composing music. So I'm considering either working part time
(because I can't compose any more at all, due to tiredness from my job, so
maybe I'd relax enough to do it), or switching career entirely and eking out a
living doing composition for movies/games/whatever. But then that would turn
it into a job, which would probably ruin it for me.

~~~
LVB
There is huge variability under the term "normal job". My last job (of many
years), was starting to drive me batty. It was directly impacting me due to a
high work load and travel, and secondarily hitting me with almost constant
mental stress.

After making the decision to quit, I specifically sought out jobs _within the
same field_ at companies known for a more relaxed cultures. I found one and it
has made a world of difference (been there almost 3 years). Top management on
down want a "family friendly" environment with reasonable hours and no take
home work. I can walk out that door guilt-free at 5pm, along with everyone
else, and do my own stuff from then on.

Such a role maybe won't fulfill anyone's dreams or passions, but it might
providing funding to pursue such things while maintaining a stable household
and not incurring money stresses.

------
kposehn
Erik, you commented that you want to do these things before you get tied down
by marriage and kids.

In my experience, it does not tie you down; it gives you the most important,
defining reason of your existence.

It is a lot easier to change the world when you have someone to change it for.

------
granitepail
the phrase i see uttered time and time again throughout his posts (i've read
three, now) is "then i realized that <library/component> sucks" followed by a
self-indulgent pursuit to make a better <library/component> that ends in
failure.

i am the type of programmer who loves to reinvent the wheel (albeit, mostly as
a means of exploration) but i never approached it like this. this seems to be
very self-destructive behavior rooted in the cop out of the yet-unvalidated
claim, "i can make something better."

it seems as though many of his judgements are made before gaining an intimacy
with the subject he wishes to work on. i would suggest an investment in
actually refining his skill set. he may be able to see the need, but doesn't
seem to understand how things got to where they are — an important step in
moving forward.

i wanted to sympathize with his plight, but it seemed as though a lot of his
suffering was caused by an unchecked ego. i think he'd be happy undertaking
and completing some VERY simple projects — perfecting them before moving
forward.

~~~
qu4z-2
I've been much happier since I switched from trying to make a better wheel to
simply trying to better understand existing wheels (by reinventing them).

------
ezolotko
Let's spill bit of hatred on the rooster's nest: "...box2D physics
integration,..." Why not make 2D physics engine by yourself? The answer: just
because it involves real research and development to make it. Do it well, and
you will be praised, and nobody will call you insane. And what the author
really does is a poor cock-a-doodle-doo with a custom string class.

------
jacquesm
Hey Erik,

Once you graduate, take a silly job for a bit (something not brain related)
save every penny and then travel for a while. More perspective will help and
you can't get that from sitting in one place.

~~~
blackhole
I really want to go traveling. I've already taken a gig being an undergraduate
TA this quarter in an effort to save up enough money to take me traveling if
my last ditch effort at turning things around fails. One way or another I'm
going to see the world before I turn 24.

That's something your little christmas gift helped a lot with - thanks again
:)

------
evmar
What I read into this is a feeling I have to fight in my own work: it's
easier, in an emotional sense, to fiddle around with your tools than it is to
face the real problem. The amazing things you're imagining creating don't
really need a replacement for std::vector to succeed -- people make great art
with all sorts of tools way worse than the STL.

The way I fight this urge in myself (and balance it against the real need to
occasionally improve a tool or library) is to occasionally make a project
where I make a point of doing everything the most
straightforward/simple/least-clever way possible, even choosing the hackier
way when available as it makes me uncomfortable. I find it helps me reset my
acceptability meter. Usually I find the project works out just fine, and all
the things I imagined needed improvement were just avoidance.

------
xyzzy123
I'm coming really late to this thread, but I'm going to comment anyway.

What I'd like to propose is the idea of the "success loop". It seems to me
that you are stuck in this place where you get no positive feedback from your
work.

The other way to work is to throw out a lot of small things, and then build on
the things which work, and people find valuable. All of my large hacks have
turned out to be the result of small hacks, positive feedback and
collaboration.

Consider not focusing on the whole vision, but choosing a kernel, just one
novel contribution.

The best ideas will attract other people. Once you have a bunch of minds
working on things, it becomes like a relay where your analysis paralysis gets
"routed around" by someone else.

If you can create this environment for yourself and roll with it, I promise
you will have the time of your life.

------
dougk16
Some technical advice, since most of the comments here are life advice:

Use higher-level languages like Java or AS3 or Haxe to flesh out new ideas
wherever possible. You'll kill yourself using C++ to fully vet crazy new game
engine paradigms from scratch, even if it's just the compile time you save.
Once you've gone through your umpteenth refactoring in managed code land and
are happy, you can do a source to source compile or something similar.

This strategy has really helped me in the past. In fact, one time I wrote a
quick 2d Flash application before writing the full 3d C++ version that was my
goal (for a haptics-based viscous fluid simulation). It really helped me get a
"mile-high" understanding of the challenges before diving into the lower-level
jungle.

EDIT: Oh yea, and never write your own GUI library.

~~~
switch33
Python is often very useful in higher-level language abstractions and has a
huge commmunity developing many different things. Many big gaming projects
have wrappers for their APIs programmed in python. Python used to be the de-
facto for a lot of different gaming companies for the networking especially
because it was proven to work.

I know Haxe is a higher-level language and pretty worthwhile, but my god the
syntax of it makes me cringe. The portability in my opinion more or less may
way out as beneficial for sure, but I'm not so sure I'd expect to give it much
of my time.

------
KVFinn
Tools programmers for games are in demand. If you ever need to work for the
man to pay rent you'll be okay.

Realize most people, probably 99%, just go to work ever day. That's it. They
aren't revolutionizing industries, they aren't creating a new company every
six months. You've been in school getting an applied mathematics degree and
you are absolutely despondent that you aren't also running your own successful
games company by now. By your senior year of college?

Not all companies are the same BTW, don't generalize your experience at MS to
everyone. Apply at Valve:
<http://newcdn.flamehaus.com/Valve_Handbook_LowRes.pdf>

Or DoubleFine or TellTale games or Majang.

------
melloclello
After reading your article, my friend recommended a pertinent Venkatesh Rao
column, which you seem to personify to an extreme:

<http://www.ribbonfarm.com/2010/03/18/the-turpentine-effect/>

------
chromaticorb
this is the blog equivalent to someone blubbering in front of the camera on
youtube

~~~
asciimo
Ha, that's true! Thanks for the analogy. Yet I sympathize with him in a way I
never would a YouTube blubberer. There's something deeply poetic about a
creative genius who can only produce tools. On par with Greek mythology.

~~~
femto
I can see how it happens:

You start off trying to solve a specific problem. You then spot all these
related problems, that you could solve by generalising your solution. You tell
yourself that if you build a tool to solve the general problem, the solution
to your original problem is "free", since it is only a single button push or
function call away. It seems wasteful to make your code specific, when it can
be general.

Before you know it, you are completely bogged down trying to write a general
purpose tool and never get to the point where you can push that button, to
generate the originally required solution. You are stuck producing tools.

An alternative is to tell yourself, and continually remind yourself, that you
don't know enough about the problem space to write a tool. You must solve the
original problem, in order to teach yourself about the problem, by example.
The solution is a prerequisite to writing the tool. Once you have your
solution, you can either a) use the experience gained to generalise your
achieved solution, to form a tool, or b) decide that the general solution is
not important and move on to the next project.

It seems so easy when written down...

------
switch33
I thought about doing this as well when I was younger in high-school and even
in the beginning of college with starting my own company upon graduation where
I'd actually get freelancers who wanted to do it just for themselves. It
almost completely enveloped my life reprogramming a game to match ideas. I had
this mindset that the people who really want to see great games are the
players and the players so hellbent and fed up with crap games that they are
willing to go to great lengths to program their imaginations.

I was much more on the analysis side of searching for projects that could do
things better. I looked high and low for tons of platforms, libraries, and
frameworks comparing them and seeing how they implemented the ideas. I came to
the conclusion that some of them are pretty decent but almost all of them are
rather bulky. And the ones that are not rather bulky in implementation aren't
as separable/modular as they should be.

In my opinion it's not necessarily an ADHD thing as it is an creativity with
games thing versus the constraining realities of programming (for corporations
or not). I don't think I have ADHD I just tend to obsess over certain things
for certain periods of time. In fact I like the way I am because I have an
undying determination when I am focused on certain things that I do have some
control over.

I still like reading programming concepts a lot, just not so much into
spending hours upon hours rebuilding everything. Many companies just want
something that will work. This is irritating to me as it is to many people,
but it's the reality of the situation.

If your still hell bent on releasing some games my suggestion is to open
source good parts of the tools you are developing if you haven't already and
ask for support from people who really want to make games. I will definitely
consider joining in on working on some projects for free if it means that
better games are developed.

~~~
blackhole
bss-util: <http://code.google.com/p/bss-util/>

TinyOAL: <https://sourceforge.net/p/tinyoal/>

FeatherGUI: <http://code.google.com/p/feathergui/>

~~~
switch33
Thanks for the links, I'll read into them and might write some comments. Do
you have an e-mail or skype account for contacts?

I know a friend or two who may also be interested and I'll point them to the
projects as well. I think it'd be fun to try something new and create a team
if possible.

~~~
blackhole
My e-mail is erik2003 at gmail dot com.

I'd be interesting in starting a project or helping a team out, just be a bit
careful because I have midterms this week and will essentially be out of the
running until Wednesday.

~~~
switch33
I'm rather busy this week as well. But I will definitely e-mail you sometime
soon. I need to contact some other people see if they are interested.

------
calhoun137
I took a 10 min break from another all night programming binge to check out
HN, found this, realized it sounded like the story of my life, then realized
that the majority of the comments are saying "yea that sounds exactly like
me". It should make us all feel better to know we are not alone!

------
meric
I suggest looking at Common Lisp for additional programming power.

May be relevant: <http://www.lambdassociates.org/blog/bipolar.htm>

"He can see far; further than in fact his strength allows him to travel. He
conceives of brilliant ambitious projects requiring great resources, and he
embarks on them only to run out of steam. It's not that he's lazy; its just
that his resources are insufficient.

And this is where Lisp comes in. Because Lisp, as a tool, is to the mind as
the lever is to the arm. It amplifies your power and enables you to embark on
projects beyond the scope of lesser languages like C.

Writing in C is like building a mosaic out of lentils using a tweezer and
glue.

Lisp is like wielding an air gun with power and precision.

It opens out whole kingdoms shut to other programmers."

~~~
waterhouse
Guy says he made an audio engine, graphics engine, game engine, and so on.

In order for these to be useful for a serious, high-quality product, there
must be no perceptible pauses induced by garbage collection.

An audio engine in particular seems to need to run extremely quickly--on Mac
OS X, at any rate. Perform this experiment: Pick your favorite music player,
such as iTunes, play your favorite song, and run this:

    
    
      $ for ((;;)); do killall -STOP iTunes; sleep .008; killall -CONT iTunes; sleep .050; done
    

This simulates 8-millisecond GC pauses. On my fairly fast, modern laptop, this
is too much--I hear a bunch of stuttering in the audio. (It's kind of
surreal.) I have to cut the pauses down to 5 milliseconds to completely avoid
stuttering. This goes for every program that produces audio output that I've
tested. It is possible that audio output under other operating systems is
handled differently, and that you could install a buffer of sound output for
the next 50 or 100 milliseconds or whatever [it may even be possible to do
that on OS X--I don't know], but I'm not betting on it. ... Besides audio,
usually games want to maintain a certain refresh rate, such as 30 or 60 frames
per second. 30 fps is 33 milliseconds per frame. If a pause lasts any longer
(in fact, if the pause lasts [33 msec - <time to compute and draw the next
frame>]), the drawing will stutter. Maybe you might think, "Eh, who cares?
It's just a little stutter from time to time." If I've read this guy right,
this is exactly the sort of thing he would not tolerate.

In order for such an audio library to be writable in Common Lisp, Common Lisp
compilers/runtime systems will have to get their act together and ensure that
the maximum GC pause time is less than 5 milliseconds on my machine, no matter
how many objects are allocated by the program using the library.

In the absence of Common Lisp compilers/runtimes that can do this, there are
two choices: write it in a different language, such as C or C++ with manual
memory management; or write your own Common Lisp runtime + compiler that can.

I have gone down the latter rabbit hole. You may hear if I come out at some
point.

~~~
meric
You could write bindings for libraries he's wrote and write higher level logic
in CL. It also appears (from google searches) there are ways to tweak garbage
collectors in some versions of Lisp as well as ways to manually manage _some_
memory? I don't know if they can be applied to writing audio or graphics
libraries though.

I've ran your script. Was surprised lower milliseconds I wasn't able to notice
the stutter. I'd have thought even 1 ms would be noticeable.

>> Common Lisp runtime + compiler

Would like to hear more about this. Have you written about it in a blog post
somewhere?

One more point: Common lisp isn't the only option. There are other powerful
functional languages out there. e.g. Ocaml which uses an incremental GC.

------
javajosh
You like to make things. Good. Now you need to _make things that people want
to buy_. Or go to work for someone who does. That will give you money, which
will keep you alive.

And do not underestimate the value of staying alive. Food, insurance, housing,
clothing, and the like is very good to have, and many people in the world
don't have have enough of it. Your constantly decaying state is what will keep
you sane, it's what will keep the pressure on to connect back with the world.
Because to _make things that people want to buy_ you have to pay attention to
the world, and to other people's problems.

Right now you're consumed by your own problems. If it wasn't for the need to
stay alive, I'm sure you'd stay in that head space forever, pretty miserably.
Luckily, you get hungry and have to pay rent or the cops will come and force
you out.

So you gotta make some money.

Money is not evil. People who give you money of their own free will are
usually happy to do so because their other options are worse (such as, for
example, not getting their projects done). Pay attention to that when you get
a job: they are giving you money so that they can do more projects. That's it.
Nothing existentially deep or particularly horrible about that.

The tough thing for a programmer with integrity is to learn to execute
projects the wrong way, on purpose. There is a fear that coding the wrong way
(the wrong language, wrong architecture, wrong idioms, heck, even the wrong
code formatting) will somehow sully you. Nope, it won't. The codebase has
momentum that is encoded in this structure and in the processes and people
around it. It adds unnecessary, arbitrary complexity to even the most trivial
of changes. Almost all installed codebases are this way or will get to be this
way at some point.

Don't worry about that. It is not your problem. Your job is to learn to do it
the wrong way to the best of your ability, to navigate (and perhaps mitigate)
that complexity as best you can. (And don't worry, you'll be figuring out ways
to sneak in 'the right way' soon enough.)

This job is going to take 40 hours of your life every week. (If you work for a
game company other than Valve, double that.) That leaves about 8 hours of time
on the weekdays and all day on the weekends free, plus vacation days. Learn to
put your work down and do what you like - work on your pet projects, or your
pets. Learn to ski. Buy a dog. Get a girlfriend. Outside of that 40 hours,
it's your life, and as a programmer you'll be making good money. Spend it! Buy
me a beer!

I would recommend strongly against a startup, given your level of agitation.
When you are able to control your own mind so that you are able to focus on
work, and then put it aside, then you might try a startup.

There is no need to give up your dream, kid. You just have to learn how to
stay alive while you chase it.

~~~
capisce
Why does it have to take 40 hours of your life every week? Why not less?

~~~
javajosh
I'm going to assume that your question is well-meaning. While there are indeed
ways to make a good living working less than 40 hours a week, given the OP's
state of mind, it seems to me that the traditional, straight-forward, easy-to-
implement solution of a normal day job is what he needs to hear.

You don't burden someone who is badly in need with options. You give them
solutions that work. Optimize later.

~~~
capisce
I'm questioning the hidden assumption that everyone should work five days a
week. If the guy really wants to follow his passion a better solution would be
to work (at a reduced wage, sure) part-time and thus have more time to work on
his own projects.

~~~
derefr
Personally, I suggest the solution from the _Four Hour Work Week_.
Paraphrased:

1\. Start a company that passively earns money. It doesn't have to earn _much_
, it just has to earn it with _no marginal effort_ on your part. Though,
earning more is better: ideally, your audience should be wealthy people in the
Western world. Consumers who spend frivolously are good. Businesses are
better. Big businesses who don't even remember you're on their balance-sheet
are best.

2\. Then, go live somewhere _not_ in the US, somewhere with an extremely low
cost of living, somewhere where that passive income goes a long way. (The book
terms this "travelling", but you don't actually have to keep moving; you can
pick one cheap place and stay.)

3\. Do your life's work from there.

------
DigitalJack
" By the time I had gotten enough money to "pursue my dreams", I would have
gotten married and be tied down by kids."

Dear God, I hope this person never has children; or before he/she does that
they have a _serious_ change of heart.

~~~
evolve2k
Please, this comes across as quite insensitive.

------
Qantourisc
Blackhole, I have the same problem (slightly):

I once coded std::vector and more why ? Bad education mostly, turn out that
stuff is rather good :) Took me the hard way to find that out. I still need to
replace all that code.

What I mostly learned: pick ONE thing, and assume you will spend 10 year to
complete it as life will keep interrupting.

Also if you ever decide to code an audio engine again, could use some help :p
(from a person like you) (find me on freenode.org)

~~~
blackhole
My audio engine is open-source if you want to look through the code:
<https://sourceforge.net/p/tinyoal/>

I rewrote std::vector so I could separate arrays of objects that have
constructors/destructors and objects that don't. These are almost always used
by other data structures, not by themselves. I still use std::vector when I
just need a dynamic array that respects constructors and proper copy
semantics. The problem I encountered was that std::vector refuses to integrate
nicely with other data structures.

While I'm sure many would still cry foul just because they can and don't
understand what I'm doing, I can assure you that my re-implementation of
std::vector is purposeful and used in specific circumstances, not as a
generalized replacement, which is the real issue.

~~~
Qantourisc
My project is a bit ambitious, and throws out OpenAL :( And I don't think
you'd like my coding style :p

~~~
blackhole
And here I thought I was supposed to be the crazy one :3

------
42tree
I don't understand, why post this on Hacker News? "This is the blog equivalent
to someone blubbering in front of the camera on Youtube"

------
Aardwolf
I also often start but never finish a game programming project, and reinvent
the wheel a lot (though not as far as reimplementing C++ strings, more like 3D
and UI libraries and such).

Don't forget to open source everything, and maybe one of your reinventions of
the wheel may land you a good job.

And maybe this means you're meant to be a systems programmer, not a game
programmer.

------
bartwe
With your amount of passion you can still work on your ideas after marriage
and kids.

------
ohwp
This story reminds me of the story of Blender
<http://en.wikipedia.org/wiki/Blender_(software)> now one of the best 3D
software packages available.

------
msbroadf
Brings back memories of <http://www.imdb.com/title/tt0383028/>

------
cmccabe
So you created your own string class?

Wrapped all the operating system's APIs in your own custom classes?

Built a lot of infrastructure on the theory that you might need it later?

Obsessed over the best way to shave some efficiency yak, without ever
measuring whether it mattered?

Relax. You're a normal C++ programmer. I did all the same stuff, years ago.
Now get a job at a company that doesn't suck, and relax. Try to get hired at
Valve, or Blizzard, or some indie company. Don't work for the people you know
suck and you'll be fine.

------
thoughtcriminal
You sound terrifically smart blackhole, but you took on too big a project.
Maybe. Maybe not. Maybe you can get the project outsourced (in pieces or as a
whole) to get it done that way and become famous :)

Or continue doing it yourself (not recommended, but hey, if you are deriving
some kind of joy from it...).

But whatever you do, take care of you for awhile. Love yourself. You are a
good person.

------
LatvjuAvs
Sounds fun, you are doing what you are enjoying and some aspect of collective
consciousness are contradicting with your definitions.

Continue doing what you enjoy until you can't.

Life will provide if you put trust in it, if you don't, heh, it will provide
with it also :D

------
seivan
I can relate to everything the guy writes, even in his comments, even in his
previous article, [http://blackhole12.blogspot.se/2012/12/dreams-of-
failure.htm...](http://blackhole12.blogspot.se/2012/12/dreams-of-failure.html)

Fuck, it's scary.

