I haven't done web work in quite a while, but after moving to San Francisco, the time seemed right to give it a try. My building came with great networking from Web-pass, Inc. and they had no problem with me running my own server over their connection. I set up our Mac mini as an email and web server and used DynDNS to get everything pointing in our direction.
The goals for the site were pretty straight forward. I wanted blogging and a way to showcase some of the work I have done as a developer, along with searching, archiving, and a contact form. It should have a secure administrative interface and be as flexible as possible. A lot of frameworks exist for doing complex websites, but I settled on using Django mostly because there is a large and growing community of developers and the design philosophy behind it is inline with my own. Also, there were lots of examples and tutorials available to help me out.
Django works by defining models for the items you want to show, and then creating views and templates to transform those models into web pages. It creates a administrative interface to manage those models, so once everything is set up adding content is easy. The views and template language let you keep everything very flexible without a lot of code re-use. Templates use inheritance so creating a general look and feel is simple, but as the need arises you can add specific elements, and the flexibility of the system encourages just giving things a try.
One very helpful tutorial was located at WebMonkey. They covered the basics of installing django and setting up a blog, but they also covered more advanced techniques like rss feeds and creating a tumblelog, which I use for the home page. For my portfolio, I came across Wilson Miner's site where he wrote up a guide for using django to showcase websites he had designed. Also, a lot of design ideas as well as some of the cool Web 2.0 features I got from Faruk Ates. There are a lot of really incredible sites out there and people willing to share what they have learned, so hopefully I will be able to give back as well very soon. It took a while to get everything working the way I wanted, but I am very pleased with how all the parts have come together.
My first post! I've been working on putting this site together for a couple of weeks with only a few bumps along the way. The biggest was just having the time to work on it as I can no longer code into the wee hours of the night. I get why my father used to go to bed every night at 10 o'clock - being a dad can be exhausting! But with a few hours here and there, mostly while my daughter was napping, I was able to get things working.
Now that I have the site up, I am going to start adding projects to my portfolio. I've looked back at some of the early ones I did as a consultant and I can see a real difference with those that came after I was brought in house. As a consultant, I had to get things done quick and dirty with constantly shifting specs. Once I was hired full time, I could get a feel for the environment and make a argument for getting our infrastructure in order.
It is pretty cool to see how things build on each other, starting with writing a tool to convert from QuickMail to Address Book so many years ago all the way to maintaining an up to date Office List and showing office locations, plus everything in between. That was a ton of work! But getting things in order allowed me to take on even greater challenges and it is rewarding to hear our users like what we have done.
When I add a project to the site, I am going to mark the date for the post the same as the day I released the 1.0 version. This seems like a pretty reasonable way to show my projects on some sort of timeline. However, I will be using screenshots and describing the features of the most recent versions. In the future, I will probably make a post for each new version, but we will see.
We use Cisco IP phones which respond to xml commands, including one to initiate a dial, so I created Dial to better integrate the phones with our daily work flow. Bill back is a tough area, mostly because of users not taking the time to enter in the proper information. While our phone system had the capacity to do bill back, no one ever took the time to enter in a long string of digits in the proper format in order to charge a call to a client. Dial makes this process easy. It remembers the most recently used matter numbers and associates the last matter number used when dialing a phone number to automatically populate the matter number field. When you dial, it takes care of everything for you. Additionally, it maintains a call log so an attorney can review what calls they made recently if they need help accounting for their hours.
All names and personal info in the above images have been changed to protect the innocent
Dial works with the Address Book to show who's number is being dialed. As you put in a number, it searches for a match and if it finds one, it will show their picture and job information. Speed dial numbers let you keep numbers you need all the time handy and can be dialed quickly with just a double click. Adding a speed dial number is handled by dragging and dropping vCards onto Dial. Phone numbers can be entered directly or they can come in from any application that uses Services. So, if there is a phone number on a web page, you can just select it and using Services it will automatically launch Dial and enter it into the phone number field. This also works from other applications like Address Book, iCal, TextEdit, iChat, Mail, etc.