I work at Autodesk with a team that includes urban planners, architects, and software engineers. Our goal is to make tools for people in regional and urban planning. The tools include a desktop geographic data viewer, statistical modeling of real estate markets, data pipelines, and much more.
The users and collaborators on our data projects are mostly scientists, which sets a high bar for library usability, documentation, and technical communication. With only me doing the bulk of coding and operations things can often take time, but my colleagues are committed to having well tested, well documented code that will work for a long time. (And I wouldn’t have it any other way.)
Day-to-day my brain power goes to things like:
- Asking my colleagues questions about their needs and how they do things
- Thinking about how to make a sensible API or UI
- Thinking about how to actually solve a problem
- Writing tests
- Writing documentation
- Writing code
- Figuring out how to work with a given data source (researching libraries and learning the data format)
- Reviewing code and projects
- Training colleagues in Python and software engineering practices
- Learning new stuff to apply to a task
We’ve got a lot of interesting work coming up, including building several automated data processing pipelines and online services. As always we’ll be working together as a team of diverse expertise to create usable, useful software that has real-world applications and meaningful impact on the citizens of cities around the world.
Earlier this year I started using If This Then That (IFTTT), a web service that allows you to set up recipes based on triggers and actions. Triggers include things like date and time, making a new blog post, or sending an email to IFTTT. Actions include things like making a new Evernote note, sending an SMS to yourself, and posting to social networks. You can easily browser the whole list of IFTTT channels. For a nerd like me who likes to automate and archive, IFTTT is a dream come true.
Archiving with IFTTT
I use IFTTT primarily as an archiving tool. I deal with many different services all over the internet and for those services that have IFTTT triggers I’ve set up recipes to help me record things to a common, easily searchable place. For now that place is mostly Evernote, but I also send things to Google Docs. (Evernote because it is easily searchable, Google Docs because it’s easily exportable.) For example, when I post a link on Facebook that link gets saved to Evernote and a Google Docs spreadsheet. When I favorite a post on App.net the contents of that post get archived. When I star items in Google Reader a link to that article gets archived. I can also send an email to IFTTT and have that email saved to Evernote to help me archive random links or thoughts. Read More »
A recent Udacity blog post asks its readers to describe what motivates them to complete online courses. I’ve completed four of these courses now so I should be in a good position to describe my motivation.
I take these courses for two reasons: to hopefully make myself a better job candidate and to learn cool new stuff from really experienced people.
I don’t have a formal computer science education so Stanford’s AI Class and Udacity’s How to Program a Robotic Car were good (and free) opportunities to learn about topics like search, planning, and filters. I expanded my vocabulary with things like A-star and breadth first search, Kalman and particle filters, and dynamic programming. How to Program a Robotic Car even had us writing programs using these topics, which I found to be a big help in learning them.
Another area I don’t have much experience with is web programming so I took Udacity’s Web Application Engineering with Steve Huffman. It was a fun and practical course. I learned about HTTP requests and responses, cookies, tracking, securely storing passwords, databases, cacheing, and more. I made a functioning web application with Google App Engine.
I didn’t have any trouble staying motivated to finish the courses. I found the material interesting enough that I was always looking forward to the next class. I love the digital certificate I get at the end. (I put them on Dropbox so I can link to them from my résumé.) One advantage I had in the Udacity courses is that I’m already a Python programmer so I could focus entirely on the content of the courses without the language getting in the way. (The instructors of How to Program a Robotic Car went out of their way to make their code as un-Pythonic as possible, though. I think to make it a bit less intimidating to people coming from other languages.)
The Udacity folks have been experimenting with classes with and without deadlines. The current MO seems to be to have deadlines the first time a course is offered and then leave the same material up and offer the class without deadlines thereafter. (The final is still scheduled with a deadline.) I think my wife really likes the deadlines and schedules because it means I can only spend so much time on a class in one week and I can point to a definite point in the future when the class will be done. Left to my own devices I would probably try to finish these courses in one short burst. I also feel like the deadlines prevent me from indefinitely putting the courses off.
Whether these courses will help me the next time I go looking for a job remains to be seen. Udacity is starting to open up info on its students to companies looking to hire but I doubt I will stand out from the other computing industry professionals taking these courses (and judging from the forums there seem to be a lot of them). I can say, though, that I’ve learned a lot and enjoyed doing it. Next up: Software Testing: How to Make Software Fail.