Archive for June, 2007
Browing Martin Fowler’s web site today produced an article on Technical Debt. This concept so neatly summarizes my experiences in mistakes made maintaining enterprise software that all I need do is link to it for you to understand how I feel.
I found this article through another article on the time/functionality trade off of design activities. I actually disagree with Martin here with regard to productivity through design being purely subjective and unmeasurable. I’ve seen plenty of projects move faster due to consistent design, and plenty of other projects grind to a halt due to a lack of design (or at least a lack of consistent adhesion to the original design principles of the application). As with everything in software development, YMMV.
I’ve been an avid Parallels Desktop user since the application went gold last year. Truthfully, if it weren’t for Parallels, my experience using a Mac in a 99.9% PC work environment would be a lot more difficult. There are only a handful of apps that I need Windows for (TOAD, Rational Software, and our legacy source control system called Harvest), but they are all the more pleasurable to use because I have such seamless integration between Windows and OS X with Parallels.
That being said, the experience with Parallels Desktop is a litte quirky. For example, when un-pausing a virtualized Windows instance (kind of like waking it from sleep), Parallels shows me the Windows instance ready to go, but it’s still streaming the OS from disk so I have to wait and poke it every few seconds for about half a minute until it starts responding. I’ve also had a few issues with Coherence, which in itself appears to be a bit of a hack (if you move the windows around fast enough you can see the Windows desktop being redrawn behind the previous location of the window being moved), and I had a virtual instance go FUBAR on me for no apparent reason (booted in to BSOD constantly and needed to be blown away). Finally, when using Parallels in full screen mode, if you try dragging and dropping a file from the Windows desktop using Exposé, you can’t… you have to go to windowed mode, and even then, you have to drag the file outside of the area where the Parallels window used to be in order for your drag operation to work properly.
Even with all this, I love Parallels Desktop, have highly recommended it to peers, and will continue to recommend it until I find something better. I’d also like to mention that their support is fantastic, with a community blog and support forums that answered all the questions I have had when using the product. Customer service is an important item for any company, but especially for online software vendors IMO.
Of course, this is where VMWare’s Fusion comes in. I have had zero past experience wth VMWare’s products, but their reputation is incredibly strong. So far, Fusion looks like it has a little more polish than Parallels: their Unity feature (basically a rip-off of Coherence) has drop-shadowed windows and doesn’t seem to have the screen redraw issues based upon a video of it that I have seen in action. Besides that, it looks like the feature sets of the two products are almost identical. Polish is a hard intangible for a software company to add to their products, but in my opinion, it makes all the difference – especially when there isn’t a compelling feature difference (and I’ll admit that there may be major feature disparity between Fusion and Parallels Desktop, but I haven’t done much research yet).
Parallels recently released their Parallels Desktop 3.0 release, and while I have usually upgraded immediately in the past, in this case I am waiting on VMWare; after all, Fusion should be out before the end of the summer, and Parallels 2.0 serves my needs beautifully. I may not upgrade or change at all, but I am keeping an eye on the public beta that VMWare is offering.
What about you, fellow Mac user? Happy with Parallels Desktop? Looking to switch to VMWare Fusion? Don’t care?
I don’t know what it is, there is something about stupid subtitle videos and similar parody mash-ups that always cracks me up
I think this is still one of my favorites, though. Any Matrix parody where Trinity introduces herself as LuvRGuRL69` from #teenchat is an instant classic in my book. :)
Michael has finally launched Pudding, a labor of love spanning almost two years and four (I think?) technology transitions. As a software developer who has built multiple software products only to lose interest half way through after the “hard bit” is over, I can appreciate how much effort goes in to getting something done. Knowing Michael, he will also have made sure that it was done right and that no corners were cut.
This product launch also proves my knack of making really terrible jokes about actual web site and software product names, after which people take me seriously and end up using them. Still don’t believe me? There’s actually a web site out there called roomtastic.com after another product name joke I made in a marketing meeting one day.
Well, even so, I wish Michael all the best. With any luck he’ll sell a million subscriptions to Pudding, and will give me a position at Ataraxis Software one day as Chief Stupid Name Officer. Naturally, I’ll require the Steve Jobs compensation plan.
I’m really excited about JRuby. What could be sexier than taking the compiled, library-laden world of Java and combining it with the balls-to-the-walls terseness of Ruby and RoR? It’s like getting everything you want for Christmas, and then having the Publisher’s Clearing House guys show up and give you the winning check to boot.
I’d say 1.0 is still too early for prime time in a commercial setting like ours at CFI. I’d speak differently if I were a startup rolling my own app, though. That being said, we jumped on the Flex train back in the 1.5 days, and I’m all about fast moving technologies with loads of community interest and support.
If we can leverage even 1/10th of the productivity improvements you can get from RoR, with our Java back ends performing integration, and a Flex front end for the user, I’d be happy to bet the farm on JRuby in the near term.
No disrespect – I say this when I’m excited about something, and this new stuff in Flex 3 looks sweet. I’m looking forward to Ted’s preview of the new developer features tomorrow.
Truth be told, I was kinda hoping for “proper” CSS support in Flex 3 (i.e. like the browsers have), but I ain’t gonna hate on my Adobe peeps.
For years, I’ve maintained the opinion that Apple needs to change their commercials.
All they need is 30 seconds of video showing a user performing common tasks in OS X. This by itself would bring hundreds of thousands of people flooding to the Mac in droves.
How do I know this? Because 98% of people at work who look over my shoulder when I’m on my MacBook Pro and say “Wow, that’s cool” end up buying a Mac within twelve months. This takes place with zero prodding on my part; they simply see the Mac in action, get curious, and shell out the shekels shortly thereafter. I can count six people off the top of my head that followed this exact pattern, and I’m sure there are more getting ready to take the plunge.
The reason is obvious, of course: every Mac comes with an RDF emitter as standard equipment.
Well, obviously my buddy Steve has finally conceded to my marketing genius. Of course, he’s too proud to admit that he’s not the source for every excellent marketing idea for the fruit company. So, instead of doing it with the Mac, he’s doing it with the iPhone instead.
It’s okay, Steve. Just pick up the tab next time we meet for lunch, and we’ll call it even.
My last post made me want to poll my readership of six people on how they learn technologies.
We recently decided to put together a developer library at CFI. The point of this library is to support training new hires, and create a “required reading” list to promote career advancement through varying responsibilities. To get some ideas for the library, I polled our Web Development team for what they wanted.
I was pretty surprised when most of the team said they wanted paper books. I had expected everybody to shoot for a Safari account. For some reason, I’ve had this perception that most newer developers like to learn from electronic source materials, but it seems like embossed, wafer-thin slices of tree bound by glue are still a favorite.
Personally, I hate reading stuff online. I like copying sample code off the web, though. Seems like I’m not alone; O’Reilly has an approach for some of their books which allows developers 45 days to use the electronic copy on Safari while reading the physical book, so you get to have your cake and eat it too. Meanwhile, you’ll get to experience their online experience, and may even sign up for an account. Sheer marketing genious.
And then there are CBTs. In my experience, most computer-based training programs are mediocre enough to make you want to poke your eyes out with a straightened metal clothes hanger, but I recently saw some very cool videos from Lynda.com on Flex 2. With good CBTs, it’s all about the presenter’s style and the material. They seem to have struck the magically delicate and elusive balance between short sessions, content, and pace.
So, how do I learn, you might ask?
Usually I buy a book on a technology first. I’ll peruse Amazon and look for decent books, heading over to the local book store to check it out. When I decide I want a book, I almost always want it immediately (as in, I’ll get in the car and go out to buy it as soon as I decide I want it), but I’m willing to wait a few days for it to arrive from the web if there’s huge price difference (which there usually is… damn you, Amazon, oh keeper of reasonably priced books :) ).
I’ll usually read the book cover-to-cover before I try any of the code. I’m a fast reader, so I can usually achieve this before my eagerness to tinker with the code gets the best of me. I do this so that I can start coding in the technology without any unanswered questions; i.e., when I decide to knock out some code and I get stuck, I’ll remember where that item was covered in the book and will refer to it immediately. Then, I’ll code a small app in the technology; usually on a Saturday morning, which is when I’m most productive in my non-work career-oriented activities.
I got my ActionScript 3 Cookbook on Saturday, and I must say I think it’s awesome.
I had imagined that it would focus primarily on ActionScript 3 for Flex developers, but it’s very much applicable to generic AS coding in Flash. The authors seemed to avoid Flex-specific stuff, which I think is incredibly wise considering how ubiquitous AS3 is likely to be in the coming years in all of Adobe’s products. It did look like there were some chapters on remoting and some other items that mentioned the Flex framework, but even these chapters had sections on generic ActionScript items such as programming TCP sockets and invoking calls to a Flash Remoting gateway. The book was developed in conjunction with Adobe as part of their technical training series, and I imagine that the terseness and relevance of the material probably stems from this partnership.
I was particularly excited in the sections on drawing, animation, and filters. I’ve always wanted to make a bad ass GUI environment for doing something like drawing Gantt charts, or visualizing a flow in one of our process-centric software applications and allowing a user to manipulate it with the mouse.
I primarily purchased this book for two reasons: I learn best from books, and I learn best from sample code. The O’Reilly Cookbook series obviously fits very well with my way of learning, since they are all books packed with minimal fluff and loads of sample code relevant to a particular programming task.
I’d definitely recommend any budding ActionScript/Flash/Flex developers to pick this up. I’ll be adding this book to the line up for our internal recommended reading list at CFI.
First I get podcasted on CFWeekly, now TeraTech has published the audio of one of my sessions from CFUNITED 2006 as a promotion for CFUNITED 2007.
I had previously contacted TeraTech to get a copy of this for my personal curriculum vitae, but for whatever reason it couldn’t be found. I’m glad they did find it, because I ran over my one hour slot and as a result the video camera I set up to tape myself ran out of tape (damn 60 minute DV tapes).
I really wanted the full session’s audio since some of the more interesting questions came up after I ran out of tape. Plus, the recording they got from the lavalier was much better than my DV cam did at the back of the echoey conference room.
I listened through the presentation so I could grade myself; I think this is definitely one of my better performances. The thing I like about it the best is that it encompasses all the things I passionately feel need to take place in a development shop. When I delivered this talk, it was a packed-room session, and lots of people came to me afterwards to say they enjoyed it (and to ask if we were hiring!). Michael Smith invited me to repeat the session at the end of last year for the Maryland CFUG over Breeze, which was really cool and very flattering.
I’m sad to say that I don’t think I’m living up to all of my advice right now for our department. It’s been a lot more difficult pulling off all of these items now that I’ve got almost 40 people under me instead of 15-20, especially when most of my current reports aren’t doing software development (which means I can’t roll some of the tasks I need to do in as part of my day-to-day work). The biggest problem I’ve had is just making the time to document all the great stuff our teams have been doing/discovering, and putting the effort in to making them standards and providing the right training materials so we can live up to the all-important “clear expectations” part of my pitch. I go home every week right now feeling guilty about what I haven’t done yet.
I’m coming off of my role in our PCI compliance intiative this year, so I’m all about the standards now. I thought I was done a week or two back, but I had a few more tweaks to our credit card processing app that I had to get done. I finished them off yesterday, so all I have left is some documentation on Monday and then I’m (hopefully…) home free for the stuff that really matters.
The other item that has been time consuming was building relationships with all the new reports I acquired in January, and trying to help them get on the path to reaching their career goals. Now that everybody is humming along nicely, I’m getting to the point where I can do the things I’m supposed to be doing. I can usually tell when things are getting better, since I don’t find myself constantly pushing iCal To-Dos over to the next week without them being finished.
To the team at CFI, I’ll say this: bear with me, guys – I know it’s all important, and I will get it done for you. And if I ever forget what’s important, you can now tie me to my desk and play my session to me at ear-splitting volume. :)
Most Popular Yelling
- Scrolling Large Data Sets in Flex Charts (41)
- Configuring Tomcat SSL Client/Server Authentication (28)
- Fixing "Bluetooth audio failed" Error Message on Mac OS X with Sony DR-BT50 Headphones (16)
- How To Become A Software Engineer/Programmer (15)
- Using Axis's wsdl2java in a Maven Build (13)
- Speak and Spell Samples (13)
- An Objective-C Tutorial for Enterprise Java Programmers (12)
- On A Personal Note (10)
- Abandoning ColdFusion? (9)
- Adobe Says: "Thousands of Developers are using CF 8" (9)
Stuff I Like
- October 2011
- August 2011
- April 2011
- March 2011
- January 2011
- December 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- January 2007
- December 2006
- August 2006
- July 2006
- June 2006
- April 2006
- February 2006
- December 2005
- November 2005
- October 2005
- August 2005
- July 2005
- June 2005