It’s hard to believe that a little over two years ago, the first Barcamp was held – being my first foray into the DC tech community. It was a life-changing experience, as it’s where I met all the people I work with on a daily basis, inspire me, and genuinely consider my friends.
I’ll be speaking/organizing on two main topics:
Freelancing
After years of moonlighting before freelancing full time for the past year under the skeevisArts brand, I’ve learned a lot, and failed a lot. Knowing that there are many others in the same position as me, as well as even more who hope to go out on their own, I figured it would be beneficial to hold an open discussion on lessons learned, and to exchange ideas and discuss issues.
Android Development
While my bread-and-butter work is web development, I’m moving into mobile application development, under the Droidee moniker. Having developed two Android applications (likely releasing in the next two weeks), I’m partnering with Gyuri to do a basic introduction to Android, and a walk through of some code.
But first things first… in order to make it even easier for myself and for other developers, I built out a ruby gem that interacts with the Open311 and Geolocation API. I know I’m helping out my competition, but it’s all for the better good, right? Here you go:
Download and install it, and you should be set. It’s fully tested using rspec, so just open up the spec folder and you’ll be able to exavtly how it works. I’ll eventually add this to rubyforge, but for now you can take the extra step
DC OCTO has a ways to go. The API is supposed to launch on July 1st, but they certainly have a lot more to do with the API, both in terms of development and documentation. The Geolocation API seems to be pretty solid. The 311 API has unimplemented (stubbed) functions, spelling mistakes in variable names, no error handling, and no documentation (the “submit” function, the most important, is a total mystery). It’s too bad that people will find this when they head to the CodeJam over the weekend, but oh well.
Last weekend, a few dozen developers gathered together at Viget’s beautiful offices in Reston to… talk nerdy. Out of all the conferences I’ve been to, it was one of the best. It was directly honed on developers, and all talks were targeted as such. That meant no talks about marketing, gov 2.0, branding, public relations, blogging, twitter, or anything else social media/PR, etc. as *camps and other conferences I’ve attended recently have moved towards (I’m not counting language-specific conferences).
Jay Virdy, CEO of Summize, kept repeating Build something simple, let the market pull you in – Brad Burnham . As soon as he accepted that, Summize turned itself into a simple Twitter search engine, and took off.
HTML5 will likely have standards for push notifications (a la Google Wave). Comet is a current implementation. No more of this polling shit.
Ruby 1.9 is a huge step ahead, but will pose problems for legacy apps.
Impromptu, Lily, PureData are pretty cool tools for manipulating sound/visuals, even by reading a website. Much cooler if you want to spring for a Monome
Every PHP Web Developer, or any other kind of web developer, has, at one point, butted heads with ImageMagick, or its inferior nemesis, GD. We’ve tussled with setup and installation, debugged scripts, and stolen code, but rarely do we look to it for anything beyond generating a thumbnail or resizing an image.
Armed with nothing more than the native manual, I started experimenting with its abilities. What could I make with it? I thought it would be cool to start out with making a script to generate your own version of the iconic RUN DMC logo, as I’ve seen many variations.
Like so many things from my college experience, I never realized how amazing this was until years later.
Rather than taking a “usual” internship at a government agency or consulting company for the summer, I instead chose to stay on campus for the summer, and in addition to a lot of relaxing, worked at two amazing labs at UMD. One was the Center for Satellite and Hybrid Communication Networks, where I got to play around with awesome gadgets like motion tracking cameras and sensor networks. The other position, which I kept throughout the following school year, was as a researcher in the Human Computer Interaction Lab. I was tasked with working on an Java interface (using Swing) for the MALACH project, which, in a nutshell, was to allow people to browse and view a massive amount of transcripts of recordings of Holocaust victims. The recordings originated from the Shoah foundation, whose mission is to record and store all memories of survivors of the Holocaust (side note: my grandmother volunteered as one of the interviewers). So I spent the summer working under Ryen White, who now works at Microsoft Research.
As we were presented with developing an entirely new interface, we had a number of challenges. We came up with some pretty cool solutions. One thing I came up with was an interface element nicknamed PygmyBrowse. PygmyBrowse is a rather simple and easy method of bi-directional navigation of infinitely complex trees in a compact environment. I thought nothing of it at the time, but the professors around me disagreed, and suggested I pursue it further. After spending a good chunk of the semester holding user trials (in between running one of the largest student groups on campus, being actively involved in my computer, and oh yeah… double major), we ended up with an academic paper, with yours truly as the primary author. Which ended up getting accepted to a major human-computer interaction conference. Whiiich I didn’t attend, because there was one or another extra-curricular event going on (kicking myself 3 years later).
Being a web designer and developer, the CMS I choose for a client is a huge issue. I wrote a little bit about it before. However, sometimes you just can’t find a CMS that will work for that particular project, and, barring changing the architecture of the site to fit in the mold, you’re left writing your own system for displaying and updating content, which, sadly, I’ve had to do a number of times.
Firerift is a Template Independent CMS. That means you design and/or
develop how you want, and then plug Firerift into the portions of the
site where you want it to manage that content. Firerift will scour your
code looking for any Firerift Code Snippets and convert them into the
corresponding function.
Really looking forward to this, as should any frustrated web developer.
In order to better establish a web presence for myself, I am rebuilding my own website. I have big ideas for this, displaying my writings, past and present, my interests, my friends, my work, and also as an living technical showcase for my abilities.
One feature I wanted to have is a display of whatever I am up to in the online world. I wanted, to start out with, aggregate my Flickr, Tumblr, blog, Twitter, and Facebook accounts. In the future, I may add more.
I played with a few different tools for this to run off of, including FriendFeed. In the end, I decided on building my own with Yahoo! Pipes, both as an exercise, and in order to closely control how it works. Yahoo Pipes can be powerful, but at the same time cumbersome to work with.
It took a lot of tinkering around, but I finally got it to work
Out of desire to learn something new, and in part due to specific needs on upcoming client engagements, I sat down and plowed my way through Expression Engine. After about five or six hours of slugging through Michael Boyink’s amazing tutorial, I’m feelin’ a bit like Neo (youtube video below)
Having started out hacking out sites in phpNuke way back in the day, then b2 (the predecessor to Wordpress, that’s how old school I am), and moving to mainly Wordpress and a little bit of Drupal, not to mention numerous homebrewed solutions for client sites, I had a laundry list of things I was looking for.
Here’s what is awesome.
Custom Field Groups – When you are building a site, most pages have more than one block of text. It’ll have some content boxes on the side, intro text, images, etc. While, say, Wordpress, is only really is suitable for having a title and a main body of text, in EE you can build sets of content, and assign them to specific template pages. This makes it ridiculously easy to build out and administer complex pages.
Separation of content and display. ExpressionEngine handles organization and entry of the content. The template, when called, pulls any content it requires from the database. Most content management systems work vice versa, where templates are called to display specific pieces of content.
PHP-less templates. I had gotten used to telling my web designers to avoid touching anything between <? and ?> . EE uses template tags that resemble Smarty. And, in my opinion, is easier for a non-developer to understand.
Minimal need for plug-ins. Because it has so much built in, there isn’t that much need for them.
There are a ton of other suprises – you’ll really only learn if you work your way through the tutorial.
But:
It’s not free. You can download a free version to learn off of, but if you want it for commercial use, it’s $250 bucks. It seems pricey, but for what you are getting in the short and long run, it’s a drop in the bucket.
Building a site in EE relies heavily on wiring things up in the control panel (the tutorial spends 75% of the time in there), which can be confusing and often mind-numbing.
Because of that, it’s hard to rely directly develop the design and the site together. The design should be set and all CSS/HTML completed before you even think about firing this up.
While, yes, it can run blogs, it was built as a general-purpose CMS. If your site is primarily a blog, I would still recommend using Wordpress or MovableType.
Looking to start out in ExpressionEngine? Download the core edition, and then pop over to Boyink’s tutorial. It’s a whopping 17 chapters, with a lot of repetition, but it is worth it to really lock down the cycle of building templates, weblogs, field groups, etc.