The last 12 months have brought huge opportunities and complex challenges to the Technology team here at Odopod. We have produced some amazing work and our development services seem to be more in demand than ever. Staffing to meet this demand is one of my biggest challenges. I spend roughly 25% of my time recruiting developers with the necessary skills, work habits and personality to match our culture. The competition is fierce for developers in this job market. What's more, we insist on some unique qualities in our programmers that add to the recruitment challenge.
I don't know if every Director of Technology thinks their developers are special, but I certainly do. Very few resumes make it past our talent scout and into to my inbox. Fewer still are invited to interview. This isn't because we're looking for particular schooling or insist that candidates have experience working with big name clients or companies. However, we look for candidates with qualities that you might not associate with developers. There isn't an exact formula, but here is a bit more about these qualities beyond technical aptitude that exemplify the typical Odopod developer.
More than anything, I look for developers who are passionate about technology and the work they do. For these folks, technology was a hobby long before it became a profession. They are voracious learners who tap the online community for information on tools and methodologies. They follow thought-leaders on Twitter, read blogs, and spend time looking at relevant websites to stay in touch with the community. They attend conferences, take classes, and usually have a personal project happening on the side. They share these learnings with other developers and the rest of the company, contributing insights from their experiences and code they think others can use.
In our work related to Connected Objects and the Internet of Things, we've built a few different devices capable of reading Near Field Communication (NFC) tags.
NFC is a Radio Frequency Identification (RFID) technology that allows two devices to exchange messages while in extremely close proximity.
We're developing new service experiences based on the ability to add inexpensive NFC tags to physical objects and recognize them when placed on or next to connected objects that are embedded with NFC readers.
For this, we've used a few different NFC readers that are compatible with Arduino micro-controllers.
Since all three boards use the PN532 NFC chip, they respond to the same command set and can read all common NFC tag formats. Depending on the application, each of these readers has it's advantage. For example, the Adafruit breakout board runs at 3.3v, making it ideal for use with the Arduino FIO.
The libraries available for each reader are largely similar, but not completely interchangeable. Additionally, the libraries don't easily support all the features we need, especially in regards encoding and decoding NDEF messages.
To simplify the process of switching between readers and tag formats, we created a single library that supports these three boards, I2C and SPI communication, and a variety of NDEF message formats written to Mifare Classic and Ultralight tags.
We've posted the library on Github in hopes that others will find it useful and help add features to it. If you are an Arduino developer working with NFC, have a look and let us know what you think in the comments below.
After three consecutive years in Portland OR, the conference was held for the first time on the East coast, in Washington DC. This new location attracted a new crowd and it was great to both meet old friends and see many new faces. The attendance reached its highest number yet, with 420 Djangonauts, which demonstrates how popular Django has become throughout the continent.
I was fortunate to have a talk selected as part of the official program. The topic of my talk was on Vagrant, a free open-source tool facilitating the manipulation of virtualized environments, and how it may benefit the development of Django applications. This talk was aimed at Django developers of all levels who were interested in getting an overview of the great possibilities Vagrant offers to support teamwork and quality assurance.
The conference program was rich and diverse, covering a wide range of topics from the integration with database backends like PostgreSQL and Redis, to the building of real time applications, or the integration with mobile client frontends.
Automated testing, a topic that I'm quite passionate about, was well represented in particular with excellent talks by David Cramer and Erik Rose. It was also really interesting to see several talks about design, which is extremely relevant to the work that we do at Odopod — I recommend in particular viewing Julia Elman's talk, Is Django for Designers?. All the talks were video-recorded and published online so I encourage anyone interested in Django and Python to check them out!
Like at Pycon earlier this year, I also participated in sprints for two days. This was an opportunity for people to gather and make code or design contributions either to the Django project itself or to other open-source applications from the Django ecosystem. Personally I worked on the djangocore-box, a Vagrant virtual machine that I created to facilitate the execution of the Django core test suite. I also helped other people get started with their first contributions to the Django codebase and I reviewed and committed several patches.
DjangoCon was an absolute blast. It was really exciting and inspiring to meet so many incredibly smart people. Next year it will be in Chicago and I already can't wait be there again!
A great thing about working at a digital agency like Odopod is the variety of projects that come our way. With new types of projects come exciting opportunities to explore new tools and workflows. For example, mobile projects continue to evolve and their unique requirements are driving the evolution of our internal process in interesting ways. More than ever, our projects demand a high collaboration between disciplines and a nimble, iterative approach. For this, we love using prototypes to bridge the gap between UX design (usually in the form of wireframes) and having a functioning application.
At Odopod we’ve always been big proponents of prototyping as an intrinsic part of the work we do. We continue to look for ways to make prototyping part of the fabric of our process and this seems especially helpful when designing mobile applications. It’s a fertile territory for innovation but it’s also a relatively new field which means less experience to refer to and infer from.
Additionally, our relationship with mobile touchscreen devices is very intimate. There’s something visceral about how it feels to directly interact with them. It’s challenging to visualize these experiences on paper. Touch input is still relatively new as are the fast-evolving mobile form factors. The quicker you can get something in your hands to react to and iterate on, the better the end result will be.
The Internet of Things is comprised of networked objects with sensors and actuators. These objects observe their environment and share the data they collect with each other, Internet servers and people. This data is analyzed and the results are used to make decisions and affect change. Change may come from a connected object making adjustments in the environment, or it may come after the collected information is analyzed further by a person.
Odopod has several clients involved in the Internet of Things space and we've worked with them in a variety of ways including brand and marketing work, product and service development and connected object prototyping.
We recently lead a workshop with one of these clients, exploring ways that their household products could benefit from being connected to the Internet. Several of their products are already connected to each other and the Internet, we helped them uncover new opportunities to push these products beyond pure utility and to find ways to do and say something new.
To get things started we reviewed four themes that come up most often in Odopod's work around the Internet of Things.
1. The quantified self.
At this year’s Planningness Conference, Guthrie (Director of Brand and Strategy at Odopod) and I lead a session on Connected Personal Objects, where we explored how the Internet of Things can drive a virtuous cycle of learning and change based on the collection and analysis of data.
Tracking performance as a guide for change is not a new idea. Companies use data to improve business processes as well as product marketing. Athletes and medical professionals collect biometric data to optimize performance and patient treatment. What's more, an increasing number of non-professionals are collecting information about themselves, looking for patterns in order to positively impact their lives. In all cases, the mechanisms employed range from pen and paper to high-tech devices coupled with data mining.
There is no question that the Internet of Things makes it easier and easier for us to learn from our actions. Many products provide customers with direct access to the information from which they can draw their own conclusions. Increasingly, these products will be bundled with services to perform more detailed analysis and deliver simple, actionable recommendations.
For example, most services that track athletic performance such as running collect data and report extensive information about current and past runs. Future services will take things further. Based on deeper analysis, these services will be able to set optimal diet and workout plans as well as provide real-time coaching based on your individual training goals and performance history.
I was fortunate to be able to attend the Eyeo Festival in Minneapolis, Minnesota. The conference, now in its second year, bills itself as the intersection of art, interaction and information.
While my role at Odopod is that of a developer, this is not a developer's conference. It's not about libraries, frameworks or programming languages. Here, data is king. I know that the term has many meanings and may be a little vague or scary to some people. That's what makes Eyeo such a unique event. This is a conference exploring how data of all kinds can inspire design and how design, in turn, can shape data and give it meaning. It can be personal data, it can be government data, it can be weather data, it can be random data - it can be anything! Founded on this unique premise, Eyeo has quickly become the event of the year for people who make their living by or are interested in data visualization. There were also talks that touched on topics including art, design, creative coding, and human-computer interaction.
Python is one of the main programming languages that we use at Odopod to build back-end systems for our web apps and websites. So I recently was really excited to attend Pycon, the annual Python conference. And I had a blast.
Photo credit: Orion Auld
This year’s Pycon was the largest yet. There were 2,500 attendees (twice as many as last year), 133 official sponsors and 127 talks divided in 5 parallel tracks. The fact that the conference took place in Santa Clara, right in the middle of the Silicon Valley, probably was a determining factor for the exceptionally large attendance, yet still these numbers undeniably demonstrate the increasing popularity of Python in the tech world.
It was impossible to physically attend all the talks that I was interested in. Fortunately all were video-recorded and published online so I could catch up later after the conference. In this post I’m going to present a short recap of the most notables things that I’ve learned and enjoyed.
Over the past twelve months, Odopod has worked with a few Kinect prototypes using open source drivers in conjunction with Processing and Flash.
The most robust examples have leveraged the full body (aka skeleton) tracking provided by the OpenNI and Prime Sense NITE libraries. Unfortunately, this level of tracking requires people to pose like they're about to get a pat down from airport security. Even if you just want to track a single hand, it requires a socially awkward wave to the camera.
In February, Microsoft released the Windows version of the Kinect hardware as well as its Kinect for Windows SDK and license. The hardware itself is only nominally different, supporting experiences that are closer than possible with the XBOX hardware. The software, however enables full skeleton tracking without the need to strike any particular pose. In fact the recognition is instantaneous.
If you're familiar with working on large template driven CMS websites, you might occasionally find yourself looking for some light weight alternatives. Perhaps you have a project that doesn't have budget for backend development but which would benefit from a powerful design template system. Or maybe you have the technical requirement for your site to use static HTML files instead of a dynamic server application. Or for whatever reason you decide you just don't need a web-based CMS admin tool.
Meet the static website generator. This is a set of tools that can compile and publish a fully static website from templates and content files. When you want to make an update, you change the content in a series of simple text files, run a publish script that generates a new version of the full site, and upload the new files to your server.
There's a whole slew of these available for various coding environments and languages. We've reviewed and worked with a few of the ruby-based ones (namely Jekyll & Bonsai). We used Jekyll for the Google for Veterans and Families project as a way to easily apply a few consistent design templates to 50 pages of content for a quick turn around. I also really enjoyed working with Bonsai on my personal site to create a very flexible page hierarchy and navigation that can be altered just by re-arranging or re-naming folders. Jekyll has a lot of community support and is intended to be more of a blogging platform than a free-form page-based website.
By now, I expect you know that the number of people using smart-phones, tablets and other devices to access the web is increasing and is expected to one day surpass the number of people using laptop and desktop computers to get online.
To address this shift away from desktop dominance, a contemporary web strategy must:
Contemporary web development techniques make it possible to deliver on these points with a single front-end code base that adjusts to the capabilities of devices rather than building multiple sites different categories of devices (e.g. Mobile and Desktop). A single site is more cost effective to build and maintain and is also more flexible, able to accommodate new devices that don't fall cleanly into existing categories.