Uncategorized

I’m a full-time employee with Universal Mind

Universal MindI have recently decided to make the move from an independent subcontractor to a full-time employee with Universal Mind. This is a big decision for me, one that I’ve been debating for a while now. I’ll try to explain my thinking a little. My official job title will be Principal Software Engineer, pretty pimp huh?

Building the team
We’re building a badass team to dominate the Flex world. Honestly, we’re bringing together the best developers, no question about it. One reason I decided to come on full time is so I can have more influence over that team. One of the best parts of my job is getting to work with some of the smartest guys I know. Guys who teach me new stuff every day on a project. The full time move gives me more pull to attract developers I want to work with. It shows I’m committed to what we’re doing and that there’s a reason to come work with us rather than some other Flex company. Now I really get to build this team. I have a say in who we hire. The biggest draw for me is the chance to work with rockstar developers, and at one point I thought maybe the best option was to branch out independently and get a kick-ass group of guys together to do our own thing. Then I started to realize that we already have a pretty badass team at UM, and in the last month we’ve brought on some ridiculous talent. So if I want to work with the best guys, we seem to be pulling them into UM already, so I might as well take that and run with it.

LaunchPADThe product and intellectual challenges
We’re going to be raising the bar for mapping applications. If you think the ability to plot points (oooh, different colors even!) on a Google map is the definition of awesome mapping technology then we’re going to blow you away. I’ve been working as a subcontractor for the past 8 months and a lot of my time has been spent on a project dubbed LaunchPAD. We’re taking mapping to a whole new level. I made a video a month ago showing off some of the stuff I’ve been working on. That’s just scratching the surface. You ain’t seen nothing yet.

One of my biggest concerns about taking a full time job is that the day to day work will get stale. The consulting world offers a unique opportunity to work for short periods on varied projects. Some people like this, some people don’t. I found that it was a great fit for me mentally. I got to go into a random company, learn about the cool stuff they’re doing, and help them out. Then a few weeks later I got to go to a completely new project in a completely different field and solve different problems. If you ever get bored with a project you only have to deal with it for a few weeks or months, then you get to leave the poor suckers who work full time on the project to deal with it for the rest of their lives while you go off and do something fun (I’m not actually speaking from experience here, I loved all my projects, but I always viewed this aspect as a big plus for consulting).

The full-time move with UM is a bit more than a simple shift in employment status. It also represents a shift from being a normal consultant (ie jumping project to project) to focusing primarily on the mapping stuff we’re doing. When I was first considering this my immediate concern was that I would get bored working on the same project for more than a few months. Now, after digging in deeper in the online mapping/GIS space I’ve become confident that there’s enough breadth within this area to hold my interest and keep me challenged. Figuring out how to leverage mapping for a police department is quite different than for a farming company, or a public health organization. There are a lot of fundamental technical challenges (like how to draw client-side heatmaps, or how to visualize millions of data points) that are common to many of the scenarios, but each implementation brings unique things you can’t anticipate. And the fact that my software is going to be used in a police department just makes me feel badass.

And I won’t be spending 100% of my time on the same project. I forget the proposed split, but it’s understood that I’ll have a certain number of weeks allocated to consulting for clients (gotta help UM pay the bills somehow…). So I’ll get to focus on mapping, but still jump on fun consulting projects throughout the year.

The lifestyle and commitment issues
The move to full time won’t actually have much of an effect on the lifestyle I’ve grown to love while being a subcontractor. I’ll still be working from home in San Francisco. I’ll still have flexibility in setting my daily schedule. One big difference is that I’m now expected to work a certain amount throughout the year. I have allocated vacation time, which is good because I get paid for doing nothing, but bad because I’m expected to not take much more than the time I get. As a subcontractor I could decide to take time off between projects for as long as I wanted. Sure, I wouldn’t get paid for these breaks, but I had the flexibility to take a few weeks off and travel, or just chill out.

One of the biggest mental hurdles for me was the shift in thinking about time. The time scale for a decision like this is in years, as opposed to weeks or months when I was a subcontractor. Before, I would go from one project to another, but often wouldn’t know what I would be doing next after my current project was over. I might have some time off, I might jump straight onto another project. There was a certain unknown aspect to that lifestyle that appealed to me. I don’t have kids, I don’t have a mortgage. I don’t need to know that I have work lined up for the next few years. I don’t like planning. For most things in my life I don’t plan beyond a month or two. I just bought my plane tickets to Europe for Christmas last week. I knew I was going for months. I just don’t like planning. I won’t try to psychoanalyze myself here (my girlfriend is a psychologist, so that’s her department), but I’ll just say that the shift in time scale was a difficult mental challenge for me.

