My Politics
September 7, 2009
Politics suck. People say when you go on a date not to talk about politics. Why not? Are politics so polarizing that you can’t have a level headed discussion about them? I think this perception is caused by the requirement that political views are black and white and not subject to change. I’m right and you’re wrong. If you get into any conversation like that, regardless of subject, things are going to get ugly.
I think this stems from the need to have labels that define a person’s view in one word. Democrat and Republican are just labels. They represent an overly generalized view of opinions on social, economic, and foreign issues. For the purpose of this post I’m not going to label myself as anything, just list my current views on a few common political issues. I stress when I say current because these opinions are very likely to change.
Taxes: The IRS should not collect taxes from individuals, its a wasteful way to collect money. A federal sales tax should be collected at point of sale and thats it. Anyone below the poverty line is exempt from this tax. This will create more individual savings and should stabilize our economy by allowing people to reduce their debt substantially. Additionally, a federal sales tax would allow unreported income to be taxed.
Abortion: The mother has 3 months to decide if they want to have the baby. They should also be required to provide a stable environment for the child or find foster parents if they don’t want to have an abortion. While this may sound harsh to some, contraception is too widely available to allow unintended pregnancy to be acceptable.
In general, I think life begins at birth and the argument that a fetus is potential life, while correct, also means that an egg or sperm is potential life. We might as well put women to death for killing a potential baby every month or men for masturbating. To me, this is all about personal responsibility and rights.
Health Care: Universal health care for everyone. Our society has come too far to leave people without proper medical care. To make this possible preventative care and education needs to be the focus. A healthier populous means lower health care costs for everyone. I have no interest in paying for someone who has a poor diet. Instate a diabetes tax on high fructose corn syrup. This should offset the crazy subsidies we give to corn industry for “ethanol production”.
Does anyone know what the actual cost of health care, not insurance, is in America?
Foreign Relations: We need to stop telling the rest of the world what to do. They don’t appreciate it and only pretend to listen because we give them money. This isn’t how you change the world for the better. You do it through respect and leadership. Once we’ve fixed our own issues then we can start helping everyone else.
Gay Marriage: According to the government, marriage is a contract to show the intent for two people to join their property and responsibility. That should be it. Who joins in this contract and what sex they are is irrelevant. Religious organizations are free to decide if they want to acknowledge this contract.
Military: Get out of Iraq and remove the majority of stationed troops. Put them on our borders and ports as a national security force.
Drugs: Legalize marijuana and tax it like any other good. Prohibition hasn’t produced useful results, see the 1920s. Release all minor drug offenders from jail so we can stop wasting money on their incarceration. I recently heard a statistic that we spend more money on drug offenders than school children, huh? Legalization should also cut down violence on the Mexican border. I don’t do drugs myself but I find the whole drug war a waste of money and effort.
Education: Incorporate career preparation earlier in the child’s curriculum, before college. Provide vouchers for students to create competition. Allow teachers to take free additional training and compensate them with raises for being more competent. Every student should have access to a computer. Create smaller and more focused career specific colleges that cost less and provide students with a degree faster.
Energy: Subsidize solar panels for individuals to provide power into the grid and decentralize how we create power. Set a goal to have all combustion cars replaced with hydrogen based cars in 15 years. Replace gas stations with solar powered, self generating, hydrogen stations along the highway. These already exist in Sweden.
My overall view is that the government is there to pool personal assets at scale for the benefit of all, provide rights, and ensure physical safety.
These ideas seem to make sense to me and would love to discuss them with anyone. When it comes to most things, people are usually right and wrong at the same time and I would be happy to hear a point of view that makes more sense to me than what I think today.
I’ll show you some change you can believe in!
February 13, 2009
In the last 8 months, I changed from WinXP to Ubuntu, from Outlook to Gmail, from spending hours reading blog articles to 15 minutes with Google Reader, from Trac to Lighthouse, from SVN to Git/Github, from IE6 to Firefox 3, from Winamp to Rhythmbox, from (Aim, Msn, ICQ, Gtalk) to Pidgin, from Mongrel to Passenger, from a desktop to laptop, from a cordless phone to a Samsung Instinct, from Los Angeles to Indiana, from a 32 inch tube to a 50 inch Panasonic plasma.
The only thing that hasn’t changed is the love for my new tools. I’m lightyears ahead of where I was by keeping an open mind, following trends, and listening to my friends. I should probably make a whole post for every change but that might take another 8 months and its not unlikely that my toolset will be totally different. So here is short list of why what I’m using now is better than what came before it:
Ubuntu: Constantly updated, secure, configurable to exactly what I want, integrates my work and development environments seemlessly, multiple desktops, a useful terminal interface.
Gmail: Fast, easy to use, keyboard shortcuts, filters and labels.
Google Reader: News comes to me, can read 200 updates in 15 minutes, keyboard shortcuts, easily share articles with friends.
Lighthouse: Good SCM integration, simple interface for adding tickets, useful ticket searching.
Git/GitHub: Easy branching, conflict resolution, offline development, concurrent development, source browsing and commit searching.
FireFox 3: Tabs, extensions, Firebug, FireFTP, keyboard shortcuts, security.
Rhythmbox: Fast, simple, using my hardware music keys on my laptop to change music, desktop notification of what track just started.
Pidgin: Merge all programs into one, desktop notification, plugins, configurable.
Passenger: Easy to setup, fast, easy to maintain.
Laptop: Work from the couch, Hulu from bed, easy to pair problem solve, less power, quieter, portable speakers.
Samsung Instinct: GPS navigation, weather, news, email.
Indiana: Pretty clouds, friendly people, no traffic, breathable air, its cold( weather changing is nice, except for shoveling snow).
50 inch plasma: HD is pretty, easy to read text, all consoles can be plugged in at the same time.
What change has improved your workflow and life in general?
Rails can’t scale alone.
June 24, 2008
I was reading a blog post which talked about a how Linkedin scaled their Rails Facebook app, Bumpersticker, to 1 billion page views per month on Joyent’s cloud computing platform. You can find a somewhat techie explaination of how it was done here.
To summarize their video, they used F5 load balancers to serve the majority of the page views as static content. So what did Rails do exactly? It managed the F5 cache. Thats pretty much it.
They scaled Bumpersticker by not using disks, making the dynamic content as static as possible, and pushing the content close to the client with F5. This kind of architecture is how scaling web applications has been done since long before Rails came to be. You can do it in PHP, Java etc. etc. Linkedin realized the only way to scale Rails was to use it as little as possible to serve their requests.
Bumpersticker’s story is not about Rails, its a testament to Joyent’s cloud computing platform and F5. So why use Rails? With Rails you can spend 10% of the time creating the app, 80% of the time scaling it, and 10% of the time marketing how Rails scales. Rails lack of performance makes you think about scaling earlier than you would on another platform. This is a GOOD thing. Some call it pre-optimizing, I call it capacity planning.
Instead of saying Rails scales, we should say that Rails makes it easy to scale by simply integrating with other, more scalable pieces of software. This is why I use Rails, no matter how many people bash Twitter for using it. Enough reading, go scale something.
Project managers are not evil.
January 27, 2008
I’m a project manager. Don’t hold it against me. Until I joined the rails community I had no idea the disdain programmers had for project managers. Most of this was coming from jaded java programmers who were over managed with an iron fist. Rails gave them the ability to reduce project complexity and thus remove the need for excessive management.
What do I think makes a good project manager? A project manager should reduce communication overhead, keep everyone on schedule, provide resources and tools to make programmers work smarter, make the hard decisions and settle arguments, and be a cheerleader for the project. My philosophy is that my programmers work with me, not for me, its a collaberative effort. I don’t just hire them because they know how to program, I want their creative ideas too. I’ve found this makes them more productive if they are implementing their own ideas and not just following orders. They are people, not tools to be used.
As the title of my blog clearly states, I have no idea how to code. I think this makes me a better project manager. I can step outside the scope of the problem at hand and provide a clear picture of whats going on. Sometimes a programmer just needs someone to tell their ideas or problems to. There have been many times where I sat and listened to a programmer describe a problem and without me saying anything they come to a solution.
Its those “light bulb” moments that I live for and make my work worth doing.
You got served! The Epic: Part 1.
January 19, 2008
I love webservers. There I said it. Webservers are the reason the internet exists and is so popular today. You wouldn’t be able to read this post if it wasn’t for a webserver. I don’t think I can summarize my tawdry love affair in one post so I’ll be splitting this up into multiple posts.
My history with webservers goes back to the year 2000 A.D and the grumpy grandfather of webservers, Apache. I got my start administering a Cpanel server which had Apache 1.3 installed. One look at Apache’s httpd.conf config file and I started wondering if being a systems administrator was for me. The monolith was 2000 lines long, consisting mostly of comments and tons of repeated logic. The comments were needed to explain Apache’s configuration options, it has tons. It was a nightmare but I continued to use Apache for the next few years, all the while hoping for something better.
Through my travels I had to do a bit of work with Microsoft’s IIS5. It wasn’t a whole lot better, replacing the 2000 line httpd.conf with a windows based GUI. The GUI made it difficult to get a global view of the configuration and debugging problems was unnecessarily complex. The guys over at Port 80 Software did have some plugins for IIS which made it run a little smoother and have more features but overall there wasn’t a lot of progress going from Apache on Linux to IIS5 on Windows.
After IIS it was back to Apache for some high performance applications including banner and image serving. This is when I saw another one of Apache’s weaknesses, its poor scalability and performance when dealing with large numbers of connections. I was using Apache to serve banners through PHPadsnew while also serving static images. I had 3 dedicated apache servers and 1 database server to do this and it couldn’t cut it. The load average on the Apache servers was 100. All the memory was used up, it was a mess. Thanks to Freebsd 4 I was still able to login via SSH to see if I could do anything.
After hearing that Gamespot used Thttpd to do its static file serving I thought I would give it a try. It helped but Apache was still having an issue serving the ads. I tried to get Thttpd to run PHP but it wasn’t designed to do that at the time. I really enjoyed working with Thttpd thanks in part to its small config file and simple setup. I looked at its source code, it was small and well designed. I worked with one of my programmers to create a module for Thttpd that would replicate what we wanted from PHPadsnew but without the need for Apache. After a couple of months we had something that we could swap in for Apache.
Our modified Thttpd server was installed so I checked the load averages and they went from 100 down to 0.00. I thought there was something wrong but after looking at some traffic logs I was assured we were serving ads. We ended up replacing the 4 server configuration with 1 server and now we could actually handle 10 times more traffic than we were able to with Apache!
Tune in next time to find out how this was possible.
Hype: the silent evil that looms.
November 19, 2007
With all the games coming out this holiday season there are no shortage of reviews and opinions flying around. These reviews are scoring almost all games in the high 9s yet picking apart every little tiny problem. After reading, I’m filled with massive doubt about buying these games with the only reason to pick them up is to have something to play. I think this problem stems from the hype games get before release, so much hype that will never get lived up to. Game scores should actually score the game itself and not whether it lived up to the hype it generated.
So how do we fix this? Game developers, fire your PR departments. 1 year before you release your game, release a teaser trailer. 6 months before release put out an in game trailer. For the 3 months before the game goes gold, release 1 developer diary video per month and conduct some interviews. When I play your games I want to say “Wow I’ve never seen that before!” and not “that was in a trailer I saw last week.”. Suprise me, it will make the game experience better.
Why game developers make bad gamers.
November 16, 2007
I started playing Assassins Creed this week. The game was hyped to ridiculous levels and I couldn’t wait to give it a try. I have a lot of respect for the Montreal Ubisoft studio that put it together, having played their previous Prince of Pursia and Splinter Cell games. They are amazing animators, level designers, and presenters in general. I was expecting Assassins Creed to be an improvement and innovation over their previous titles and that’s what I got, sort of. The animations are the best I’ve seen in a game to date, the level designs are detailed and massive, and the voice acting and UI is top notch. The main feature of the game is the ability to climb on any building, if it looks like you can grab onto something, you can. Jumping from roof top to roof top while evading guards was one of the more unique gaming experiences I’ve had in a while.
After a few hours of playing, all this excellence was crushed by repetitive missions, side quests that marginally furthered the story and provided no gameplay incentives, invisible walls that ruin the entire sense of freedom, and a counter kill feature which creates a fighting system that’s too easy, making the whole running across roof tops to evade guards unnecessary. So now that all the fun and excitement has been sucked out the game I’m trying to decide if I want to finish it. I hear the game changes things up towards the end and has a cool ending, but is that enough to justify the time and annoyance of assassinating 7 more characters just to finish it? I’m going to give it one more try before making a decision.
What does this mini review have to do with the title of this post? As a game developer I appreciate the technical and artistic achievements Ubisoft has made. They created an amazing technology platform, and worked a unique story ontop of it. And therein lies the problem as that’s all the game is, a tech demo with a story. I constantly ask how they did that with the amazing technology, and why they did that when it comes to their design decisions that ruined the game.
Part of gaming is suspension of disbelief and its no longer working on me, making playing games less and less enjoyable. When you’re second guessing what the developers were thinking and admiring what they did well, you really lose out on the experience. I hope to be a gamer again someday, until then I’m going to spend more time making games than playing them so I don’t feel like such a critical bastard.
UPDATE:
So I finally finished Assassins Creed. As I expected the ending moments were much of the same. Counter killing hundreds of soldiers and invisible walls. Only this time I wasn’t able to move past the invisible wall until I killed all the guards in that area. Once I killed the guards and moved to the next area I hit another invisible wall with more guards to kill. This happened 5 times in a row. I was about ready to just turn off the Xbox360 until I got to the final battle. I thought I had won until all of a sudden I was in another final battle. What about the word final doesn’t Ubisoft understand?
After I dispatched this next “boss” I had to fight another final battle. WTF? Ok so this third guy bit the dust and the credits started rolling. I was so relieved. I sit there and watch the credits with glee and as they were ending I went to turn the Xbox360 off and noticed I got kicked back into the game. IT WASN’T OVER!
I won’t give any details on what happened next since I don’t want to spoil it for people that haven’t played the game. Needless to say, I spent an hour walking around a room trying to find a way to end this cruel game. I had reached the peak of frustration so I checked online to see if this was normal and it was. Assassins Creed has no ending. Ubisoft, do you remember how to make a game over screen anymore or was that just not ported from last gen to next gen.
Rent it, enjoy the story, have other people play through the middle of it so you’re not bored, and don’t expect an ending. Nuff’ said.
AdamCode: the future of programming.
November 16, 2007
AdamCode is a faux dynamically typed programming language that compiles to awsomeness. It has its roots in the lowly if statement, shares some similarities to Ruby and girls love it. This sounds great, you may be asking yourself how can I learn AdamCode?
You can’t. It has no specific syntax, computers can’t process it, and half the time I, the creator, can’t read it. What kind of blogger would I be if I didn’t show an example:
def is_friend_of_adam?
if user.coolness > 9
return true
end
So what is the point of AdamCode? Its what I use to express ideas to the guys that work with me. Since I’ve started using it, I’ve seen a 300% productivity boost. It has no license so go ahead and use it. Maybe someday you’ll write a killer app with it and impress that certain someone or some VC in menlo.
Intro
November 16, 2007
This is Adam’s blog. I’m a game developer and general technologist. I decided to start writting a blog. I’m not sure if I’ll end up keeping it but what the hell.