February 10, 2013

I'm Slowly Losing My Mind

I say a lot of things. I avoid lying at all costs, and instead prefer to simply leave out a lot of... details. Like why I started a game development company that spends an awful lot of time developing tools instead of games. Or why I've spent 6 years chasing a dream, and instead of doing what any sane person would have done and used existing frameworks to achieve my supposed goal of creating the various game ideas I've had, I have stubbornly built my own framework of tools, giving myself control of everything from the high level game engine down to CPU specific SSE optimizations and how I allocate my arrays.

I extended std::string into my own string class and use my own replacement for std::vector. I built my own audio engine. I built my own graphics engine. I built my own game engine, state control system, box2D physics integration, and serialization. Now I've even built my own GUI framework, because CEGUI was such a load of crap. I resisted doing that one for a long time, until it became increasingly obvious to me that I had no choice.

If I really wanted to just make a game, what the hell am I doing? I'm building an enormous foundation for some unseen purpose, as if I had something else in mind. Something bigger. Something that I set out to do without realizing it years ago when I decided to build a graphics engine.

It's hard to avoid lying to other people when you're lying to yourself and don't realize it. I wanted to make games, but the reasons were more complicated than that. I wanted to make game-building tools. I wanted to unlock the creative potential of a thousand artists so they could build games that far surpassed this modern slump of quality we seem to have gotten stuck in. But the rabbit-hole kept going deeper the farther into college I got and the endless failures I was met with. Constantly I would try to utilize the power of my work, take advantage of the fruits of my labor, only to find that my labor was horrendously misguided, and always failing to produce a product. Something was always either wrong with the engine, or more often a significant chunk of it simply wasn't there. I have built so much, and yet I dream of failure.

Despite this, I press onward with relentless enthusiasm, driven by a strange force of hope in the face of overwhelming evidence that I have absolutely no fucking idea what I'm doing and am clearly destined to fail miserably. I graduate college in 2 months. I'm running out of time.

Sometimes I feel like I'm just going to die when the end comes and I have to give up everything I strove to create for a normal job. Of course, with a degree in Applied Mathematics and years of complex programming, my normal job would probably involve being paid a 6 figure salary. I would stare at those 6 digits and feel only the crushing weight of regret, because my idealism had failed - destroyed by the seething hatred of reality. By the time I had gotten enough money to "pursue my dreams", I would have gotten married and be tied down by kids. My desperate attempt to reclaim the dreams I had in my youth would be met with the horrifying realization that I could no longer recall what those dreams were. This is the living hell that haunts my nightmares.

People are confused. They don't understand why those dreams are so important. They ask me, why are you doing this? And I reply, because I have to.

For as long as I can remember, I have had an increasingly wild and extravagant imagination. It would be triggered by movies, animations, books, music, art, anything that gave my brain a new idea to absorb. It would assimilate the new ideas and then spit out visions and sounds distilled from every good part of everything I've ever seen or heard, combining and recombining elements from a thousand different sources until they become a cacophony of beautiful chaos.

And then they fade, and I am left staring at a blank wall, frustrated once again by the fact that I can't make those dreams happen. Even in my one creative outlet, music, I am so incompetent I can only stumble on good ideas by accident, and they are never even remotely related to the orgasmic explosion of amazing sounds I hear in my imagination.

I thought this was normal. I thought everyone had such an insanely hyperactive imagination. It was only recently I realized that my condition was highly irregular for a software engineer. It also explained why I had such perpendicular opinions to the rest of the programming world, and why the majority of my friends were artists.

I also realized I was going to go crazy if I couldn't figure out a way to get it out, which is definitely not normal. The ideas feel like they're trying to claw their way out of my brain, ready to burst fully realized into my monitor. Parts of them I can reverse engineer and say "I know how I could do that." Others require multiple things to be invented - I've already invented at least 2 technologies whose prototypes are locked away. Some things I simply don't think I can do on my own. I need help. I'm not a genius, I'm just a programmer who's slowly being driven mad by his creative frustration.

Everything I had ever done makes sense when you realize that I am almost entirely a product of creative impotence. I keep building more and more powerful tools in frantic, desperate attempts to express myself. My foundation is being built in preparation for the construction of an entire suite of tools whose sole purpose is to give me a suitable creative outlet. I'm building a foundation for tools I probably don't even know I'm going to make yet - that's happened a disturbing number of times. It seems like I am following a plan so obtuse I can't even figure out what I'm doing. And I can't stop. There is no way to make me stop. If I became homeless I would still find a way to work on my tools, to try and find a way to let the creative flood out of my head, because I have to.

The things I see in my head, I have to make them happen. I have to make them real. Somehow. I'll invent a new precedent for 3D graphics rendering if I have to. Don't even try to tell me something is impossible, because even if you convince me that my ideas are insane I will try to get as close to them as I can anyway. It doesn't matter if I am destined to fail, or chasing an impossible ideal, because without it I have no reason to live, and can derive no joy from my existence. If I get a normal job, I rightfully believe that it will end up killing me, physically or mentally. Even if I don't get a normal job, I am now terrified that if the great Aaron Swartz was somehow driven to suicide by an unrelenting, hopeless reality, my idealism stands even less of a chance. No matter how frightened I become, my imagination remains an unrelenting torrent of ideas, slowly eating away at my mind. It will never let me stop trying. Ever.

I just didn't tell people because they simply wouldn't understand unless I explained how I was basically insane by society's standards. But now, I feel the endgame is upon me, and I don't know if I can beat the final boss of this dungeon that is my life. I'm running out of cards to play, and I'm not sure if I'm going to survive. I feel like this mask of sanity and reasonableness has gotten me as far as its going to get me, and that if I am going to beat this, I need all the help I can get, and lying to everyone that I am actually some sort of reasonable person isn't going to help anymore. I'm not a normal person. I am a delusional idealist who is chasing his dream like a goddamn determinator and nothing short of death itself is going to stop him. As I have learned the hard way, you can try as hard as you possibly can, and sometimes it still just isn't enough.

If curiosity killed the cat, perhaps creativity is killing the rabbit?

