Hackers and Depression: Inform Yourselves About CBT

My wife is a clinical psychologist. Over the past week we’ve had long discussions about Cognitive Behavioral Therapy (CBT), which is a certain type of therapy that is focused on using evidence-based methods (read: there have been studies showing effectiveness), with a particular emphasis on rational reasoning and pragmatic ways to tackle issues like depression and anxiety. The overlap with programming in terms of the way of thinking is astounding.

As a community, we rarely talk about mental illness. It takes high profile cases like Aaron Swartz’s suicide to get us to even bring up the subject, but more than likely we’ll revert back to our isolation and pretend like depression isn’t a serious issue in the tech world. We need to face depression, not sweep it under the rug.

If you or someone you care about is dealing with depression, please take a look at CBT. This article is a joint effort between a programmer (me) and a psychologist (my wife). I bet it’s the first article about therapy you’ve seen that uses code snippets to illustrate points.

CBT is for Hackers:

The tragedy to me is this: one of the most effective and scientifically-backed treatments for depression appears to be a stunning fit for hackers, and yet few people know about it. It’s called Cognitive Behavioral Therapy (CBT), and it has some of its origins in computer science.

Born out of the cognitive revolution of the 1950s, a key idea within cognitive psychology is that by studying successful functions in computer science, it becomes possible to make testable inferences about human psychological processes. Cognitive behavioral therapists mirror hackers in how they see the world and approach problems. They share the same core values: an emphasis on problem solving as efficiently and effectively as possible, using logic to debug a system, gathering data to test out what works and what doesn’t, and implementing transparent methods that others can understand and replicate as opposed to simply putting your faith in a “magic black box”. CBT and hackers are long lost kindred spirits, yearning to be reunited.

Read the full CBT is for Hackers article.


RIP Aaron Swartz

I’m in academic publishing. My grandparents founded a publishing company. My father ran it for a decade. I sit on the board of directors. You could say academic publishing is in my blood.

Today I am nauseous. Aaron Swartz is dead. I don’t know whether or not he would be alive today if he wasn’t prosecuted so aggressively for “stealing” academic journal articles. But what I do know is that this is a dark day in our history. It is a stain on the entire academic publishing industry.

I fiercely believe that as academic publishers we make the world a better place. We do good. I also believe there is a place for publishers in the Internet age. We’re working hard to figure out how to navigate these times. But everyone involved in this industry should be ashamed today.

We lost a genius. We lost a rebel.

I’m proud to be in publishing. But today I am nauseous. Today I am deeply sad. Today I am ashamed.


Nate Beck’s Birthday Surprise at 360|Flex

Payback’s a Queen!

Nate got a special surprise in the middle of his session at 360|Flex. This should teach you a) don’t fuck with me and b) don’t do a presentation on your birthday.

Happy birthday Nate!

P.S. Apologies for the shaky camera work, there were plenty of other video cameras in the room recording (including the official tripod camera), so there will be a bunch of copies of this video up soon I assume.


What do you do with a giant head?

You make it vacuum your floor of course.

Inspired by this fantastic piece of work by Eric Testroete, my friend and I created my very own paper craft giant head (my buddy Todd did all the hard work of the 3D modeling and texturing). Of course, once you have such an amazing giant head, you need to figure out what the hell to do with it. And so boredom on a Friday night plus a few beers plus a giant head plus a roomba equals a magical vacuuming head!

A few more pictures of the head in action:

(*not my baby)

As I figure out more shenanigans to get into with my giant head I’m sure I’ll post more ridiculous photos and videos.


My 2010 change: I’m not a Flex Developer

This is the time of year when people are making their resolutions, mapping out their big life changes for the coming year, and thinking ahead about what the future holds. I’m not one for resolutions, never have been. But I like the idea of taking stock of where you stand and thinking about changes you want to make.

And so to usher in 2010 I’ve decided to make a change: I’m removing “Adobe Flex Developer” from the title of my blog. The title used to read Doug McCune – Adobe Flex Developer. It will now read: Doug McCune – Data Visualization Engineer. Oooh, aaah.

This isn’t a change in anything other than my own mentality, but for me it is indeed significant. I’ll still be using largely the same tools, meaning I’ll be writing Flex applications and using ActionScript as my main language. I’m not changing jobs. My day-to-day work on Monday will be the same as my day-to-day work yesterday. This is a change in how I see myself, and most importantly how I see myself growing in the future.

