I'm Slowly Losing My Mind
blackhole12.blogspot.com
blackhole12.blogspot.com
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.
Isn't that called getting a job?
Engage with people outside of your Internet friends, you can do that easily at most churches, volunteers are always scarce, or with your any number of organizations in your community.
Depending on your life circumstances and the time of year you might not be in a position to live as inexpensively as you would like but the problem our author has is that he loves to figure out systems (cool) but doesn't have any meaningful systems to figure out (bad) so he's rewriting the systems he can get his hands on to burn up creative energy. And yet there are lots of broken systems that could really really use his help, and they aren't all technical.
Lets talk about Aaron Schwartz for a moment, I met him at a small conference we were both attending and I got to talk with him a bit about his aspirations for making information available. Organizing around that goal gave him tremendous focus. Our author doesn't have a mission yet, that thing he's going to do. He needs to find it, and to find it he has to stop thinking job vs recreation vs my time vs work time. He has to think, goal, requirements to achieve that goal, next one on the list. That will organize his life for him and he won't be going crazy any more.
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...
Happened to me on my first real gig. Weekends, nights, 4 all nighters in a row.
Not a game company, but ad agency.
Surely there are such people in the game industry, it's even possible that whole companies can operate on a 9-5 schedule, just my bad luck that I haven't seen any :)
It's really too bad; I would love to work at a leisurely game company. Maybe I'll have to start one :)
Replacing one quixotic fantasy with another will only leave him with the same void inside him when he returns home and finds that he's in the same situation, only a little bit older. "Finding yourself" is a strategy for avoiding having to look at yourself; otherwise you'd simply say "oh, there I am" and be done with it in half a second.
Of course, the half-second version of the existential journey doesn't generate much material for blog posts.
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.
But if you're an adult--if you get to decide what does and does not go into your body--and you find out you might just have so-and-so condition and you could be much better off just taking this-or-that pill every day--and that the worst that can happen is that the pill just doesn't help--then you should forcibly shut down the ugh field[1] associated with the treatment, and just try it. If it helps, keep going. If it doesn't help, stop. If you don't like the way it makes you, stop. Just find out, one way or the other.
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).
And this is in his optimal environment, completely under his control.
He is not "thriving." He is cache-thrashing.
Yes, ADHD denial is a very popular position. It has about as much backing in science as climate denial. The idea that ADHD meds reduce the "creative potential" of the mind is pure nonsense.
Many teenagers or 20 somethings are stressed out from the drama and other junk that goes on during college as well. And feeling depressed is normal sometimes. If you are happy all the time then you probably have a different personality disorder lol.
AD(H)D is severely underdiagnosed. According to my own psychiatrist, studies have been done to find the base-rate of ADD/ADHD in the population--meaning not the people being treated for it, but the people who perfectly fit all the criteria and would respond excellently to treatment if it were provided--and it seems that only about 7% of the people who are "model candidates" for the disease, know they have it. And these are studies of adults, not children--people who have been living with strong, debilitating ADD/ADHD for years or possibly decades without any awareness or coping strategy.
Honestly, if I get Bill Gates-level rich, I'm going to dump my charity-dollars into ADD/ADHD-awareness. Disregarding how much better my own life has been since I started being treated for it, if all the people who are currently out of the work-force, can't hold a job, or underachieving at their job--who think they're just "naturally lazy"--and who could start achieving the things they want to achieve if they knew they had a treatable condition--got help--well, perhaps it's a bit optimistic, but I like to imagine percentage-point gains in GDP and drops in that mysterious "base unemployment" figure that just never seems to dip below 5%.
---
Also, just as regards "If you are happy all the time then you probably have a different personality disorder": ADD/ADHD is orthogonal to (clinical) depression--though you can certainly be depressed from all the ways your life sucks, and your life is more likely to suck if you can't stay focused and motivated long enough to achieve anything.
However, how I would describe my own state, previous to treatment, was, "perfectly content to be laying in bed all day doing nothing much at all." I had studied Zen long enough to just not be all that worried about doing nothing. There was nothing wrong with doing nothing. And yet, really, I was just avoiding setting goals I knew I couldn't meet, which is to say, any goals at all. Blowing away the fog of demotivation I was wrapped in for most of my life has not suddenly made me upset with the idea of laying around doing nothing--it can't do anything so powerful as changing your mind. But it has made me feel that much more is possible. And that has made me upset with the idea of wasting what is I can suddenly see as my potential.
So what do you think the prevalence rate should be? How is it even a disorder if it affects 15%?
That's not to say that treating it then won't be beneficial, but it would be a different angle to look at it from - improving baseline humans through medication, rather than fixing some sort of defect.
I would say that the best comparison is nearsightedness.
I imagine humans used to have, on average, pretty excellent distance-vision (we can't know for sure--eyes don't leave fossils--but "seeing clearly" seems to be something with a lot of selective pressure, as far as survival goes.)
But now that that selective pressure is taken away [have you ever thought "they're not attractive, because they need glasses"?] nearsightedness runs rampant, and just keeps getting worse as nearsighted people cross their genes together.
But does it matter? Of course not! The people affected just wear glasses or contacts. And then they're normal.
You wouldn't call a person wearing glasses an "enhanced baseline human." They're obviously the result of something going wrong, somewhere. The glasses are a crutch.
But still, we don't add moral judgement to "having bad vision"; it's not something to be pitied. We don't run donation drives to get poor people glasses.
But on the other hand, living your whole life being unaware that you're nearsighted, and unaware that if you just put on a pair of specs, you could read signs twenty feet away like a regular human being--that's a terrible fate.
We don't run donation drives to get poor people glasses.
Actually, my church has participated in just such a donation drive. The main difficulty, I think, is that it's hard to get people the correct strength of corrective lenses out of a random bag of glasses. Just FYI, your main points are good.I didn't make a moral judgement on improving baseline humans, I just said it was a different lens to look through as compared to saying someone has a condition.
If ADHD is that prevalent (5-15% and severely underdiagnosed) then having ADHD is actually being a regular human being !
What is baseline or normal is highly subjective. There are enough near-sighted humans in the world to say that sight problems are pretty much just part of the human condition, for pretty much everyone at some point in life. Whether you consider a pair of glasses to be a defect fix or an enhancement is up to you. I place no moral value on either option.
Is this why you (or someone) voted me down? Because you assumed an implied criticism in my looking at ADHD remedies as an enhancement?
You'll find me the last person to argue that enhancing humans is a bad thing. I wanna live forever and have robot parts :)
I meant more, when someone has cancer, that's bad and you pity them. Cancer is an Evil that we should Fight. Whereas we don't tend to think this about nearsightedness. It is, like you say, "part of being human." It's just a screwed-up part of being human that we universally reject and patch over without thinking too much about it. Like having worms[1].
The reason I wouldn't compare it to having robot parts, is that I don't want people to associate it with having robot parts. Because some people don't think we need robot parts.
Imagine if glasses didn't exist, and we had just invented them--with everyone already being as nearsighted as they are. There are some people who would insist--in the mode of thinking of glasses as an "enhancement"--that people should just "learn to cope" with their nearsightedness, and "use their willpower" (that is, squint).
It seems pretty clear to me that there is a distinction between "things people deserve to have to make them functional" (like glasses) and "things people could use to make them even better" (like, say, a Google Glass headset.) I want to be clear that ADD/ADHD medication should be thought of as the former, not the latter.
(And I didn't vote you down, if you're curious.)
1: http://www.radiolab.org/2009/sep/07/sculptors-of-monumental-...
As soon as someone mentions (for instance) hypothetical longevity treatments, some talking head pops up to tell you how it needs to be regulated and probably put on hold while we consider the societal ramifications and how fair it all is and really, philosophically aren't we all 'supposed' to live a certain length of time and that gives meaning to our lives?
And mostly I just want to punch them in the face until they shut up, because people that think like that will be the reason I can't get robot parts and live forever :)
So I can understand if you think it's important to frame the debate in a particular way, though I don't really make the distinction myself between your two categories of things.
"Erik... I haven't had a chance to read much else on your blog, but I too quite likely would be considered a "delusional idealist" by society's standards. You seem to be on the path of the journeyman programmer and one day will be an expert and then some.
For some context I am turning 35 in less than a month and have yet to release my life's work which extends over 11 years of effort after my college degree. A significant amount of my efforts cover similar ground as your aspirations. I still live month to month (~$200 in my bank account right now and significant debt I incurred in following this path I'm still trying to manage). By the time that I do launch my effort I will have spent well over 15k hours on it. I often think about how life would be if I was paid my corporate contract rate for those hours.
While aggressive refactoring may occur in your efforts from time to time I suppose realize that there is an inherent truth and logic in ones work. For me it brings the only solid peace of mind in an uncertain / illogical world. It is the reason I'm writing this right now.
It sounds like you are just finishing up your degree... If possible move back w/ your family. Let me tell you... It sucks, it sucks, it sucks... I did for 3 years after my degree and faced daily admonition & nagging from my parents on why I didn't have a job. It was even harder to deal w/ their assumptions that I was "unemployable" / not good at my chosen path. Despite knowing none of that was true it's still hard when the only understanding most folks understand is your job / title / income one might gain from employment.
I even spoke at various conferences and this had no effect on my families opinion. I suppose you could say I lucked out after my first major tech conference because an O'Reilly editor was in the audience and I got an invite to the '04 Foo Camp. I distinctly remember sitting at a table chatting w/ the "Hot or Not" founders who were quite successful by that time. I remember desperately trying to conceal I was living in my parents basement, had no income, and what not.
Outside funding is going to be a bitch as unfortunately investors do not favor tools development despite how innovative they may be. You'll likely find yourself bootstrapping and need to release your work before you receive any sort of favorable discussion. The upside is that you'll retain 100% ownership.
Does it get better? I'm not going to lie... Things can get pretty shitty and daunting at times from economic to social relationships from friends to potential significant others. You may often find yourself pushed into out-group situations. I recently even faced this by general neighborhood friends of ~5-7 years.. Few people will understand why you may not show up too often on the weekends. It sucks when you stop getting invites to social events and see folks post pictures at them while you are working around the clock late into the evening Friday / Sat night. I can't even mention to potential dates that I run my own long term R&D oriented company and work nights and weekends quite often; doesn't matter if they work in the tech industry either.
Hah.. Well I have to get back to coding as the midnight oil has been burning since last night.
Don't stop... embrace the inherent truth / logic of your efforts... take solace that you can code fearlessly and without requiring permission from anyone else. You will rarely find this freedom as an employee or from inside the industry. Be bold and do things differently. It's not going to be easy by any means."
If you don't mind me asking: why not?
Both you and the author paint a very romantic picture of your work. I can see how it would make maintaining existant relationships difficult, but this kind of thing makes twentysomethings who don't know you swoon in my experience. I'm probably not fully grasping the extent to which these feelings are debilitating. I feel like this as well from time to time, but it always passes quite quickly.
On the bright side: hang around art school kids and you will be worshipped :)
You may find someone special who really digs what you do, but you can only ignore them and keep them at arm's length for so long before they leave to find someone (perhaps less romantic) who will treat them as if /they/ were that important.
Certainly there are exceptions (mariner's wives come to mind) but I think this would be true of your normal random date. So, romantic? Sure. But the appeal has to eventually wear off and then there'd better be a part of you that you can devote to your partner.
There are always trade offs in life.. On the dating front at least. If I spent more time in general hanging out and out and about on weekends goofing around like many folks I'm sure things would work out differently. One has to consider that for me often I'm left to just generally low stakes / OkC derived meet ups.
Statistically speaking at this point I can say that coming across as passionate about ones life's work and mentioning that entails a day job at times and often night / weekend effort doesn't set the tone of being emotionally or otherwise available even though that may not be the case nonetheless it is best to can it on the first meetup... That is all.. It's bad enough being an introvert in an extrovert's world.. :)
I think that says it all. The guy had a vision of something he was trying to achieve and fiveteen thousand hours later he is essentially no closer to his goal. Stallman is very idealistic but he managed to change the world. This is an unbalanced approach to life which will only yield pain. Attachment is suffering.
I didn't think my post to Erik's blog would be reposted here in entirety. I felt moved to post quickly on Erik's blog FWIW and didn't mince words. His post reminds me of certain aspects of thought regarding where I was at after my degree. The will to create is a mysterious thing.
As things go jrogers65 probably has no idea what I'm trying to accomplish or how far along I actually am or the personal funding I've sunk into this path (everything) over the years.. I too had a deep fascination w/ graphics & audio tech for some time and I knew in advance 10 years ago that I was choosing the harder path to innovate particularly through large scale 2D / 3D spatial audio, upping immersion in games / movies / all media in the home and venues, such that the path was fraught with a long term time span.
In pursuit of this path I assure you I probably have the best hacker den around while also supporting the R&D goals at hand. It wasn't cheap to build or now maintain while bootstrapping and is in a prime SF spot; can support upwards of ~6 initial employees; etc. Indeed this leads to a challenging month to month reality in regard to long term debt / build out costs and trying to free up time (IE rent $$$ in advance) to work in waves unadulterated at the tech at hand.
Besides relentless innovation often comes hand in hand with perfection, but sometimes there is simply just time to get things right. After the general economic dip around '08 it's clear I'm at earliest presently 5 years out to perhaps 10 years w/ my audio aspirations regarding product / market fit just from an economic angle; I can be more specific, but will save it. This general mismatch and the rise of Android being the fortuitous tech occurrence has given me the time to focus on creating middleware tools supporting the long term effort while "doing it right" and taking into consideration the next 10-15 years of software dev.
If one is going to commercialize middleware tools related efforts the bar is high when money is to change hands.. One is free to go the open / social path and release early and evolve an effort in the public eye and likely never gain revenue. This is a valid direction... I however plan to make a long term living from my efforts and the sweat spent now _should_ pay off later. It reminds me of a supposed African proverb, “If you want to go fast, go alone. If you want to go far, go with others.”
One can wish to get funded for something innovative / artistic / complex / before its time; one can wish to be independently wealthy and be free to pursue ones goals. Outside of those two general hypotheticals what is often left from there is just pure dogged persistence and yeah it's not going to be the most balanced life, but them the breaks. I at least love what I do and am fully committed to seeing my long term vision become reality not just for me (it already is here for me!), but for "you" / others; commercially too...
I hope Erik finds his path without losing the will to create something great; individually (at first at least) w/ commercial aims or more publicly via open source during the conception phase, etc.
In short... You do not know what you speak of jrogers65.. ;P
Combine your note with ChuckMcM's, and I think you'll come near where I've ended up: there are so many broken systems out there that need someone. In my case, I apply the little tricks I've learned to sidestep engineering problems. I was worried that I'd get stuck in some soul crushing drone job, and instead I found that even the simple systems are pathologically complicated. It's quite nice to know - deep down - that everything really is interesting if you look closely enough (my favorite misquote of Feynman).
Perhaps an alternate worry is that as a person who constructs systems, you'd act as the proverbial person with a (sledge)hammer, foolishly whacking every problem regardless of whether it's a nail or not. But that's just a matter of delicacy: everything improves if it's better understood, but not everything needs to be rebuilt from scratch. I guess experience just tones that down. Or the mind just gets quieter; I occasionally fear that I've lost something in that transition, but I can't seem to support that idea. It's not like the ideas ever go away, they'll just take a different weight, be less horrifically important, blend into the background noise experience and life create. Perspective changes a lot that way.
TL;DR: don't worry about losing your mind, you're neither crazy nor alone (is anyone alone and insane in a global network these days? I hope not!)
There is a term for this: Weltschmerz.
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.
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.
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.
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.
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.
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.
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.
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.
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.
That's something your little christmas gift helped a lot with - thanks again :)
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.
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.
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.
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.
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.
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...
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.
TinyOAL: https://sourceforge.net/p/tinyoal/
FeatherGUI: http://code.google.com/p/feathergui/
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.
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.
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."
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.
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.
I assume that it involves sending some sort of signal to the surrounding environment. Either that or your program gets two "special" values that it uses to tag memory regions, and the OS periodically truncates (or adds to) your image when those tags reach certain thresholds.
If it's explicit, and a C function call that takes something like a memory address range as an argument what does the kernel do at that point?
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.
You don't burden someone who is badly in need with options. You give them solutions that work. Optimize later.
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.
How about putting it more positively as "things that people find so useful that they'll give you money for them"? Then you wouldn't need the extra paragraph to explain why money is not evil :)
Dear God, I hope this person never has children; or before he/she does that they have a serious change of heart.
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)
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.
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.
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.
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.
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
Fuck, it's scary.