Archive for the 'Uncategorized' Category

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?

[UPDATE: OK, I was dead-wrong on this one. Ted was referring to the ability for Flash Player on the client machine to cache versions of the Flex SDK, so your Flex app can be decoupled from the entire weight of the framework, and if the user has already loaded a Flex app they don't have to re-download a full 500k (or more) swf when they view your app. Read Ted's description here.]

This is complete speculation, but it’s the only way I can read the following comment posted on Ted Patrick’s blog:

This feature will forever alter how Flex is deployed and I am pretty confident that you will be shocked. Flex is about to become much more distributed. :)

I have my fingers crossed that what this is going to mean is that the next version of Flash Lite is going to support Flash Player 9 and that Adobe’s Device Central is going to give us sweet Flex integration and mobile templates so we can develop Flex apps for phones.

Am I reading too much into that sentence? I guess I’ll find out tomorrow.

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”.

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.

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

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?

MacBook Pro

MacBook Black

I’m about to pop my Mac cherry. It’s time for an upgrade from my old Toshiba Portege m200 tablet that I’ve had for about 3 years. I’m trying to decide whether to go with the Pro or non-Pro version of the MacBook, weighing the pros and cons of each. This is yet another case of a long-time Windows user switching to a Mac. The last Apple computer I had was an Apple II E. For a variety of reasons I’m switching, but the Paralells virtualization software is a driving force that got me to actually make the decision.

Size
I like a small laptop. I have a 24 inch widescreen monitor on my desk, which I use most of the time if I’m working at home. Over the past few years I’ve come to really appreciate the small form factor of my current laptop. It’s a 12-inch display and it’s light (just over 4 pounds). That 12-inch display packs a 1400 x 1050 resolution, so that’s sweet for a laptop that small. Part of the reason I really value the small size is that for the past 2 and a half years I’ve been commuting an hour each way via train to work every day. I often work on the train, so being able to easily carry around my laptop and pull it out without breaking a sweat has been important to me. That said, I’m not going to be commuting any longer, so maybe the small lightweight aspect isn’t as important to me anymore.

In terms of MacBooks, I’m deciding between the 13-inch MacBook and the 15-inch MacBook Pro. The 17-inch MacBook Pro is out, I’m not even considering something that big.

Should I get the best?
As a tech junkie it’s always hard for me to not buy the hottest thing available. In the computer world you always pay a premium for the newest, fastest machine. But you know you’ve got the most badass thing you can get. My roommate works for Google and gets a free MacBook Pro for work. I have the opportunity of getting a better one :)

I have an itch to get the fastest machine I can get with the most RAM I can get. So now I’ve got to control my desire and hold off on buying a $3,200 laptop (most expensive MacBook Pro config I could get) until I consider whether it’s actually worth it.

As I see it I have 3 options:

  1. $1,756 – 13-inch black MacBook @ 2 Ghz
    2.0 Ghz, 2 GB RAM, 120 GB drive
    The best non-Pro MacBook available. 2 GB RAM through Apple is only slightly more expensive than doing it through an external vendor, so it’s worth the convenience.
  2. $2,393 – 15-inch MacBook Pro @ 2.16 Ghz
    2.16 Ghz, 3 GB RAM, 120 GB drive
    Includes $355 RAM upgrade from Crucial (one two-gig stick).
  3. $2,893 – 15-inch MacBook Pro @ 2.33 Ghz
    2.33 Ghz, 3 GB RAM, 120 GB drive
    The fastest processor with the most RAM I can get. Includes $355 RAM upgrade from Crucial (one two-gig stick).

[Note: these prices include an educational discount I get for being an employee of Stanford University, and they all include the extended AppleCare plan.]

I’m currently leaning towards option #2, but trying to determine if it’s worth $640 more than option #1. There’s a part of me that wants to jump at the 2.33 Ghz version just because, but is that really worth an extra $500? I can buy a lot of booze for $500.

Hard drive
I’ve got a 600 GB external drive, so I’m not putting a priority on the internal drive space. I’ve got 50 GB on my current Windows disk that I’m going to transfer over with Parallels Transporter. So I figure I can deal with a 120 GB disk just fine.

