I come from a background in videogame development; I started out as a line-level programmer and, over the course of a dozen years, worked my way up to engineering management and then president of my own company. That means I have a lot of technical knowledge under my belt, so much when Eminence has technology needs to be addressed I’m usually the first--and often the last--stop.
For the course of the last month or two, our big technological need was a new version of the website. I’d thrown the current version together fairly quickly, and it wasn’t really competitive or up to snuff. It’s hard to add content or adjust the fleet, and it just plain doesn’t look all that great; it certainly doesn’t give off the “luxury service” aura that a company like Eminence Luxury Services deserves.
According to the original plan the new version of the website should have been ready to launch over the weekend, but things have been very busy around the office, and as a former game developer I’m not particularly conversant with the concept of “being on time”, so I’m running way behind. My plan for today’s post had been to talk about some of the great new stuff we’ve got on the site, but as the site’s not yet live this seems a bit premature. Instead, I’ve decided to write up a few “behind the scenes” notes on my experiences developing the site.
Let me pause here and be very clear: of my vast regular readership--hi mom!--this entry will be of interest to exactly none of you. I’d highly recommend that you stop reading now. I’m sure that Jalopnik has some interesting recent car news, or if you really insist on doing something Eminence related perhaps you might check out the Eminence Luxury Services MySpace page. What follows is, at best, of interest only to nerds like myself, and by that I mean probably only the subset who work in videogame development and are interested in the differences encountered in web work.
Anyone still with me? No? Excellent! Now then, a quick list of thoughts, recommendations, and commentary, in no particular order:
Use A Template Engine. In the past few years I’ve poked occasionally at making various websites, and for anything more complicated than straight HTML I used the traditional old-school pattern of intermixing my logic with my presentation. I still see a lot of example code that works this way, and I don’t understand how people cope; down that road lays madness--and it’s only a few steps down the road, at that. For the new Eminence site I’ve adopted the Smarty template engine, allowing me to deal only with logic in one set of files and only with display in another. If you’re developing a website of any complexity--pretty much as soon as you create a single file with a .php extension--install Smarty!
It’s A Very Simple World. Even with the recent advent of “engines”, “platforms”, and “SDKs”, game development is a crazy beast. There’s a whole lot of stuff going on, usually in real-time, and the game engineer has to be conversant with lots of different things-- rendering, AI, game logic, user input, etc.--most of which have very little in common with the others and all of which involve an incredible level of complexity. Web development on the other hand is, at it’s core, fairly simple. The main object of every web page or site is fundamentally the same: manipulating text (HTML). Sometimes this involves actual text, sometimes the representation of that text (the DOM), there’s often a lot of back-end logic involved to generate that “text” and of course user input plays a big role as well, but at the end of the day what the browser does is render text so “web programming” is mostly concerned with the ways and hows of efficiently generating and changing that text. Once you get your mind around this concept--something that can be tricky when you’re used to dealing with many more moving pieces--you’ll be much better positioned to properly approach the web programming paradigm.
It’s A Very Complex World. Ironically, given my theory that web programming is mostly text manipulation, there’s an incredible number of tools, libraries, and packages to help achieve this seemingly simple goal. Even though it’s big business, game development is still a fairly small world. Web development though is huge: the ratio of websites to games created every year must run 10,000-1 or more. In games your choice of “technology platforms” is, at best, maybe a few dozen; in web development there are hundreds, possibly thousands.
Embrace this diversity--there are a lot of smart people out there creating incredible technology to make your job easier--but be prepared to spend a lot of time evaluating options and learning new things. It can be incredibly difficult to make a decision when presented with so much variety (Which PHP framework? Which JavaScript UI library? Heck, which language?) but don’t even consider letting this uncertainty tempt you to “roll your own”. Use what’s out there and reap the benefits of the many brilliant people who’ve been down this road before.
Databases Rock. As a game developer, unless you work in massively multiplayer online games or on one a few select, data-intensive titles, it’s entirely possible you’ve never seen a single SQL statement in your life. Outside of games however, and particularly in the web development world, databases are much more prevalent…and incredibly useful. There’s a reason that Oracle is such a huge company in spite of basically offering only one product. When it comes to web work, a back-end database is a must for any but the simplest collection of static pages. Whether this takes the form of a content management system or a custom-tailored collection of tables, a database is quite simply your best friend.
In video games we draw a big distinction between “code” and “assets”. The latter typically takes the form of “art” (be it 3D models, textures, sound, etc.), so when making the jump to web development it’s natural to think of all of those .jpg and .gif files as the “assets”. That’s a mistake. In web development the assets are the page contents, which usually means text and other data (sometimes, but not always, including images), all of which are best handled with a good database. Using a database provides a nice, clean separation between data and logic--just as in games the engineers work on “code” and the artists work on “assets”--and is the cornerstone of a solid “MVC” structure.
As an aside, I think it’s a real shame that databases aren’t used more in game development. A good SQL implementation is an incredibly natural and convenient way to store, retrieve, and manipulate data, which is something every game has to do. If you’re a game developer, spend a few moments contemplating your current project. How does your engine decide which files need to be loaded for each level? How do you track assets for your game’s story, or objects in the world, or your main character’s abilities? How do you generate a save file? All of these problems, and many, many more, can be easily solved with the use of a database. SQLite is the “Gold Standard” for small footprint, embeddable, open source implementations, and is highly recommended.
I could go on and on, but this is already my longest blog post yet and, unfortunately, one that has absolutely nothing to do with exotic car rentals and luxury services. I’ll wrap it up here and next week get back to the topic at hand, but prepare yourself…there’s a lot of web development work on my plate these days, so there may be a Geek Garage II somewhere down the road.
Monday, April 7, 2008
The Geek's Garage (intro)
Earlier today I posted a lengthy entry to the Eminence Luxury Services blog, discussing some of my experiences developing the new web site, comparing web development with videogame development, and just generally rambling. After pondering it all day, I realized that I'm going to be doing a lot more web development work for Rococo Media, and that I'd likely have more profound insights to share with the world. Rather than further pollute the Eminence blog, and because my personal blog is more...personal, I decided to fire up yet another blog.
Oh, I also really liked the name of my Eminence post, so I've borrowed it (in a slightly modified form, 'cause the name I wanted was already registered). This will probably become the "official" blog of Rococo Media, but for the moment it's my personal thoughts about the technical work I'm doing. I'll kick things off momentarily with a copy of the "post that started it all".
Oh, I also really liked the name of my Eminence post, so I've borrowed it (in a slightly modified form, 'cause the name I wanted was already registered). This will probably become the "official" blog of Rococo Media, but for the moment it's my personal thoughts about the technical work I'm doing. I'll kick things off momentarily with a copy of the "post that started it all".
Subscribe to:
Posts (Atom)