103 comments:

  1. I can understand the "not wanting to use existing libs" and such. I have to use a graphics lib at work, while it was a great lib to get us off the ground and release a product, it is now holding us back a bit in that certain features we want to put in can't be realized by that lib. Or will require a serious refactor of our code base.

    On my personal projects, I was building up my own set of libs and routines because I find the available libs our there are not always simple enough. I.E. they include the kitchen sink when all I wanted is something that simple does X. Some just have a sad API. From some of the crap I go through at work with libs out of our control and then finding bugs we can't get around, I, on my own projects, just do it myself.

    I have to keep myself in check though. "It doesn't need to be perfect, just good enough and get on with it!" I fuss too much on something sometimes and that delays my ultimate project. Lately though I've started my ultimate project. At least step one is done. Now to keep stepping in that direction even if all the foundation hasn't been completed.

    ReplyDelete
    Replies
    1. The simplicity problem is one of the central driving forces in my construction of utility libraries. I have recently taken an even more concrete stance on the importance of simplicity and am in the middle of a massive rewrite of my graphics engine that tears out as much unnecessary complexity as possible through a series of algorithmic and structural changes to the code base.

      I have 2 ultimate projects, but I haven't started either. I'm trying very hard to get to the point where I can start one of them, since I believe that will end up leading to my own personal magnum opus and I can use that as a stepping stone to team up with a bunch of other brilliant people and produce a second, collective magnum opus. I don't know if its going to work.

      Delete
    2. One of the things that helped me with this was simple: setting aside a percentage of my time to work on smaller, profit-bearing projects which could support the larger, blue-sky efforts.

      It's actually pretty easy. "Out of every three personal days, one will go to commercializable work, and the other two will go to long vision work."

      You can get further, faster, if you blend pragmatism with vision.

      Delete
  2. 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.

    ReplyDelete
  3. In some ways I am spared from the chaos that normally involves such undertakings, becuase I never wanted outside funding in the first place, even if I could get it. I never got invited to parties in the first place. My friends from high school moved away and my social life is largely on the internet, sprinkled with the occasional excursion to meet an online friend at a convention. I only lived at college for 3 months before running back home out of digust, so I already live with my parents. My parents actually are rather supportive of what I want to do but will eventually require me to get a normal job once I'm out of college.

    But of course, I can't stop. It's not possible for me to stop. That isn't an option anymore.

    ReplyDelete
    Replies
    1. For tools development in general I'd say it's best to bootstrap to launch then if there is uptake consider outside funding for expansion. The parties.. Whatever.. My facility is right across from Hipstamatic and I saw their quick rise / fall albeit from across the street; if I had to define brogrammer seemingly that shoe fits. ;P All the parties are pointless for the most part.

      I didn't exactly want to peg my family above as not being supportive entirely; it mostly comes down to just a different approach that is not familiar to them; IE individual entrepreneurship / lack of knowledge about the tech scene, etc. I perhaps painted it too bleak above, but yeah there can be challenges.

      I definitely want to be supportive and say go for it from the engine / tools angle. You've already probably learned a lot and will learn a ton more. I've always liked Josh Bloch's sentiment that "API design is a noble and rewarding craft"..

      On general advice regarding getting a job.. I suppose the number one golden rule is to know what you are worth and demand it. This seems obvious, but a lot of engineers seemingly don't do this. Where one falls in the first couple of years may require just feeling that out.. However, someone like yourself who is passionate about tech and works on projects independently is valuable in the near and long term.

      I lucked out because after a year of working at a startup years ago where I busted my tail I left and they essentially begged for me to come back 6 months later and that allowed me to kick start my contracting career which has funded the last 6 years w/ several periods where I've had a 6+ months to a year to work full time on original tech / engines. I unfortunately got stuck w/ a day job for the last year after a big corp contract negotiation fell through just before inking the deal. doh.. them the breaks..

      In general it's harder to run a contracting business when one is doing R&D / intense tech work between contracts vs being out and about networking and lining up followup contracts, so that is something to keep in mind if you start contracting and pursue your own projects at the same time.

      Well.. I'm sure you're going to keep your head down.. The existential change / rage / unknown next steps will work themselves out. Having a will to create and more so acknowledging that it is not going to dissipate is handy.

      Delete
  4. There is more to life than programming. The universe is made of many systems of many abstractions. You are certainly a talented creator (artist).

    Now, it seems like time to try something different that is not programming related. It's a personal path. Some things that changed my life that I learned are continuously becoming more self aware of my thoughts and actions, Buddhism, Transcendental Meditation, becoming vegan/health conscious, hanging out with artists.

    Discover what really drives you regardless of circumstance & knowledge. I strive toward mastery in what I am involved with. Like the elder sushi chef who continuously improves the practice, I expect this to be a lifelong endeavor.

    Get to know people who you wouldn't normally hang out with. Date someone "out of your league". Resist getting tied down into a particular spot. Try to get a remote-friendly gig.

    Reality can be a series of wonderful games, if you play the right ones :-)
    Most people & institutions will try to make you play the wrong games, or games that are good for them, probably at your soul's expense.

    ReplyDelete
  5. after reading this all I could think was "we can be friends"
    you just described my life, except I can't program (just a designer that keeps trying to learn how to code but keeps failing at it too lol) I have a book full of diagrams, ideas and scribbles of things I wished existed, most have had to be sidelined due to the fact that programming comes so unnaturally to me (I'll get it someday).
    The worst part though of having an unrelenting torrent of ideas is that most remain unfinished since your always so eager to move onto the next one, DaVinci was infamous for doing this in his day, for not finishing things because he got too excited about his next endeavor.
    as for the going crazy part it's sort of like that quote from alice in wonderland about having gone mad, but all the best people are.

    Stick to it, maybe get a day job in the meantime, maybe not (that's a rather personal choice to make) but your not alone in stuff like this.

    hit me up on twitter @themichaelbrave maybe I can help you out with some future project or something

    ReplyDelete
    Replies
    1. Most of my ideas have been sidelined by the fact that the infrastructure doesn't exist to support them and I keep making mistakes when trying to build it. I also have only attracted a scant few artists interested in working with me and most of them have their own problems.

      Delete
    2. Discovery requires eliminating the obvious answers, a process known as failure or making mistakes.

      I would try to figure (and you probably already know) which missing thing is the most valuable to the most number of people.

      Elon Musk wants to build a colony on Mars. Its a long term, hard goal that requires many innovations. He determined which one is feasible and that someone will buy. And he built that.

      Find out if there's an open source effort for it and contribute to it. People that also care about it will be there.

      Delete
    3. The process of me figuring out which parts are the most important is what's driving my current refactoring of the engine. I currently have 2 things I'm focusing on, both of which I believe maximize the potential value to the largest number of people (who matter to me, anyway).

      Delete
  6. You remind me a bit of how I imagine Eskil Steenberg to be. Have you met? He made Love (http://www.quelsolaar.com/about/index.html)

    ReplyDelete
    Replies
    1. I seem to remember seeing that game somewhere, but no I have not met him. He does sound a lot like me, although I focus more intently on technical problems and am kind of terrible at actually designing games.

      Delete
  7. Calm down. Your life is just beginning. Things have a way of working out. You remind me of myself pre-medication (for OCD, anxiety, and "incipient bipolar disorder").

    Being gifted with a mind that is curious, capable, and restless can sometimes feel like a curse -- and in some ways it is. You will probably never be able to function exactly like a "normal" person. Your friends will forever say "There goes Erik off the deep end again!" and grin at each other, while drinking a beer, and flipping burgers with their kids on Saturday, knowing they go back to the chain gang Monday. And you will wonder, how can these people be like this? How can they just go to work, come home, have nice sex, produce babies, grow up, etc. and so on? DON'T THEY SEE WHAT THE FUCK IS HAPPENING HERE?

    Well, they won't see it, unless you show it to them. That is your purpose in life. You are the creative. But you have to get over yourself -- over the grandiose dreams of perfection, in form as well as substance. For someone like you, the perfect is the enemy of the good, or even the great. What you need to do is learn to RELEASE. Release code, music, art, blog posts (you can do that apparently!) Let them fly free into the aether. Most of them will just float away, have no impact, never to be seen again.

    But that's OK. You can improve on the idea, polish the next idea, and do it again. With a little luck, eventually, one or two of these things will somehow float back to you. They will generate some interest, develop a fan club. That can be 3 people, or 10 million. You never know. But you have to produce, and you have to release. That is what you are evolved for, that is your destiny. Accept and embrace it. Stop worrying about everything that can go wrong, or how great you think someone else's output is. That's like looking at a photoshopped picture of a movie star and getting all cramped about your abs. It's a fool's game. You are you; the rock stars you may idolize are just humans too, and they went through this at some point. The only difference is, they came through on the other side by letting go at some point, and allowing reality to take over.

    I hope this makes sense. Good luck

    ReplyDelete
    Replies
    1. I already try to release as much as possible. Usually no one notices, although I have a large following on newgrounds for my misguided musical attempts.

      Delete
  8. I was like you. It nearly killed me. Then I realised a few things.

    You will never get anything done if you strive for perfection. You must start small and work incrementally. In public, not in secret. Yes, it is scary. Working by yourself can be fun, but collaboration can be even better. If all you do is toil away in the shadows, no one will ever know to give you the support you need.

    Do not try to create a magnum opus. Especially do not try to create multiple magna opera. If it is going to happen, it will happen whether you like it or not.

    There is an enormous difference between working for the sake of learning and idealism, and working to create an actual, useful thing. In particular, if you never make small hackish projects for practical purposes, then you never learn how to finish anything, or how to make work that matters to other people. This will drain you.

    So relax. Find a job. Find enjoyment in it. Spend your free time working on practical things. Post about them on Hacker News and Reddit and GameDev.net. Get suggestions and collaborators. Make something amazing and see how easy and rewarding it can be. And maybe then you can assemble a team and work together to really bring your ideas to life.

    There is time.

    ReplyDelete
    Replies
    1. I am currently attempting to build something that is specifically not supposed to be a magnum opus, and still having difficulty doing it. For approximately 3 years I've tried to finish things only to repeatedly fail for various reasons, usually because the projects were too large. I have repeteadly shrunk them and have gotten to the point where one of my ideas is within reach, only to subsequently discover that I was still fucked because CEGUI is terrible and I can't build the GUI or tools necessary to make the game happen, even though I FINALLY have an engine and an idea that can actually be done. This is my current predicament. If I can't get this much smaller idea working, I'm going to be close to giving up, because I've reigned myself in so much there's not much left. I've already met a lot of amazing people. Unfortunately we all have our own problems.

      Delete
    2. You're describing a patter that many self-motivated developers go through.

      The best thing you can do, IMO, is to begin working on a sleep, work, eat, exercise regimen that will allow your body to be healthy and your mind to be calm and focused.

      Email me if you'd like to talk or discuss work opportunities.

      Good luck :)

      Delete
    3. I am intrigued by your offer but you don't seem to have an address I can e-mail :(

      Delete
  9. Erik, if you haven't seen the HN discussion of this post yet, please checkout this comment from it:

    http://news.ycombinator.com/item?id=5199042

    David

    ReplyDelete
    Replies
    1. I am *actively avoiding* the HN discussion of my post because the comments there tend to be toxic and filled with people who don't even bother reading what I write, but I'll look at that one.

      Delete
  10. As a semi-interested follower of your Twitter, I'm not worried for your prospects, because I felt that way before graduating college: "I want to make a game maker but I also want to make a game and I want to immediately go indie and make something that I'm happy with and will sell." (this was between 2003 and 2008)

    And at first I was going to just quit college with that plan halfway through but I was convinced to stay on...and I planned ahead and made a bunch of stuff before graduating. Nothing that I sold, and looking back on it it was kind of shitty in some ways, but - even though I wasn't building any edifice of code, and threw out a lot of stuff - it turned into the portfolio, which got me hired somewhere. Eventually, I left that job and worked on the "magnum opus" for about a year, and it completely, totally, wasn't. It twisted away from my dream at each turn, and emerged a skewed fragment of what I thought it would be. In doing this I learned how I had been lying to myself, and in exchange gained truth and wisdom about the world. The artist's greatest enemy, after all, tends to be themselves.

    You obviously have ideas and talent and can do some good work - which, assuming you're personable in RL, means you have many options for employment and it's just a matter of being *opinionated* about how you want to work and what type.

    It also means you have the foundation of doing great work - that's a "necessary but not sufficient" thing. Great work tends to mean "life experience" and "purpose," and that brings me to the other point.

    The thing that you devote a lot of time to becomes the comfort zone by default, even if it involves "hard work." So it doesn't matter what you worked on up to this point - if it's been a many-year effort, it's probably too comfortable and you have tunnel-vision. Assume that you will be wandering a bit in the future, making some path through the "real world." Maybe you work on that old code some, or try to prove that the "magnum opus" works(and everyone should try), but you will also try new things - radically new things, things that you probably don't even know exist yet, in fields that you weren't aware of.

    ReplyDelete
    Replies
    1. I have plenty of employment options, but I fear that once I go down that road there will be no turning back I will miss out on a lot of amazing stuff I could have done. I feel that my dreams will end up as tattered remains of what they once were, and worse, I will have failed to assist any of the people who I have befriended who also have dreams they are trying to build.

      I am trying desperately to be as practical as I can at this point only to keep hitting walls over and over again. I have a much simpler idea I think can make money and am still having difficulty making it happen.

      Delete
    2. No turning back if you got employment? Seriously?
      Difficulty is normal, even if simplified, that's why it doesn't exist yet, right?

      Delete
    3. Regarding the idea that going to work would somehow force you to shut down development on your dream projects, consider how much time you are currently spending on college (attending classes, doing homework, studying, etc.). If it adds up to more than 8 or so hours per day, then if you did take one of your employment options* you'd still have roughly the same amount of time for working on your projects as you currently do. Or is there some other aspect of getting a job that you think will destroy your ability to pursue these dreams?

      *Assuming it's not some crazy startup where you work 14 hours a day or something.

      Delete
    4. But see, college is exactly the problem. I don't do 8 hours a day on college and its still destroying my productivity. A job would be just as bad as college, except probably worse. I still remember back when I had a proper internship working 8 hours a day. I was so exhausted I got almost nothing done that summer.

      Delete
    5. Take fewer classes and prolong your degree. You have a smaller workload, better marks and you buy more time.

      Delete
    6. I finish college this quarter. These are the last classes I will ever take anyway.

      Delete
    7. So basically there is no way to prolong it at all, not even by taking a few more courses in addition to your degree? Absolutely to leeway here at all? The reason why I ask is because I was able to take more classes after I had finished my program, and you may even be able to get a little extra time for health reasons, if you are stressed out, etc. Could by you a few extra months, unless there is absolutely nothing you can do here.

      I know this might be a little dishonest to your parents, but sometimes you have to think about yourself and do what's best for you, not your parents.

      Delete
  11. I feel similar sometimes...thanks for sharing your story
    Here's a favorite song of mine
    http://www.youtube.com/watch?v=5LHA5YCWEAs
    "there's no map to guide our way...it just takes time"

    ReplyDelete
  12. Oh my god, I think we would be great friends. Look it sounds like you started out wanting to make games, and realized what you really wanted to do is program, and there is for sure nothing wrong with that!

    You know games are not the be all and end all of life, and my advice to you is get into science! I think part of the problem is that making games, or tools to help make games, ultimately feels pointless (source: I am a lifelong hardcore gamer), but when you do science you can really feel proud that you are making a contribution to civilization. Do you like machine learning? It's fking awsome! http://scikit-learn.org/stable/

    ReplyDelete
    Replies
    1. Actually it was starting out wanting to make games, then realizing I liked making TOOLS and ENGINES for games a lot more than the games themselves. Making games is as far from pointless to me as you can get. I have an unstoppable desire to make some of the games me and my friends have come up with.

      I'm sure we could still be friends though! I'm on twitter as @blackhole0173

      Delete
  13. Hey Erik, thats exactly me few months ago, solution is to do more of previous ideas and think less for sometime, take projects which can be ready to release in short time, build a team, never do it alone, and then u can go for bigger ones :)

    ReplyDelete
  14. This comment has been removed by the author.

    ReplyDelete
  15. I can relate to this. I've constantly written and re-written a 3D game engine completely from scratch multiple times since highschool (I'm 24 now). I too even do the UI from scratch (right down to writing an importer to parse a file containing character widths and one containing pictures of letters to render text letter by letter onto the screen).

    Each time my engine gets a lot better and usually involves some new technology or fundamental system of design I just learned about. This latest iteration is the first I finally was able to admit to myself that I know I'm going to end up starting over again because I'll learn something new. So I'm focusing on making it so that when I start over, I lose as little as possible. Hopefully next time I start over (I have no idea when that will be, I can't control it at all), I'll be able to keep most of the code I wrote this iteration.


    The closest I've ever come to finishing an actual game was for a 30 hour hackathon competition where I made a game using my engine (and won 1st prize). But the game wasn't quite complete, and I never bothered to finish it.

    ReplyDelete
    Replies
    1. While I keep iterating my engine it is coming very close to converging on something I am happy with. It actually converged for a while and I didn't work on it and focused on other things, but it ended up having a fatal flaw which I am now addressing (and using the opportunity to clean up the rest of the engine at the same time).

      Delete
  16. You're just unfocused. I've checked out your various profiles and you do everything from blogging to composing to writing code and constantly tweeting. That doesn't leave a lot of time to be truly productive.

    Here's what I mean: I got interested in your engine, so I checked out the Black Sphere site, and all the YouTube channels I could find - not a single video about Plane Shader, not a single video about Feather, not a single blog post here or a page on the BS site about bss-util. In other words, I can't see your productivity, but I can sure see a lot of activity. Black Sphere has profiles on every network, yet nothing that a customer, an investor, or a curious visitor can see.

    As far as your idealism and your "mission," your invincibility will wear off (I think it's already started) in the coming years. You'll realize how important it is to prioritize your time and cut out the majority of socializing and dabbling in order to excel at the things you're talented at. You'll also realize that a corporate gig at a gaming shop or a GPU company is exponentially better than being a small fish in a huge pond, which is what a free game engine company in 2013 really is. Believe me, the problems you'll solve at nVidia will be more than enough of a challenge.

    Anyway, take a week off, hang out with friends and don't worry about your work. Hopefully you'll come back with renewed focus and energy. If not, give another field a try.

    ReplyDelete
    Replies
    1. I am much more productive than you seem to think, trust me, but the problem with videos is that there is nothing to show yet. Nothing meaningful, anyway, which is my problem and one I've been trying to address but have so far failed to do so.

      Delete
    2. I believe you're very productive, but you obviously also spend a lot of time on non-game-engine things like social media and music. Try using that time to record demos of your latest code. It doesn't matter if it's "meaningful," showing something off, no matter how small, is better than keeping the whole project hidden. People search for the weirdest things, and sometimes your random tech demo is exactly what they're looking for.

      Delete
    3. I... don't really spend that much time on social media. I do spend time on music. I HAVE to spend time on music - I tried not spending time on music and nearly went crazy.

      I will try to make a video for Feather when I get it working but that's all I can do right now.

      Delete
    4. Actually you have a ton of tweets, more than a lot of high-profile hackers I follow. Anyway, I look forward to checking out your demos, possibly with your own music as a soundtrack. Cheers.

      Delete
    5. I may have thousands of tweets, but on average I tweet 8 times a day. That's not really very much considering it is usually during one of my breaks.

      Delete
  17. You are not alone, even if I haven't made those big tools like yours, but everything time I do something twice and I feel something suck I have to find a way to do it better. This drags me so far away from the first purpose which is making thing work. But more and more I realize, we are not alone. There are people out there which have the same ideas, I think you can make a demo of one of your work, people will follow. You will have true help. Just make a demo and push your stuff to github :)

    Same of you, music is a part of my life. I cannot live without it.
    I hope you will use your time better with teamate, enjoying life and creating your beloved tool :)

    ReplyDelete
    Replies
    1. I'm really pushing to try and get a demo of something out but shit keeps happening. This is part of what's so frustrating.

      Delete
  18. We have same situation I guess, I kinda a person that love simplicity and perfection, until now I still work on sizer automation, it's like widgets layout management for wxPython, slow but sure, I lost the purpose why I make this tools and just focus on building this tools. I don't have luxuries life, even just to pay the bills I have to work on freelance job, I have dreams but somehow my dreams being crushed by the reality that I'm not genius nor have the resources to finish it, by the way I follow you on twitter, hope we can become friend.

    -Adam-

    ReplyDelete
    Replies
    1. Honestly if I can make enough to get by and still be able to spend the majority of my time tinkering away on this stuff I'd be happy.

      Delete
    2. You should, make time for it, do not kill your dreams.

      Delete
  19. Don't try to reinvent the wheel until you have built a working bike. While existing frameworks and libraries might be imperfect, bloated and not quite what you need if you look back, you will see that if you were using them you might have been much closer to the end goal now. The existing code is not only a good starting point, but also a good point for communication - other people have faced the same problems with OpenAL or Qt and they will be able to help you, but a problem with your own lib - you're on your own to fix that. Also people are working on those libraries, other people, and they are adding new features all the time. And you will be able to use them in the future, basically for free.
    Focus on the endgame, ask for help, use the help, even if it is imperfect. Get something working, really working and *then* re-factor the rough parts.
    Good luck!

    ReplyDelete
    Replies
    1. Remember, part of what i'm building IS the wheel. In many cases, the end product is the wheel itself. The problem is that it's hard to sell a wheel without a bike, which is my current predicament. While I am aware of how unusual this is, I do not once think building my own tools is a mistake. The question is whether or not I can build a wheel that works well enough, fast enough for me to make a bike that pays my rent.

      Delete
  20. Hi Erik,

    What you are going through is just one of the ways in which people become senior programmers. See what you are doing as training. Trust that all this experience you have built up will be useful at some point in the future. I know that the driving force is to 'create new technology' but more often than not should just be seen as training. Count yourself lucky to have built up so much experience and explored so much. As you already said this will serve you well in your future, either creating a new technology, doing a startup or even working somewhere. And yes, sometimes it helps a lot to keep 'not invented here' at bay. There is a lot of value in being able to leverage other peoples' search paths, and only decide to write your own after you learned about them. Makes finding real new value (and paying rent) a lot easier.

    ReplyDelete
    Replies
    1. I used SDL before writing my graphics engine. I attempted to use XACT before writing my audio engine. I used CEGUI and GTK+ before writing my GUI abstraction.

      I don't just build things because I can, I build things because I have to.

      Delete
  21. why not FOCUS your creative energy, say one finished tool/product every 7 days?, no excuses. "Work expands so as to fill the time available for its completion" and if no limit is specified..., well you get the idea

    ReplyDelete
    Replies
    1. I try to focus on a single project at a time, but for various reasons this eventually breaks down. College isn't helping.

      Delete
  22. Hoi Erik,

    I have a similar problem; I typically get bogged down at the mathematical formulation of a superproblem to my own, because if I just solve the more general problem then I get the subproblem that I'm working on as a 'freebie'. So for example:

    1. Start building a calendar application. And I *do* try to cut it down. As I start out, it's just for me, I don't need to solve the problem of many users or intuitive editing, it can just store unsanitized HTML at this point. I won't even use a language that I really like; I'll just use PHP because it's simple.
    2. But that calendar application requires a good way to send messages back and forth! Okay, JSON on the backend because I don't want to write a parser -- a parser would lock me into PHP more than I want. But the messages still need to be syntactically valid, so I'll want a language for writing schemas. JSONSchema exists, but is ugly.
    3. On the train to my Oma's birthday, I come up with a self-describing language -- in fact, ultra-simple self-describing languages -- for sending such messages, as based on using JSON like an S-expression. The fact that it can validate itself is pretty exciting, the fact that it's much less abstract than JSON Schema is also exciting.
    4. It occurs to me that it looks ugly because it's in JSON, and there is a better language based on unary operators and associative function compositions alone which better serializes 'type' information and looks prettier. On the train ride back I prototype this new programming language.
    5. All of that effort comes to nothing because honestly, I don't want to be writing a new parse-tree-language for this problem.

    It's all a compromise, productivity vs. awesome, and I feel like it crushes me sometimes to have to choose against so much awesome when I want to be productive. Ira Glass talks about some similar concerns in creative professions in his talks on storytelling:

    https://www.youtube.com/watch?v=loxJ3FtCJJA

    We could establish a room on IRC (maybe FreeNode #crazyprojects or so), where we can all get together regularly and discuss these sorts of things? The real thing we'd need to establish is an open invitation to any friends-of-friends who get caught up in such crazy projects to swing by and talk about them.

    ReplyDelete
    Replies
    1. It would be a fun excursion to make a website that scrapes twitter for #crazyproject tags and then ranks them by how many retweets they have. If I was a web developer I might even do it! But I'm not. If you do establish a chat room though, I wouldn't mind hanging out in it and dropping several of the more insane projects I've never actually seriously considered.

      I did design my own programming language though. It was a compiled scripting language that functioned as a subset of the C++ syntax with some adjustments. I wrote a preliminary grammar tree for it but never actually tried to make it because boy that would be dumb. It used a concept of partial memory management and embedded pointer ownership that was a very nice concept.

      Delete
    2. I second that idea for the IRC, that would be fun.

      Delete
  23. Not sure if it's been said before, I would advise you to team up with someone you trust, you respect professionally and has complementary skills to build something meaningful for starters.
    It's working for me. :)

    ReplyDelete
  24. I can't speak to any technical aspects of what you're trying to do because I'm not a programmer. But what you describe is exactly what *most* artists go through.

    >>>And then they fade, and I am left staring at a blank wall, frustrated once again by the fact that I can't make those dreams happen. Even in my one creative outlet, music, I am so incompetent I can only stumble on good ideas by accident, and they are never even remotely related to the orgasmic explosion of amazing sounds I hear in my imagination.

    That's Gulley Jimson right there:

    >>>Not what I meant. Not the vision I had. Why doesn’t it fit like it does in the mind?

    10,000 Hours For Expertise, Maybe, But Not Artistry
    http://mikecanex.wordpress.com/2012/02/05/10000-hours-for-expertise-maybe-but-not-artistry/

    The trouble is, there's a very fine and dangerous line between having actual talent or a real idea and deluding yourself.

    Here is massive self-delusion:

    Self-Confidence Vs. Self-Delusion
    http://mikecane2008.wordpress.com/2008/02/09/self-confidence-vs-self-delusion/

    And here is the trap. If you seek out someone to objectively look at your work and they tell you to let it go and move on, you can further delude yourself by believing they Just Don't Understand. On the other hand, if you *don't* find someone you can totally trust to judge whether or not what you have has anything to it, you will be stuck in a life of bitter frustration never understanding why you can't move forward.

    I'm a writer. But I know my limitations. I have the same problem you describe in your quote above. But I'm also very clear about my own limitations and the degree of my frustration. Some people who think they are writers are not, and they wind up never understanding that their writing goes nowhere simply because it's not good enough:

    Why Did You Resign?
    http://mikecanex.wordpress.com/2011/04/05/why-did-you-resign/

    Sorry to provide so many links to my own stuff, but as you'll see, I've written about this subject in terms of writers. I can't help you with your technical stuff, but I hope you find some clues in these links that will provide a way out or at least some relief or, at the very least, that another person understands what's compelling you. Good luck. I hope you really have something, too.

    ReplyDelete
    Replies
    1. Most of my ideas I've bounced off other people and they think they are good ideas, if I could only actually do them properly. Thus, I am not particularly concerned that my ideas are not actually good or I am not actually talented. The real question is whether or not I am talented *enough*.

      Delete
    2. It's a very hard thing to have to accept limitations. Sometimes limitations are due to not knowing enough, other times it's due to not being good enough. Anyone can come up with an idea -- see your quote above -- but turning that idea into *something* is very, very hard work. It takes maybe two hours to watch a movie, for instance, but that movie could have taken *ten years* to get to the screen, from original idea to finished product. It could have taken five years to just perfect the script. Then two to three years to arrange production and then film it.

      Also, it helps to learn when to say No to yourself. I understand completely the dendritic nature of ideas, how if X, then Y, and then also Z. How things connect is very compelling by itself. But if you aren't finishing X first, you shouldn't move onto Y and Z. And yes, once X is finished and you move to Y, you'll have more experience and knowledge that could lead to a revision of X, but at least you will have X finished and have something to revise. And if circumstances conspire to prevent you moving to Y, you at least have a *finished* X and that's a start. Again, good luck. I hope my spew of words have helped in some small measure.

      Delete
    3. Imo, creativity and drive are the most important things. If you are creative and you keep going you will make it.

      I was never that good at the technical side, and even now I find it a struggle. I am, however extremely creative. Anyone can get through the technical side if they dig long enough, not anyone can acquire creativity. You're lucky.

      I can't remember what the statistic is but I think like 95% of kids under the age of 5 have genius-level creative-IQ's, and that decreases with age.

      Creativity seems to be something that you are born with, and the question is if you can keep it or not. The other side, logic, math, etc. gets better the longer you work at it. If you have managed to hold onto your creativity then you should feel relieved that you still have the opportunity.

      Keep hammering, you will break through eventually. You might just have to work a little smarter, not harder. Programming is hard, being perfect is harder.

      Delete
    4. This is the primary reason I absolutely refuse to even consider being medicated. I *like* having a wild imagination, it means I've managed to preserve at least some of my childhood creativity. I don't want to lose that, because you usually don't get it back.

      Delete
  25. This was a fairly surreal read as for the most part, it describes me exactly. Fully formed ideas for games appear in my head, but the technology tends not to exist to create them, and I often find it impossible to explain the ideas or communicate them as I lack any way to visually describe what I can see.

    Was good to read that I'm not the only person that finds the confines of other frameworks to be exceptionally frustrating.

    ReplyDelete
  26. Hello Erik,

    here is the advice I can give you. I don't know how it will work for you, but for me it did.

    1) Early when you learn to program, if you are good, there is a point where you realize that you can do anything. You need to un-learn that. It is not true. You can not make an AAA quality game all by yourself, not even just the programming part. If you want to do that you will have to work with a team.

    2) If you work alone you need to embrace constraints. The more creative you are, the more constraints you need to ship. Write games in fixed timeframes (e.g. 48 hour jams), with a maximum number of lines of code, etc. Time is the best one I found personally, but I also do things like coding in nano in a single 80x24 terminal.

    3) I am not sure creating your company is the best way to achieve your dreams. It is tempting but I feel like maybe you should try to get hired at an existing small game studio instead. It would be a reasonable middle ground between achieving your dreams right now and that dreadful 6-figures job, and also a good stepping stone for the next step in your career.

    I hope you will find out a way, I want a chance to play your games ;)

    ReplyDelete
  27. > I just didn't tell people because they simply wouldn't
    > understand unless I explained how I was basically
    > insane by society's standards.

    I for one, think I understand what you are trying to express ( I can of course never be truly sure or experience what you are on the most fundamental level...but I feel like your use of language is very effective in at the very least making me feel like I understand exactly what you mean and relate to my own life.) I also don't think you are insane by society's standard....society is large there are many of us, who are more like you that any of us could probably imagine. I know that there are many many people that really dont seem to understand; I'm almost convinced by now (29y) that some people must truly experience the phenomenon of life and consciousness in a fundamentally different way than me...I dont know..maybe we all do..maybe its just misunderstandings.

    Anyway...dont put yourself down by labeling yourself insane... maybe think of yourself more as excentric and brilliant (you dont need to brag about it...but its quite OK to think positive things about yourself. I have a tendency to feel awkward or even bad about myself for thinking higly of myself in some way. Modesty is a fine trait...but if we cant think positively about our traits or personality...how could we ever be happy or even remotely consider ourselves conscious. If we feel like were doing something bad, and we keep doing it, are unable to stop...its not always because were impotent...maybe we just have to admit that we really do like doing these things...that they are good things. You dont sound like you are trying to hurt anyone else...as long as thats the case, I will cheer you on in pursuing your lofty or crazy ideas and goals.


    > I have plenty of employment options, but I fear
    > that once I go down that road there will be no
    > turning back I will miss out on a lot of amazing
    > stuff I could have done.

    I know this feeling very well. And it is truly important to value your time and consider opportunity cost of any commitments you make. But also think the of the opportunity cost you would have to bear by burning out, or being overcommited to one thing so much that your life becomes too unbalanced which can hinder you greatly in more effectively pursuing your dreams. If you really really want to do great work, you have to accept that even though you love that work and it is all that matters to you, you may have to do things you dont like in the process of pursuing that work. Whether thats taking on a job until your work can support you itself, or letting it go sometimes to let your brain calm down and recharge on creative energy. Just like it's hard and frustrating to solve a specific programming problem, or find that bug sometimes, it's hard to muster the courage and discipline to make yourself do what you consciously decide to do. None said it had to be easy...and honestly, if it was it would be pretty boring, no?

    It's crazy out there...im not sure we are or ever will be capable of truly comprehending ourselves, our relationship or the rest of the cosmos. And although we have a tendency to get irritated or disillusioned by things we cant do, sometimes we just have to let go and accept things, or at least allow us to come back later in order to take care of something else. Dont let yourself get in the way of what you really want. Follow what *you* think is the right thing to do. I've read many of your blog posts over the past years, and your graphics work is amazing and has thought me many things.

    ReplyDelete
  28. As with most of the previous commentators, this describes myself too Erik. I am also the kind of guy who will build a lot of things from scratch just because I have to have control and just because I am sure I will learn a whole damn lot by doing so.

    This is one of those projects, a library of tools I use in all of my other projects. Not product ready code yet but as is the case with you, I want this project to be a monolithic stand-alone system of programming tools and I just love working on it: http://refu.realintelligence.net/

    From reading this post I think we could actually be best buddies due to all of the similarities :)

    If I have one piece of advice it's this. Go slower. I feel exactly like you do but I think that the best thing you could do right now is to put an order on things. Say I will do project X first, project Y second and project Z third. If in project X you also need to include functionality from project Y and Z too, first substitute them with some open-source alternative and then when project X has a working prototype start working on them again in order throwing away the 3rd party open source modules. This way you will gain a great insight on how to make projects Y and Z too.

    Having a plan and doing things in order you are always guaranteed to have something to show to others (including yourself!!! , makes you feel a lot better to see things working) and you are always proceeding slowly but steadily towards your goal.

    In conclusion, best of luck and keep hacking :)

    ReplyDelete
  29. If you can somehow 'fix' the interpolation function (currently linear, AFAIK) in Gouraud shading so that it better 'matches the curvature' of the shaded surface, that would make something of a new precedent in 3D graphics rendering. It's my idea, but since you seem more qualified, I generously let you keep it. :D (Or overthrow it for me.)

    ReplyDelete
    Replies
    1. That's part of the point of using Phong shading: http://en.wikipedia.org/wiki/Phong_shading

      Delete
    2. Exactly, but isn't recalculating the reflection at each pixel of the surface far less efficient than a smarter interpolation of edge values would be?

      Delete
    3. Not really. Theoretically maybe, but the interpolation itself is almost as expensive as simply calculating the reflection, because by definition it would have to be at least a quadratic equation. Even then, this is incredibly pointless, because modern games no longer use such basic lighting curves anyway, they use curves like the Oren-Nayar reflectance model: http://en.wikipedia.org/wiki/Oren%E2%80%93Nayar_reflectance_model.

      Delete
  30. "My desperate attempt to reclaim the dreams I had in my youth would be met with the horrifying realization that I could no longer recall what those dreams were."

    Take good notes.

    Seriously, from my 46-year-old perspective, looking forward to getting the kids through college so I can get back to the research I originally set out to do - I hear you, man. Loud and clear. But you know what? Even if you *are* tied down by a mundane existence, eventually you'll get the time to do things right. Every now and again I spend some time honing my ideas, and they get better every iteration. Soon, you'll all kneel before me.

    Oh, hey - there's something shiny, gotta go!

    ReplyDelete
    Replies
    1. You can't take notes on visions you see in your mind.

      Delete
    2. Take rough notes. The purpose is not to get EVERYTHING down. The purpose is to write down enough so that when you read it at some point in the future your words will evoke the memories you are trying to recall.

      The problem with memory is not capacity, it's recall. To make an analogy use C, all the memories are there somewhere, but when you fail to recall something it is because you do not have enough pointers pointing to the memory. It is almost as if you have a hard drive with everything you've experienced stored in it, but with inadequate indexes pointing into the memories you wish to recall. They are all there, just hard to access sometimes.

      By taking basic notes, it is like creating a pointer to that memory. At some point in the future you may read that note, and if done right that memory will be evoked.

      Let me know if I haven't explained it well enough and I will try again.

      You're going to have to let go of your perfectionist tendencies. This world will never allow you to be perfect so don't stress yourself out by trying. Artists know this. A piece of art is never finished, only abandoned.

      Delete
  31. As a software engineer/artist myself, I sympathize.

    But I don't think I'm hyperimaginative, as you seem to be (I'm probably more in the synaesthesia category). I can certainly think of artists who were -- HP Lovecraft and CS Lewis come to mind -- and from what I know of their lives it is probably as much a curse, as a blessing. (Do you happen to have frequent vivid dreams as well?)

    Jon Purdy speaks wisdom. Read his comment again.

    Bottom line is that, whether the path be professional, entrepreneur, or starving artist, you will not again have the same volume of time and opportunity to work on what you love, for a while -- until you retire or otherwise achieve financial independence. Something's got to give, so figure out what would be the least painful to let give, and let it give.

    If you can find some way to deal with your exacting perfectionism, that will likely make things a lot easier. This will help a lot if you go the professional route too, because as a software engineer, at some point you'll almost certainly have to deal with some technology which makes your perfectionist self scream THIS SUCKS SO BAD I SWEAR I AM GOING TO GO BLIND FROM IT, and replacing it will simply not be a viable option; you just have to learn to make do.

    I'm frankly a little skeptical that you truly need a whole new generation of tools before you can start implementing your ideas -- or that you could not start with a crappy GUI and iterate. Try hard to distinguish between the "criticals" and the "nice to haves". Have you tried mocking up your ideas in storyboards on paper? What exactly is it about them that is unattainable with what we have today? What parts could be approximated with what we have today? Could you build those into a demo which would communicate the promise of something better?

    "The best is the enemy of the good" -- Voltaire

    ReplyDelete
    Replies
    1. I just woke up from a fairly vivid dream that was rather bizarre, although the dreams are usually just weird, not terrifying.

      When I reconstruct things by myself its usually because I think I will be an order of magnitude more productive by building the engine myself instead of using the existing one, which was why I built my own audio engine and am currently building a GUI toolkit. In both cases, I also had 2 or 3 things I wanted to d that the toolkit simply would not let me do without ludicrous amounts of hacking. So far, my intuition appears to have been right, especially for the audio engine, which I use regularly despite it being partially broken. The graphics engine I'm building myself because there's a certain thing I want to do that I couldn't possibly do without my own graphics engine anyway, but this comes later, so its difficult for people to understand until I make that happen. The utility library is an obvious necessity and fairly common among programmers. The game engine was built because now that I had my own graphics and audio engines obviously I needed my own game engine to do anything with them.

      I'm building my own graphics engine because I love graphics programming. I just don't give a fuck whether or not its necessary a because I like working on it. Everything else I have built AFTER trying multiple other solutions (I looked at 8 different GUI toolkits and they all sucked miserably). I did not re-implement std::string, I *extended* it. I inherit the class and add a bunch of functionality but still let it do the hard work for me. I still use std::vector whenever I possibly can and only use my re-implementation either as a base for my data structures (because std::vector really, really hates being inherited) or to handle specific performance critical paths.

      Had I not built my own graphics engine, things would be going a lot faster. But of course, that's a false statement, because my graphics engine is one of my end goals, not necessarily just the games, so I simply would have fallen for my lie that I actually wanted to build games rather than tools.

      Delete
    2. You might have to trade a little of what you're passionate about for something that makes you money. I hear ya, it fucking sucks. Fuck playing the game, but we have no choice.

      We don't make the rules, we only play the game. Once you get good at the game, then you can influence the rules. Unfortunately the point system in this game is currently money. Sucks, but it is what it is. I do believe the world will be a hell of a lot different in 30 years though, so don't abandon all hope.

      Delete
  32. Question... are you doing all of this in C/C++? Have you considered this might be what is wearing you down?

    I gave up on C/C++ for hobby projects a long time ago. Now I mostly do WebGL in JavaScript. I get a free console, full introspection, and the ability to distribute it to thousands with one click of a mouse.

    C is a bureaucracy, C++ is Brazil. i find every time I've used C++, it forces me into architectural decisions much too soon, and they are much harder to change afterwards.

    ReplyDelete
    Replies
    1. I do everything in C/C++. I know Python Java Javascript Ruby C# Lua Scheme C/C++ HLSL and Assembly. I still like C++ better than all of them. Just because everyone else hates C++ doesn't mean I do.

      Delete
  33. Totally inspiring Erik, and resonant with how I felt about 5 years ago before I launched my first startup based on technology I innovated. I am now on startup number two but wrote this in response to your very personal piece above. I hope you find it instructive as you continue to move down your path to success.

    http://sent2null.blogspot.com/2013/02/inventing-future-relentless-creators.html

    ReplyDelete
    Replies
    1. I'm not particularly interested in funding, but I hope to collect enough customers to sustain myself eventually.

      Delete
  34. I am older than you (43) and I have pretty much achieved what you are trying to do. It took a long time and there were many failures but a lot happens in 30+ years of programming (I started when I was eleven :-) So don't give up. You are young and have a lot to learn. And how do you learn to make things? By making things over and over again until you finally have enough knowledge to get it right. I have written 3 game engines as a professional game developer and I am still looking for perfection and probably always will. The key is to accept it and move on. And it definitely helps to get a job where you can do what you love while getting paid for it :-)

    ReplyDelete
  35. Try working with other people that have the same level of passion and drive for perfection and yet also are know for finishing, such as these guys - http://www.engadget.com/2013/02/11/david-cage-interview-dice-2013/ . Not only its a job and an experience, but you will also learn what you need to do what you want.

    ReplyDelete
  36. A couple comments/questions:

    When did you start programming?

    So you play music.. Do you write? Do you see yourself as creative in music?


    Btw, if money is your issue (if you are scared that you will need to get a job to support yourself and then there will be "no turning back"), then I have a suggestion for you. I share the same worries. You can always do a little work on the side by yourself, if you are willing to learn some entrepreneurial/business skills.

    ReplyDelete
    Replies
    1. I started programming when I was 14.

      I said I make music, not play. There is a link to my Soundcloud over there in the sidebar which has a few of my completed songs and various ideas. My newgrounds profile (http://blackhole12.newgrounds.com/) has a more complete listing of the hundreds of songs I've composed. I have sold a commercial album (which made me almost no money). Again, music is one of the few creative outlets I have, except it is almost always horrendously inadequate, as I described in the post.

      Delete
    2. But you said you hear cool stuff in your imagination. That is what I meant. If you cannot create what you hear that is only because you aren't that good at turning your thoughts into music. Long-term, I would suggest picking a musical instrument (guitar or synthesizer). When you are creating music the way you are doing it is EXTREMELY hard to capture what is flowing through your mind. When you can play an instrument competently then you can quickly play whatever comes to your mind. An instrument is key I think. You apparently have the creative imagination for music, you just need to translate that through your fingers.

      Delete
    3. I've played the piano since I was 6. I can dissect and recreate any melody I want on the electric piano I have sitting in my room. I can play Fur Elise by heart. That is NOT the problem. The problem is the sound design, synth design, and quality of samples I have to work with. It's hard to write orchestral music without a decent orchestra sample library, all of which costs hundreds of dollars. I have gotten extremely adept at recreating the melodies I hear in my head. The problem is that the digital instruments I have available to me are woefully inadequate.

      Delete
    4. Ok, but creating tones/effects is a skill in itself. With practice you can get very good at thinking of a specific sound in your head and knowing exactly how to create it from scratch. You do't need to pay hundreds of dollars for libraries. You can pirate that all for free. You just need a digital piano/keyboard/synthesizer and you can create and upload all the effects you need.

      Delete
    5. Yes, creating the sounds is exactly what I suck at. This is what I have been practicing, mind you, for something like 6 goddamn years. I still suck at it. I can't really spend MORE time on it because obviously programming is more important.

      I'm NOT pirating something I'd make a profit from. I own all the stuff I use to make my music.

      Delete
    6. Well you don't have to spend more time per day on it, just make sure you keep a certain amount of time allocated to it and you will slowly get better.

      Remember that progress is exponential. You may feel miniscule progress for years, and then all of the sudden start to "get it".

      I don't mean pirating in that way. I mean pirating the software for creating the effects, not the effects themselves, but you seem to already have all the tools you need.

      Another thought is, maybe you need to change your approach a little bit on how you are learning to create effects. Something seems to just not be clicking if you've been at it for 6 goddamn years. That doesn't mean you will never get it, it could simply mean you are going about it in the wrong way and need to go back and look at how you are trying to tackle this. Measure your progress and tweak until you start to see change. Easier said than done, but I do know that every human brain has the ability to pick up this sort of stuff over time.

      But anyways, we digress from the main topic of discussion. Imo though, music is incredible important for creativity. It's not the only creative outlet but it is one that touches on every part of the creative process. It keeps you sharp. Keep at it!

      Delete
    7. I'm not pirating the software for creating the effects either. There's pirating software for fun and then there's pirating software for a commercial venture and I find that immoral and I will not compromise my morals for something stupid like that.

      I've adjusted my approach multiple times. I have made progress, but in the wrong direction. I have recently gotten very good at making ambient music! The problem being I DON'T WANT TO MAKE AMBIENT MUSIC. I have been trying to get better at drums but have made only incremental progress.

      Delete
    8. I din't know you saw that as immoral. Most guys your age have no problem with pirating. My philosophy is: if you need something right now and can't afford it go ahead and download it, just make sure that if it's a good product you give back to society and to the developer eventually. I agree it would be immoral if you outright stole it. But if you are in a tight situation, and you need it to further your altruistic goals then so what. As long as you pay the developer in the next year or so..

      I donno man, it's complicated.

      Delete
    9. I think pirating is fine if no one is making any money. The instant money becomes involved, however, it becomes a lot more questionable.

      In this case it's also a giant pain in the ass to pirate because everyone has been pirating it so now they've introduced a bunch of insane iLok keychain crap. I also don't think it will solve all my problems, only a few.

      Delete
  37. I read that Leonardo Da Vinci had a lot of projects on the go that he never finished because he would get so excited about the next project.

    Do you have a similar problem?

    ReplyDelete
    Replies
    1. No. A lot of people like to take that out of this post (which is perhaps why it's so popular, since people seem to read whatever they want out of it), but I have gotten very good at pinpointing my objectives. I only started working on the GUI toolkit, for example, after a week of deliberation and a lot of "Ok are you seriously going to do this, yes ok I'm seriously going to do this because I can't fucking get fucking CEGUI to fucking work jesus christ". The problem I run into is that, despite having well defined goals that I carefully trim to something reasonable, they often just require a fuckton of time, and my initial attempts are usually broken in some way that requires me to go back and fix them.

      Delete
    2. I apologize, I read your blog post 2 days ago and only replied today. I actually forgot a lot of the details which is why I said this Da Vinci thing, which is actually pretty stupid because I read it in one of the comments here haha. That's where I remembered it from, doh!

      I was actually trying to post all my replies while in a rush so I said some stupid things. Sorry for my incompetence.

      Delete
  38. What are your parents like? Would they be at all sympathetic to your situation? Maybe you could show them some articles on what it is like to be a programmer, and then maybe they will understand your situation and why getting a job right out of college might not be the best idea.

    If your parents (esp. your dad since males usually have a bit more logic, excuse my sexism) are understanding that can go a long way to giving you more time. Make sure they understand that everyday you are learning valuable skills that will make you happier, more skillful and employable in the long run.

    ReplyDelete
    Replies
    1. First, stop being sexist.

      Second, they support my efforts but still expect me to be able to pay rent 6 months after college ends. I would consider myself a complete failure if I couldn't do that anyway.

      Delete
    2. I understand that, but isn't the problem that having to invest time in working to pay your rent will detract from your other goals, what you're currently wanting to work on?

      Delete
    3. Yes. But what i'm concerned about is the fact that after all this time I've invested I still haven't come out with something that can pay my rent. I am frustrated with unsatisfactory progress towards my goals and don't want to leech off my parents or anyone else, because it usually means i'm doing something fundamentally wrong.

      Delete
    4. No no no, it doesn't mean you are doing something fundamentally wrong. Do you know how easy it is to make the money to pay your rent if you really wanted to? The problem is you are trying to have the best of two worlds. This is a lot harder! What you are trying to do is take two different paths at the same time and I can tell you from personal experience that this is tough. I understand, you have these dreams/ideas, but they do not overlap perfectly with your monetary goals. That's cool. I get that. I have the same problem.

      Personally, I have similar issues. I have these projects I am working on, and at the same time I need to find a way to pay the bills soon. You can spend say 50% of your energy on working for money and 50% on working on your projects, but you would get a lot more done if you could spend closer to 100% of your energy on these projects. The problem is obviously not your ability, it is how you are allocating your energy. You are not superman.

      Delete
    5. But that's exactly my point. I'm saying its taking too damn long.

      Delete
  39. Can you see any of the ideas you are currently working on translate into money in the next year or so? Or is it one of those situations where you feel like you will have to ultimately choose between money and what you're passionate about?

    ReplyDelete
    Replies
    1. Two. However, I've said this before, and simply couldn't get the damn idea functional in a reasonable period of time.

      Delete