RAM
Each of those options has the most RAM you can stick into the machine. The 13-inch MacBook can only have a max of 2 GB. The 15-inch Pro can have a max of 3GB. Something sneaky is that you can’t order the 2.33 GHz machine with one one-gig stick of RAM (but you can for the 2.16 GHz machine). I can get a 2GB stick from Crucial for $355. This means if I get the 2.33 GHz machine, I end up with one one-gig stick that I don’t use. Versus the 2.16 GHz machine allows me to only order one-one gig stick, so I’m not paying for something I’m just going to throw away (I’ll pretend I’d try to sell it on ebay, but I know I’m too lazy). Another option would be to just get 2 GB of RAM instead of 3. I’m definitely going to get at least 2. My current Windows laptop has 1 GB and when I run Flex Builder in Eclipse, Flash 9, Photoshop, and Illustrator all at the same time it gets a little unhappy. So if I want 3 GB of RAM that pushes me toward the 2.16 GHz MacBook Pro. Is it worth it? I don’t know, I suppose I could always upgrade later.

Display considerations
I like high resolutions, even on small screens. The 1400 pixel wide resolution on my current 12-inch screen is awesome. I’m young and have good eyesight at close range, so I like the screen real estate and don’t have trouble reading the small text. The 13-inch MacBook has a resolution of 1280 x 800. The 15-inch Pro has a resolution of 1440 x 900. And obviously the Pro version’s screen is physically larger. This pushes me toward the 15-inch Pro.

I have a 24-inch monitor that requires that my laptop be able to output at least 1600 x 1050 (which my current laptop was barely able to do, with some tweaking). Both MacBooks can output to high enough resolutions for external displays. The non-Pro can output up to 1920 x 1200, which is enough for me. The MacBook Pro can output a ridiculous max resolution of 2560 x 1600, far more than I need. This one’s a tie.

I was talking to someone at 360Flex and they told me that the non-Pro MacBook can only mirror the screen when using an external display, not extend the desktop. Maybe this used to be true and got an upgrade, because looking at the specs on Apple’s site it says that both the non-Pro and the Pro can do mirroring and extended desktop. While I don’t use my external monitor and my current laptop screen at the same time very often, I do occasionally, and I certainly want that option. I’ll assume the Apple specs don’t lie to me, so this one’s a tie.

So I guess I’ve got to decide if the better display, the slightly faster processor, and the extra gig of ram are worth $640. Or maybe I’ll impulsively buy the fully pimped out 15 incher. If anyone has any thoughts that might help me decide, let me know. And if anyone knows the cheapest (but still reliable) way to get a single 2GB stick of RAM for a MacBook Pro, hook me up.

I’ve never read a programming book. I realized this when I got sent a promo copy of the Flex 2 with Actionscript 3 book from Friends of ED. [Side note: start blogging and you get sent free shit.] I was flipping through the book and I realized, wow, I’ve never read one of these before. So it got me thinking about why that is. Clearly people learn programming stuff through books, there’s got to be a market or else they wouldn’t make the books. Am I the norm or the exception?

Timeliness
First I figured this was because this was a Flex book. I’ve been following Flex for a while now, and the newest information has always been online (like any emerging technology these days). So in a sense everything contained in this book has already been written one way or another. The newest information will never be in print, that’s just the nature of the web. If I want the newest info on Apollo I’m going to read the alpha release docs on Adobe Labs, or Mike Chambers’ blog posts, or watch the apollocoders mailing list. The Apollo books are coming, but they’ll always be a big step behind what’s available online.

But then I realized I’ve learned bunches of other stuff that wasn’t brand new. When I was first learning PHP and MySQL there were tons of great books available. But for some reason I never bought a book. Maybe I’m just too cheap (discussed below). Or maybe I’m just too lazy. My bookshelf doesn’t have any programming books (at home or at work). The only books I’ve ever partially read were for some CS classes at school, but that was more to make sure I got the info that was going to be on an exam.