So what does this mean?

  • It means Universal Mind is badass. We got some of the best Flex talent in the world, no question (and I’m not being an egotistical ass, I’m referring to everyone else working with UM). I won’t even tell you how ridiculous the Flex job market is right now. If you know Flex you can get a bazillion jobs anywhere. If you’re the best you can come work with us.
  • It means Flex mapping is going to explode. We’re going to make some crazy shit.
  • It means you can call me a sell-out for taking a full time job, but you have to do so to my face, not like a wuss in the comments.
  • It means the emails about new jobs or consulting gigs can stop coming in now… thanks. I’m spoken for.
Standard
Flex/Flash/Actionscript, Uncategorized

Some clips from my 360Flex presentation

Here are a few small video clips from my 360Flex presentation. The first is my favorite moment in the presentation when I get applause for saying “God damnit, make that protected.” 🙂 And the second clip is 7 minutes of the presentation where I talk about monkey patching (or “underriding”) the core Flex framework classes. I thought this was one of the cooler parts of the talk, so I decided to post the video of that section. You can get the full video (1 hour 20 minutes) of the presentation here.

The videos are licensed under Creative Commons license, so I’m supposed to do some attribution thing. They were filmed at the 360|Flex conference that was put on by John and Tom, video work done by Bryan Zug. You can get all the videos here. Cool?

Standard
Uncategorized

Facial hair as a measure of coding progress

Not sure if I’m the only programmer who does this, but I often use my facial hair as a visual indicator of how long I’ve been working on a project. I typically employ this technique on short projects with a lot to accomplish and little time to do it in. For example, yesterday I finished a project that was originally scheduled for about 3 full weeks. After week one we figured out that the deadline was 2 days before we thought, so we lost 2 days off the last 2 weeks, which is a fairly substantial portion of time on such a small timeframe (and don’t forget to add in labor day weekend festivities). So the shaving stopped (showering continued on a sporadic basis). Honestly, when you’re in a time crunch there simply aren’t enough seconds in the day to shave. And I like being able to look in the mirror and have a visual representation of the work I’ve been doing. An added benefit is the refreshing feeling that comes after work is done and the scruff is removed. Ahhhh, vacation time…

facial_hair.jpg

P.S. Yes, that’s just under two weeks of hair growth, my facial hair is pathetic, I can’t grow a real beard. You can stop making fun of me now.
P.P.S. I swear I’m going to get back to Flex related posts soon. There’s gonna be a bunch of flexlib updates coming. w00t

[UPDATE] Tink and Ben Stucki posted WAY better examples than my own. I had to share. If you’ve got anything better post a link in the comments.

Standard
Flex/Flash/Actionscript, Uncategorized

What I learned from my 360Flex session

360Flex logoI’ve been reflecting on how my session at 360|Flex went. Overall I was very happy, I really enjoyed the communal vibe we got going with the discussions. The session ended up being a conversation among developers. I started out giving a presentation with slides and all that jazz, but that quickly got sidetracked and we ended up just sort of shooting the shit and sharing different tips on custom component development. Awesome. That meant I was able to chill and let everyone else teach the session. It kept me interested, and I hope it did for everyone in the session too.

David Coletta took notes during my session (as he did for all the sessions he attended at 360Flex, friggin good work with the notes David). I should also point out that David contributed a lot to the discussion while he was note-taking, impressive! Dan from polygeek.com has some thoughts on the session as well. He wrote that the “session itself was sort of open source,” which I think is really cool that that’s how it turned out. There are a few more notes on the session from some guy named Dave. Apparently he overheard someone say “will there be notes posted from this meeting? This is really kind of scattering my thoughts.” I worry that it was a bit too incoherent, I definitely jumped from slides to code to pulling up random websites to discussion. I hope it was a good balance for people, but I could see how it might have been difficult to follow.

If you have any thoughts about what you liked about the session and what you didn’t, please email me and let me know, or leave comments.