Flex has been good to me, it provided a platform on which I could launch a career. Defining myself as a Flex Developer worked well and gave me enough room to grow. Within the small Flex community there were challenges, constantly new things to learn, and more than enough to keep me intellectually interested. The technology itself held my focus and through that focus I grew as a software developer.

But now that “Flex Developer” designation is a box that’s constricting rather than enabling. I gave a talk at 360|Flex in Indianapolis in which I talked about burning out. I explained that I had hit a point with the technology where the simply wasn’t enough left to keep me excited and passionate. As a side note, I love the fact that right on the first page of Google results for my name is an image of me standing in front of a slide that says “FUCK FLEX” 🙂 How fitting.


The work I’ve been doing on SpatialKey has developed my interest in the field of data visualization, which is a field with an amazingly rich history and a field I see rising in importance in the years ahead. Most importantly, it’s a field I don’t know much about. There is so much to learn, from new tools and languages (R, map-reduce, Processing) to historical visualization techniques (cartography alone has such an amazing history) to modern data never before available (the human genome is on Amazon AWS). The field as it is right now gets me pumped up, and it’s a field that will experience explosive growth in the coming decade.

So starting in 2010 I won’t be identifying myself as a Flex developer. Flex will still be the tool I choose to use for my work, but it isn’t part of my identity like it used to be. I’m a data visualization engineer. And I’m excited.


UX is making me dumb

User Experience Design (or UX for short) has exploded on the software scene carrying a blazing torch of freedom and promising to guide us to the holy land. We are now dedicating time and resources specifically to user experience design. This emphasis on actually designing user interactions and the experience of our applications is a fantastic effort and I applaud all those that wave the UX flag and sing its praises. But I have one problem: UX is making me a worse software developer.

An unfortunate byproduct of the UX revolution is the misinformation that developers simply can’t design good experiences. We see article after article explaining what happens when you leave developers in charge of UX design. People laugh at how stupid developers can be, that they just don’t “get it” when it comes to designing things well. These articles should highlight the importance of explicit thought when designing interactions in applications, they should not strip developers of their confidence and creativity. And yet that’s exactly what I’ve noticed happening to me.

Let me relate a brief hypothetical example. On our software project I am the lead clientside developer. We have a UX Specialist (aka UX Guy) that is responsible for the design of wireframes and mockups that explain how the user navigates through the application. During the UX pass, our UX Guy listens to us (developers and business guys) explain what the problem is and what we think we want the software to do. Then UX Guy goes off and comes back with a set of wireframes for how the application will work. We discuss, bring up problems, send back the wireframes for further iteration. Repeat that process until everyone is satisfied with the wireframes, then move on to actual development of features.

But then during development I have found myself getting the following question from my manager: “Hey Doug, how come you can’t do Feature X in the app?” and I have found myself actually saying this (shudder): “Oh, I guess that wasn’t included in UX Guy’s wireframes, you should ask him.” That’s a bullshit response. I’m not a neutered incompetent mindless developer. If something doesn’t work or was forgotten, I can figure out how to fix it. That doesn’t mean throw the code in without thinking about design. That means pausing my code writing, thinking through the problem carefully, designing a solution that will be sleek and elegant, and then continuing on with development.

And yet in my mind I have the unconscious prejudice that I, as a developer, cannot be allowed to make “UX” decisions. Fuck that. We are all responsible for designing the experience of our software. We are all responsible for carefully thinking through every interaction. We are all responsible for making things beautiful, making things simple, making things elegant. And more than that, we are all capable.


Let’s go on a cruise! RIAdventure is going to be sweet

RIAdventure speaker badgeTom Ortega and John Wilker, who organize the kick ass 360|Flex conference, are teaming of with Joshua Cyr, who organized the first RIAdventure cruise. They’re planning a new event that will be a 7-day cruise that features a 2-day conference. The cruise, called RIAdventure 360, is going to leave from New Orleans and hit Mexico, Guatemala, and Belize.

The conference will take place December 6-13, 2009.

Only new, forward-looking content

The speakers are required to prepare new content specifically for RIAdventure 360. That means no canned presentations that you saw 5 times already at past MAX conferences. The content has to be fresh, it has to be cutting edge, and it has to be made specifically for this event. This requirement is awesome. I think that all presenters at all conferences should prepare fresh content every time. Sure, it’s more work, but if you can’t prepare fresh shit for a conference then you should present less often. But of course that’s just a personal opinion with no disrespect meant to anyone on the speaker circuit 🙂

