Sunday, June 21, 2009

No More Computer Junk

I gave up the last of my residual computer junk to the AKLUG (Alaska Linux Users Group) the other day. It was like three towers and a ton of cables and mice and stuff that I finally realized I would never touch again. Now I'm down to just my macbook, some books, and a small box of essential stuff that I use on a regular basis, which feels really good.

The remainder of all my "techy" stuff that will come with me. Notice the inclusion of real, actual, books.

I became a bit of a loner kid by growing up an only child moving between my dysfunctional parents' houses a few times a week. Always on the go, I adapted to the transient lifestyle by becoming deeply involved in individualistic hobbies like legos, remote control cars, and video games. I was primed for a life on a computer.

Families that don't spend much time truly opening up to each other on an emotional level create environments that raise solitary, bored kids. Their houses get bigger so they can stay further apart, they watch more TV as a "family activity," and their kids end up in doors playing video games and relating to their friends via proxies like text messages and online social networking. Families that spend more time relating their deeper emotions become closer, and less forced into loner activities like video games and facebook.

As I grew up I got into the habit of drinking tons of coffee and coke-a-cola while staying up all night coding my brains out, and as a result developed a significant problem with insomnia and poor resistance to asthma and allergies (sound familiar?). In college I spent 100% of my energy cranking on my senior project by walking between classes and on the subway with my head down working through design problems on my notepad. I was telling myself that if I was going to be the best I had to be putting all my effort into being the best. I was thinking all the time and never gave my chance to rest.

Then, one day while on a business trip this last January I looked around the snazzy Hollywood studio that I was working for and started to notice how the dark, window-less environment was extremely conducive to solitary, inwardly confined work (although this was one of the better offices I've worked in). Later I slowly started to see how I'd built a lifestyle around controlled environments; working on a computer, living alone, working alone, even participating in non-team sports like cross country running and skiing.

PK in the mountains.

I took a step back and noticed that all the energy and orderly living is centered around the desk, and ultimately the computer screen. The kitchen, bedroom, bathroom, and living area had become dirty, cluttered places with no chairs and empty walls. They had little value as places of habitation, and served only as compliments to all the energy and color that surround the computer desk.

This unbalanced lifestyle is counter-productive to realizing your potential.

Since I was in high school I've sporadically spent a lot of time training and trying to find what it takes to succeed at the top level. While I never managed to make the jump to the next level, I learned that succeeding only requires two things: a genuine, and deeply personal interest in the sport, and an adequate balance of all parts of life which enables you to train well enough to be the best.

A shot I took of the fastest skiers in the country while covering this year's US Distance Nationals.

This applies to any kind of success you want in your life. If you really really love something then you're all set to be the best. If you really really love it and are content in the other parts of your life, then not only are you set to be the best but you also have what it takes to be the best. I believe that's the meaning of "talent," and it applies to everything I've tried to be the best at - music, endurance sports, and computer programming.

That's why "talent" is so complex. If someone wants to be the best ski racer because they simply want everyone to love them for being the best, they will become an ego maniac and will eventually hit the wall when the public praise doesn't make up for the price of commitment.

A friend of mine, a top mountain runner, slowly becoming a bionic man from repeated ankle rolls. Looks like something needs to change.

If someone's got the genetics for a bone structure and cardiovascular system to make them a naturally fast track sprinter, they might also have a tough family life that results in a drinking problem or some other vice, and will never be able to see their potential through the bar bills and hangovers.

If someone only likes computer programming because it provides them a job where they only have to communicate through instant messenger, they might develop into a worker with tunnel vision and poor people skills that has a hard time knowing the difference between a sexy implementation and the user's real needs.

A friend demonstrating "no pain no gain" yesterday in the mountains behind Anchorage.

The point is that no matter what you're doing, you will do better the more you are able to balance your talents. That's why I think that programming computers from a social jail cell is about as awesome as writing powerful music having never been in love or had a rough breakup.

Purging all my old computer junk is a great start. Game on.

Thursday, June 18, 2009

Sick of Programming

I quit my job two weeks ago. I don't want to program at work any more. I'm sick of being inside and stationary, and I'm sick of working in an environment where people don't talk to each other.

Over the last few years I've worked for one company producing high-end music software. When I came in I was invincible, and after working for someone with a completely different approach to problem solving (right down to code style), I've become weak and ineffectual.

Well, those days are over. I'm going to get my style back and get back on the wagon of invincibility. Programming is art and should be a pure and unadulterated stream of conciousness from the developer to the machine. Python is art. Good design is art. Milestones are art. Good energy is art.

A lot of people tend to think that developing software means you have to work hard in a tunnel environment, like a battery sucked off the matrix. Well, I don't subscribe to this philosophy. I believe that you have to really reach your potential in all walks of life you have to get up from your desk and replenish your sense of life between blocks of code. You have to joke about TPS reports and Bill Lumbergh's ass and fling little paper shells at each other and keep a tally. The other guys around you need a recharge, too, and then you can sit back down and bang out the last few lines with clarity and conviction.

I'm psyched to get back to coding for the sake of art, where the idea and the implementation are solid gold. I quit my job, gave up my place, and I'm going to go bar tend in Jackson Hole and program for fun. I've got some PyQt dev kits to write to simplify audio software development, and have a huge GIL to deal with. We'll see what happens.

Tuesday, April 28, 2009

Bliss

WindowMaker running a simple, nifty theme on two screens using emacs on an xterm is bliss. Yeah, sure, the big guys are all refined and awesome and stuff, but for development there is nothing better than WindowMaker and a few xterms.

Late at night I ran across some "current" window maker screen shots including that same old Matrix theme we all had back in '98. It brought back a whole different feeling that I've missed these last few conferment years.

What's bliss to you?

Wednesday, April 15, 2009

Managing Precompiled Headers

You should only include third party headers in a precompiled header when using it for development. If you include headers from your own project, your build system will constantly have to recompile your pch every time you edit one of your own headers, which defeats the purpose of using precompiled headers in the first place.

But, it just occurred to me that you can break this rule for release builds. By using a different pch for your release builds you can include all of your project's headers, which will make even large projects build extremely fast. Nice.

Friday, March 6, 2009

Automating Your Testing and Build System?

GOAL: For a tester to hit a "build" button to get the current trunk revision.

We want a fast bug report to build turnaround time, like immediate. A web page with a "bugs fixed" revision log entry, build errors, and build button. This would require a few things on the end of the developers to work:

1) Unit tests. First test: revision builds successfully. Subsequent feature tests included as well.
2) Super stable trunk. The developers must take responsibility to keep the trunk as stable as possible by learning to use branches and patching techniques.