The thing I liked the most about the session is that I learned a bunch of stuff. I don’t claim to know everything about developing custom components, a lot of the people in my session knew a ton more than me. Here’s a list of the things that I learned during the session:

  1. I suck at properly using commitProperties and invalidating properties correctly for optimal component performance. This was pretty hilarious during the session because before the session I was talking to Deepa and she asked if I was going to go over when to use commitProperties and using dirty flags for property validation and all that. I said that I don’t know how to do that, I end up not doing it in my code, so no, I wasn’t going to cover it. She was appalled. It was like I told her I’m naming my first child Silverlight. So then the funny part is that I’m up there at the podium and the very first question that was asked was Andy McIntosh asking “Doug, can you explain when to use commitProperties?” I almost died, it was hilarious. So I promptly responded that no, I don’t know a good explanation of the proper use of commitProperties, would Andy like to discuss how he does it? And then Andy and Deepa taught the session for a while while I took notes. Awesome.
  2. Monkey Patching is a sweet term. I called it “underriding” classes in the framework, not sure where I got that term, it’s certainly not a “correct” term, but I didn’t have anything better. So then Tony Hillerson pipes up and tells me that in other languages there’s a term called monkey patching that is used to describe pretty much the exact same thing. Cool, I had no idea.
  3. There’s a [Mixin] metadata tag. I had never even heard of this. I was going over using a static function to initialize default styles for your component and then Adam Flater yells out that you could use the [Mixin] metadata tag and that would allow you to have an init() method that would get called once for your class. So in the session I pulled up the blog post on Adam’s site and we went over the code straight off his blog. Cool.
  4. I sound like Tom Hanks with Tourette’s. I disagree with this one, but it’s hard for me to judge my own voice. Doug Schmidt seems pretty adamant about this, so it must be true.
  5. Other random stuff. When we were talking about styles vs properties on custom components Tony talked about using both styles and properties to define the same property, which meant that a developer could take their pick and use either the property or the style (ie they could do it all with CSS if they want, or all via direct properties in AS). Nice, hadn’t thought of doing that. We all bitched about not being able to reference static variables for our Event names in the Event metadata. Doesn’t seem like anyone’s found a solution to that one (same for defining possible enumerated values for properties in the Inspectable metadata tag). Someone else mentioned that when I was showing my custom event code I had forgotten to have a Event.clone() function to clone the custom event. Yup, my bad, good catch. That’s what I love about participatory audiences.

We ended up covering a lot more material with a lot more expert knowledge than I would ever have been able to provide on my own. I think maybe instead of a single presenter running a session we should think about doing more panel-like discussions on a specific topic. Get four or five badass Flex devs together, have one person in charge of making sure things don’t get completely off track, and then just let the discussion take over. Let everyone share the tips that they know. It might end up being the worst session ever, but I think it would turn out really well. What do you guys say… Deepa, Tony, Andy, Adam, David, you all in?

Standard
Uncategorized

Dear Adobe: Where’s my free hosted Flash Media Server?

logo_main_sl.gif Microsoft is giving me 4 gigs of free hosted streaming Silverlight video. You want to keep Flash video on top? Give me a free hosted FLV streaming service please.

And I don’t want to hear, hey, you can go and download the developer edition of Flash Media Server 2, install it on your own root server, and then you can have a whopping 10 concurrent users and you can’t use it in a production environment. Nope, screw that, I’ll take a free FLV streaming service please. And you better one up ’em and make it 10 gigs. You can send me an email when you’ve got it up and running and I’ll sign up. Thanks.

Standard
Uncategorized

didn’t have to install anything my ass

I just had a funny IM conversation with my friend who works at Googs, I sent him the link for the Flash globe from Poly9 that I just saw on MXNA. The description reads “Poly9 FreeEarth is a cross-browser, cross-platform 3D globe which does not require any download.” Turns out it wasn’t quite so easy 🙂

Doug McCune: http://freeearth.poly9.com/ eventually we’ll get google earth in flash

Google Employee: i don’t see anything when i go to the page

DM: ha. really? like nothing at all?

GE: doesn’t look like it’s ready for primetime. no earth

DM: well, so much for that then

GE: do you see anything?

DM: yeah, a spinning 3d earth

GE: using firefox? do you need flash 9?

DM: probably. it’s definitely flash player, probably 9

GE: hold on. geez, didn’t have to install anything my ass

DM: haha

GE: don’t have priveleges. hold on. god dammit

DM: haha, it’s not that cool, not worth the effort

GE: oh, i’m sure it’s not. i just want to show you how big a pain in the ass it is. i’ll tell you when i get it…

DM: I’m timing you. I’ll send the report to adobe

Google Employee disconnected

I assume this was a restart. He didn’t come back on IM though, so god knows. So while us Flash/Flex guys keep bragging about 80-90% flash player 9 penetration, we gotta still remember that we can’t claim that anything we make “does not require any download”.

