C7Y Podcast

While at Open Web Vancouver I got the chance to participate in a podcast with Paul Reinheimer from php|architect. Take a listen as we discuss PHP 5.3 and some other topics, along with a disturbing discovery at the end of the podcast about my frozen cappuccino drink.

A friend of mine (hi Juan!) had a brief chat with me about my “Deployment Isn’t A 4 Letter Word” talk and screencast and brought up some interesting points about the talk. I was gonna do a posting about it today, but I need some time to put my thoughts together in a coherent way. Look for that on Friday.

Article Tags >> ||

Open Web Vancouver 2008: Day 1

I’m sitting in one of the meetings rooms here at Open Web Vancouver 2008 waiting for a talk on Google Gears to start, so I thought I’d share my thoughts on day one.

The first two keynotes were probably worth coming to the conference. First, Zak Greant gave a talk “The Age of Literate Machines”, talking about the history of communication and the concepts behind free software. He was severely jet-lagged but he soldiered through and was quite coherent.

Next up was Tim Bray’s keynote on the status of web development in 2008. Again, another awesome speaker and he touched on the recent paradigm shift in tools available to you to build your applications. Specifically he talked about the research he’s done into the fields of agile development, the usefulness of blogging, and what trends he sees having a huge impact.

My favourite part of his talk was his comparison of PHP to Rails, and he gave them a very fair comparison. His recommendation was that you should seriously consider using Rails for your next project, even if you’re not going to use it because it’s the ideas that led to the creation of Rails that are important. After the talk, he answered a question about Django vs. Rails. He talked about how they took two developers of roughly the same skill level, gave one of them Rails, the other Django and set off to see how fast they could build something. It turned out that it was a dead heat, so it makes my decision to start playing with Django a good one. No point in starting behind the curve, right?

So after that talk, I went to Jeff Griffith’s talk on “RIA with open standards”. Jeff works for ActiveState (the folks behind Komodo) and he talked about the various options for building Rich Internet Applications and how it was in your best interests to try and build these things with open standards so that you are well positioned to take advantage of new technologies and standards as they become available.

After that, I sat in on Eric Promislow’s talk about creating scalable Javascript code. Even though I’m a Javascript newbie, I got a ton out of that talk because the stuff he was talking about is directly related to the stuff I’m trying to do with Rallyhat. Eric also works for ActiveState, helping with Ruby and Perl support for their products.

I went with Kevin to the “Grassroots Open Mobile Technology” talk, and I was incredibly disappointed. It was basically a 15 minute informercial about mobile devices. The speaker is affiliated with Nokia, so he predictably gushed over Nokia’s phones. Very rarely do I hate the talks I go to, but 15 minutes when you have an hour slot is just wasting the audience’s time. The guy was sure passionate about mobile tech, but the complaints he had (like “why don’t we have the iPhone in Canada?”) are just so naive and seems to me at least to reflect a disconnect from the realities of mobile technology in Canada. Anyway, enough about that.

Then I gave my talk on using CakePHP’s CLI tools. First off, I fucked up the recording of the screencast so I’m not happy about that. Secondly, if I ever give this talk again I’m not going to do any slides. I’m going to have my shell open and the browser and that’s it. I found that jumping from Keynote to Terminal to Safari and back just totally threw me out of any sort of flow. Hopefully 3rd time will be the charm.

After that, there was a cool get-together at a local art gallery with some drinks and good conversaton, and then a great dinner with some of the speakers. I sat with Paul Reinheimmer and Brian Shire from Facebook. Good Italian food, good conversation, a good time in all.

Later today I’m giving my second talk about application deployment, that’s a more standard slides-and-me-talking presentation so I should be better at that one.

Article Tags >>

Building Rallyhat: Up into the cloud

It pays to have friends who have connections. After reading my blog posting about the rise of the app cloud I got an IM from Marc Grabanski asking me if I wanted an invite to get in on Google App Engine. Needless to say, I said yes.

So I have an account up there now, but nothing to show you guys yet. The tutorials they have are actually quite clear and make sense. What makes it even more ironic is that all you can use is Python (which I’m learning) and runs Django 0.96 standards (although you can use dev versions if you like). Is that fate trying to give me a hint or something?