Has anyone else done this? I wrote something once in a Trac tool for a python app with extensive unit test reporting (made easy with an exception-based runtime), but never for a C++ application. Are there any web apps like this out there?

The most important thing is to remove the build phase from the project manager's work plate. 

Wednesday, March 4, 2009

La Musica Bonita

Flash forward fifteen years in the future. and electronic music is dead. The word "genre" has been whittled down from 800 permutations including funk, house, ambient, classical, minimal, rock, and indie, and now is used to differentiate between two musical environments - live and recorded.

Just like the merging genetic avenues of the human race, all of the technologies and methods learned during the electronic revolution have been absorbed into a single, advanced, tan-skinned entity, simply known as "music". Artists have learned to effectively use computers and other signal processors just as effectively as violins, violas, drums, and kitchen appliances to create music that their cultural parallels can relate to, understand, and enjoy.

Music schools do not teach musical fundamentals with regards to the instruments or methods used to produce music, but instead students are encouraged to practice expressing themselves with rhythm and intonation, by singing and banging and watching and listening to their fellow learners. Before a student opens his or her creative eyes they are asked to open their ears and their mind, in an effort to help them connect to their own emotional purpose and meaning of the expression they will try to master.

Drum machines, sequencers, glitch racks, send tracks, software components, storage formats and recording techniques have all become so advanced that the majority of artists on the scene have reconnected with their abilities to directly express their thoughts and emotions through mastery of their instruments of choice. Industry standard production tools are ubiquitous, and every aspiring artist is free to explore their world of sonic pleasure in the comfort of their daily lives.

The primitive fetish with the mechanized and lifeless sounds of today are gone, and have been replaced with organic and humanized versions, giving an accurate and intimate view into the artist's thoughts. DJ's and mash-up architects can no longer escape the harsh scrutiny from the musical world, they are now known for what they are - regurgitators of counterfeit art, and the composers of harmony heavy and over produced dance tracks have found their rightful places as backup bass players and professional studio engineers.

Groovy, baby.

Monday, March 2, 2009

The Most Important Streaming Video Feature

There are a few videos that I watch online, like Family Guy, South Park, some random Adult Swim stuff, and netflix movies. I'm really psyched to have them available, but I can't believe that none of them use a calculated wait on the buffer to ensure that the video will playback smoothly. Yeah, sure we all have different speeds, but do some simple math and adjust the window accordingly! At least let us know how where the buffer is in relation to the playback cursor (South Park!) so we can do it ourselves if necessary.

I think if you ask anyone out there that they would rather wait longer for the video to start than sit there and hit pause a hundred times to fill the buffer. Honestly! Sites that have these problems:

www.adultswim.com
www.southparkstudios.com
www.netflix.com (albeit the best)

Is there something that I'm missing about the basic use of a ringbuffer? has this been done and found to be impossible?