The speakers for this fine event will be: Ted Patrick, Ryan Stewart, Faisal Abid, Samuel Rivello, and… me!

Focus on the future of RIA

This is a conference about the future, not the present. I’ve been formulating some ideas about what I’d like to present, but I haven’t quite solidified my plan yet (hell, if the conference is about the future I can’t plan it too far ahead, everything will change!). I’m currently playing with some ideas about the future of data visualization in application development. We’re reaching the point where data storage and bandwidth have reached levels capable of transmitting massive data sets, but we haven’t yet understood the implications this has for application developers. What if you had access to the location data of all the cell phones in the country? Or your entire genome? Or the record of every dollar ever spent by the government? The data is coming soon (much of it is here already), but if we, as RIA developers, don’t have the skills necessary to make sense of it all we’ll miss the opportunities to truly innovate and impact the world.

One big party!

And of course this is a cruise after all! We’re going to be partying it up like it’s nobody’s business. The conference also includes dinner discussions about our industry, which I think roughly translates to getting Ryan and Ted drunk enough to spill some Adobe secrets.

Get a free 360|Flex ticket!

And if all that wasn’t enough Tom and John are also throwing in a 2-for-1 deal. If you sign up for RIAdventure you also get a free ticket to the next 360|Flex in February. So if you want to have a hell of a good time while geeking out, go sign up for the RIAdventure cruise.


Slides and Code from my CFUnited Presentation: Using Open Source Flex and AS3 Projects

Here are the slides and the code samples I presented at CFUnited.

You can also download the PDF of the slides if you want.

Adobe Open Source Media Framework + FlexLingo

This demo uses Adobe’s OSMF project to synchronize subtitles with video. This was the demo that I used to create the Hitler Goes to CFUnited video I posted before. You can seek around the video and OSMF makes sure to show the right subtitles. Then you can click on the different flag icons in the demo to use the FlexLingo library to translate the subtitle text to other languages (using Google translation API).

View the source
This demo is made with Flex 4, so to use the source code you’ll need to be able to build a Flex 4 project.

Axiis + Tweetr

The second demo I showed used the Axiis framework to create a chart of trending Twitter topics that have associated pictures on TwitPic. Unfortunately there’s no crossdomain file in place for TwitPic images, so I can’t run a live version of this app (but running locally works fine).

View the source
This demo is also made with Flex 4, so to use the source code you’ll need to be able to build a Flex 4 project.

Safe Sexting

The third demo I showed was the “Safe Sexting” app that uses the Marilena library for facial detection and uses Pixel Bender to automatically blur out your face. This demo was also shown in 360|Flex Indianapolis. You can read a bit more about this demo in a previous post about the 360|Flex presentation.

Run the demo | View the source


Hitler Goes to CFUnited

Here’s the video that I showed at CFunited yesterday of Hitler (as a Flex developer) finding out he’s speaking at a ColdFusion conference.

A little context for those who didn’t attend my session: I was doing a demo of how to use the Adobe Open Source Media Framework that involved creating a Flex app that added subtitles to a video. The demo also showed tying in another open source library to automatically translate the subtitles into other languages (so the demo wasn’t just completely silly). Also, the demo I showed after this one was using Axiis for data visualization (hence the reference to the data viz demo in the video).

And for those of you who didn’t attend CFUnited, I assume this won’t be nearly as funny, but maybe you’ll still get a kick out of it.


Sneak Peek at content from my CFUnited Presentation this Friday

CFUnited speaker badgeThis Friday, August 14, I’ll be speaking at the CFUnited conference in Virginia. My session is titled Riding Coattails to the Top: Using Open Source Flex and ActionScript Projects (yeah, I know my session titles are getting too verbose) and will be all about using the thousands of open-source Flex projects that are out there in the community. I’ll be covering projects like Axiis, Adobe’s Open Source Media Framework, computer vision libraries, and a host of other cool projects that you should know about.

I’m preparing a handful of demo applications that I’ll be showing off as examples of integrating some of the coolest open-source work out there. The goal of each example is to show how to integrate at least two open source projects together to create a sweet application. The screenshots below are from a few of the apps that I’ve been working on, just to give a little taste. If you’re going to be attending CFUnited be sure to stop by my session on Friday at 1:30.



If you’re going to be at CFUnited be sure to flag me down and say hi or find me at the bar on Friday night!