Anyway, it looks like it will be trivial for me to redo my database structure so that it fits in nicely with BigTable. I need to massage the data in the new format and then find a tool that lets me upload that up into BigTable itself. My data is simple enough so the fact that I can’t do joins won’t really matter. All my data can be per row in a database anyway, the relational stuff just makes it easier to write code. Or at least I’ve found that when doing stuff with Cake.

As far as Rallyhat Extreme Alpha goes, I’ve got it working in that you can do the following:

  • pick your teams and date range
  • see the list of games and pick which ones you want to go to
  • plot the stadiums on a map so you can see distances

The UI isn’t pretty so I have lots of work on making that easier to use. But I am excited. Once I figure out how to create driving-distance stuff dynamically it will be even cooler.

I have to say that I have noticed that the Python “way” is quite different from the PHP “way”. Maybe it’s more accurate to say the Django “way” is different from the PHP “way”. Django has deliberately limited what you can do in their templates out-of-the-box. Yes, you can write custom code for stuff in templates by extending it yourself (the documentation is actually quite clear on how to build them) but out-of-the-box you can only do so much. Frustrating when you come from the PHP world where you are able to put PHP code in your templates to accomplish certain tasks. You can’t just dump any old Python code in there, as I have found. Much of what I’m trying to accomplish simply needs to be done in a different place, as a lot of the form-processing magic in both CakePHP and PHP itself has hidden that from me.

Deployment Horror Stories

I was going to do a rant today in honour of April Fools’ day, talking about how much it frustrates me to no end that people prefer complicated explanations for their bugs:

Them: “I notice that module X is no longer working when I moved from BloatOS to TinyNX, and my framistat widget is now displaying stars instead of being in plain-text. Why is the component doing that?”
Me: “Dude, that component doesn’t just magically stop working because you’re on TinyNX. Are you using the same version of FooWorks in both environments?”
Them: “I think so.”
Me: “Don’t f*****g THINK so, MAKE SURE”.
Them “But it was working just fine…”
Me: “SILENCE! I’ll bet you the balance in my savings account that you are using the star framistat widget on TinyNX and the two code bases aren’t the same”
Them: “Oh, will you look at that…somehow an older intermediate version of the code using the star widget was deployed on the TinyNX version”
Me: “You owe me lunch”

People, people, people. Weird problems almost ALWAYS have a simple solution. But enough about how smart I think I am, back on topic.

I’ve started working on my presentation I’m giving in two weeks. Oh, don’t worry, I know what I’m going to say but I just need to create the slides that results from it. Part of the presentation is pointing out some deployment horror stories and how they could’ve been avoided. If you can swallow your pride and share some of those stories with me, I’d appreciate it. I will start off with one of my own.

Back when I used to work for an adult dating website, we built a database abstraction class that passed all data modification statements to our master database server…via HTTP. Yes, we wrote code that listened for a string to be sent to it and then executed the code on the server. I don’t have the time or the patience to explain how this decision was made, but there it was. We were lead to believe that MySQL replication at the time (this is 5 years ago) was in ‘milliseconds’ so we thought we were okay dealing with the very large number of updates that would happen to the master, and then being replicated to the 7 to 8 application servers we had running at the time.

That was until we found out that replication is slow, and some machines were up to 30 minutes behind on processing the replication requests. Holy shit.

The solution was to decide what requests could be done later, and creating a queuing system for processing those delayed requests. Apparently this same system is in place today, despite the current software architect’s desire for switching things to a clustering or sharding scenario for the data. Since the site is so dependent on people signing up for paid accounts, nothing is allowed to be done that can disrupt the site when deploying changes. Best of luck with that.

Article Tags >> ||

Upcoming Git Book

Travis Swicegood, who is now my DBFF (Django Best Friend Forever) is writing a book about git entitled Pragmaatic Version Control Using Git. Nicely done, Travis!

As someone who has started using git not too long ago, I completely agree with him that the market for such a book is wide open. Hurry up and get it done!

Article Tags >> ||
Want to advertise on this blog? Send email to chartjes@littlehart.net
GTcars Canadian Car Audio TurboDodge Audi Forum
Mustang Forum Dodge Intrepid Miata Turbo
GTscene Pontiac Bonneville