It's always been a goal of mine to post screencasts here on my blog, but for whatever reason I never ended up getting around to it. Today, that all changes as I have created two new screencasts. Of course, this space is already very well-covered by both Michael Trier and Brian Rosner, so hopefully this adds something new to the conversation.
Setting up a Django Development Environment
In this screencast I show how I typically set up my Django development environment. It goes through installing Django by checking out the latest development version and linking it to the correct places on your system. It also talks about how to install reusable applications. Finally, it covers how to update all of those projects and keep a toolbox of snippets for your personal use.
The simple pylink command that I use in the screencast is this:
#!/bin/bash
ln -s `pwd`/$1 `python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"`/$1
Please let me know in the comments if you have any other tips and tricks for setting up a development environment for Django.
Using Django-Pagination
Django-pagination is an application that I wrote and released a while ago, which I use all the time, but that hasn't really seen much attention. In this screencast, I show how to take an existing project with too much data on one page, and use django-pagination to quickly and easily paginate the items on the page. There is a bit more documentation for the project that's available in the project directory if you do a subversion checkout, and docstrings throughout the source code, if you're interested in how it works.
Keep in Mind
These are my very first screencasts, ever. I'm not entirely sure what I'm doing yet, and the only way I can improve is by your feedback. If you have any advice and/or criticisms of these screencasts, please don't keep your mouth shut--speak up, and let me know in the comments. Hopefully someone finds these useful, and thanks for watching!
Japan: What a Trip
There comes a time towards the end of most vacations where you've had a good time, but you're ready to head back home and sleep in your own bed and see your friends. No offense to any of my friends, but that time never came for me in Japan. I completely fell in love with Tokyo, and didn't want to come home.
I spent the vast majority of my time in Tokyo itself, but there was so much to do that there was never a dull moment. Whether it was being completely and utterly lost in the red light district of Shinjuku, playing pachinko in Ueno, or people watching in Shibuya, I was always up to something. Staying in hostels was probably the best choice that I could have made, because I met so many interesting and fun people! Who else would I have done karaoke with, had it not been for the people I met at the hostel?
Spending a night in a capsule hotel was really interesting, too. There's way more space in there than you would think! You can sit up, or just watch crazy people pretending to time travel on Japanese TV (the best parts are the advertisements, though). And Japanese people are stylish! Some of the styles are very over-the-top, and some are very conservative (never before have I seen so many suits and ties), but almost everyone is trying their hardest to go for style.
Good thing the German guys that I met had met Kazuya, or how would I have gotten in to that crazy hole-in-the-wall bar with only Japanese people and no tourists?
I could really go on endlessly about the trip, but needless to say, I'll have the memories that will last forever. If anyone is thinking of going to Japan, then stop thinking, just do it!
San Francisco
As of the 4th of July, I'm a resident of the state of California. I've got an awesome apartment on Bush street between Powell and Stockton--near Union Square where there are a lot of tourists. It's interesting because whenever I walk outside, I hear a whole variety of different languages and accents. It's really neat, although I suspect after a year its novelty will have worn off and then some.
It's also the first time that I've lived without any roommates. To me, this is refreshing and fun. It's nice to get together with friends whenever I want, but also to be able to relax and avoid all possible forms of human interaction when I feel so inclined. This is helped by the fact that I'm connected to the fastest internet connection that I've ever owned.
Also starting work at Mochi Media has been really good. There's a lot of new stuff to learn, though, so I'm not able to crank out as much code yet as I would like. Their primary web development environment is Pylons, which has a decidedly different worldview than Django. I definitely think that there are good things and bad things from both sides, and hopefully the good things can eventually be shared. I'll definitely revisit this once I've got more experience on the Pylons side.
Cheers to travelling around the globe, living independently, and learning new things! Because in a nutshell, that's what I've been doing.
Up next: A series of screencasts.
Djangodash, a two-day two-person sprint to create a project using Django, took place last weekend. To be honest, I wasn't expecting it to be much fun, but it ended up being an absolute blast!
Feedalizer.net
Before getting too far into this post mortem, I'm going to just get it out of the way and shamelessly promote the site that Tony and I created during the dash: feedalizer.net. The idea behind the site is that it's a feed aggregator, but people vote on the feeds. The higher the feed's score, the more likely items from that feed will bubble up to the top of the list. There's also the concept of a "channel", which only aggregates feeds for a specific area. For example, there's a Humor channel, a Django channel, and a Python channel. You can also subscribe to channels to create your own "station", which aggregates the content from the channels that you care about.
The idea came to me when a friend of mine asked me "I've never used a feed reader before, but I want to get started and subscribe to programming feeds. What are some good ones for me to subscribe to?" It took me about 30 minutes to cull through my feeds and produce a list of the best. But it shouldn't have taken me any time at all--there should have been a site out there to do this for him!
OK, enough shameless self-promotion.
The Dash
52 teams registered for the dash, so watching the commit activity at the turn of the clock was pretty crazy. Unfortunately, Tony was driving from 4 hours away and he hadn't arrived yet. When he did arrive, we both wanted to spend some time catching up and talking about non-Django things. So we didn't even get started until about 3:30AM. Getting started mainly consisted of frantically checking in 3rd party projects that we thought we would use, and talking about architecture, and writing a few cron jobs. Not much code got written that night (morning?), since we still had a lot of planning to do.
The next day, all of a sudden our commits weren't working! We went to the website to see what was going on, and the website wasn't responding to our requests. Something was definitely going on, and it was slowing down our progress significantly. We tried working on our own separate parts of the project, but at this early stage there was simply too much overlap. We found out later in the night that there were problems at Webfaction's data warehouse,`The Planet`_, where a transformer quite literally exploded.
This severely slowed us down, because we ended up having to switch to git, and then once we got everything into our git repository, we had tons of merge conflicts. We got an e-mail saying that the due date would be postponed, so we decided to take the afternoon and night off to do other things.
The next day we did the brunt of our work. I had the task of designing the frontend, so I opened up my trusty text editor and hammered out the worst-looking CSS file you'll ever see in your life, producing some of the worst-looking pages you'll ever see in your life. This changed over the course of the day, but not by much as you'll see if you visit the site. This same day, Tony was working on some of the harder queries etc.
The final day (the deadline had been extended, remember) was all about integration. There was nothing really notable about this, but it took all day to get everything working properly together. I ended up writing a bunch of Javascript to make the client experience more enjoyable, and Tony had the chance to debug his views now that I had templates and we had sample data. It was a crunch to make the deadline, but we tried to do the little important extra details like write an "about" page, a README file, etc.
Conclusion
Whether we win or lose, and despite the technical difficulties that The Planet suffered, I had a blast doing the competition. I think that our idea is novel, and Tony and I got to work on something once more post-graduation. (Nothing like a programming competition to bring people together, I always say.) In fact, we'll probably continue to work on it for the months to come, especially in upgrading its graphics. It's going to be really awesome to see what everyone else produced this year. I encourage anyone who thought about participating this year, or anyone who even considers it as a possibility, to sign up and just do it next year!
Firstly, my apologies to any technical readers of this blog, as this post is mostly personal.
Iowa State University
For the past four years, I have attended Iowa State University, pursuing a Bachelors of Science in Computer Science. Finally last month, that process was over. Degree in hand, I can't help but think back about all of the truly great memories, experiences, and new friends that were made possible by going to Iowa State. Not only was the extracurricular experience great, but at the same time, I feel like the education was top-notch as well. For anyone that knocks state schools, tell them to try to keep up in my Essentials of Programming Languages class with Professor Lumpe.
Tokyo, Japan
I recognize that this point in my life is the last time (for a while, at least) that I'll be able to do something crazy and go to a foreign country for two weeks. The logical choice would have been to go to France, since I minored in French and know some people who live there. That's why I didn't do that. Instead, I'm doing something that I've always wanted to do, but never have: go to Japan.
I know there are some crazy things going on all the time in Japan, and honestly that's what's so exciting to me. It's a completely different culture from our own and up until now I've only had glimpses into that culture. I'll have a ton more to say about this after the trip is done, along with a dizzying amount of pictures, so stay tuned for that if you're at all interested.
Mochi Media
I have accepted a position at Mochi Media, where I'll be working with some ridiculously smart and talented people. Not only that, but I get to use my favorite technologies, like Python and Erlang. In the case of Erlang, Mochi Media is actively pioneering its use in the web space with its open source project mochiweb (most recently noted for being a key component in Facebook's chat feature). Contributing to open source, using languages that I like, pioneering the use of established technology in new ways, working with smart people, and having a great business model to boot. All of that combined makes me one hell of an excited guy!
More practically, what this means is that I'm moving to San Francisco! Hopefully there'll be more Pythonistas there than there was in Iowa. Whether there are or not, one thing is certain: there'll be a lot more to do.
I'm a bit bored right now, and it's a feeling I'm going to savor, because starting next week and into the foreseeable future, boredom is not a feeling I'll be having much at all.
Recently I've been using a lot of FriendFeed lately, and found it a bit annoying to expand comments one-by-one, so I wrote a quick bookmarklet to automatically expand all comments out.
Drag this bookmarklet to your bookmarks toolbar to get in on the action:
By the way, feel free to follow me on FriendFeed as well to see my various online activities. I'm in the habit of following people who follow me.
All Content