The copy/paste factor and learning by doing
Whenever I’m learning anything computer-related I’m doing it as I’m learning it. That’s the only way I can learn, and I’d be surprised if you find anyone who’s all that different (when it comes to computer programming). You’re not going to learn how to program Actionscript or use Photoshop by reading a book without having one hand on the mouse the entire time. So that means you read at your computer, with the book next to you? Or you read a chapter, then go and try it out on a computer? As I was flipping through the Flex book, I saw lots of Actionscript code. There’s an entire example app that gets created in that book. Cool, but that’s pretty much useless to me without being able to run the code myself, and tweak it a bit and see the results. You’ve got to be able to copy and paste the code and run it yourself. Book publishers know this, so they include downloads or CDs with the code. But now I only need the book for the non-code pieces, which brings me to my next point.

Learning from code versus learning from written paragraphs
I’d be interested in getting other developers’ perspectives on this, but I was thinking about how I learn and whether I learn more from example code or from written text describing the code and the method of programming. If I were to rate learning through code or learning through text, each on a scale of 0-5, I’d give learning through code a 5 and learning through text a 1. If a tutorial doesn’t have code I don’t read it. I think Google code search is the best learning resource ever.

So if we look at the ratio of text to code in this book, I’d say it’s at least 50-50 text-to-code. I’d be interested in seeing the ratio of comments-to-code included in the Flex framework source files. In terms of learning Flex, the framework source is the single most valuable resource I’ve had. They commented the hell out of it, but the code is the focus. You want to learn how the ComboBox component animates the drop-down menu when it gets selected? Go and read the source of ComboBox.

On-demand learning
I don’t know what I want to learn tomorrow. I might play with some custom components I’m working on, or play with Flex mapping components, or explore how to deploy my apps as Apollo apps. Or I might not ever learn any of that stuff and I might go off on some other tangent instead. So am I going to get a book about any of that? No. Am I going to read tutorials and comprehensive guides before I start playing? No. I’m going to start a project, try to do what I want to do, and when I can’t figure it out I’m going to look up what I need to know. Which brings me to my next point.

Learning in tiny bits
Books are too long. There’s just too much information in them. I learn in tiny nuggets, and I only learn the stuff that gets me to the next step in a project. If I’m working on a project and I need to figure out how to pull in an RSS feed into a flex app then that’s exactly what I want to learn, and only that. Once I get stuck at another point then I’ll go and figure out what I need to get past that point. But I don’t want to read a book that tells me in generic terms how to use a technology. I might never use half the information in a book, so why would I waste my time learning it?

The web gives me tiny bits of info that I need. And if you’re searching for programming information on Google, you can pretty easily figure out how to search and get directly to the result you need. It’s rare that I try to look something up on Google that I can’t find the answer to (obviously it happens, at which point I post questions to mailing lists). And the number of tiny bits of information is amazing. Whether it was a question someone answered on a mailing list, or a blog post, or an example in official documentation, somewhere someone has shown you how to do almost everything you want to know. And often you can find an answer to a specific question without wading through irrelevant content. Google is like learning surgery as you’re cutting, books are like medical school.

I’m a cheapskate
And I don’t like paying for something I can get for free (wow, that statement applies to so many other things). Everything you need to learn ANY programming language is available for free online. That said, book publishers can feel free to send me free shit, I like getting stuff for free, even if I don’t really want it.

I guess it just boils down to how different people learn. I’m sure tons of people have had great experiences learning from books. I just don’t get it. I can’t figure out why I would want to buy a book and read it when I can learn everything I need to learn by going online. So I don’t know, am I the norm or the exception?

I just made myself the most ridiculous business card ever. I am now officialy a Flex Machine, James Brown is rolling in his grave. If you’ve never made yourself a business card, I highly recommend it.

Here’s the card design:

Doug McCune business card

Now you’re probably thinking to yourself: “No way, that’s just a joke, you’d be insane to actually make that card and give it to anyone.” You underestimate my ridiculousness.

doug_awesome.jpg

So find me at 360Flex and take some of these off my hands. And I openly challenge anyone to show me a more ridiculous Web 2.0 business card.

var i:* = 24;

var now:Date = new Date();
var bday:Date = new Date(1982, 1, 16);

if(now.month == bday.month && now.date == bday.date) {
	i = now.fullYear - bday.fullYear;
	trace("Happy " + i + "th birthday to me");
}