Standard
Uncategorized

Blogging while boozing

I was out drinking last night in San Francisco with some people after the Ignite event at the Web 2.0 Expo. We’re in a bar, I’m about 8 beers in at that point (thank god for free beer at conferences), and prolific blogger, Ryan Stewart, is playing with his phone. Suddenly he looks up at everyone and says “Hey guys, WPF is called Silverlight.” It’s almost midnight and some little bird is constantly whispering these tech-geek nuggets into Ryan’s ear. So while in the bar, with a beer in hand, Ryan takes out his laptop and starts writing blog posts. Look at the time stamps for his ZDNet posts. He’s got his Silverlight post logged at 11:49 pm and a post about Philo at 12:23 am.

I guess that’s what separates the casual bloggers from the professionals. I wouldn’t trust myself blogging under the influence. Ryan, I salute you.

Standard
Uncategorized

I joined Qwitter – you should too!

qwitter

Last week marked the end of my employment at Stanford University. It’s been a great 4 years (wow, 4 years?!). The project I’ve been working on has reached a point where I can comfortably step away. This is completely voluntary, and I’m leaving on good terms with everyone at Stanford.

qwitter badge

So as of this moment I’m unemployed. I highly recommend it. I’m not looking for new work for a while. For the next 4 months or so I’ll be traveling and doing a little Flex contracting work. I’m going to try to focus on blogging a bit more, so hopefully I can start posting more frequently. My travel plans are still taking shape, but include some combination of the following:

  1. Sailing along the coast of Central America to Panama. For a few weeks in April I’ll be sailing with my dad, who is currently sailing alone from California to England via the Panama Canal (yes, he is amazingly badass). I’m going to meet up with him somewhere along the way, maybe El Salvador, and sail for a few weeks to Panama.
  2. A few east coast trips. I’ve got friends on the east coast I haven’t visited enough, so I’ll be making a few trips. I’ll be vacationing with my girlfriend in Cape Cod, and I also might make separate trips to DC or NY.
  3. Sasquatch music festival at the Gorge Amphitheatre in Washington state.
  4. An as-yet-undecided European-ish destination. Maybe Turkey, Greece, eastern Europe… this is pretty up in the air, we’ll see if it actually happens.
  5. Denmark for the best rock festival ever, Roskilde.

During and between traveling I’ll be playing with Flex stuff and blogging. I’ll be back home and doing contracting work for most of May. I’ll get back to real life around mid July or August, at which point I’ll be figuring out my employment situation. I am not looking for a job until then.

For now it’s time to enjoy life without worrying about paychecks and early-morning commuting. To celebrate I gave myself this sweet mohawk:

mohawk

Standard
Uncategorized

Pulled the trigger and bought a Mac – now where to buy RAM?

Thanks for everyone’s input today about what Mac laptop to get. Here’s what I ended up getting:

MacBook Pro 15.4″
2.16 GHz, 1 GB RAM, 120 GB Hard Disk, 128 MB graphics card


After people pointed out some good reasons to go for the Pro, the decision was then about the higher-end version or not. The benefits of the more expensive version would have been a faster processor (2.33 vs 2.16) and a 256 MB graphics card. The faster processor didn’t seem worth the extra price. The extra graphics RAM was more tempting, I don’t know, maybe I should have gone with that instead. As someone pointed out, the upcoming CS3 release from Adobe is going to have more intense graphics requirements, which was one reason to go for the Pro vs. non-Pro. Maybe once I get CS3 I’ll have wished I went with the 256 MB graphics RAM. But I figure I’m gonna drop 3 GB of RAM in there, so I should be able to run whatever the hell I want without problems.

So one more question for people out there: where should I buy a single 2 GB stick of RAM for a MacBook Pro Core 2 Duo?



Someone pointed out macsales.com, and I was checking out the different options. There are three different options I could go with. I’m not a RAM expert, so I have no idea what the benefits and drawbacks for any of these choices are. Here are the choices:

  1. $260 – Other World Computing Brand
  2. $340 – Micron
  3. $450 – Samsung

Crucial’s got a 2 GB stick for $355.

They all look exactly the same to me. The only difference I can spot is that the Micron option says it’s “128 x 8” versus the other two are “256 x 64”. I have no clue what this means. Is there any reason to not go with the cheapest option?

I’m going to be using the 1 GB stick of RAM that comes from Apple and just adding the new 2 GB stick I buy. Is there any brand that would play better with the 1 GB stick from Apple?

Standard