<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8421527</id><updated>2012-01-03T15:09:35.243-05:00</updated><title type='text'>Maxim Porges</title><subtitle type='html'>a blog by maxim porges</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default?start-index=101&amp;max-results=100'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>305</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8421527.post-4633642584055275615</id><published>2009-09-13T20:44:00.007-04:00</published><updated>2009-09-13T20:57:47.224-04:00</updated><title type='text'>Farewell, Blogger</title><content type='html'>I'm moving my blog to &lt;a href="http://www.maximporges.com"&gt;maximporges.com&lt;/a&gt;. Please update your RSS feeds if you have them. &lt;i&gt;&lt;b&gt;NOTE:&lt;/b&gt; If you get forwarded back here, then the DNS changes are still propagating - give it a few hours and try again.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Blogger has been very good to me over the years, but I've decided to go to a hosted &lt;a href="http://www.wordpress.org"&gt;WordPress&lt;/a&gt; account so that I can get a little more control for adding additional pages and content to my site.&lt;br /&gt;&lt;br /&gt;I'm going to keep this old Blogger site up for historical linking purposes, but it has been retired effective immediately, and all new content will be going on the &lt;a href="http://www.maximporges.com"&gt;new site&lt;/a&gt;. Also, all the content from this old blog has been imported in to the new one so nothing will be lost.&lt;br /&gt;&lt;br /&gt;See you at the new site!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4633642584055275615?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4633642584055275615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4633642584055275615&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4633642584055275615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4633642584055275615'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/09/farewell-blogger.html' title='Farewell, Blogger'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-413008575403595954</id><published>2009-08-29T11:44:00.006-04:00</published><updated>2009-08-29T12:48:07.252-04:00</updated><title type='text'>Snow Leopard Upgrade</title><content type='html'>I just got finished upgrading my work computer to Snow Leopard and configuring everything. Here are my thoughts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;Typical painless Apple installation. It took somewhere between 30 mins and an hour; I'm not exactly sure since I was messing around with my synthesizers while it was running. Xcode has to be upgraded separately, and takes about ten minutes. After you install, Time Machine will re-backup all the differences between your old OS and your new one, and Spotlight will re-index various bits as you set them up (such as your email) - both these tasks happen in the background as usual.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mail&lt;/b&gt;&lt;br /&gt;Mail will upgrade all your email databases when you start it. I have a buttload of email, and it only took about a minute to convert all my databases (both work and personal email).&lt;br /&gt;&lt;br /&gt;After I was done, I set up my Exchange account, which was previously accessed through IMAP. I put in a few basic details (email address, password, etc.) and Mail figured out the rest, including who our Exchange provider is - pretty impressive. It also auto-configured iCal and Address Book. The only hiccup I ran in to is that during auto-config of the Exchange account, since our email addresses differ from our usernames at Highwinds, Mail prompted me for my username.&lt;br /&gt;&lt;br /&gt;After that, all my email got downloaded in to the new account. I reconfigured my Smart Mailbox filters to use the new account folders, and that was that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;iCal&lt;/b&gt;&lt;br /&gt;When I opened iCal, I had two new calendars already set up for my Exchange calendar and tasks. Something that they fixed in the new iCal is that you can move an event from a Mac-local calendar to a shared calendar; I was not able to do this with the previous version of iCal when we used to use the Kerio server at Highwinds (an Exchange knock-off with Mac compatibility).&lt;br /&gt;&lt;br /&gt;Moving tasks is mostly painless. Exchange doesn't have a priority of "none" so I changed all my tasks to be Medium priority to avoid iCal putting a little note in the task indicating that the priority could not be set. Exchange also doesn't support URLs like iCal does, so anything unsupported just gets moved in to the Notes area on the task. I also downloaded IMLite from the App Store, which lets me view my tasks (since Apple hasn't put that feature in the iPhone yet for some reason).&lt;br /&gt;&lt;br /&gt;One thing I absolutely hate about the new iCal is the window that pops up to edit events and todos. In previous iCal versions, this was almost as bad, but at least workable. In the new version, the window always pops up to the top left corner of the screen, and does not act as an inspector - meaning that when you select new items, the window does not update to show the details of the new items; what happens instead is that each item gets its own pop-up window. If you move the window, it doesn't respect your new location, and continues to pop up in the top left, and multiple windows lay themselves out.&lt;br /&gt;&lt;br /&gt;Seriously, WTF? With all Apple's UI expertise, they still can't get this right?&lt;br /&gt;&lt;br /&gt;Apple, here is how iCal should let you edit events: put a pinnable inspector window somewhere in the app, just like the Tasks view or the mini-months calendar or anything else. As I select objects in the calendar, auto-save changes to the previous object and change the inspector's binding to show the settings for the newly selected object. Put up/down or previous/next arrows in it so I can scroll through all my to-dos or calendar events in sequence and set their properties. Allow me to select multiple items and make the inspector reduce its scope of editable items to only the common elements (i.e. associated calendar, date, etc.). Basically, what you did in iTunes with the song inspector, just with a pinnable window instead of a pop-up.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;UPDATE:&lt;/b&gt; Either I am a douchebag, or Apple fixed this super-fast, or both. Guess what you can find in iCal's Edit menu? Nothing other than a "Show Inspector" option. And it's a nice one, too - always on top and stays where you put it. Damn you fruity bastards at Apple - you are good. :)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Address Book&lt;/b&gt;&lt;br /&gt;Unsurprisingly, all my Exchange contacts showed up in my Address Book under a new heading. My Exchange directory was still there from before. Nothing fancy here, but nice that it all worked as expected and was auto-configured for me by the OS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;32-bit vs. 64-bit and Rosetta&lt;/b&gt;&lt;br /&gt;Leopard will install by default in a 32-bit compatible mode, and run apps in either 32-bit or 64-bit mode automatically based on what the app supports. All the Apple core apps have been rewritten in 64-bit from what I understand, including Finder, Mail, iCal, Safari, System Preferences, and the other staples.&lt;br /&gt;&lt;br /&gt;Device drivers must be 64-bit. Some drivers will not work in Snow Leopard due to the 64-bit requirement. The only two drivers I have personally had issues with are my open-source USB rocket launcher driver (don't really need that to be honest) and the drivers for my Access Virus TI synth. Access is working on updating the drivers, so I'm just going to wait on upgrading my personal Mac until they have that sorted out since I like the "total integration" features that TI stands for.&lt;br /&gt;&lt;br /&gt;The 32-bit support is really smart. If I try to open 32-bit preference panes in System Preferences (such as the MySQL or LockTight panes), System Preferences warns you that it needs to restart, and does so in 32-bit mode. You can explicitly tell an app to always start in 32-bit mode by selecting a checkbox in Finder's Get Info pane for that application.&lt;br /&gt;&lt;br /&gt;Rosetta is not installed by default. I fired up Quicken 2002 Deluxe and Snow Leopard asked me if it should install Rosetta, which it did by downloading the software from the web. Rosetta is also on your Snow Leopard installation disk if you want to include it by default. Quicken ran just as well in Rosetta on Snow Leopard as it did in previous versions of OS X.&lt;br /&gt;&lt;br /&gt;I had mixed results on two OS plugins that I use regularly: MenuMeters didn't work (although &lt;a href="http://www.ragingmenace.com/"&gt;a fix is in the works as of the August 17th blog post&lt;/a&gt; ), and Quicksilver runs just fine. Keyboard shortcuts in TextMate for jumping to the beginning and end of the line using &lt;i&gt;Apple-[left/right] arrow&lt;/i&gt; stopped working, but &lt;a href="http://ticket.macromates.com/show?ticket_id=0FDE7076"&gt;somebody published a patch&lt;/a&gt; and this will be fixed in the next minor release according to the ticket.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Is It Faster? Better?&lt;/b&gt;&lt;br /&gt;Yeah, in different ways. Safari has finally hit its stride with blazing performance, and I like the Google Suggest integrated in to the search widget. Finder is a lot snappier in certain operations, like opening a stack full of downloads. Expose is so fast it seems to twitch in to view compared to before, and I really like the even sizing of the windows - much easier to read (and now I understand at least one reason why they wanted resolution-independent graphics technology in OS X). Expose also allows you to zoom in on Expose'd windows by hovering with your mouse and hitting space bar, giving you a Quick View-style pop-up - a nice touch. The new Dock menus are smoky-black like the stacks are in Leopard, so that is more consistent. Windows are now apparently spring-loaded for dragging files between them, which I am sure I will use since I have been known to love me some spring-load.&lt;br /&gt;&lt;br /&gt;There are some other cool features in it that I haven't touched yet. I haven't tried the new QuickTime X, but I can see myself taking little video notes with it now that it supports basic web cam capture and editing features; no need to fire up iMovie any more. I cursed Preview just yesterday for is lack of column-based PDF text selection, and that is in there now. And if you use any of your computers as a file server, Snow Leopard lets you put them to sleep and still advertise their files if you have a compatible Time Capsule or Airport Extreme base station - when you want the files from a remote computer, it wakes the computer with the files up, and then puts it back to sleep. Unfortunately, my main file server is an old G4 tower that is too long in the sabre tooth (hah!) for Snow Leopard, but I house my iTunes library on my personal laptop so I can see myself using this feature there.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;br /&gt;Honestly, I wouldn't say you should rush out and buy Snow Leopard if you're on Leopard already, but I think it's definitely worth $29 (or $49 for the family pack, which I bought). The speed difference is evident, but besides that it's much the same as Leopard. The main thing I bought Snow Leopard for was Exchange support, and I got far more than my money's worth out of that feature alone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-413008575403595954?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/413008575403595954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=413008575403595954&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/413008575403595954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/413008575403595954'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/08/snow-leopard-upgrade.html' title='Snow Leopard Upgrade'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8164028012825599966</id><published>2009-08-19T17:00:00.003-04:00</published><updated>2009-08-19T17:15:46.083-04:00</updated><title type='text'>Saving OmniGraffle Documents in Subversion</title><content type='html'>I ran in to an issue today. We've been making a lot of wireframes for application user interfaces in OmniGraffle, and I wanted to get these in to version control along with everything else. Unfortunately, OmniGraffle typically stores files as bundles (special directories), and these bundles use OS X resource files for certain bits of the file format, which are fine for native OS X documents. However, these resource files have names like "Icon/r" (where /r is an escape sequence for a newline character), and that totally pisses off Subversion when committing resources.&lt;br /&gt;&lt;br /&gt;Luckily, OmniGraffle offers the ability to save files as flat files rather than bundles. The files can end up being fatter on disk, but that's not really a problem considering how cheap disk space is today. You can go in to the Inspector for the document, and look in the Canvas accordion pane under the Document Settings tab. There, you will find a heading for "File format options", which by default seems to be set to "Automatic." You can change this to "Save as flat file", and save the document, and you are now ready to commit the file to Subversion.&lt;br /&gt;&lt;br /&gt;However, I wanted to change the default file format to flat file so I don't have to go through this process every time. I Google'd a bit and found some suggestions for setting default preferences for the OmniGraffle app using "defaults write" from Terminal. Unfortunately, that option no longer seems to work for OmniGraffle 4.2 and up. I was, however, able to figure out the solution.&lt;br /&gt;&lt;br /&gt;The problem seems to be that even with the defaults for the OmniGraffle app set to save to flat files, OmniGraffle always defers to the file format preference specified in the template that is used to create new documents. There are a set of document templates in the OmniGraffle application bundle that hold this setting, so you need to go in to each of these files and change the file format preference. You can find the location of these template files in the OmniGraffle preference pane under "Templates."&lt;br /&gt;&lt;br /&gt;Once you have done changed the file format preference on the document templates, you are in business for all future documents created from those templates. This is how you do it.&lt;br /&gt;&lt;br /&gt;1) Go to the OmniGraffle application bundle, right-click, and select "Show Package Contents."&lt;br /&gt;2) Finder will show you the inside of application bundle. Navigate within the application bundle to Contents =&gt; Resources =&gt; Templates. In here, you will find a set of OmniGraffle documents that are used as your default document templates.&lt;br /&gt;3) Open the document template that you want to modify. OmniGraffle launches and shows you the document.&lt;br /&gt;4) Open the Inspector for the document, go to Document Settings under Canvas, and set the document template file's File Format option to "Save as flat file."&lt;br /&gt;5) Save the document template.&lt;br /&gt;&lt;br /&gt;Now, all new OmniGraffle documents created from that document template will also have their default preference set to "Save as flat file" since the template's preference has been set to that setting.&lt;br /&gt;&lt;br /&gt;I hope this helps any other OmniGrafflers out there using Subversion!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8164028012825599966?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8164028012825599966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8164028012825599966&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8164028012825599966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8164028012825599966'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/08/saving-omnigraffle-documents-in.html' title='Saving OmniGraffle Documents in Subversion'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-974536154167169233</id><published>2009-07-16T19:37:00.002-04:00</published><updated>2009-07-16T19:49:37.810-04:00</updated><title type='text'>Holy Crap</title><content type='html'>I've been trying to use Voice Control on my iPhone and thought that it totally sucked. I'd say stuff like "play Crystal Method" and it would get it right about one time out of five. In some cases it would call somebody... awful.&lt;br /&gt;&lt;br /&gt;And then I watched the iPhone commercial on TV and noticed that the phraseology is very specific. You can't say "play Crystal Method", you have to say "play songs by Crystal Method." Apple tried to make this obvious by having Voice Control show you these phrases in a scrolling background, but I'm too stupid to do something complicated like read.&lt;br /&gt;&lt;br /&gt;And once you use the right phrases - damn. I read it a phone number using the "dial" command, and it picked up every digit perfectly.&lt;br /&gt;&lt;br /&gt;Nice job, Apple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-974536154167169233?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/974536154167169233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=974536154167169233&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/974536154167169233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/974536154167169233'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/07/holy-crap.html' title='Holy Crap'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4781531757032133909</id><published>2009-07-13T23:01:00.002-04:00</published><updated>2009-07-13T23:13:37.696-04:00</updated><title type='text'>The iPhone Rules</title><content type='html'>I'm sitting here in bed listening to The Crytal Method's "Tweekend" and typing a blog post on my iPhone, something that would have been totally undoable on the Blackjack that I had before. I'm going to write up a post on my top favorite idiotic behaviors on the Blackjack another time, but for now, suffice to say that it suffers from some of the worst usability issues of any phone I have ever owned.&lt;br /&gt;&lt;br /&gt;iPhone FTW. It took a long time for the planets to align properly for it to make sense for me to own one, so forgive me if I'm late to the party, but so far it definitely seems to have been worth the wait. Anecdotally, the keyboard on the 3GS seems to get my typing better than Jessica's old 3G did...&lt;br /&gt;&lt;br /&gt;More thoughts to come as I get more familiar with my new digital friend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4781531757032133909?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4781531757032133909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4781531757032133909&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4781531757032133909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4781531757032133909'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/07/iphone-rules.html' title='The iPhone Rules'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1746587404493268610</id><published>2009-06-30T12:46:00.003-04:00</published><updated>2009-06-30T12:49:09.531-04:00</updated><title type='text'>Official Wedding Photos</title><content type='html'>I haven't had a chance to upload all the photos to my Flickr account yet, so &lt;a href="http://www.facebook.com/album.php?aid=27845&amp;id=1134137898&amp;l=05d5c63d56"&gt;here are my top (Facebook-enforced) 200 favorites&lt;/a&gt;. If you are looking for an awesome wedding photographer, I highly recommend the guy who shot our wedding - &lt;a href="http://www.imagesbyphilliplloyd.com"&gt;Phillip Lloyd&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We should be getting the video in a few weeks, so I will post that when I have it. In the meantime, enjoy the pics!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1746587404493268610?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1746587404493268610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1746587404493268610&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1746587404493268610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1746587404493268610'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/06/official-wedding-photos.html' title='Official Wedding Photos'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4357448247790882593</id><published>2009-06-30T12:09:00.001-04:00</published><updated>2009-06-30T12:11:17.605-04:00</updated><title type='text'>Prepare to Feel Old</title><content type='html'>13-year-old trades iPod for original Sony Walkman; &lt;a href="http://news.bbc.co.uk/2/hi/uk_news/magazine/8117619.stm"&gt;hilarity ensues&lt;/a&gt; (via &lt;a href="http://www.engadget.com/2009/06/29/13-year-old-trades-ipod-for-walkman-reports-on-mysterious-ancie/"&gt;Engadget&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4357448247790882593?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4357448247790882593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4357448247790882593&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4357448247790882593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4357448247790882593'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/06/prepare-to-feel-old.html' title='Prepare to Feel Old'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1394141989361517902</id><published>2009-06-15T20:59:00.003-04:00</published><updated>2009-06-15T21:02:07.193-04:00</updated><title type='text'>Autocomplete="off" Still Pisses Me Off In Safari 4</title><content type='html'>A while back, I blogged about &lt;a href="http://www.maximporges.com/2009/04/autocompleteoff-pisses-me-off.html"&gt;how I hate autocomplete="off"&lt;/a&gt;. While I'm loving the new Safari 4, unfortunately the upgrade process from Safari 3 overwrote my patched version of WebCore, which was previously set to ignore this idiotic HTML attribute.&lt;br /&gt;&lt;br /&gt;Luckily, the &lt;a href="http://magicpubs.com/mac/software/autocomplete/"&gt;Autocomplete Always On!&lt;/a&gt; script still works on Safari 4, so have at it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1394141989361517902?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1394141989361517902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1394141989361517902&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1394141989361517902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1394141989361517902'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/06/autocompleteoff-still-pisses-me-off-in.html' title='Autocomplete=&quot;off&quot; Still Pisses Me Off In Safari 4'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1062231343279665424</id><published>2009-06-06T10:15:00.008-04:00</published><updated>2009-06-06T11:32:06.591-04:00</updated><title type='text'>How To Become A Software Engineer/Programmer</title><content type='html'>&lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=259358"&gt;Bruce Eckel&lt;/a&gt; just posted a blog post about how to get in to a career in computing. He starts by posing the question "should I learn C++ or Java?" and throughout the post indicates how thoroughly irrelevant that question is to a successful computing career.&lt;br /&gt;&lt;br /&gt;It's a great article overall, but based upon my experience, I think this statement Bruce makes in his post rings truest.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"When the Internet was first booming, all you had to do was spend some time learning HTML and you could get a job and earn some pretty good money. When things turned down, however, it rapidly becomes clear that there is a hierarchy of desirable skills, and the HTML programmers (like the laborers and sheet rockers) go first, while the highly-skilled code smiths and carpenters are retained.&lt;br /&gt;&lt;br /&gt;What I'm trying to say here is that you don't want to go into this business unless you are ready to commit to lifelong learning. Sometimes it seems like programming is a well-paying, reliable job -- but the only way you can make sure of this is if you are always making yourself more valuable."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;He also lists the output of a seminar where participants highlighted qualities in ideal job candidates for software developers.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"There is no right answer ... and always a better way. Show and discuss your code, without emotional attachment. You are not your code."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I've worked with a lot of different programmers in my career, and I've found that the best ones had these two qualities Bruce describes in common: a commitment to lifelong learning and emotional separation from their code.&lt;br /&gt;&lt;br /&gt;The guys I worked with who had not committed themselves to lifelong learning typically fell in to the category of people who learned a language because programming jobs in that language were hot at the time they got in. If these are your motivations for becoming a programmer, I have very simple advice for you: choose another career.&lt;br /&gt;&lt;br /&gt;People who learn one hot language just to get a job mostly find themselves ten or more years later as one-trick ponies on outdated software platforms. Since they have no real interest in learning anything else, there's a huge degree of insecurity associated with learning anything new, which has a direct impact on how they react to ideas to improve their trade. This is easy to spot; instead of welcoming alternative approaches for their merits and engaging in debate, these guys are the ones who will dig their heels in against change and do everything they can to maintain the status quo, regardless of whether or not the solutions are meeting the needs of the end users/software requirements. This is a one-way ticket to a dead-end career.&lt;br /&gt;&lt;br /&gt;I like to consider myself in the other camp, which is programmers who embrace the lifelong learning process. However, I also try to be realistic about my ability to stay in this camp for the long term; there are trade-offs to both career choices.&lt;br /&gt;&lt;br /&gt;To be clear, I love writing software more than anything else about my work, but I also enjoy the occasional breaks from the "grind" when my management responsibilities take center stage. In short, writing high-quality software requires a ton of focus and discipline, and unless you take constant pleasure in this you will find yourself hating your job. When you hear about engineers getting burned out, it's usually due to being forced to stay in a focused state for an extended period of time. Both (a) the need to constantly change your methods and approaches, and (b) to learn entirely new languages to produce the best solutions and leave your old skills behind require a huge commitment both personally and professionally. Case in point, after ten years in the field, I'll be learning Groovy from one of the guys on my team next week since we determined that the Grails platform will be the best thing to support our web service endpoints.&lt;br /&gt;&lt;br /&gt;While I don't know when (if ever) I will get burned out, I could definitely see myself leaving coding behind one day in the future. I'd still be involved with software, but I would replace coding with more managerial responsibilities, perhaps focusing more on software team management or product management needs. If that day ever comes, I think I'll always be a tinkerer; after all, if you love programming, that love stays with you forever. I learned last week that my periodontist used to be a UNIX programmer before he got burned out, and he still messes around with coding on the weekends.&lt;br /&gt;&lt;br /&gt;I had a chance to get out of coding earlier in my career, when I took on a senior management position. It's a lot easier to manage software than to produce it as your personal output, and in a different company I probably would have stayed with the management role. However, the company I worked for was not a technology company, and this meant that I spent more time managing the concerns of the business than the development of their software. Since my passion is ultimately for software, I just didn't care about my career continuing in that direction. I've since made the switch to work in the tech sector, and can now honestly say that if I was given the choice between a career developing software in the non-tech sector and switching careers, I would switch careers. So, even if I end up in a primarily managerial role in the future, it will be for a tech company.&lt;br /&gt;&lt;br /&gt;In closing, my advice for budding software engineers is this.&lt;br /&gt;&lt;br /&gt;1) Know that you love software before you commit to it. You'll know when you take your first pseudocode class: a clear division forms between the people who get it and the people who don't. If you're in the "don't" section, choose another career.&lt;br /&gt;&lt;br /&gt;2) If you don't like teaching yourself new things, the skills you learn today will be irrelevant in less than a decade. Accept the commitment to learn throughout your career as a coder, or accept your eventual fate as a has-been.&lt;br /&gt;&lt;br /&gt;3) College degrees matter less than hands-on knowledge and time spent at the keyboard. I outpaced my entire class in college because I bought my own programming books that deviated from the coursework, and as a result I learned things they were not teaching in school.&lt;br /&gt;&lt;br /&gt;4) College degrees still matter. There was a lot of stuff I missed in my two-year AS degree at a community college that I ended up learning either through experience, or by rubbing shoulders with colleagues with four-year CS degrees. If you can't make it through four years of school, make sure you pick up a book on programming algorithms and learn the classics before you hit the workforce.&lt;br /&gt;&lt;br /&gt;5) Early on, decide if you want to focus on application development or software engineering. Application development deals with making user interfaces, interfacing different systems together, solving business process problems, and exposing applications to the outside world (i.e. web services and other remoting techniques). Software engineering deals with creation of utilities and processes that support information processing, tends to be more math intensive, requires a lower-level understanding of the trade, and rarely deals with the systems that expose the software to an end user. There are core differences in these two disciplines and 100 shades in between, so figure out what you like.&lt;br /&gt;&lt;br /&gt;6) Once you know what you want to do, seek a job that puts you in an apprenticeship role with an actual person as  your mentor. Companies that support co-op programs and allow you to learn from a mentor while contributing to a team produce the best engineers. If you find that you are plugged in to a position like a cog in a big machine, and have "ivory tower" designers/architects handing out instructions without teaching you the "why", find another job.&lt;br /&gt;&lt;br /&gt;7) If you decide to program software for a company whose core business is not technology, know that in most of these companies the quality of the software is not important, and your role in the organization is considered expendable. In these companies, IT is usually the first department to get cut when things go south, and you will sometimes be forced to make crippling compromises in the quality of your applications to meet short-term business needs. That being said, you will often get the opportunity to directly impact the work of people who you see regularly and share in the success of the businesses your software supports, so there are tangible rewards to this avenue.&lt;br /&gt;&lt;br /&gt;8) If you decide to program software for a company that sells their technology, they tend to treat their engineers better than corporate IT shops, and cut their engineering staff last when things get bad. On the flip side, in tech companies there is a lot more pressure to produce and meet deadlines; if the software doesn't get produced, there is nothing  to sell, and the company goes under. You will also be less connected to the people who use your software since they often don't work for the same company.&lt;br /&gt;&lt;br /&gt;9) The languages you can program in do not define your capabilities as an engineer, but they do determine how easy it is to achieve the goals you are tasked with. A language like C++ produces the highest-performance software, but becomes riddled with complexity when you want to use it to produce user interfaces or deal with cross-platform applications. Languages like Java and C# are great for producing applications, but can't match the raw speed of C++. Almost all the GUI toolkits are a pain in the ass, but are a necessary evil to produce end-user applications (if you can't stand pushing pixels around all day, don't become an application developer). Dynamic languages are more flexible and easier to make mistakes with; compiled languages tend to be faster and more precise, but can sometimes make you feel like you are wearing handcuffs. My recommendation would be to learn C, plus either Java/C#, at least one web-development UI language (Flex, XHTML + JavaScript, etc.), and at least one dynamic language; you will learn things from each that make your mastery of the others more complete. They will also help you learn what your preferences are, and help you decide what you want to specialize in.&lt;br /&gt;&lt;br /&gt;These thoughts are obviously just my own experiences, but hopefully you will find them useful if you are considering getting in to the field. Whatever you decide, if you love programming in school or as a hobby I can assure you that you will also love it as a job. I wake up every morning and can't wait to get to work to fire up my IDE and knock out some more code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1062231343279665424?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1062231343279665424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1062231343279665424&amp;isPopup=true' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1062231343279665424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1062231343279665424'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/06/how-to-become-software.html' title='How To Become A Software Engineer/Programmer'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6049667613983330467</id><published>2009-05-18T13:11:00.002-04:00</published><updated>2009-05-18T13:13:22.117-04:00</updated><title type='text'>More "Flex" to "Flash" Worries</title><content type='html'>Pursuant to the renaming of Flex Builder to Flash Builder, I just posted the following comment to &lt;a href="http://theflashblog.com/?p=998"&gt;this article on The Flash Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;hr noshade/&gt;&lt;br /&gt;&lt;br /&gt;I don't really care what Adobe calls the tools, but it goes without saying that there is a clean separation of skill set between Flex and Flash developers. In fact, Adobe and Macromedia both did an admirable job of pointing this separation out at length when promoting Flex to the enterprise development community. I can only imagine that the companies chose to do this because of the Flash IDE's image in the developer community as a tool for making animations and non-enterprise apps - a perception which frankly still holds true for Flash developers not using the Flex toolset.&lt;br /&gt;&lt;br /&gt;For everybody who already uses Flash and Flex, renaming Flex Builder to Flash Builder is not going to cause any serious issues; we understand the roles of both tools and can differentiate. Where the name change will be confusing is with future students and professionals evaluating Flash and Flex for the first time, and trying to decide which tool set they need to master and for what purpose. &lt;br /&gt;&lt;br /&gt;What I am most concerned about as a Flex developer is Adobe's recent moves to blur the previously-clear definition between Flash media and Flash enterprise development skill sets. If Adobe continues this trend and decides to abolish the Flex name altogether and call it "Flash Enterprise" or something like that, people like me who develop purely with the Flex framework are going to have a much harder time targeting relevant employment opportunities. This will be just as difficult for Flash developers targeting rich media/non-Flex opportunities. The two specializations are individually necessary and distinct for different kinds of work, regardless of the platform's capabilities.&lt;br /&gt;&lt;br /&gt;You stated the following in your post: "We as a community need to spread the word about what Flash really is now." So, what is Flash now? As far as I can tell, it's the same as it has always been: the most pervasive platform for running rich, interactive applications. There are two common ways to do that: using the Flash IDE and working in a media-centric fashion on the timeline, or writing script-and-tag-based applications using the Flex framework. There are other less-common ways, such as generating Flash content programmatically using any of the many commercial and open-source authoring libraries. Renaming Flex Builder to Flash Builder doesn't change any of these facts, doesn't change what the Flash platform can do, and doesn't spread the word any further about what the Flash platform is capable of.&lt;br /&gt;&lt;br /&gt;I must ask: is this apparent need to change perception about the capabilities of the Flash Player really the purpose for renaming Flex Builder to Flash Builder? Is this the same reason behind renaming Flex Camps to Flash Camps? If so, then I'll ask Adobe to please stop now. Adobe and Macromedia poured tons of marketing dollars in to promoting Flex development as a different activity from Flash development, and with good reason: they are different activities targeting different skill sets. Clearly Adobe agrees that this is the case, or they wouldn't have two separate tools targeting each activity.&lt;br /&gt;&lt;br /&gt;Call the tools whatever you like, but unless the goal is to merge all the Flash-related tools and skill sets altogether (a horrible idea for reasons already outlined), please keep the differentiation between Flash and Flex development apparent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6049667613983330467?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6049667613983330467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6049667613983330467&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6049667613983330467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6049667613983330467'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/05/more-flex-to-flash-worries.html' title='More &quot;Flex&quot; to &quot;Flash&quot; Worries'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1632400002588192661</id><published>2009-05-16T12:06:00.005-04:00</published><updated>2009-05-16T12:15:55.519-04:00</updated><title type='text'>Apparently I'm Becoming a Flash Developer</title><content type='html'>I just found out that Flex Builder 4 is being named Flash Builder 4, and the &lt;a href="http://www.flashcamporlando.com"&gt;micro-conference&lt;/a&gt; that I'm speaking at this month that would usually be referred to as a Flex Camp is instead a Flash Camp.&lt;br /&gt;&lt;br /&gt;WTF? Unless they are integrating the Flash tools from the Creative Suite in to Flex Builder, I have no idea why they are calling it Flash Builder. Once again, marketing defies logic.&lt;br /&gt;&lt;br /&gt;Perhaps Adobe will explain the situation at some point.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE:&lt;/b&gt; The Flash Blog attempts to &lt;a href="http://theflashblog.com/?p=993"&gt;clear up the matter here&lt;/a&gt;. I still don't get it. This statement in particular by the author (in the comments) puzzles me:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"@Everyone I can guarantee that the Flash IDE is not going away. I don’t know what else to say to convince you. I’m not one to BS my readers so I hope you will trust me on this."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So, now we have two products, the Flash IDE and Flash Builder... great. That's not confusing at all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1632400002588192661?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1632400002588192661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1632400002588192661&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1632400002588192661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1632400002588192661'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/05/apparently-im-becoming-flash-developer.html' title='Apparently I&apos;m Becoming a Flash Developer'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6247761748255645357</id><published>2009-05-16T08:44:00.004-04:00</published><updated>2009-05-16T09:23:39.949-04:00</updated><title type='text'>Crystal Method @ House Of Blues (May 15th, 2009)</title><content type='html'>Kyle and I caught The Crystal Method show yesterday. I forgot my little Sanyo HD video camera that I usually sneak in to concerts, but I got &lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618139662991/show/"&gt;a few half-decent shots with my phone&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I saw these guys at HOB about seven years ago, and they put on a decent show then, but the one last night was arguably the best show I have ever seen. The guys had loads of energy, and they played a great mix of tracks from their new album while mixing in the old classics.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Performing Live&lt;/b&gt;&lt;br /&gt;For a hobbyist electronic musician like myself, it was interesting checking out their kit and the way they set up their live set. We were up in VIP so I got &lt;a href="http://www.flickr.com/photos/22985469@N05/3535519224/sizes/l/in/set-72157618139662991/"&gt;a pretty good picture of their kit&lt;/a&gt; from the side of the stage. Scott Kirkland is stage right, and Ken Jordan stage left.&lt;br /&gt;&lt;br /&gt;The duo seemed to run 85-90% of their set off of sequencers, mainly the beats and the bassline/backing and vocal samples. Scott had two microphones, one set up with a vocoder where he did a little yelling on one of the new tracks. Scott spent most of the set playing the lead parts of TCM's various tracks, while Ken played supporting parts, except for a few tracks like "Keep Hope Alive" where Scott was playing the driving arpeggio and Ken played the lead. Between lead parts, Scott would also go to the rack and twiddle the filters on a filter bank of some kind; I know I have seen the model reviewed in &lt;a href="http://www.sospubs.co.uk"&gt;Sound On Sound&lt;/a&gt; before but I couldn't remember the name of it.&lt;br /&gt;&lt;br /&gt;TCM are huge fans of two synthesizers that make up the majority of their set, and have defined their sound for years: the &lt;a href="http://www.nordkeyboards.com/main.asp?tm=Products&amp;clpm=Nord_Lead_2X&amp;clnlm=Information"&gt;Nord Lead&lt;/a&gt; (the red synth to Scott's left) and the &lt;a href="http://www.alesis.com/andromeda"&gt;Alesis Andromeda&lt;/a&gt; (the big one with loads of knobs to Scott's right). Scott also has what looks like either a drum machine or sampler between the Andromeda and his mixer, and then both guys had &lt;a href="http://www.m-audio.com/products/en_us/AxiomPro49.html"&gt;M-Audio Axiom&lt;/a&gt; controller keyboards. Scott also had an &lt;a href="http://www.m-audio.com/products/en_us/TriggerFinger.html"&gt;M-Audio Trigger Finger&lt;/a&gt; (hidden under his controller keyboard in my shot), presumably for firing samples. Finally, they had some guitar effects pedals/pedalboards, most notably a &lt;a href="http://www.procosound.com/?page=viewprod&amp;cat=150&amp;id=741"&gt;ProCo RAT&lt;/a&gt; that Scott had balanced on top if his Nord Lead and was firing off by giving it a solid bash occasionally.&lt;br /&gt;&lt;br /&gt;One synth that Scott had that I did not recognize was an &lt;a href="http://www.arturia.com/evolution/en/products/origin/intro.html"&gt;Arturia Origin&lt;/a&gt; (mounted above the drum machine in the shot). I couldn't really tell what sounds this was producing during the set, but I imagine they were using it as a filter bank.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Running the Set&lt;/b&gt;&lt;br /&gt;The duo seemed to be set up with their whole rig time-synchronized, and since they didn't seem to do much set up between songs I can only imagine that they program their set in to their sequencer, and have it fire off program changes to all the synths on stage at the appropriate time in order to have the lead/support sounds ready to roll.&lt;br /&gt;&lt;br /&gt;Each had a late 2008 MacBook Pro on their rig, so my guess would be that Scott's was running the sequences and Ken's was running software synths, unless they had both computers slaved to each other and playing sequences which I would find unlikely. As for the sequencer, it looked like Scott had &lt;a href="http://www.apple.com/logicpro/"&gt;Apple Logic&lt;/a&gt;'s mixer view up on his laptop, but it could also have been &lt;a href="http://www.ableton.com/"&gt;Ableton Live&lt;/a&gt; - I wasn't able to get a good enough shot to zoom in and figure it out. Ken's screen was not facing the audience.&lt;br /&gt;&lt;br /&gt;Scott really drives the show with the lead synths. He's a big fan of filter tweaking on stage, and used his mixer to manage the volume of whatever he was messing with so that the audience could hear it as he was doing it. Most of the interaction for the show came from Scott, and I must say he did an awesome job.&lt;br /&gt;&lt;br /&gt;Overall, it was an awesome show, and most of what I have posted up here is a guess about their set, but an educated guess at least. Enjoy the pics, and make sure you check out TCM on their tour and their new album &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?id=312157069&amp;s=143441"&gt;Divided By Night (links to iTunes)&lt;/a&gt; if you are so inclined.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6247761748255645357?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6247761748255645357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6247761748255645357&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6247761748255645357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6247761748255645357'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/05/crystal-method-house-of-blues-may-15th.html' title='Crystal Method @ House Of Blues (May 15th, 2009)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1706831332168401515</id><published>2009-05-14T17:28:00.002-04:00</published><updated>2009-05-14T17:35:35.557-04:00</updated><title type='text'>Honeymoon Pics</title><content type='html'>Jessica and I toured the Western Mediterranean for 10 days for our honeymoon, visiting Italy, Spain, Monaco, Tunis, and Capri on the way. We had a great time everywhere, although Capri was our favorite.&lt;br /&gt;&lt;br /&gt;If you are so inclined, I invite you to check out the pics. We had two days at sea, which I didn't take many pictures during, so the links below are mainly for the ports of call and the time we spent in Rome on both ends of the cruise.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618106448668/show/"&gt;Day 1: First Day in Rome&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618018634017/show/"&gt;Day 2: Transfer to Civitavecchia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618018716509/show"&gt;Day 3: Florence and San Miniato&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618107238592/show/"&gt;Day 4: Monaco/Monte Carlo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618107784512/show/"&gt;Day 5: Barcelona&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618020113369/show/"&gt;Day 6: Carthage and Sidi Bou Said&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618108506744/show/"&gt;Day 7: Sicily and Palermo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618108987900/show/"&gt;Day 8: Capri&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157618109562016/show/"&gt;Day 9: Last Day in Rome&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1706831332168401515?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1706831332168401515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1706831332168401515&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1706831332168401515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1706831332168401515'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/05/honeymoon-pics.html' title='Honeymoon Pics'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4056931990349775553</id><published>2009-05-12T19:23:00.002-04:00</published><updated>2009-05-12T19:27:05.153-04:00</updated><title type='text'>Access Virus OS 3.1 Released</title><content type='html'>Access Music just released &lt;a href="http://www.virus.info/downloadvirusos.php4"&gt;the latest OS for their Virus synth line&lt;/a&gt;, which totally rocks. I'm getting ready to install it now so I will let you know how it goes. It's been in beta for a few months so I expect it is stable by now.&lt;br /&gt;&lt;br /&gt;Access has also set up &lt;a href="http://vimeo.com/accessmusic/videos/sort:date"&gt;a Vimeo channel&lt;/a&gt;, including some great jam sessions with their gear from past music events. &lt;a href="http://vimeo.com/4563171"&gt;This is a link to the shorter one&lt;/a&gt; if you want to get a sampling of what to expect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4056931990349775553?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4056931990349775553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4056931990349775553&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4056931990349775553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4056931990349775553'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/05/access-virus-os-31-released.html' title='Access Virus OS 3.1 Released'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1955297791978929269</id><published>2009-05-12T18:57:00.002-04:00</published><updated>2009-05-12T19:12:30.453-04:00</updated><title type='text'>Flash Camp Orlando</title><content type='html'>After &lt;a href="http://www.maximporges.com/2009/03/flex-camp-miami-roundup.html"&gt;a great event in Miami&lt;/a&gt;, the Flex community is doing it again with &lt;a href="http://flashcamporlando.com"&gt;Flash Camp Orlando&lt;/a&gt;. Don't be put off by the name - this is a Flex conference through and through, with the name being driven by some arcane motivations from deep within Adobe's marketing department. However, since Adobe is sponsoring the event, they could call it Giant Lollypop Tomfoolery and I'd still be happy to support it.&lt;br /&gt;&lt;br /&gt;The event is taking place on May 29th, 2009 with an early bird special available until 5/15. There are going to be &lt;a href="http://events.universalmind.com/page.cfm/flash-camp-orlando-2009/flash-camp-orlando-2009-speakers"&gt;some great speakers&lt;/a&gt; there (with the exception of me, since I am a total ass hat). You'll get to see brand new content plus a few popular topics being repeated from the Miami event.&lt;br /&gt;&lt;br /&gt;So what's the vig? We're talking $35 with the early bird for an all-day event including parking and lunch. That's a steal - even more so if you get lucky and you end up with a prize worth more than the entry price, and Adobe always comes through with loads of great prizes so the chances are high that you will walk away with a little something-something (or even a big one - some lucky fellow got a full Adobe Creative Suite package at the Miami event!).&lt;br /&gt;&lt;br /&gt;If you are even remotely interested in or involved with Flex development I highly recommend you &lt;a href="http://events.universalmind.com/page.cfm/flash-camp-orlando-2009/flash-camp-orlando-2009-registration"&gt;register right away&lt;/a&gt;. I'll see you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1955297791978929269?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1955297791978929269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1955297791978929269&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1955297791978929269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1955297791978929269'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/05/flash-camp-orlando.html' title='Flash Camp Orlando'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3602626976794835395</id><published>2009-04-27T08:32:00.003-04:00</published><updated>2009-04-27T08:35:51.090-04:00</updated><title type='text'>Unofficial Rehearsal and Wedding Pics</title><content type='html'>Jessica and I got married over the weekend. I'll be blogging more about how awesome the wedding was when I get back from the honeymoon (which we're leaving for this afternoon), but &lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157617293765777/"&gt;here's a sample of pics&lt;/a&gt; taken over the weekend by friends and family while we wait on the official photos. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;object type="text/html" data="http://www.flickr.com/slideShow/index.gne?user_id=22985469@N05&amp;set_id= 72157617293765777" width="460" height="500"&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3602626976794835395?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3602626976794835395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3602626976794835395&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3602626976794835395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3602626976794835395'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/unofficial-wedding-pics.html' title='Unofficial Rehearsal and Wedding Pics'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5145874169781696023</id><published>2009-04-22T21:26:00.002-04:00</published><updated>2009-04-22T21:31:47.245-04:00</updated><title type='text'>autocomplete="off" Pisses Me Off</title><content type='html'>I really hate it when software dictates preferences to me. I'd noticed that some of the web sites I visit did not autofill credentials, and had always assumed it was a bug in the way Safari dealt with figuring out the autofill details. However, I looked at the source for a payment web site today and saw the property &lt;i&gt;autocomplete="off"&lt;/i&gt; in the form fields, which Safari respects.&lt;br /&gt;&lt;br /&gt;F*** that. I lock my computer every time I am away from it, have a FileVault encrypted drive, and have all my passwords locked up in my secure OS X keychain. Why the people who program the web site think they have to force me to follow their security practices is beyond me.&lt;br /&gt;&lt;br /&gt;Luckily, there is &lt;a href="http://magicpubs.com/mac/software/autocomplete/"&gt;a patch for Safari&lt;/a&gt; on OS X that gets around this. It runs a perl script which changes the pattern that the underlying WebCore software searches for, rendering the form field attribute useless. I just ran it on OS X 10.5.6 with Safari 3.2.1 and it works great.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5145874169781696023?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5145874169781696023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5145874169781696023&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5145874169781696023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5145874169781696023'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/autocompleteoff-pisses-me-off.html' title='autocomplete=&quot;off&quot; Pisses Me Off'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6212691313701395530</id><published>2009-04-20T00:29:00.002-04:00</published><updated>2009-04-20T00:55:11.557-04:00</updated><title type='text'>Client-Side Data Synchronization with Flex and BlazeDS</title><content type='html'>As a Flex developer, unless you have been living under a rock for the last four years you know that LiveCycle Data Services offers Data Synchronization. This is implemented as a server-side product, and allows you to quite easily manage concurrent data access for many clients connected to the same server.&lt;br /&gt;&lt;br /&gt;But what if you need more than a single server? Cluster, you might say. Unfortunately, that doesn't really work at any serious scale.&lt;br /&gt;&lt;br /&gt;At Highwinds, we build everything to scale to ridiculous levels because we're a CDN and that's how we roll. As a result, we use a lot of eventually consistent systems and design every component to scale horizontally. So, when we took to designing the next generation of the StrikeTracker platform, we wanted data synchronization and conflict resolution but we (a) didn't want to manage it statefully at the server tier and (b) didn't want to pay Adobe a bunch of money for LCDS just yet.&lt;br /&gt;&lt;br /&gt;So, we decided to implement client-side data sync. In essence, it boils down to the following elements.&lt;br /&gt;&lt;br /&gt;1) Whenever a client wants to change data (i.e. add something new, change something, delete something), it calls the server tier using RPC via RemoteObject.&lt;br /&gt;&lt;br /&gt;2) The server completes the call in a transaction against a replicated MySQL instance set up in master-slave configuration with hot failover. When the server call completes, the modification to the object has been persisted and a version number on the object has been incremented.&lt;br /&gt;&lt;br /&gt;3) The calling client receives a response saying "yep, the server processed your request - hold for confirmation from the message bus." The object that was just processed by the server is placed in to a "limbo" state by the client.&lt;br /&gt;&lt;br /&gt;4) Using AOP, "after" advice is applied to the server-side component to dispatch a message to our message bus indicating what just happened.&lt;br /&gt;&lt;br /&gt;5) All clients are connected to one of many BlazeDS servers, which are in turn listening to command-and-control channels on our message bus for messages from all BlazeDS servers. All the BlazeDS servers eventually get the messages dispatched by their peers indicating which changes happened on other clients in the system via the message bus's flood-fill algorithm.&lt;br /&gt;&lt;br /&gt;6) As the BlazeDS servers receive the messages from the bus, they push them to their clients. The clients then compare the type of message (new, change, or delete) with a collection of objects of the same type in their local memory, looking for matches based upon unique object IDs.&lt;br /&gt;&lt;br /&gt;7) If a match is found, the clients do some comparisons between version numbers to figure out if they have the latest version of the data or not. If they don't have the latest data, they can react to conflicts much like LCDS does today. If the client which caused the original request to be processed receives confirmation from the bus that its message was broadcast to everybody, it takes its local copy out of limbo state indicating to the user that the process has finished executing.&lt;br /&gt;&lt;br /&gt;The system works on the principle of every object being uniquely identifiable by ID and class type, and being versioned in an ever-increasing fashion. By using a client-side controller mechanism for requesting data changes and putting the controller in charge of all RPC communication, message bus listening, and data management, we've come up with a very robust model for dealing with data synchronization on the client side.&lt;br /&gt;&lt;br /&gt;We can also give the client immediate feedback regarding their pending requests, and know that all clients will see the same data appear near-simultaneously. In the case where we have network latency or issues for clients in different parts of the world, the clients are built smart enough to deal with the latencies. Finally, we can use the approach without having to use JMS, which means one less server component - and if you already have a message bus (like we do) then you'll know how nice it feels not to have to light up yet another one.&lt;br /&gt;&lt;br /&gt;We're currently coding the implementation and expect to have it working this week, and after we get it going I expect to discuss it further on my blog. There's certainly a fair bit of code to handle corner cases and concurrency issues, so I'm not sure how proprietary this approach is going to be, but I'm hoping that if we get it working I will be able to get permission to open source it to the community. In light of the fact that LCDS's approach does not make sense for all use cases, this seems like something that a lot of people could put to use.&lt;br /&gt;&lt;br /&gt;I'll keep you all posted as we go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6212691313701395530?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6212691313701395530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6212691313701395530&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6212691313701395530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6212691313701395530'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/client-side-data-synchronization-with.html' title='Client-Side Data Synchronization with Flex and BlazeDS'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6792180202652998292</id><published>2009-04-14T20:15:00.007-04:00</published><updated>2009-04-14T21:02:36.723-04:00</updated><title type='text'>First Year At Highwinds</title><content type='html'>I can't believe it's been a year already. I'm told that the calendar doesn't lie.&lt;br /&gt;&lt;br /&gt;And what a year it has been. 2008 was a lot of figuring out how to bend Flex further to my will, lots of bug fixing and feature development for StrikeTracker 1.x, and staffing up my team. 2009 has been a lot of ground-up software development on StrikeTracker 2.x, lots of bending Java/Spring/Hibernate/BlazeDS to my will, and a ton of much harder (and infinitely more enjoyable) work than 2008 had to offer. I wouldn't take any of it back, besides &lt;a href="http://mtalavera.wordpress.com/2009/03/30/read-last-page/"&gt;having to lay Mario off&lt;/a&gt;, which was the hardest thing I've had to do in my career.&lt;br /&gt;&lt;br /&gt;That being said, I have no regrets for joining Highwinds - quite the opposite, in fact. Not only do I love what I'm doing, but I got my life/work balance back and was able &lt;a href="http://www.maximporges.com/2008/08/on-personal-note.html"&gt;to get engaged&lt;/a&gt; (wedding's in two weeks!) and &lt;a href="http://loom.ninjitsoft.com/"&gt;almost finish an open source project&lt;/a&gt; in my free time.&lt;br /&gt;&lt;br /&gt;I am a lucky, lucky bastard. I wake up every day stoked to come to work. After a full day of creating bugs for Russ and Brian to fix and managing the team badly, I often find myself driving home astonished that I can get paid to do something I enjoy so much with people I respect so thoroughly. Ever since I discovered programming in college, I've wanted to work with people who get it in a place with zero politics, zero bullshit, and the pure intent to write line after line of ass-kicking, money-making software. I've been given the opportunity to do so and I count myself undeservedly lucky for it every day.&lt;br /&gt;&lt;br /&gt;So, thanks again to Chris and Josh for seeing past my flaws and letting me join the company, and to Brian and Russ for putting up with me and being an awesome team. The first year was great; I hope I can do you guys proud in 2009 and beyond.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6792180202652998292?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6792180202652998292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6792180202652998292&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6792180202652998292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6792180202652998292'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/first-year-at-highwinds.html' title='First Year At Highwinds'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8987510342071605139</id><published>2009-04-10T12:39:00.003-04:00</published><updated>2009-04-10T12:44:38.501-04:00</updated><title type='text'>Loom Lives!</title><content type='html'>I just posted &lt;a href="http://loom.ninjitsoft.com/?p=45"&gt;an entry on the Loom blog&lt;/a&gt; about how I now have working AOP proxying in AS3 via Loom. If you are interested in following the development of Loom, I recommend that you subscribe to that blog because that's where all the action will be.&lt;br /&gt;&lt;br /&gt;It's really satisfying to get this working. The problem with the AVM spec is that you can't really implement any of it without implementing all of it, so most of the time I have been working on Loom has been with an eye towards something cool happening eventually. Now that it's working, I'm on cleanup street, and then we'll have a public beta within a week or so.&lt;br /&gt;&lt;br /&gt;Stay tuned to the &lt;a href="http://code.google.com/p/loom-as3"&gt;Loom project site&lt;/a&gt; for the public beta, and the &lt;a href="http://loom.ninjitsoft.com"&gt;Loom Blog&lt;/a&gt; for updates. Also, if you want to get in on the private alpha, &lt;a href="http://loom.ninjitsoft.com/?page_id=38"&gt;hit me up&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8987510342071605139?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8987510342071605139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8987510342071605139&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8987510342071605139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8987510342071605139'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/loom-lives.html' title='Loom Lives!'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4311661590106691990</id><published>2009-04-07T01:37:00.002-04:00</published><updated>2009-04-07T01:45:06.042-04:00</updated><title type='text'>Loom Looms On The Horizon</title><content type='html'>Great news - &lt;a href="http://code.google.com/p/loom-as3"&gt;Loom&lt;/a&gt; is at the point where I can p0wn the ActionScript Virtual Machine; it is, as they say, my bitch.&lt;br /&gt;&lt;br /&gt;I spent the evening plugging in some dynamic proxying love, and the results are awesome. I've got a few more tasks on my plate, but the Loom API is working great and the AVM is slurping up Loom's dynamically weaved bytecode without complaining. &lt;br /&gt;&lt;br /&gt;I'm highly confident I'll have a working AOP proxy by the week's end. In the interim, I've been able to take a template ABC (ActionScript Bytecode) file and enhance it by adding method and slot traits. I was able to introduce a Dictionary to the class (which it did not have when it was originally compiled) and access/manipulate it via a custom Loom namespace. I also wove in a new method that was not there before, and added the appropriate opcodes (basically the AVM's assembly language) to trace a message to the world from Loom.&lt;br /&gt;&lt;br /&gt;With all that now working, I'm off to bed. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4311661590106691990?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4311661590106691990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4311661590106691990&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4311661590106691990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4311661590106691990'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/loom-looms-on-horizon.html' title='Loom Looms On The Horizon'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-924314879203068239</id><published>2009-04-05T18:46:00.003-04:00</published><updated>2009-04-05T18:48:53.445-04:00</updated><title type='text'>A Peek Under The Tamarin Hood</title><content type='html'>I love little details about the inner workings of platforms, like this snippet from Mason Chang about &lt;a href="http://www.masonchang.com/2009/04/native-methods-in-tamarin.html"&gt;Tamarin and native methods&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Even though all I wanted was a little AOP love, I've ended up learning a ton about virtual machines and ActionScript itself from &lt;a href="http://code.google.com/p/loom-as3"&gt;Loom&lt;/a&gt;. Which is two utilities away from being finished, I might add - I started on ProxyFactory this weekend and SwfEnhancer is the last piece of the puzzle... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-924314879203068239?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/924314879203068239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=924314879203068239&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/924314879203068239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/924314879203068239'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/peek-under-tamarin-hood.html' title='A Peek Under The Tamarin Hood'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6602014485775177331</id><published>2009-04-05T18:19:00.004-04:00</published><updated>2009-04-05T18:39:15.572-04:00</updated><title type='text'>On Bad Parkers and Police States</title><content type='html'>Since I own a larger-than-average vehicle that I am typically able to park in a single space without issue, &lt;a href="http://xkcd.com/562/"&gt;this one struck a chord&lt;/a&gt;. I am amazed by how many people can't get an average size car in to a single spot.&lt;br /&gt;&lt;br /&gt;And while we're on traffic-related items, &lt;a href="http://www.youtube.com/user/JimmyJustice4753"&gt;Jimmy Justice&lt;/a&gt; is my new hero. I had MSNBC on yesterday as background noise while I was cleaning up the lower half of the house, and I saw a special on this guy and other "video vigilantes." &lt;br /&gt;&lt;br /&gt;Jimmy Justice hangs out around New York catching cops and city officials on camera as they blatantly disregard the laws that they ticket everybody else for breaking. I have nothing against cops when they are keeping us safer and upholding useful and sensible laws, but I do believe that 90% of traffic/parking tickets are total bullshit, imposed at the whim of the officer issuing the infraction and very infrequently actually causing anything useful to happen other than revenue to flow in to the coffers of the local city council. Frankly, I'd rather they just taxed me more and let me do whatever the hell I want on the road; the only place speed limits make any sense is adjacent to and within residential areas.&lt;br /&gt;&lt;br /&gt;I have often thought about whipping out my video camera and grabbing shots of state troopers doing 90+ on the FL Turnpike or speeding down I-4, and I wish I had had my camera on me yesterday night when a cop turned on his lights to run a red light and make a turn instead of waiting for the light to change like the rest of us have to (and no, it wasn't an emergency because he turned his lights off as soon as he cleared the intersection). This is exactly the kind of hypocrisy that gives lawmakers and cops a bad rep.&lt;br /&gt;&lt;br /&gt;On a more serious note, I was sent a news article recently by a friend that discussed how &lt;a href="http://www.prisonplanet.com/uk-terror-law-to-make-photographing-police-illegal.html"&gt;UK anti-terrorism laws make it illegal to photograph police&lt;/a&gt;. Seriously - WTF? If you can't photograph the police, you can't photograph them breaking the law, which means they are finally as unaccountable as they have always wanted to be. This is simply unacceptable for a democratic society. Anybody who has lived in the UK and seen the movie "Children of Men" knows the chilling authenticity of their depiction of Britain as a police state, and if you ask me, Britain's a mere hair away from becoming one. It all started with the traffic cams, and now the everything cams, and now laws preventing the photographing police officers.&lt;br /&gt;&lt;br /&gt;I'm no conspiracy theorist or freedom nut, but this kind of nonsense gives me pause. Keep your eyes peeled, because this same nonsense is coming to the US. They've started installing traffic cams in a number of states for "the good of the populace," and it's a slippery slope to cameras everywhere - just look at the way the UK is going. Pay attention to what is happening in your state and make sure the camera laws being passed have your freedoms in mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6602014485775177331?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6602014485775177331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6602014485775177331&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6602014485775177331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6602014485775177331'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/04/on-bad-parkers-and-police-states.html' title='On Bad Parkers and Police States'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5375454182451488540</id><published>2009-03-25T22:17:00.002-04:00</published><updated>2009-03-25T22:26:01.726-04:00</updated><title type='text'>Converting Virtual PC .vhd Images To VMWare .vmdk Images</title><content type='html'>We use Microsoft Dynamics CRM to track our customers and related software feature requests and opportunities. Chris (our Sales Engineering manager) has been customizing the system for our needs, and we've been looking in to integrating with it further through the web service API.&lt;br /&gt;&lt;br /&gt;Since we don't want to develop web services against the production instance, Chris suggested I download the demo version which is available as VirtualPC image. Of course, being on a Mac, I can't run VirtualPC, but I do run VMWare Fusion.&lt;br /&gt;&lt;br /&gt;After I downloaded the VirtualPC image, I downloaded &lt;a href="http://www.vmware.com/products/converter/"&gt;a free tool from VMWare&lt;/a&gt; that you can use to convert multiple types of images to VMWare disk images. The file I got from Microsoft was a .vhd file, but when I tried to convert it the VMWare converter told me that it couldn't deal with .vhd files.&lt;br /&gt;&lt;br /&gt;However, it was able to convert .vmc files, which are the virtual machine files that go with the .vhd (which is essentially a virtual hard disk). So, I downloaded VirtualPC and installed it in to VMWare, and used it to create a VirtualPC virtual machine .vmc file using the .vhd file as the hard drive. After I created this, I shut down VirtualPC, fired up the VMWare converter in Fusion, and converted the 11 GB image by pointing it to the .vmc file. Problem solved.&lt;br /&gt;&lt;br /&gt;I was quite surprised at how fast the conversion was: it converted the 11 GB file in about 45 minutes, with VMWare Fusion both reading and writing over the local network connection to the host Mac OS. After the conversion, I was able to open the VMWare image files produced by the converter and install VMWare tools as usual within the virtual machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5375454182451488540?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5375454182451488540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5375454182451488540&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5375454182451488540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5375454182451488540'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/converting-virtual-pc-vhd-images-to.html' title='Converting Virtual PC .vhd Images To VMWare .vmdk Images'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-581033475844049283</id><published>2009-03-20T23:42:00.004-04:00</published><updated>2009-03-20T23:53:27.714-04:00</updated><title type='text'>Bluetooth Connectivity/Pairing Problems on Late 2008 MacBook Pro</title><content type='html'>I've noticed that my late 2008 MacBook Pro seems to have trouble pairing with my Apple Bluetooth keyboard and Mighty Mouse occasionally.&lt;br /&gt;&lt;br /&gt;At home, I have a 22" flat panel connected with two video inputs: an HDMI input from my old QuickSilver G4 tower, and a DVI cable that I attach to either my work or personal laptops (the work laptop is an early 2008 MacBook Pro, while the personal one is a late 2008). As I switch between laptops, I get semi-wireless KVM since the Bluetooth simply re-pairs with whichever laptop is turned on, and I manually re-plug the DVI cable.&lt;br /&gt;&lt;br /&gt;I never seem to have issues reconnecting the work laptop, but my personal one has been having issues recently. Anecdotally, this started happening after I installed Vista on Boot Camp, during which time I had a hell of a time getting Vista to connect to the Bluetooth devices (it would say it was paired but then never be able to connect). After uninstalling/reinstalling the Boot Camp drivers that came on the installation disk for my MacBook Pro, the Bluetooth on Vista started working again. I don't know if the Vista issues spawned the issues in OS X, but there it is as the only thing related to Bluetooth that has changed.&lt;br /&gt;&lt;br /&gt;Anyway... I noticed I was getting these messages in Console.&lt;br /&gt;&lt;pre&gt;3/20/09 10:42:25 PM Bluetooth Setup Assistant[1753] connection went invalid while waiting for a reply &lt;br /&gt;3/20/09 10:44:31 PM Bluetooth Setup Assistant[1771] 3:Pairing failed with 'Mighty Mouse': error 0xe00002bc &lt;br /&gt;3/20/09 10:45:54 PM Bluetooth Setup Assistant[1771] 3:Pairing failed with 'Mighty Mouse': error 0xe00002bc &lt;br /&gt;3/20/09 10:51:04 PM kernel IOBluetoothBNEPDriver: Ethernet address 00:23:6c:a2:5e:56 &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I went ahead and &lt;a href="http://support.apple.com/kb/HT1379"&gt;reset the PRAM&lt;/a&gt; and everything started working again - in fact, the laptop paired to the devices before the login screen loaded, and I was able to type in my password from my Bluetooth keyboard. Woot.&lt;br /&gt;&lt;br /&gt;This is the second time I have had to reset the PRAM on my personal laptop since I got it in December 2008, the &lt;a href="http://maximporges.com/2008/12/device-removal-errors-with-expresscard.html"&gt; last issue being related toExpressCard hardware&lt;/a&gt;. I'm hoping the issue was just related to me Boot Camp Bluetooth woes, but who knows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-581033475844049283?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/581033475844049283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=581033475844049283&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/581033475844049283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/581033475844049283'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/bluetooth-connectivitypairing-problems.html' title='Bluetooth Connectivity/Pairing Problems on Late 2008 MacBook Pro'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-9137069497618535463</id><published>2009-03-19T23:07:00.007-04:00</published><updated>2009-03-19T23:47:25.567-04:00</updated><title type='text'>Farewell, Battlestar Galactica</title><content type='html'>I just got finished watching Monday night's special on the cast, crew, and making of BSG. The final episode of the series airs tomorrow.&lt;br /&gt;&lt;br /&gt;I was admittedly leery of the series when it came out. The main reason was that it was being produced by the SciFi Channel, which I have always associated with horrible campy science fiction shows with no-name actors, thin plots, and terrible writing. The other main reason was that I had watched reruns of the original BSG series as an adult, which thoroughly shattered my rose-tinted memories of watching the show during my childhood (Dirk Benedict, for Christ's sake... awful).&lt;br /&gt;&lt;br /&gt;And yet, like so many others I gave the pilot a shot, and was rewarded with a totally new take on the series and a gem of a show in the making. The Cylons-as-humans thing was a little hard to swallow at first (and smacked more of keeping the budget on CG for the Toasters in check than anything else), but as the series has evolved they've justified the choice. After all, BSG is more about the characters in the story than the robots, spaceships, and special effects surrounding them.&lt;br /&gt;&lt;br /&gt;And what characters they are: gritty, dark, and all with secret (and not-so-secret) flaws that drive them through their individual story threads to be challenged, tested, broken, and saved countless times over. We were talking at work the other day about how we'd happily watch an entire series about Gaius Baltar living out his daily life; he's been such a delightfully selfish and complicated bastard through the whole series. It's been mentioned many times before, but I have to heap some hefty praise on to the show's writers for keeping it real all the way through and not being afraid to send a TV series (and a sci fi one at that) in to morally questionable territory that would send even the most battle-hardened TV executives running for cover.&lt;br /&gt;&lt;br /&gt;In a time when 8 out of 10 TV shows on the air these days either seem to be about 10 spoiled brats living in an $8 million house and yelling at each other, or are centered around the pursuit of an aimless goal with trite elimination ceremony after trite elimination ceremony, BSG has provided some actual entertainment by people who have proven themselves to be masters of their craft. As a result, it's just that much more tragic when a show of this calibre has to go off the air.&lt;br /&gt;&lt;br /&gt;Even so, while I will miss seeing new episodes pop up on the DVR, I must thank the management at SciFi for letting the show end gracefully; it was certainly time. All the major story arcs have played out, the characters are clearly tiring out following the ordeals of their journey, and the impending conclusion has been well-primed by the writers for a solid end to the series. There's nothing worse than seeing a good show die a slow painful death by ratings. The powers over BSG are doing a great job of avoiding this and letting the show go out at the top of its game.&lt;br /&gt;&lt;br /&gt;It is with anticipation that I look forward to tomorrow's closing chapter. My final request to the makers of the show will be that they release the entire series on Blu-Ray in a magnificent box set with loads of special features. After that, I'll just have &lt;a href="http://www.amctv.com/originals/breakingbad/"&gt;Breaking Bad&lt;/a&gt; (another fabulously dark show) to keep me amused until something else half-decent hits the airwaves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-9137069497618535463?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/9137069497618535463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=9137069497618535463&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9137069497618535463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9137069497618535463'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/farewell-battlestar-galactica.html' title='Farewell, Battlestar Galactica'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6845669168136669794</id><published>2009-03-17T00:00:00.013-04:00</published><updated>2009-03-17T23:01:00.342-04:00</updated><title type='text'>Ergotron LX in the Hizouse</title><content type='html'>I got a few toys at the end of last year for my home office/studio (namely a &lt;a href="http://www.maximporges.com/2008/12/mini-review-access-virus-ti-polar.html"&gt;Virus TI&lt;/a&gt; and a &lt;a href="http://www.maximporges.com/2008/09/review-dell-sp2208wfp-22-monitor-with.html"&gt;22" monitor&lt;/a&gt;), but they had the unfortunate side effect of cluttering up my desk.&lt;br /&gt;&lt;br /&gt;The monitor doubles as a USB hub and has three video inputs, so it created a whole bunch of spaghetti behind it. And as much as I love my Virus TI, it's so deep that I have to push my monitor back to accommodate it, making small text too hard to read when the TI is on the desk. This means that when I work from home I have to unplug the TI and take it off the desk so I can move the monitor closer, which is a pain in the ass.&lt;br /&gt;&lt;br /&gt;I looked at a few monitor mounts, but they were either ridiculously expensive, wall-mounted (I wanted a desk-mount device), or looked crappy. We have a few flat panel TVs in the house, and the only arm-based mount I had bought was a $25 job from BJs, which was too flimsy to hold the little 15" TV in the exercise room. After my bad experience with that floppy piece of crap, I was concerned about getting an arm-based system again, but they seemed to be the only solution to my cable and monitor-distance dilemma.&lt;br /&gt;&lt;br /&gt;Then I found the &lt;a href="http://www.ergotron.com/tabid/71/ctl/Product/mid/396/PRDID/133/language/en-CA/default.aspx"&gt;Ergotron LX Dual&lt;/a&gt;, which got rave reviews on &lt;a href="http://www.amazon.com/Dual-Desk-Mount-Arm-Silver/dp/B000GGY8VU/ref=sr_1_9?ie=UTF8&amp;s=electronics&amp;qid=1237263320&amp;sr=8-9"&gt;Amazon&lt;/a&gt;. Dell had the silver &lt;a href="http://accessories.us.dell.com/sna/products/Displays/productdetail.aspx?c=us&amp;l=en&amp;cs=19&amp;sku=A0722541"&gt;for $199.00 with shipping&lt;/a&gt;, so I ordered it last week and it arrived today.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;object type="text/html" data="http://www.flickr.com/slideShow/index.gne?user_id=22985469@N05&amp;set_id=72157615419639908" width="460" height="500"&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This thing rocks the house, and just screams build quality. It came out of the box with two monitor mounts and a laptop mount; I have just the Dell monitor and either my work or personal MacBook Pros to worry about, so I went with the monitor/laptop configuration. The mount got great reviews from the Amazon crowd for being sturdy, and they weren't kidding - the tension mounts are all fully adjustable to a very fine degree. I've got my setup to the point where I can move the monitor and laptop to any position and they just stay there - no wobbling or sagging. I've got a pretty deep desk (I think it's about 30"-36" deep by 72" wide), but the 24" of extension the Ergotron LX gives me easily brings my monitor in to viewing range with the post mounted to the back of my desk. There are integrated cable tidies, so I've got all the cables running through the arms and floating above the desk too, which gives me all my desktop space back again. Although I don't typically work this way, you can also swivel the monitor to portrait mode if you like without having to pull any levers or make any adjustments.&lt;br /&gt;&lt;br /&gt;The mount is mostly held together by gravity, so if for example I wanted to switch my monitor to the right and my laptop to the left, I can just lift the arms off the top of the support pole and switch them around without breaking out the tools. Tension is adjusted through Allen keys and a Phillips head screwdriver, and the tension points are very easy to get to.&lt;br /&gt;&lt;br /&gt;Installation was a breeze with the well-diagrammed instructions, and they give you all the tools you need to get going. The only item I was concerned about during installation is that my desk is glass, just under 1/2" thick, so I was concerned about the leverage imposed by the 20-odd pounds of weight that my laptop and monitor would put on it (especially since I was using the clamp mount). To spread the weight out a bit, I cut a 2x4 about twice the width of the clamp mount and put it on the underside of the desk. You can't see it unless you look for it, and it is doing a nice job of distributing the load. If you decide to pick one of these up, note that the grommet mount can hold twice the weight of the clamp mount. You get installation hardware for both mounting styles in the box.&lt;br /&gt;&lt;br /&gt;I snapped a few photos, so &lt;a href="http://www.flickr.com/photos/22985469@N05/sets/72157615419639908/show/"&gt;check them out&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6845669168136669794?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6845669168136669794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6845669168136669794&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6845669168136669794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6845669168136669794'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/ergotron-lx-in-hizouse.html' title='Ergotron LX in the Hizouse'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5452154360519312794</id><published>2009-03-09T10:52:00.003-04:00</published><updated>2009-03-09T11:10:42.166-04:00</updated><title type='text'>The Twitter/Facebook/MySpace Meme-To-Mainstreamfest</title><content type='html'>I saw &lt;a href="http://www.robgonda.com/blog/"&gt;Rob Gonda&lt;/a&gt; post a comment to LinkedIn about this article called &lt;a href="http://www.msnbc.msn.com/id/29534317/"&gt;OMG! Shut Up About Twitter Already&lt;/a&gt;; I couldn't agree more. For 99% of you on Twitter, your life is just not that interesting for me to follow it ten seconds at a time.&lt;br /&gt;&lt;br /&gt;I also personally consider it a jump-the-shark moment for a service (or anything else) when the mainstream media gets ahold of it and makes it the "hot new thing" several years after it surfaces in niche form. It happened to drum n' bass when it escaped from the clubs and started showing up in car commercials in the UK. It happened to Crocs when they suddenly appeared on the feet of every child in the United States. And it happened to Twitter, MySpace, and Facebook as soon as Fox News and CNN decided to get in on the action (followed by my step-mom signing up for accounts on all three in the last month or so :) ).&lt;br /&gt;&lt;br /&gt;Sure, the extra publicity will be great for these services for a while, but as soon as they cross over from meme to mainstream, they lose their cachet. All the Cool Kids&amp;trade; (I'm looking at you, &lt;a href="http://danielroop.com/"&gt;Roop&lt;/a&gt; :) ) will want to join the next wonderful service that pops up, download the iPhone app, and be one of the Awesome Few&amp;reg; in the know. This usually means that it's only a matter of time for the other services to start losing their user base to the new service and become relegated to a merely sustainable has-been status.&lt;br /&gt;&lt;br /&gt;Of course, I'm old now, so I don't really care to be at the forefront of the hottest new trends. I dodged Rails, didn't buy Crocs, and have avoided Facebook and Twitter. I regret to inform you that I did sign up for a MySpace account to catch up with old friends from the past, but I think about deleting it every day. If I get another useless animated GIF from somebody who hasn't sent me a meaningful communication in over five years, I think I'll kill myself.&lt;br /&gt;&lt;br /&gt;Yours truly,&lt;br /&gt;&lt;br /&gt;Maxim "Old Geezer" Porges&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5452154360519312794?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5452154360519312794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5452154360519312794&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5452154360519312794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5452154360519312794'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/twitterfacebookmyspace-meme-to.html' title='The Twitter/Facebook/MySpace Meme-To-Mainstreamfest'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4954520326112630947</id><published>2009-03-07T11:07:00.005-05:00</published><updated>2009-03-07T11:27:11.836-05:00</updated><title type='text'>Flex Camp Miami: Mate Flex Framework (Laura Arguello)</title><content type='html'>&lt;a href="http://www.asfusion.com"&gt;Laura Arguello&lt;/a&gt; gave a really thorough overview of the &lt;a href="http://mate.asfusion.com/"&gt;Mate framework&lt;/a&gt; for Flex and AIR applications. I was present for Laura's original presentation at the launch of Mate at &lt;a href="http://www.cfobjective.com"&gt;cf.objective()&lt;/a&gt;, so I was interested to see how she presented it two years after.&lt;br /&gt;&lt;br /&gt;Not only were Laura's slides easy to follow and beautifully drawn (as always), but she had added some detail on alternative approaches and how Mate solves the problems associated with these approaches. Laura stepped through a full example of a movie browsing application built with Mate, showing the way the event bubbling and routing mechanism worked. I was particularly impressed with Laura;'s use of animations to get the point across, including an innovative "production line" slides that shows how Mate decorates events as they are routed through the framework, and gets them to the right place.&lt;br /&gt;&lt;br /&gt;I've always liked the principle behind Mate because it is supported by an event-driven message bus. Message bus architecture really fits nicely in to a Flex app since Flash is event-driven and has native support for asynchronous event management, bubbling, and routing. The only part of Mate that I find less desirable is the MXML-based routing and mapping; there is nothing wrong with this per se, but it reminds me of ColdFusion and Fusebox tags quite a bit, which is probably the root of my opinion since I have moved far away from that technology and framework. I'm personally a fan of being able to annotate my classes with metadata and have frameworks introspect them in order to figure out what to do, and the work that Russell Centanni has done with Chris Scott to get better support for the [Mediate] annotation in Swiz has really made me a fan of that framework.&lt;br /&gt;&lt;br /&gt;Of course, putting metadata in your classes is something of an invasive approach, so while it makes configuration more transparent, it leaves framework remnants in your code and requires a recompile to remove them; this is in direct contrast to Mate which is configured completely independently of your code. At the end of the day, you have to pick your poison. Since both Mate and Swiz exemplify the same best-practice approaches of making your code easy to test and loosely coupled, you can't really say that one is better than the other - it all comes down to personal preference at the end of the day. I am, however, perfectly comfortable saying that both of these frameworks are far better in my opinion that Cairngorm, which is possibly the most invasive framework I have ever worked with. The Universal Mind extensions for Cairngorm certainly make it less of a bear, but it still smacks of the sort of nonsense we had to deal with in EJB 2.1 for Java. Naturally, we had to start somewhere, so matter how much I may bash Cairngorm today, we wouldn't have gotten to Mate and Swiz without it kicking off the evolutionary process for us. In other words, "yay" for progress.&lt;br /&gt;&lt;br /&gt;Laura is going to be presenting Mate again at the upcoming &lt;a href="http://360conferences.com/360flex/"&gt;360|Flex conference&lt;/a&gt; in Indianapolis, IN on May 18th 2009, so if you are interested in learning more about Mate this would be a great way to do so.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4954520326112630947?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4954520326112630947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4954520326112630947&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4954520326112630947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4954520326112630947'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-mate-flex-framework.html' title='Flex Camp Miami: Mate Flex Framework (Laura Arguello)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-7395694885675848897</id><published>2009-03-07T10:54:00.006-05:00</published><updated>2009-03-07T11:29:28.943-05:00</updated><title type='text'>Flex Camp Miami: Spring &amp; BlazeDS Integration (Jeremy Grelle)</title><content type='html'>Jeremy's presentation went over the reasons for using Spring with a Flex/AIR application, and described how the recent partnership between &lt;a href="http://www.springsource.org/"&gt;SpringSource&lt;/a&gt; (Jeremy's employer) and &lt;a href="http://www.adobe.com"&gt;Adobe&lt;/a&gt; has put proper support for collaboration between the two technologies on the fast track.&lt;br /&gt;&lt;br /&gt;All of Jeremy's presentation was interesting, but the most exciting parts for me personally were the upcoming syntax for integrating Flex and the hooks in to &lt;a href="http://static.springsource.org/spring-security/site/index.html"&gt;Spring Security&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Originally, the first releases of &lt;a href="http://www.springsource.org/spring-flex"&gt;Spring/Flex integration&lt;/a&gt; required quite a bit of code an an invasive hook in to the Spring beans file, but the new support does all the configuration for you with one tag using sensible defaults (a la just about everything in Spring). Basically, Spring just exports the services to Flex the same way that it does for exporting hooks to Spring web services or any other presentation technology. There is the ability to provide a nice separation here between your Spring configuration for your libraries and specific use cases where those libraries are made available to BlazeDS, allowing you to unit and/or integration test appropriately at each tier.&lt;br /&gt;&lt;br /&gt;As far as Spring security, the configuration has become much simpler. You can now simply state the security role required to access each BlazeDS remote destination endpoint, and your security configuration is all ready to go. The only thing that remains is the standard set of hooks that you need to put in Spring to tell it where your authority store is (i.e. LDAP, a USER database table, a flat file, etc.), which you would have to do if you rolled your own solution too so no extra work is really taking place here.&lt;br /&gt;&lt;br /&gt;Some of the questions that arose included whether or not Spring was going to figure out how to get around some issues with the deep traversal that the AMF gateway performs when marshaling objects across the wire, and the havoc this can wreak with lazy loading in frameworks like Hibernate. Jeremy said that this was really an issue that Adobe was going to have to solve in the AMF gateway, and was obviously not related to the Spring integration by itself.&lt;br /&gt;&lt;br /&gt;The last final interesting tidbit we learned was that the Spring web team is based in Melbourne, FL. Apparently one of the founders of SpringSource lives in Melbourne, and was an ex-Harris employee who started a branch in his home town. Once again, we find a surprising little spoke of the larger hub of the tech community nestled away in an innocuous part of Florida!&lt;br /&gt;&lt;br /&gt;You can follow the evolution of the Spring/Flex integration project at the &lt;a href="http://www.springsource.org/spring-flex"&gt;project home page&lt;/a&gt;. The &lt;a href="http://static.springframework.org/spring-flex/docs/1.0.x/reference/html/index.html"&gt;new M2 release is out&lt;/a&gt; if you want to be one of the cool kids.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-7395694885675848897?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/7395694885675848897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=7395694885675848897&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7395694885675848897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7395694885675848897'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-spring-blazeds.html' title='Flex Camp Miami: Spring &amp; BlazeDS Integration (Jeremy Grelle)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5584355704745088449</id><published>2009-03-07T09:40:00.004-05:00</published><updated>2009-03-07T11:27:03.175-05:00</updated><title type='text'>Flex Camp Miami: Continuous Integration and Flex (Brian LeGros)</title><content type='html'>&lt;a href="http://www.brianlegros.com/"&gt;Brian LeGros&lt;/a&gt; took to the stage with a staggering gait, giving indication that he was clearly three sheets to the wind. After accidentally plugging the monitor output in to his power cord and blowing out the projector, he began presenting his topic to a potted plant adjacent to the stage. After realizing that the plant preferred cowboy coding and had no interest in setting up a continuous integration workflow, Brian screamed something that would make a sailor blush, stumbled back to his seat, and proceeded to pass out - crushing a conference table during his fall.&lt;br /&gt;&lt;br /&gt;Just kidding... I've seen this presentation of Brian's several times before in extended form, and his delivery gets consistently better with each iteration. Brian has a passion for organizing software development processes, and it's clearly evident as he goes through the iterative process for getting a continuous integration process in to place. Brian has a low-key approach to the topic, which I think makes the seemingly daunting task of setting up CI far more approachable.&lt;br /&gt;&lt;br /&gt;Brian start off talking about what is involved in CI and why you would want to create a repeatable software process, drawing from real-world situations that developers are likely to face. He then covered some sample workflows for build process, source control, and delivery, and gave a detailed overview of scripts he has created in Ant to support automated builds and testing for Flex and AIR applications. Brian also touched on his work on the Fluint project to produce mock stubs for HTTPService and RemoteObject components, which allow easier regression testing when interacting with remote services. Finally, there was a run-through of how to set up a sample Hudson application.&lt;br /&gt;&lt;br /&gt;Brian is offering his build scripts from his blog, and I encourage anybody interested in setting up CI for Flex to make use of them. Brian spent a great deal of time smoothing out all the kinks in our build process at Highwinds, and he really did not impress upon the audience how much work he is giving away for free here. After determining that Fluint did not provide full support for Surefire builds, Brian took it upon himself to change the code base, and produced so much useful stuff that he was accepted in to the project as a committer. That's just one example of what he's done for the community, but I can assure you that there were numerous other hurdles that had to be traversed for Flex and CI to co-operate.&lt;br /&gt;&lt;br /&gt;We've just recently got the appropriate sysadmin support to get our Hudson server purring along at Highwinds, and we've already started to reap the rewards. I checked in some work on custom aspects we've written for the server tier of the next major release of StrikeTracker, and tests that worked perfectly in my development sandbox began failing when Hudson was running them. It turned out that while Hudson was generating our API documentation, an inconsistency in the latest version of the Cobertura code coverage plugin was causing the build to fail. Since I was only running the test cycle in my local sandbox and not generating all the documentation, I didn't come across this inconsistency in my own testing. Thanks to Hudson finding this issue for us early, I was able to spend an hour diagnosing and fixing the issue now, instead of at the eleventh hour when QA is waiting on a build from us at some point in the future.&lt;br /&gt;&lt;br /&gt;We've also been able to see our test coverage and pass/fail progression, since Hudson is tracking our software quality as part of the build process. My boss has been really interested in seeing these statistics, so I'm glad we've finally set up to be able to make them available to him and use them as a barometer for the quality of our apps.&lt;br /&gt;&lt;br /&gt;If you are interested in learning more, I suggest you check out the recording of Brian's &lt;a href="http://adogo.us/meetings/"&gt;February 2009 Adogo&lt;/a&gt; presentation on Continuous Integration. This is the extended version of his talk at Flex Camp Miami and contains all the same juicy details.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5584355704745088449?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5584355704745088449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5584355704745088449&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5584355704745088449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5584355704745088449'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-continuous-integration.html' title='Flex Camp Miami: Continuous Integration and Flex (Brian LeGros)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-7271314679728020421</id><published>2009-03-07T09:19:00.003-05:00</published><updated>2009-03-07T11:26:59.462-05:00</updated><title type='text'>Flex Camp Miami: The Art Of Storytelling (Christian Saylor)</title><content type='html'>Christian gave an impassioned and compelling presentation about how to deliver immersive user experiences in rich applications.&lt;br /&gt;&lt;br /&gt;Drawing examples from iconic flicks of the past and present and using movie story/character development as a basis, Christian described how Universal Mind uses storytelling to create personas to understand the motivations and conflicts of an application's users. Once you understand these key elements, you can build an application that helps users reach their goals. Christian clarified the fact that ultimately, great software is all about the people who use it, and we have to keep the user front-and-center at all times in order to create the right solution for their needs.&lt;br /&gt;&lt;br /&gt;Christian also pressed the issue that in order to make applications fully realizing the capabilities of a rich platform, designers and developers must work together to find that perfect intersection of art and science. Thankfully, based upon Greg Wilson's earlier presentation of Flash Catalyst, it seems that Adobe is doing everything they can to make this collaborative worflow as smooth as possible&lt;br /&gt;&lt;br /&gt;Universal Mind has a highly distributed development team, so making sure that the entire team understands the story behind the users helps them to make independent decisions about how an app should flow, and what the best interests of the user will be. Having recently been taken through UM's portfolio, I can attest to the stellar quality of the applications they have been able to produce by following this approach. You can get a taste of what UM has to offer by looking at &lt;a href="http://www.universalmind.com/capabilities/demos"&gt;their demos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I couldn't agree more with Christian's stance on driving application design through user stories. In my career, I've seen the negative effects of feature-driven approaches veer so far off the path of the user's motivations that the software usability has practically hit zero. Case in point, I've seen an application with processes that should have taken 3 minutes dragged out to almost a half hour, requiring the user to take copious notes on paper and use a calculator during the process (which kind of defeats the purpose of having a computer system in the first place). In the most extreme example, I had a user break down in tears while describing how hard it was for her to do her job on a legacy software system we were working with her to modernize.&lt;br /&gt;&lt;br /&gt;Following these experiences, I've committed myself fully to applying user-driven approaches, and using the motivations of the user as the barometer for feature inclusion/depth and user interface design. We're applying these principles to the next major release of StrikeTracker, and have already had very positive feedback from the Sales team at Highwinds based upon the wireframes alone.&lt;br /&gt;&lt;br /&gt;Coming back to Christian's presentation, he mentioned &lt;a href="http://www.cooper.com/insights/books/"&gt;the work of Allen Cooper&lt;/a&gt; in interaction design. I intend to pick up a copy of &lt;a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111/ref=reg_hu-wl_item-added"&gt;About Face 3: The Essentials of Interaction Design&lt;/a&gt; at my next opportunity.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-7271314679728020421?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/7271314679728020421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=7271314679728020421&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7271314679728020421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7271314679728020421'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-art-of-storytelling.html' title='Flex Camp Miami: The Art Of Storytelling (Christian Saylor)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-7202884648718471520</id><published>2009-03-07T09:01:00.003-05:00</published><updated>2009-03-07T11:26:55.286-05:00</updated><title type='text'>Flex Camp Miami: Merapi or How to Blow Your Mind with AIR (Andrew Powell)</title><content type='html'>&lt;a href="http://www.infoaccelerator.net/"&gt;Andrew Powell&lt;/a&gt; delivered his ever-popular presentation on using &lt;a href="http://merapiproject.net/"&gt;Merapi&lt;/a&gt; to extend AIR applications by adding hooks in to Java, and thus everything the underlying OS has to offer you.&lt;br /&gt;&lt;br /&gt;Personally, I have been following the progression of Merapi from back in the Artemis days before AIR was even released. Being a Java programmer at heart and also loving Flex and AIR, the integration between these technologies on the desktop had always seemed like a perfect marriage to me (especially since Swing is such a train wreck). I had signed up for the Merapi alpha ages ago with the intention of hooking in through the Java-Cocoa bridge to capture MIDI events from one of my keyboards and do something (anything?) with them in an AIR app, but had never got around to kicking the tires, so I was really interested in Andy's presentation.&lt;br /&gt;&lt;br /&gt;As it turns out, Merapi was made possible through the open-sourcing of the BlazeDS libraries for performing asynchronous messaging and AMF serialization. When a Merapi app is launched, it basically just fires up a listener on a local socket, and launches an AIR app which connects to this socket. Once connectivity is established, AIR and Java can send objects back and forth through the same AMF gateway code that makes BlazeDS and LiveCycle Data Services do their thing - just in a much slimmer environment than you'd get by running either BlazeDS or LCDS locally on the desktop. This is (in two words): pure awesome.&lt;br /&gt;&lt;br /&gt;Andy's slide deck was only 10 deep, so we quickly got to the good stuff: hooking AIR apps in to hardware. Andy had brought along a number of toys to demo. First off, we got to see &lt;a href="http://www.phidgets.com/products.php?category=8&amp;product_id=2002"&gt;a set of RFID chips and a USB-based reader&lt;/a&gt; purchased from &lt;a href="http://www.phidgets.com"&gt;phidgets.com&lt;/a&gt;. Andy had set up the AIR app to scan the RFIDs via the USB bridge and show if a specific ID key had been found. Since phidgets.com supplies a Java library with their devices, this was a pretty simple setup, but you can imagine how cool it would be to build an AIR app for managing an inventory of products with RFIDs. Andy had three volunteers come up from the audience to scan books and see the tools in action, after which the volunteers (myself included) were allowed to keep the books (sweet!).&lt;br /&gt;&lt;br /&gt;Next, we got to see the star of the show, which was a &lt;a href="http://www.amazon.com/LEGO-4494799-Mindstorms-NXT/dp/B000E4FDAE/ref=pd_bbs_sr_1?ie=UTF8&amp;s=toys-and-games&amp;qid=1236359269&amp;sr=8-1"&gt;Mindstorms NXT&lt;/a&gt; kit hooked up once again through a Java API (I believe the API in question is &lt;a href="http://lejos.sourceforge.net/"&gt;LeJOS&lt;/a&gt; - Andy said he never even touched the APIs that came with the kit). Andy had a simple control panel with forward/backwards and steering controls in AIR, which responded to mouse clicks and pressing of the arrow keys. Hitting the controls resulted in commands going across Merapi to the Java API, and ultimately connecting wirelessly to the Mindstorms robot (in this case a cool little Lego car) via Bluetooth. The entire sum of attendees crowded up to the front to see the robot in action.&lt;br /&gt;&lt;br /&gt;During the Q&amp;A, Andy touched on some interesting notes. Firstly, since connectivity between AIR and Java through Merapi is socket-based, you can have an AIR app on one machine remotely control one or more Java apps running on remote machines. Second, message channels can be differentiated by message type, or you can have multiple socket listeners from different apps and establish channel separation that way. The final note I found useful was that there is currently no encryption on the socket channel, but this is planned for a future release.&lt;br /&gt;&lt;br /&gt;Hopefully Merapi will get the creative juices flowing for all of you AIR/Java programmers out there. While the library is still in alpha state, it clearly works great, and since it's outside of the realm of Adobe you can use it at your own risk without having to wait for Adobe to incorporate similar capabilities in to AIR.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-7202884648718471520?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/7202884648718471520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=7202884648718471520&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7202884648718471520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7202884648718471520'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html' title='Flex Camp Miami: Merapi or How to Blow Your Mind with AIR (Andrew Powell)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6888776728908110758</id><published>2009-03-07T08:48:00.004-05:00</published><updated>2009-03-07T11:40:29.297-05:00</updated><title type='text'>Flex Camp Miami: In Search of AOP for AS3 (Maxim Porges)</title><content type='html'>Next, I gave my presentation on my search for adding AOP to ActionScript 3. &lt;a href="http://svn.adogo.us/200903-FlexCampMiami/InSearchOfAOPforAS3-MaximPorges/"&gt;My presentation materials are available here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I was a little concerned about the level of my presentation and how it would be received, since Greg Wilson had already identified that many of the attendees were completely new to Flex. It's not often that as you are learning a language, you take a deep-dive under the hood to see how the bits and bytes are running in the virtual machine after they have been compiled.&lt;br /&gt;&lt;br /&gt;I started off with an overview of AOP, since about 85% of the attendees had never heard of the term. Using examples from ActionScript and Java, I simulated AOP advice in code for ActionScript and then demonstrated how AspectJ already has AOP working beautifully.&lt;br /&gt;&lt;br /&gt;I then moved on to describe my journey to discovery for how to implement AOP in ActionScript. I described how I started off trying to use the prototype model, setting the strict flag to false in the compiler, and finally attempting to use Proxy before giving up on the out-of-the-box toolset.&lt;br /&gt;&lt;br /&gt;I then described the dynamic subclassing model (akin to how CGLIB works for Java) and how that was the only viable solution I had found. We then looked at how the Tamarin project had supported my research in to establishing a roadmap for understanding the inner workings of the AVM and getting dynamic subclassing working, and I demo'd some of the command-line tools that have become good friends to me in recent months as I have worked on &lt;a href="http://code.google.com/p/loom-as3"&gt;Loom&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I had some interesting feedback from the session. Overall, I saw enough heads nodding as I was going through it to see that people were getting the general idea, which was all I was hoping for; the AVM2 spec is pretty boring stuff, and the idea behind Loom is that it will handle all the nitty-gritty for you so that you can just code in AS3 and have AOP capabilities at your fingertips. &lt;a href="http://www.asfusion.com/"&gt;Nahuel Faronda&lt;/a&gt; told me that he had followed along 100%, and after seeing what I had to deal with to get Loom to work he was glad I was doing it instead of him. :)&lt;br /&gt;&lt;br /&gt;While I'm hopeful people found my session interesting, I'm even more hopeful that they will download Loom and assist me with the beta program when I release the library later this month. As always, watch the blog and the Loom project site for updates.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6888776728908110758?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6888776728908110758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6888776728908110758&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6888776728908110758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6888776728908110758'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-in-search-of-aop-for.html' title='Flex Camp Miami: In Search of AOP for AS3 (Maxim Porges)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3182663856999074796</id><published>2009-03-07T08:41:00.003-05:00</published><updated>2009-03-07T11:26:46.916-05:00</updated><title type='text'>Flex Camp Miami: Working With Data in AIR (David Tucker)</title><content type='html'>&lt;a href="http://www.davidtucker.net/"&gt;David Tucker&lt;/a&gt; gave an in-depth presentation covering all the different ways you can wrangle data with AIR.&lt;br /&gt;&lt;br /&gt;While I'm fully familiar with AIR's general capabilities and the fact that you can access the file system with it, following David's topic I had a much better understanding of the specifics of AIR data management and several features that I was not aware existed. For example, I was not aware that you could access an encrypted local store with AIR; I figured you just had access to the standard local store like you do in Flex. David explained how  AIR takes advantage of the native encryption mechanisms available on the OS it's running on, and showed examples of how to use it.&lt;br /&gt;&lt;br /&gt;David went on to cover database access in AIR, including some of the performance gotchas associated with transaction management and best-practice strategies for fetching and saving data. Finally, he touched on some of the work taking place in the Flex space to produce ORM and data management frameworks.&lt;br /&gt;&lt;br /&gt;Thanks to David for a great presentation. We are considering an AIR version of the next major StrikeTracker release, so I am sure I will be able to put what I learned to use.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3182663856999074796?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3182663856999074796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3182663856999074796&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3182663856999074796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3182663856999074796'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-working-with-data-in.html' title='Flex Camp Miami: Working With Data in AIR (David Tucker)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-372114717223540422</id><published>2009-03-07T08:31:00.003-05:00</published><updated>2009-03-07T11:26:42.148-05:00</updated><title type='text'>Flex Camp Miami: Welcome and Keynote (Flex 4 Preview)</title><content type='html'>Greg Wilson gave an abbreviated version of several presentations covering the new stuff we can expect in Flex 4 "Gumbo", including &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification"&gt;FXG&lt;/a&gt;, &lt;a href="http://labs.adobe.com/technologies/flashcatalyst/"&gt;Flash Catalyst&lt;/a&gt;, and the various language, API, and tool changes we can expect.&lt;br /&gt;&lt;br /&gt;I won't say that there was anything groundbreaking here that had not been seen in prior keynotes at MAX and similar large Flex events around the country, but that does not detract from the coolness of the things that are coming.&lt;br /&gt;&lt;br /&gt;I'm personally most excited about Flash Catalyst and FXG. I'll reserve full judgement on the technologies until I get to use them, but my initial thoughts are that they are huge steps forward in separating presentation and structure of components. Even so, I think there might be a little more work to be done in this area to achieve full separation; for example, there appears to be a reliance for metadata to be added to the component class to provide hooks for the skin, which seems invasive at first glance (although again, I have not fully kicked the tires so I may be missing the significance of why this is unavoidable). That being said, one of the things that bothers me about Flex 3 today is the fact that you can't fully control positioning with CSS the same way that you can with HTML, but I believe that the new component skinning model takes care of this particular issue (at least on the individual component level).&lt;br /&gt;&lt;br /&gt;In several "hands up" polls, Greg was able to identify that a significant chunk of the crowd had not used Flex professionally, which indicates that the event was successful in educating some future Flex-ers. I think it's great when an event can open doors for people, as opposed to just being a love-fest for people who have already drunk the Kool-Aid.&lt;br /&gt;&lt;br /&gt;Finally, Greg handed out about $5,000 worth of training DVDs, books, and software, which was totally awesome. Thanks again to Adobe for footing the bill for these items (and let's not forget their covering of the pre-event beers at the &lt;a href="http://www.titanicbrewery.com/"&gt;Titanic&lt;/a&gt; the night before!).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-372114717223540422?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/372114717223540422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=372114717223540422&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/372114717223540422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/372114717223540422'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-welcome-and-keynote.html' title='Flex Camp Miami: Welcome and Keynote (Flex 4 Preview)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3054113630551742334</id><published>2009-03-07T08:10:00.003-05:00</published><updated>2009-03-07T11:26:27.378-05:00</updated><title type='text'>Flex Camp Miami Roundup</title><content type='html'>As you will know if you have been following my blog, I attended and presented at &lt;a href="http://ww.flexcampmiami.com"&gt;Flex Camp Miami&lt;/a&gt; yesterday. We ended up with 86 attendees from all over the country, which was a great turnout considering the state of the economy and Miami's tech community.&lt;br /&gt;&lt;br /&gt;I have to say that when I was originally invited to the event, I was expecting it to be fairly basic in terms of the content being presented. When we looked in to hosting a Flex Camp in Orlando, &lt;a href="http://www.adobe.com"&gt;Adobe&lt;/a&gt; had asked us to keep it along the lines of an "intro to Flex" event (which was actually one of the reasons that we didn't pursue the issue, since we have built up an intermediate Flex crowd with the sessions at &lt;a href="http://www.adogo.us"&gt;Adogo&lt;/a&gt;). However, the final lineup for the event was full of great topics, and I can honestly say that this is the first conference I have been to in a while where I was interested in and able to learn something from every offering.&lt;br /&gt;&lt;br /&gt;I'd also like to mention that the organizers and sponsors did an awesome job. &lt;a href="http://www.universalmind.com"&gt;Universal Mind&lt;/a&gt; and Adobe showed up in full force; I think at least 30% - 40% of the attendees left with either a book, a training DVD, or a Flex Builder Pro license. One lucky bastard even left with a $2,500.00 copy of the &lt;a href="http://www.adobe.com/products/creativesuite/mastercollection/?promoid=DTEMV"&gt;CS4 Master Collection&lt;/a&gt; - not a bad ROI for a $20 registration fee! I personally won a copy of &lt;a href="http://www.cveflex.com/"&gt;Creating Visual Experiences with Flex 3.0&lt;/a&gt;, which I am really excited about since custom skinning is my weakest area in Flex development right now.&lt;br /&gt;&lt;br /&gt;Not to be forgotten is the fact that the event would neither have been as successful nor possible at all without &lt;a href="http://www.remotesynthesis.com"&gt;Brian Rinaldi&lt;/a&gt; having organizing it. Brian put together the whole event and organized sponsorship from Adobe and his employer at the time (Universal Mind). Unfortunately, nobody has been immune from the state of the economy and Brian was released from his employment shortly before the event, making his attendance difficult on several levels. While the sponsors did Brian proud in terms of delivering a solid event, if you were an attendee, I encourage you to let Brian know your appreciation for all his hard work. If you are an employer considering Brian for a position, you can rest assured that his attention to detail and work ethic leave nothing to be desired if the quality of the Flex Camps he has organized are any measure.&lt;br /&gt;&lt;br /&gt;For those of you who missed the event, fear not - Universal Mind is planning to do another Flex Camp in the Florida area later this year. There was talk of doing it in either Tampa or Orlando - either way, Adogo will be lending as much assistance as we can to ensure it's a good one.&lt;br /&gt;&lt;br /&gt;I'm going to do an individual blog post on each of the topics presented, which I'll be linking to once they are finished. I also have some pictures, but since I left my SD card adapter in my other laptop I'll have to wait until I get back to Orlando to publish them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;All Flex Camp Miami Roundup Posts&lt;/b&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-welcome-and-keynote.html"&gt;Welcome and Keynote (Greg Wilson, Adobe)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-working-with-data-in.html"&gt;Working with Data in AIR (David Tucker, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-in-search-of-aop-for.html"&gt;In Search of AOP for AS3 (Maxim Porges, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-merapi-or-how-to-blow.html"&gt;Merapi or How To Blow Your Mind with AIR (Andrew Powell, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-art-of-storytelling.html"&gt;The Art of Storytelling (Christian Saylor, Universal Mind)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-continuous-integration.html"&gt;Continuous Integration and Flex (Brian LeGros, Highwinds)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-spring-blazeds.html"&gt;Spring &amp; BlazeDS Integration (Jeremy Grelle, SpringSource)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://maximporges.com/2009/03/flex-camp-miami-mate-flex-framework.html"&gt;Mate Flex Framework (Laura Arguello, ASFusion)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3054113630551742334?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3054113630551742334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3054113630551742334&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3054113630551742334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3054113630551742334'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/flex-camp-miami-roundup.html' title='Flex Camp Miami Roundup'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8977141675516748058</id><published>2009-03-05T10:34:00.003-05:00</published><updated>2009-03-05T10:41:25.159-05:00</updated><title type='text'>StrikeTracker is a 2009 StreamingMedia Editors' Pick</title><content type='html'>StrikeTracker has been chosen as a &lt;a href="http://www.streamingmedia.com/article.asp?id=11000"&gt;2009 StreamingMedia Editors' Pick&lt;/a&gt; (under BBC's iPlayer, and above Hulu - although I don't think the list is ranked).&lt;br /&gt;&lt;br /&gt;Quoting from the article: &lt;i&gt;"Seeing a real demand in the market, CDN Highwinds has been working for the past year on improving its web-based reporting product and offering all of the functionality that customers asked for in the survey. In that time, I’ve had the opportunity to watch the Highwinds product continue to evolve and have been able to get a few in-person demos along the way. To date, its reporting package is one of the best solutions I have seen from any of the CDNs in the market."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;We're thrilled to receive this recognition for all the hard work our engineering teams have put in to make StrikeTracker the best CDN console available. While the work that my team does on StrikeTracker is front-and-center for the customers to see, it wouldn't make any difference without the CDN behind it - so the way I see it, this is a tip of the hat to the Highwinds CDN as a whole.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8977141675516748058?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8977141675516748058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8977141675516748058&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8977141675516748058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8977141675516748058'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/striketracker-is-2009-streamingmedia.html' title='StrikeTracker is a 2009 StreamingMedia Editors&apos; Pick'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3452555898442195885</id><published>2009-03-04T00:46:00.003-05:00</published><updated>2009-03-04T00:53:06.383-05:00</updated><title type='text'>Where's Loom?</title><content type='html'>I'm so close to getting Loom finished that I can taste it, but unfortunately life has been getting in the way in the last few weeks. Grrr!&lt;br /&gt;&lt;br /&gt;I had to get my presentation finished for the Flex Camp this week, and I'm getting married in April so meetings with vendors have been eating up at least one day of each weekend since the end of January. I also had a bachelor weekend with a few buddies last weekend, which was great fun - but all in all I've been unable to put as much time in to Loom recently as I was able to in January.&lt;br /&gt;&lt;br /&gt;Things will really start to quiet down for me on the personal front starting this month, since we're running out of vendors to meet with before the big day. Plus, Jessica will be in New York for a bachelorette weekend with her friends in a few weeks, so I'll have two whole days to sit on the couch in my undies and write code.&lt;br /&gt;&lt;br /&gt;Bottom line, I intend to have some working code up on &lt;a href="http://code.google.com/p/loom-as3"&gt;Loom's site&lt;/a&gt; later this month. Watch this space for updates...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3452555898442195885?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3452555898442195885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3452555898442195885&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3452555898442195885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3452555898442195885'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/wheres-loom.html' title='Where&apos;s Loom?'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1330471765482846156</id><published>2009-03-04T00:41:00.002-05:00</published><updated>2009-03-04T00:46:01.560-05:00</updated><title type='text'>Last Chance for Flex Camp Miami</title><content type='html'>Final reminder to everybody that Flex Camp Miami is almost upon us. I have been polishing off my presentation on &lt;a href="http://code.google.com/p/loom-as3"&gt;Loom&lt;/a&gt; this week and am looking forward to seeing you all there.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://flexcampmiami.com/page.cfm/agenda/"&gt;speaker lineup&lt;/a&gt; has solidified with a topic from another of the great folks over at &lt;a href="http://www.universalmind.com"&gt;Universal Mind&lt;/a&gt;, and there's also a guy from SpringSource talking about Spring integration for BlazeDS, which should be interesting since the integration is under active development.&lt;br /&gt;&lt;br /&gt;Remember, the price of admission goes down to $20 if you use the discount code "adogo". &lt;a href="http://flexcampmiami.com/page.cfm/register"&gt;Register now!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1330471765482846156?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1330471765482846156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1330471765482846156&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1330471765482846156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1330471765482846156'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/03/last-chance-for-flex-camp-miami.html' title='Last Chance for Flex Camp Miami'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6376851792140001976</id><published>2009-02-25T10:08:00.002-05:00</published><updated>2009-02-25T10:11:24.979-05:00</updated><title type='text'>Flex Camp Miami Discount</title><content type='html'>As if &lt;a href="http://www.flexcampmiami.com/"&gt;Flex Camp Miami&lt;/a&gt; wasn't enough of a deal already, I've been authorized to offer the discount code "adogo" to all three of the people who read my blog. This will bring the price of registration from $30 down to a paltry $20.&lt;br /&gt;&lt;br /&gt;Considering that lunch is included in the price, you can't beat it for an excuse to get out of work on a Friday and catch some great talks on Flex development. I'll see you there next week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6376851792140001976?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6376851792140001976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6376851792140001976&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6376851792140001976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6376851792140001976'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/02/flex-camp-miami-discount.html' title='Flex Camp Miami Discount'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3674876844205076</id><published>2009-02-25T10:04:00.003-05:00</published><updated>2009-02-25T10:08:32.050-05:00</updated><title type='text'>Cleaning a Mighty Mouse Scroll Wheel</title><content type='html'>My Mighty Mouse decided to only scroll in one direction this week (up), so I found &lt;a href="http://www.macosxhints.com/article.php?story=2006121408511872"&gt;a thread on macosxhints.com&lt;/a&gt; that had some suggestions. You can't disassemble the Mighty Mouse easily, so you have to work with what you've got accessible to you from the outside.&lt;br /&gt;&lt;br /&gt;Turning the mouse over and rolling the ball with my finger worked earlier in the week, but today that didn't help. I tried the "wet finger" routine, which also came up without any results. Finally, I took some Windex, gently sprayed a wad of it on to a paper towel, and squeezed out the tiniest drop on to the mouse ball, then rolled it around with my finger before rolling the ball upside down on a flat paper towel. After doing this a few times the scroll wheel is back to normal.&lt;br /&gt;&lt;br /&gt;I think I needed to go a little further with the cleaning routine since I've never cleaned my Mighty Mouse in the two (maybe three?) years I've had it. I've been using it just about every day since I joined Highwinds so I'm sure the increase in use contributed to the stickiness.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3674876844205076?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3674876844205076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3674876844205076&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3674876844205076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3674876844205076'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/02/cleaning-mighty-mouse-scroll-wheel.html' title='Cleaning a Mighty Mouse Scroll Wheel'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3457760682689617807</id><published>2009-02-22T01:29:00.007-05:00</published><updated>2009-02-22T01:51:11.528-05:00</updated><title type='text'>Why People Hate Vista (and Other Microsoft Products)</title><content type='html'>I bought a copy of Dawn of War II today. I decided to throw it on my computer and check it out briefly since I wasn't going to have time to play it this weekend.&lt;br /&gt;&lt;br /&gt;Sounds simple, right?&lt;br /&gt;&lt;br /&gt;When I shut down Vista this morning so I could take my laptop with me when I left the house, it did its normal trick of installing updates without asking me if I wanted it to. This forced me to leave the computer running for another twenty minutes before I could leave. This pisses me off every time it happens, but I've gotten used to it by now.&lt;br /&gt;&lt;br /&gt;When I started Vista up this evening to install DOW II, it accused me of software piracy and forced me to dial a number and spend ten minutes on the phone to reactivate a piece of software that I legitimately own. Thanks, now I'm feeling all warm and fuzzy about you guys. Not to mention, how useless is your reactivation process? I didn't even have to speak to a person, the entire thing was entirely automated, and if I had been a pirate it would have been just as easy to enter the reactivation code. Idiots.&lt;br /&gt;&lt;br /&gt;Then, I restarted Vista to get rid of the message it had plastered to the bottom right of the screen telling me my copy of Windows was illegal (by the way, this message was added to my desktop immediately after I successfully reactivated my license). As it was restarting, Vista failed to boot due to "software that was recently installed" - Microsoft's own software, I might add. I spent twenty minutes running a repair tool from the Vista installation disc to get back in to my computer again.&lt;br /&gt;&lt;br /&gt;After Vista finally booted up again, I dropped in the DOW II disk. It recommended I update Vista to SP 1, so I spent half an hour downloading it. After about 20 minutes of running, the installation failed.&lt;br /&gt;&lt;br /&gt;I spent almost two hours updating my entire system with all the outstanding patches. After this, the SP 1 installation still failed.&lt;br /&gt;&lt;br /&gt;The failure linked to a knowledge base article recommending I download a tool to prepare my system for SP 1 installation. I spent 45 minutes downloading and running the tool. I installed SP 1 again. The same error message popped up. FAILED AGAIN.&lt;br /&gt;&lt;br /&gt;Four hours later, I'm installing DOW II without Vista SP 1. And frankly, I'm left asking myself how a company with $50 billion in cash is capable of producing software of such abysmal quality. I'm embarrassed on their behalf.&lt;br /&gt;&lt;br /&gt;Here's how software installations are done, Microsoft.&lt;br /&gt;&lt;br /&gt;1) Check/resolve dependencies&lt;br /&gt;2) Download software&lt;br /&gt;3) Install software&lt;br /&gt;4) Reboot if necessary&lt;br /&gt;&lt;br /&gt;Apple's been getting this right for seven years in OS X. Linux has had apt-get even longer. Most of the stuff in UNIX can be downloaded and installed with make with relative ease.&lt;br /&gt;&lt;br /&gt;Microsoft, I'm happy to inform you that Vista is a fucking atrocity. I know your next attempt will only be your seventh major operating system release, but maybe you can try to get it right this time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3457760682689617807?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3457760682689617807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3457760682689617807&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3457760682689617807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3457760682689617807'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/02/why-people-vista-and-other-microsoft.html' title='Why People Hate Vista (and Other Microsoft Products)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4072526000271993182</id><published>2009-02-15T14:14:00.003-05:00</published><updated>2009-02-15T14:22:46.065-05:00</updated><title type='text'>Cross-Compiling Java to ActionScript 3</title><content type='html'>While in the shower one day this week, I was contemplating how hard it would be to add Java cross-compile support to &lt;a href="http://code.google.com/p/loom-as3/"&gt;Loom&lt;/a&gt;, but it seems like the Eclipse guys have &lt;a href="http://onflash.org/ted/2009/02/publish-swt-to-flash-player.php"&gt;already got this covered&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm not sure what level the cross-compile is implemented at in E4; my intention for Loom had potentially been opcode-to-opcode, with the appropriate language feature trade-off where applicable. I don't have any serious plans for cross-compiling in Loom, but it seems entirely possible.&lt;br /&gt;&lt;br /&gt;In the case of basic use cases, cross-compiling at the bytecode level could be interesting. The original idea I was contemplating was being able to send a Java class across the wire over AMF and load its class definition in to memory in the ActionScript virtual machine, complete with its instruction set. There would be huge problems trying to send classes with references to OS-level components (such as files or network sockets), but since the AMF gateway is usually used for sending value objects I was thinking of something along the line of transmitting classes that adhered to a validation framework implemented on both sides of the wire (think &lt;a href="http://oval.sourceforge.net/"&gt;OVal&lt;/a&gt; for AS3).&lt;br /&gt;&lt;br /&gt;Again, I have nothing particularly serious planned - this is just the sort of stuff I ponder when performing mundane activities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4072526000271993182?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4072526000271993182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4072526000271993182&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4072526000271993182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4072526000271993182'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/02/cross-compiling-java-to-actionscript-3.html' title='Cross-Compiling Java to ActionScript 3'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-691973636445285905</id><published>2009-01-28T12:38:00.003-05:00</published><updated>2009-01-28T12:42:36.366-05:00</updated><title type='text'>T-Shirt Hell Closing Its Doors</title><content type='html'>You have to respect somebody who &lt;a href="http://www.tshirthell.com/goodbye.php"&gt;goes out on their own terms&lt;/a&gt;. F*** you too, Sunshine Megatron - you guys will be missed.&lt;br /&gt;&lt;br /&gt;I am often saddened by the fact that everybody in this country seems to have lost their sense of humor (I'll save their sense of right and wrong, sense of respecting an individual's personal choices, and sense of what makes for good direction for the country for another blog post). Somewhere along the way, this nation founded by rebels became far too politically correct.&lt;br /&gt;&lt;br /&gt;Luckily I have dual citizenship and a skillset in a profession that will provide me work from just about anywhere in the world (no, not that one), so if things get bad enough I'll move. I'm going to give the new administration a four year head start before I consider that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-691973636445285905?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/691973636445285905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=691973636445285905&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/691973636445285905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/691973636445285905'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/t-shirt-hell-closing-its-doors.html' title='T-Shirt Hell Closing Its Doors'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8608678504843398905</id><published>2009-01-28T11:46:00.008-05:00</published><updated>2009-01-28T12:20:36.843-05:00</updated><title type='text'>Highwinds Streamed the People's Choice Awards</title><content type='html'>We always have cool, high-profile stuff happening at Highwinds, but can't always speak about it directly due to NDA until we get the blessing from our partners.&lt;br /&gt;&lt;br /&gt;A few weeks back, we streamed the &lt;a href="http://www.highwinds.com/pr28.html"&gt;People's Choice Awards&lt;/a&gt; simultaneously with the event taking place on TV. It was really cool because our live streams showed you the behind-the-scenes views while the TV showed you the event, so if you had a laptop you could sit and watch the backstage happenings during both the event and the commercial breaks. I was monitoring the event via our &lt;a href="http://www.highwinds.com/stdemo"&gt;StrikeTracker&lt;/a&gt; console to see the real-time analytics as it was taking place, so I got to see what was happening from a whole load of different angles. Our stream was also about 4 seconds faster than the TV, so you got a very small sneak preview of what was about to happen on set. I don't usually like awards shows, but the technology and event management they had in place for this one was really cool and made it worth watching for me.&lt;br /&gt;&lt;br /&gt;Using StrikeTracker's real-time features, I was able to see a handful of connections from the teams at Highwinds and Incited Media around 4 PM while the backstage cameras were being set up and the streams were being tested. Later on, I watched the traffic pick up in real-time from about 8:20 PM all the way up to the event, and could see the stream analytics throughout the broadcast. It's very cool to see this sort of thing happening live, and then be able to go back to the hourly views and see the aggregate analytics information getting rolled up by the CDN with barely any latency. Our real-time data gets refreshed in StrikeTracker every fifteen seconds, and is able to show you what the CDN reported within 30-45 seconds of latency after each chunk of data is delivered. This is an unprecedented capability when compared to our competitors whose analytics data often lags behind by hours - sometimes hours &lt;i&gt;after the event is over&lt;/i&gt;, let alone after each chunk of data is sent to the viewers as it is happening.&lt;br /&gt;&lt;br /&gt;We're expecting a lot more of this sort of mixed-media event in the future, most notably for live events being distributed over the web in additional to traditional media. For our next-generation console, we put our "user" hats on and came up with a feature set that supports live event technicians in the field and marketing/executive analysts during each event. Our engineering teams are working hard on these features right now, with the goal of providing even more up-to-the-minute analytics data and command-and-control capabilities than we have today. I'd love to tell you more, but you'll just have to wait until we release the products officially sometime soon.&lt;br /&gt;&lt;br /&gt;Our support of the People's Choice Awards is also currently the top story on &lt;a href="http://www.contentinople.com/author.asp?section_id=450&amp;doc_id=171081"&gt;contentinople.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8608678504843398905?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8608678504843398905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8608678504843398905&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8608678504843398905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8608678504843398905'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/highwinds-streamed-peoples-choice.html' title='Highwinds Streamed the People&apos;s Choice Awards'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-7893104992789505106</id><published>2009-01-28T11:17:00.002-05:00</published><updated>2009-01-28T11:21:00.580-05:00</updated><title type='text'>In Search of a User Experience Design Expert</title><content type='html'>I just posted this to the groups I am associated with on LinkedIn, and wanted to put it here to get the word out further. Please forward this to anybody you know who may be interested - remote resources are welcomed.&lt;br /&gt;&lt;br /&gt;Highwinds is in search of an independent contract resource to assist with user interface/user experience development for a next-generation Rich Internet Application.&lt;br /&gt;&lt;br /&gt;We're presently working off internally-developed wireframes, and are building the application's functional elements. The resource we're looking for will be responsible for developing look and feel, illustrating custom iconography and branding, making recommendations for transitions/visual cues, and developing a color palette.&lt;br /&gt;&lt;br /&gt;Please note that a traditional web design background on its own will not be sufficient for this opportunity. The ideal candidate will have experience developing modern web/desktop-based software applications and will be familiar with Rich Internet Application technologies and cutting-edge user experience work in this space.&lt;br /&gt;&lt;br /&gt;We expect that there will be a higher volume of work up front, followed by smaller engagements throughout the project as additional modules are developed. If you are interested, or know somebody who might be, I can be contacted at &lt;a href="mailto: maxim.porges@highwinds.com"&gt;maxim.porges@highwinds.com&lt;/a&gt;. We will be making a selection largely based upon portfolio, so please submit a copy of user interface development work that you have done or a link to a portfolio on the web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-7893104992789505106?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/7893104992789505106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=7893104992789505106&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7893104992789505106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7893104992789505106'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/in-search-of-user-experience-design.html' title='In Search of a User Experience Design Expert'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5277792094128288817</id><published>2009-01-24T02:04:00.002-05:00</published><updated>2009-01-24T02:13:51.201-05:00</updated><title type='text'>Hilarious and Tragic in Equal Measure</title><content type='html'>First week at the White House has been a &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/01/21/AR2009012104249_pf.html"&gt;technological trip back in time&lt;/a&gt; for Obama's team. Hardly surprising, yet also ridiculous; no wonder it takes the government so long to get anything done.&lt;br /&gt;&lt;br /&gt;It's amazing how your personal productivity gets tied to the technology you are most comfortable with. When I have to sit down and use earlier versions of OS X or Windows that are lacking &lt;a href="http://en.wikipedia.org/wiki/Spotlight_(software)"&gt;Spotlight&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Quicksilver_(software)"&gt;Quicksilver&lt;/a&gt;, and all the other stuff I am accustomed to, I go nuts. Even something as simple as being able to open Console on OS X to see what is happening under the hood is sorely missed on less transparent platforms.&lt;br /&gt;&lt;br /&gt;On our daily sync-up call with the Phoenix office, the Ops guys were saying that the Oval Office didn't even have Ethernet jacks. Apparently Obama is the first president who has wanted to make a computer a full-time fixture on his desk. I haven't validated these claims in any way, but it would not surprise me if they were true.&lt;br /&gt;&lt;br /&gt;Of course, a major reason for the tech lag is the increased security requirements; once you have a secure setup it's hard to change it without opening holes. That being said, I know that Macs have seen an increasing use in military applications since OS X came out, so fingers-crossed the White House will soon become the Mac House too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5277792094128288817?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5277792094128288817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5277792094128288817&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5277792094128288817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5277792094128288817'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/hilarious-and-tragic-in-equal-measure.html' title='Hilarious and Tragic in Equal Measure'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2797252097753114105</id><published>2009-01-22T10:47:00.002-05:00</published><updated>2009-01-22T11:08:09.544-05:00</updated><title type='text'>Flex Camp Miami Topic Announced</title><content type='html'>My topic and speaker bio have been posted to the Flex Camp Miami web site. My talk is titled &lt;a href="http://www.flexcampmiami.com/page.cfm/agenda/in-search-of-aop-for-as3"&gt;In Search of AOP for AS3&lt;/a&gt;, and you can get the full scoop by following the link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2797252097753114105?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2797252097753114105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2797252097753114105&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2797252097753114105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2797252097753114105'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/flex-camp-miami-topic-announced.html' title='Flex Camp Miami Topic Announced'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2150950804768364953</id><published>2009-01-21T23:35:00.007-05:00</published><updated>2009-01-22T00:05:34.964-05:00</updated><title type='text'>Government 2.0</title><content type='html'>Whenever I get engaged in a political discussion, I find myself thinking in terms of what makes sense for a business. The way I have always seen it, the first bill I pay on the 15th and 30th when I get my paycheck is to the government, and in return I should be getting good service and a receipt - just like any other business transaction.&lt;br /&gt;&lt;br /&gt;But this isn't what happens. As long as I have been earning my keep, I've seen the money evaporate out of my paycheck and then disappear. I have no idea where it is being spent, other than vague guesses I can make based upon the cost of government programs large enough to get press.&lt;br /&gt;&lt;br /&gt;I know that a lot of my money goes to programs that support special interests and lobbyists, and pet projects of the people in power. I know this because it's the same bullshit that occurs in large companies all over the world, where the people in power make political decisions instead of the decisions that are in the best interest of the company and those working for it. And as long I have been working, there has been nothing that I could do to make the government work any differently.&lt;br /&gt;&lt;br /&gt;The bit about all this that has never made sense to me is why the government is not run like a publicly traded company. All the companies I am invested in send me statements required by the regulatory system giving me detailed information about where they spent, made, and lost money. I'm engaged by them for shareholder votes when they have to make corporate policy decisions, and I receive detailed documentation describing the motions on the table, the company's preference, and the reasons for/against. This all makes perfect sense, since it's my money that they are acting upon. And they send all of this to me with no effort required on my part.&lt;br /&gt;&lt;br /&gt;Now, I expect that in the past I would have been able to get this information from the government if I had dug deeply enough. But it really shouldn't be that much work;  after fourteen years in the workforce, I've got far more money invested in the government than I have in any of the companies in which I own stock. And so far, my investment in the government has been a staggering loss.&lt;br /&gt;&lt;br /&gt;And that's why I'm pretty excited about the new &lt;a href="http://www.whitehouse.gov"&gt;whitehouse.gov&lt;/a&gt; web site. Not only are there several RSS feeds to follow, but the new president has &lt;a href="http://www.whitehouse.gov/blog/change_has_come_to_whitehouse-gov/"&gt;promised&lt;/a&gt; to make all non-emergency legislation available five days before it is signed, and there's &lt;a href="http://www.whitehouse.gov/contact/"&gt;an easy way to send feedback&lt;/a&gt; to the White House if I so desire - something I've been invited to do. I can also &lt;a href="http://www.whitehouse.gov/weekly_address/"&gt;watch the president's weekly video address&lt;/a&gt; and &lt;a href="http://www.whitehouse.gov/welcome/ "&gt;sign up for email notifications&lt;/a&gt;. Plus, I seem to remember Barack promising during his campaign to publish details from the budget as they come together, which (assuming I'm remembering correctly) I am really interested to see.&lt;br /&gt;&lt;br /&gt;So, I'll basically be able to stay informed effortlessly, just like with my investments. Frankly, this is the least the government can do, which makes me wonder why the hell we've had to wait over a decade for the government to properly embrace the Internet. But whatever; it's here now.&lt;br /&gt;&lt;br /&gt;So let's review the status of my citizenship in Government 2.0.&lt;br /&gt;&lt;br /&gt;1) Subscribed to the &lt;a href="http://www.whitehouse.gov/blog/"&gt;presidential blog&lt;/a&gt;? Check!&lt;br /&gt;2) On the White House email list? Check!&lt;br /&gt;3) Bookmarked for the weekly video address? Check!&lt;br /&gt;&lt;br /&gt;It's certainly salad days, and the new administration's actions will be the measure of their mettle, but I'd say they're off to a pretty good start so far. And if things should change, I'll bitch about it here on my blog as usual...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2150950804768364953?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2150950804768364953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2150950804768364953&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2150950804768364953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2150950804768364953'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/new-whitehousegov.html' title='Government 2.0'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3708247390674807454</id><published>2009-01-21T11:21:00.004-05:00</published><updated>2009-01-21T13:27:07.591-05:00</updated><title type='text'>Highwinds Delivers a Live Streaming Record During 2009 Inauguration</title><content type='html'>While it's impossible to know for sure, yesterday's inauguration of Barack Obama is being heralded by many in the industry as the largest streaming Internet event ever. But regardless of its record-breaking status for the CDN industry as a whole, it was a huge day for top-tier CDNs such as Highwinds - in fact, &lt;a href="http://www.highwinds.com/pr27.html"&gt;it was a record day for us&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I can't disclose the name of our partners who were streaming on our network since we are under NDA, but I can tell you that as I spoke to friends and family about the event, they complained about the video quality of every stream from all the major news sites - except for the one that Highwinds was delivering. Of course, stream quality is entirely subjective and depends on more factors than just the CDN delivering it, but it was gratifying to hear this nonetheless.&lt;br /&gt;&lt;br /&gt;For a little more, you can read &lt;a href="http://blog.streamingmedia.com/the_business_of_online_vi/2009/01/akamai-limelight-and-highwinds-deliver-over-8-million-simultaneous-streams.html"&gt;Dan Rayburn's post&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3708247390674807454?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3708247390674807454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3708247390674807454&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3708247390674807454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3708247390674807454'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/highwinds-delivers-live-streaming.html' title='Highwinds Delivers a Live Streaming Record During 2009 Inauguration'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1892566444491660033</id><published>2009-01-21T01:50:00.001-05:00</published><updated>2009-01-21T01:51:10.919-05:00</updated><title type='text'>Flex Camp Miami Announced on InsideRIA</title><content type='html'>&lt;a href="http://www.insideria.com/2009/01/flex-camp-miami.html"&gt;Sweet&lt;/a&gt;. With all the press on the event so far (and the limited number of seats) I expect it will be packed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1892566444491660033?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1892566444491660033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1892566444491660033&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1892566444491660033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1892566444491660033'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/flex-camp-miami-announced-on-insideria.html' title='Flex Camp Miami Announced on InsideRIA'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6341667635397497956</id><published>2009-01-21T00:56:00.007-05:00</published><updated>2009-04-15T16:15:32.464-04:00</updated><title type='text'>AOP Advice for ActionScript 3 and Flex Coming Very, Very Soon</title><content type='html'>&lt;i&gt;&lt;b&gt;UPDATE:&lt;/b&gt; You can now follow the latest goings-on with Loom at the &lt;a href="http://loom.ninjitsoft.com/"&gt;Loom Blog&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;At the end of December, I &lt;a href="http://maximporges.com/2008/12/legross-committer.html"&gt;made a passing reference&lt;/a&gt; to my bytecode weaving library (&lt;a href="http://code.google.com/p/loom-as3/"&gt;Loom&lt;/a&gt;) for ActionScript 3 and Flex apps. Today, I finished the first phase of this library, which was full parsing of the AVM2 spec in to AS3 domain objects.&lt;br /&gt;&lt;br /&gt;Why the hell am I doing this? Well, ever since AS3 came out, I've been loving the compiler optimization but hating the inflexibility of the new traits/object prototype model. There's a serious need for AOP functionality in AS3 to support logging, security, mock objects, run/compile-time weaving, and all of the other exciting dynamic proxy stuff you can do with AOP, but there is neither language support nor a library out there for doing this as of yet.&lt;br /&gt;&lt;br /&gt;After much digging in Google, I have found heroic (yet naive) efforts to get something equivalent to eval() in AS3 and a few libraries for introspecting and printing the bytecode, but it was pretty obvious that none of these attempts were going to cut it for what I wanted to do. Since Adobe published the AVM2 spec, I figured that something akin to a Java CGLIB port couldn't be too hard. After looking through the documentation about two months ago, I decided that a bytecode weaving library for AS3 looked entirely achievable.&lt;br /&gt;&lt;br /&gt;I have a few more phases to roll through, but if I can continue at the current rate I think I'll be replacing static elements of bytecode by the end of the week, and possibly weaving functional mixin code in to classes in a week or two. The first mixin I'm planning on working on is dynamic subclassing of existing compiled classes.&lt;br /&gt;&lt;br /&gt;Basically, what this will entail is introspecting the bytecode for the existing class, and creating a dynamic subclass that has an overridden version of every method from the superclass. Each overridden method will have a near-identical set of opcodes that instructs the AVM to invoke a method internal to the dynamic class - a method which will also be mixed in at runtime via bytecode enhancement. This mixed-in method will accept a reference to the original function, and will be able to invoke AOP advice before, after, and during exception scenarios for the original method (if such advice exists - otherwise the original method will simply be invoked). The advice itself will be stored as closures within a map inside the dynamic subclass; this will allow a programmer to load the dynamic proxy through an AOP factory, add advice to it by method name, and supply a closure that can either replace or run sidecar to the original method. Examples of this sidecar method could be a logger, global exception handler, or around advice that can optionally proceed with or cancel invocation.&lt;br /&gt;&lt;br /&gt;To hook this functionality in to a Flex app or test suite, all that's really needed is a runtime module loader that can pull in a SWF and manipulate the bytecode block before handing the enhanced code off to the Flash Player. Once this is in place, we should have full AOP capabilities in AS3.&lt;br /&gt;&lt;br /&gt;I'd also like to see the library end up with runtime weaving via compile-time annotations (possibly with an AspectJ-style Eclipse plugin down the line), but my main goal is to get the basic AOP stuff in there so we can have proper mocking support in AS3. We'll see where things go after that, but since I will be hosting the project open-source on Google Code, people will be able to do whatever they like with it.&lt;br /&gt;&lt;br /&gt;Stay tuned to my blog and I'll keep you posted as things develop. You can expect to see the alpha release of the code in &lt;a href="http://code.google.com/p/loom-as3/source/checkout"&gt;the SVN repo on my Google Code project&lt;/a&gt; within a week or so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6341667635397497956?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6341667635397497956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6341667635397497956&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6341667635397497956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6341667635397497956'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/aop-advice-for-actionscript-3-and-flex.html' title='AOP Advice for ActionScript 3 and Flex Coming Very, Very Soon'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2128563528674114094</id><published>2009-01-19T23:44:00.012-05:00</published><updated>2009-01-20T00:15:01.969-05:00</updated><title type='text'>Eight Years of Epic Fail</title><content type='html'>&lt;p align="center"&gt;&lt;br /&gt;&lt;img src="http://hypertextfragments.com/maximporges.com/bush.jpg"/&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;"Mission Accomplished"? Perhaps - if the mission was to enact an incompetent administration, take us to war on false pretenses, fail to pay any attention to a national disaster, allow an economic meltdown, and successfully dodge accountability for any of it.&lt;br /&gt;&lt;br /&gt;Was George W. Bush the worst president in history? I don't know enough history to answer that fairly, but in my opinion he was the worst in recent memory. Any one of the crowning achievements listed in my last paragraph would be sufficient to put a scarlet letter on a president's legacy, but to rack up five of them in eight years is astounding.&lt;br /&gt;&lt;br /&gt;But at the end of the day, it's not Bush's fault - it's ours. If a company hires somebody who is ill-equipped to do the job and doesn't fire them, it's not the employee's fault. Bush was voted in under suspicious circumstances; we failed to dig deeper. He was voted in a second time; we failed to produce a worthy alternative. And in the last two years when Bush really began to reveal how out of touch and short of solutions he was, we failed to throw him out.&lt;br /&gt;&lt;br /&gt;If anything, the last eight years has proven less to me about Bush's inadequacies as a leader, and more about how fragile our political system is and how powerless we are to impeach our leadership when the time comes. I shudder to think about how much worse could things have gotten while we sat around and grumbled rather than doing anything serious about it. Bush is not a deliberately evil person, but imagine the damage that could have been done if he was.&lt;br /&gt;&lt;br /&gt;Let's hope the new guy does better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2128563528674114094?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2128563528674114094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2128563528674114094&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2128563528674114094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2128563528674114094'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/eight-years-of-epic-fail.html' title='Eight Years of Epic Fail'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-853215706034885483</id><published>2009-01-18T14:38:00.003-05:00</published><updated>2009-01-18T14:50:23.004-05:00</updated><title type='text'>monome</title><content type='html'>Ever since I discovered that I enjoyed programming as much as synthesizers, I've been looking for ways to combine the two.&lt;br /&gt;&lt;br /&gt;To this end, I was planning on buying a &lt;a href="http://www.chameleon.synth.net/english/developers/techdocs.shtml"&gt;Chameleon&lt;/a&gt; several years ago, but it had two big strikes against it: it cost a fortune, and had a really low-level Motorola DSP-based programming interface that didn't run on OS X (boo). Plus, I think they stopped making them.&lt;br /&gt;&lt;br /&gt;Anyway, I just came across the &lt;a href="http://www.monome.org"&gt;monome&lt;/a&gt; while trolling the &lt;a href="http://www.infekted.org"&gt;Virus forums&lt;/a&gt;. The monome is still somewhat overpriced but has a variety of pretty flexible programming options, including a few scripting languages that look dead simple to pick up. Plus, there are a bunch of &lt;a href="http://docs.monome.org/doku.php?id=app"&gt;apps&lt;/a&gt; out there for the monome already, so even if I can't be bothered to learn how to program it I can have it make noises and flash lights at me. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/user372630/videos/sort:plays"&gt;Check out some videos of the monome in action&lt;/a&gt;. Most of these are using the &lt;a href="http://docs.monome.org/doku.php?id=app:mlr"&gt;mlr application&lt;/a&gt; for sample looping.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-853215706034885483?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/853215706034885483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=853215706034885483&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/853215706034885483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/853215706034885483'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/monome.html' title='monome'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5663587012973635728</id><published>2009-01-16T14:05:00.006-05:00</published><updated>2009-01-16T15:40:34.400-05:00</updated><title type='text'>Flex Camp Miami - March 6th, 2009</title><content type='html'>Brian Rinaldi is organizing &lt;a href="http://www.flexcampmiami.com/"&gt;Flex Camp Miami&lt;/a&gt;, which takes place on March 6th, 2009. For a mere $30 you can get your Flex on, and enjoy Florida during the one part of the year when your face won't melt off when you step outside.&lt;br /&gt;&lt;br /&gt;The event is being sponsored by both Universal Mind and Adobe, so you know it will be the hotness. I'll keep you posted as more details arise. Since I'll be presenting, I'll also be posting my topic description to my blog once I have it finalized.&lt;br /&gt;&lt;br /&gt;Please let me know if you have any questions or suggestions and I will forward them to Brian, or you can just hit him up directly on &lt;a href="http://www.remotesynthesis.com/post.cfm/flex-camp-miami-flex-air-sun-and-warmth"&gt;his blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5663587012973635728?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5663587012973635728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5663587012973635728&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5663587012973635728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5663587012973635728'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/flex-camp-miami-march-6th-2009.html' title='Flex Camp Miami - March 6th, 2009'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-691301827249003149</id><published>2009-01-14T22:15:00.006-05:00</published><updated>2009-01-14T23:19:32.721-05:00</updated><title type='text'>Farewell, Steve Jobs</title><content type='html'>As I'm sure you will have seen in the news today, Steve Jobs announced his decision to take a leave of absence from Apple to focus on his health, with plans to return to the company in June 2009. However, as sad as it may be for Apple fans to accept, I believe that this is the last we will see of Steve Jobs at Apple in the role we have come to know him since his return to the company in 1997.&lt;br /&gt;&lt;br /&gt;Steve has done an amazing job restoring the company back to its former glory in the last eleven years. Apple is back on the rise, with recent reports indicating that Macs make up 10% of the world's computers; this is astonishing considering that they were in the low single digits before Steve's return. Add to this the roaring success of Apple's music business with the iPod and iTunes, and the sensation they caused with the portable computer-with-a-phone that is the iPhone, and you have one hell of a legacy for any CEO to claim proud ownership to.&lt;br /&gt;&lt;br /&gt;Steve narrowly escaped death several years ago during his brush with pancreatic cancer. The strain Steve contracted of this normally incurable and fatal disease turned out instead to be a rare and treatable form, but his battle with it has clearly taken a physical toll from which he may never fully recover. Many are speculating that his latest problems, while not a resurgence of the cancer, are side effects of his former condition.&lt;br /&gt;&lt;br /&gt;So, what will the future hold for Apple? I believe more of the same success they have had in the recent past, although perhaps with slightly less personality than they have had with Steve at the helm. Many do not realize that Tim Cook ran Apple for some time while Steve was secretly dealing with cancer, and nobody knew the difference. There's no reason why things should be different now, especially since Apple is so much stronger now than they were during their last stint without Steve.&lt;br /&gt;&lt;br /&gt;Steve's role at Apple is a visionary one in which he makes decisions about the long term direction and strategy for the company in a world of technology that is constantly changing. But Steve's not writing code, building hardware, creating marketing pieces, or managing the daily operation of Apple's vast network of stores. People need to realize that the team Apple has built in recent years is capable of doing all of these things independently of Steve, and doing them very well. One need only watch a video of Jonathon Ive describing one of Apple's products to see that the passion, talent, and ability for sheer greatness at Apple is not limited to Steve Jobs alone.&lt;br /&gt;&lt;br /&gt;So, while Apple will certainly be different without Steve, they won't be so different as to not be able to continue their present successful course. I can easily see Steve staying on with Apple as a member of the board, lending his insight and strategic vision to the company while Tim Cook and the rest of the executives continue to operate Apple as a media-savvy, cash-rich, and quality-conscious powerhouse.&lt;br /&gt;&lt;br /&gt;I can't pretend to not be saddened by this turn of events. My life has been enriched by Apple's products, without which I'd be forced to languish in Linux, wallow in Windows, poke at an inscrutable interface on any of the hundreds of crappy mobile devices out there, and/or deal with second-rate productivity software instead of the polished beauty of OS X and its surrounding apps. As a technology professional, my world is truly better because of what Apple has brought to the market. Having been a Mac user for the past eight years, I find myself leaning toward the qualities of Apple's best products when making decisions about the software that my team is building at Highwinds: simplicity, immediacy, and beauty.&lt;br /&gt;&lt;br /&gt;But enough about Apple. Steve Jobs was one of two guys who literally changed the course of the world in the late eighties. Steve has almost singlehandedly added a strong force of yang to the technology industry's many proponents of yin. He's also a husband and a father, and at the present time a human being dealing with the scary proposition of health problems in the time of his life when he should instead be looking forward to a long and well-deserved retirement.&lt;br /&gt;&lt;br /&gt;They say that the light that burns twice as bright lasts half as long, but I sincerely hope this is not the case for Steve Jobs. I wish him both a speedy recovery and a long and happy life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-691301827249003149?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/691301827249003149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=691301827249003149&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/691301827249003149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/691301827249003149'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/farewell-steve.html' title='Farewell, Steve Jobs'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-9073673654194144200</id><published>2009-01-10T01:09:00.004-05:00</published><updated>2009-01-10T01:16:04.254-05:00</updated><title type='text'>Blu(-Ray) Completes Me</title><content type='html'>I picked up a copy of "The Dark Knight" on Blu-Ray tonight and Jessica and I watched it on our new PS3. The quality of 1080p is really pretty stunning, especially for a movie like this that was so lovingly shot in IMAX. Anecdotally, if you decide to pick up "The Dark Knight", be sure to get the special edition since the behind the scenes stuff is plentiful and top-notch - they have a great story in there about how they wrecked a $300,000 IMAX camera (one of only four in the world) during the filming of one of the chase scenes.&lt;br /&gt;&lt;br /&gt;I must say that Blu-Ray is a tremendous improvement over DVD. The interactivity of the menus for the special features really lets you feel like you are getting "in" to the movie as you dabble around behind the scenes, and having interviews in 1080p gives you clarity that makes it like you're sitting in the room with the guys being interviewed.&lt;br /&gt;&lt;br /&gt;The only downside of all this extra visual quality is that I now want a &lt;a href="http://i170.photobucket.com/albums/u252/TheBraxcave/tumbler.jpg"&gt;Tumbler&lt;/a&gt; more than ever... I guess I'll have to settle for the remote-controlled version until I make enough money to commission my own full-size model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-9073673654194144200?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/9073673654194144200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=9073673654194144200&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9073673654194144200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9073673654194144200'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/blu-ray-completes-me.html' title='Blu(-Ray) Completes Me'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3547838837244420368</id><published>2009-01-09T15:04:00.003-05:00</published><updated>2009-01-09T15:41:13.168-05:00</updated><title type='text'>Lack of Top Level Error/Exception Handling in Flash Player</title><content type='html'>We're getting ready to do a pretty significant re-architecture of our StrikeTracker console for its 2.0 release, and as part of the process we want to put in bullet-proof error notification for when things go bad or slip through QA. StrikeTracker is coded on top of the Flash/Flex platform, so we are limited to the capabilities in the ActionScript 3 language.&lt;br /&gt;&lt;br /&gt;Typically, in Java apps I have used a standard three-layer app with service, business, and data slices. Exceptions are dispatched through the usual Java mechanism, some of which can be handled at the various tiers and dealt with without making it up to the user. When things go really bad (when exceptions are either un-trapped due to programmer error or un-trappable because they are unrecoverable such as a database failure) I have used AOP interception to log the unhandled exception and notify appropriate parties.&lt;br /&gt;&lt;br /&gt;So, we figured that there would be something similar in the Flash Player. Turns out we were wrong. While there are some basic ways to trap errors in Flash (using try/catch) and error events (using the onError listener on the main Flex Application tag), it is still possible for an asynchronous process to throw an Error outside of a try/catch with no way to trap it. Typically in the consumer Flash Player, unhandled exceptions result in things "not working" (i.e. the app just seems to be unresponsive to the user's demands), but with no notification to the end user of the error that just happened. If you have the Flash Debug Player, you get a modal Error dialog with the stack trace - definitely more useful, but not something that an end user is going to be able to see and report (unless they are running the Debug Player, which is rare). Obviously, neither situation is ideal, especially because an end user may get an error in the consumer player and have no way to let the developer know what broke. Likewise, the developer has no way to trap and log/communicate the error so that they can diagnose and eliminate it (or at least add a handler for it).&lt;br /&gt;&lt;br /&gt;There has been a &lt;a href="http://bugs.adobe.com/jira/browse/FP-444"&gt;bug/feature request&lt;/a&gt; open on Adobe's JIRA site for better exception handling for over eighteen months, but outside of mentions that it might get handled during Flex 3 (which it obviously didn't) there is no firm timeline stated for when this might be resolved. I could understand this being delayed if adding a global error listener would cause backward compatibility issues with existing Flash/Flex apps, but I can't imagine how it could; apps that don't listen to the error channel will continue to not care about the errors as they do today.&lt;br /&gt;&lt;br /&gt;So, if you are a Flash/Flex developer and want proper exception management in Flash, go and &lt;a href="http://bugs.adobe.com/jira/browse/FP-444"&gt;vote on the issue&lt;/a&gt;. Global exception handling is a feature in any self-respecting development platform, and the Flash player should be no exception (pun intended).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;NOTE:&lt;/b&gt; to vote on any issues in Adobe's bug tracking system you will need to create an account. This only takes a minute to do, and they don't spam you so rest assured that this is a worthwhile exercise for you as a Flash/Flex developer.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3547838837244420368?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3547838837244420368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3547838837244420368&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3547838837244420368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3547838837244420368'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/lack-of-top-level-errorexception.html' title='Lack of Top Level Error/Exception Handling in Flash Player'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4915090004142847167</id><published>2009-01-01T13:35:00.003-05:00</published><updated>2009-01-01T14:05:05.284-05:00</updated><title type='text'>Farewell, 2008</title><content type='html'>Another year slips in to the ether. 2008 was a transformative year for me in so many ways.&lt;br /&gt;&lt;br /&gt;Jessica and I got engaged after almost six years together.&lt;br /&gt;&lt;br /&gt;I finally figured out what I wanted to do with my career, and took the first step to making it happen.&lt;br /&gt;&lt;br /&gt;I re-prioritized my work/life balance. It's not perfect yet, but I hope the trend will continue.&lt;br /&gt;&lt;br /&gt;I made my scouting trip to the west coast, which was everything I hoped it would be.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flickr.com/photos/22985469@N05/sets/72157611176050867/"&gt;I turned 30&lt;/a&gt;, my best birthday yet. It was a chance to look back with family and friends and be truly humbled by everything I've been blessed with.&lt;br /&gt;&lt;br /&gt;I participated in my first election. I'm hoping the guy I voted for can set the country back on course to being the place it was when I first got here in 1993.&lt;br /&gt;&lt;br /&gt;I got a new MacBook Pro, a Blu-Ray player, and an Access Virus Ti. Meaningless chachkis perhaps, but I still love my gadgets.&lt;br /&gt;&lt;br /&gt;But best of all, for the first time in a long time, I found myself waking up happy pretty much every day of the year.&lt;br /&gt;&lt;br /&gt;I hope 2009 brings as much happiness, surprise, and excitement to your life as 2008 did to mine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4915090004142847167?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4915090004142847167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4915090004142847167&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4915090004142847167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4915090004142847167'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2009/01/farewell-2008.html' title='Farewell, 2008'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2135355303220705173</id><published>2008-12-30T23:24:00.004-05:00</published><updated>2008-12-30T23:40:19.563-05:00</updated><title type='text'>Great Spring 2.5 Book: Spring Recipes</title><content type='html'>I've been refreshing my skills on the lightweight Java stack (i.e. Spring/Hibernate/JUnit/JMock/AspectJ) recently, which has been really fun.&lt;br /&gt;&lt;br /&gt;It's been a while since I built something significant in Java. 95% of the work I've been doing at Highwinds has been straight Flex, and during my management stint at CFI before I came to Highwinds I spent most of my time directing/architecting development efforts as opposed to getting my hands dirty. As a result, I left off from my last coding project with Spring just as 2.0 was coming out, which meant I missed out on all the bad-ass annotation support and could only look over developer's shoulders to see it in action.&lt;br /&gt;&lt;br /&gt;Of course, nothing has changed in principle - the implementation just got simpler and better. I've spent the last week picking up the "how" of the Spring aspect-oriented support for... well, everything, and learning JMock.&lt;br /&gt;&lt;br /&gt;I needed a quick reference to get moving, so to supplement the metric assload of online materials I picked up a copy of &lt;a href="http://www.apress.com/book/view/9781590599792"&gt;Spring Recipes by Gary Mak&lt;/a&gt;. It's an awesome quick reference/cookbook and was exactly what I needed to get going. After all, I knew what the framework could do, just needed something to boil down the config for me so I could put the principles to use.&lt;br /&gt;&lt;br /&gt;So, here I am a week later with an almost-finished Java service app. Of all the features, I think the JMock and JUnit stuff is my favorite. There's nothing cooler than being able to test your stack on the way down as you code it without having even finished the components at the lower layers - love it. Annotation-based validation in &lt;a href="http://oval.sourceforge.net/"&gt;OVal&lt;/a&gt; comes in second, and Hibernate config-by-domain-object-&lt;a href="http://annotations.hibernate.org/"&gt;annotation&lt;/a&gt; comes in third.&lt;br /&gt;&lt;br /&gt;LeGros was also showing me Grails this week, so that might be what I turn my attention to next...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2135355303220705173?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2135355303220705173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2135355303220705173&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2135355303220705173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2135355303220705173'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/great-spring-25-book-spring-recipes.html' title='Great Spring 2.5 Book: Spring Recipes'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6743876509340555597</id><published>2008-12-30T23:04:00.005-05:00</published><updated>2008-12-30T23:40:53.036-05:00</updated><title type='text'>LeGros's a Fluint Committer!</title><content type='html'>Congrats to &lt;a href="http://www.brianlegros.com"&gt;Brian LeGros&lt;/a&gt; for being added as a committer to the &lt;a href="http://code.google.com/p/fluint/"&gt;Fluint&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;As Brian was &lt;a href="http://www.brianlegros.com/blog/2008/12/17/continuous-integration-with-maven-flex-fliunt-and-hudson/"&gt;wrangling the AIRRunner in to shape&lt;/a&gt; to support our continuous integration environment, he ended up cleaning up the code for the AIR support significantly. The result is a test runner that produces Surefire-compatible output and counts errors properly, plus a bunch of other stuff that Brian tallies up in his post. Turns out the Fluint team liked Brian's changes enough to make him a part of the project.&lt;br /&gt;&lt;br /&gt;Now, if Adobe would just hurry up and find a way to allow Flash and AIR apps to run headlessly, and if I could finish my &lt;a href="http://code.google.com/p/loom-as3/"&gt;bytecode weaving library for ActionScript 3&lt;/a&gt; so we can have proper mocks, we might be able to approach real testing capabilities for the Flash/Flex in the next year or so.&lt;br /&gt;&lt;br /&gt;Don't hold your breath... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6743876509340555597?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6743876509340555597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6743876509340555597&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6743876509340555597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6743876509340555597'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/legross-committer.html' title='LeGros&apos;s a Fluint Committer!'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-678594643257154155</id><published>2008-12-24T08:41:00.002-05:00</published><updated>2008-12-24T08:51:20.621-05:00</updated><title type='text'>Class/Interface Naming Annoyances</title><content type='html'>I believe that when naming classes and interfaces in a system, they should be named after their purpose - not their implementation. This is purely a stylistic choice, but I'm always interested to see who does what. I've seen both practices employed, and while neither is "better", I have my preference.&lt;br /&gt;&lt;br /&gt;When I started programming, I used to name things "Abstractxxx" and "Ixxx" to indicate that they were abstract classes or interfaces. I quickly found this was both redundant and could lead to confusion. It's redundant because languages that support the features of abstraction and interfaces have keywords that describe them, and most can generate documentation that logically separates interfaces from classes. It can lead to confusion because if you decide to refactor an object (such as extracting an interface at a later time or making something abstract concrete), you not only have to change the implementation, but the name as well. People familiar with a codebase then have to relearn the new names due to the refactoring change.&lt;br /&gt;&lt;br /&gt;Of course, modern IDEs handle refactoring very gracefully (and might even find all your name references in non-code resources such as config files), but that's not really the point. The point is: choose your implementation and your names separately. That way, you can refactor whenever you feel like it and the purpose of the object is captured in its name without any unnecessary hints in to the implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-678594643257154155?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/678594643257154155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=678594643257154155&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/678594643257154155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/678594643257154155'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/classinterface-naming-annoyances.html' title='Class/Interface Naming Annoyances'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-847350093255261713</id><published>2008-12-21T23:02:00.013-05:00</published><updated>2008-12-22T00:49:53.576-05:00</updated><title type='text'>Mini Review: Access Virus TI Polar</title><content type='html'>I got a new toy recently. To paraphrase Lester Burnham from &lt;a href="http://www.imdb.com/title/tt0169547/quotes"&gt;American Beauty&lt;/a&gt;: a 2006 Access Virus TI Polar. The synth I've always wanted and now I have it. I RULE! :)&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;a href="http://www.access-music.de/products.php4?product=virustipolar"&gt;&lt;img src="http://hypertextfragments.com/maximporges.com/virus/virusti_polar_b.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.access-music.de/products.php4?product=virustipolar"&gt;&lt;img src="http://hypertextfragments.com/maximporges.com/virus/virusti_polar_f.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Some People Who Know What They're Doing&lt;/b&gt;&lt;br /&gt;If you can't be bothered to read my audio-nerd review, here's a few links to videos of the synth in action, and editorial reviews that you might find interesting if you are thinking about buying a Virus TI. Feel free to post questions here as well and I will do my best to answer them as my level of expertise matures.&lt;br /&gt;&lt;br /&gt;The Atomizer demos are my favorite. It's like instant &lt;a href="http://www.btmusic.com/"&gt;BT&lt;/a&gt;-stutter effect.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://remixmag.com/video/rh_miami/2008/atomizer_rhmia08/"&gt;Marc Schlaile demoing Atomizer (the best Atomizer demo I found so far)&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.sonicstate.com/news/2008/01/19/wnamm08-slice-and-dice-with-access-ti/"&gt;Rich Devine demoing the Atomizer plugin&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.youtube.com/watch?v=kbJTiypKuQs"&gt;Nutty D&amp;B Atomizer-plus-old skool-Roland TR-606 demo&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.sonicstate.com/news/2005/01/24/wnamm05-access-virus-ti-in-da-house/"&gt;In-depth demo of Virus full-size keyboard with Ben Crossland from Access at NAMM 2005&lt;/a&gt; (choose your player from the links at the top)&lt;br /&gt;- &lt;a href="http://www.youtube.com/watch?v=41BUEC-il3g"&gt;People dicking around with a Virus TI Polar at Remix Hotel 2008 in Miami, FL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A Little History&lt;/b&gt;&lt;br /&gt;Back in 1997, &lt;a href="http://www.access-music.de"&gt;Access&lt;/a&gt; came out with the &lt;a href="http://www.access-music.de/products.php4?product=virusa"&gt;Virus A desktop&lt;/a&gt;, and some years later the very cool &lt;a href="http://www.access-music.de/products.php4?product=indigo2"&gt;Indigo&lt;/a&gt; series of keyboards. They were renowned for their awesome synth engines and solid build quality, but like most European synths they were too pricey for the likes of me.&lt;br /&gt;&lt;br /&gt;Then they went and upped the ante with the TI series, which stands for "Total Integration." Since Access manufactured both PCI audio hardware acceleration cards paired with software synths for PC musicians (the Powercore series) and hardware synths, they decided that they might as well combine the two and make keyboard synths that integrate directly in to software. This was a brilliant move, since anybody who has messed with getting hardware synths to play with computer sequencing packages knows how much of a pain it can be to deal with MIDI and latency issues. Of course, these models weren't any cheaper than their pure-hardware predecessors. It seemed like I would never own one; I more or less forgot about them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Acquisition&lt;/b&gt;&lt;br /&gt;Then last weekend, after bouncing around some old music sites, I came across some articles on the TI series and decided to jump on eBay to see if any were on the market. As it turned out, there were two nearly-new Virus keyboard for sale at pretty reasonable markdowns. I decided to put a bid on one of them, and my top limit matched the reserve. I hit up the seller directly to see if he wanted to wrap up the sale that weekend, and within 15 minutes of making my bid we were on the phone. He agreed to drop his "buy it now" price to the reserve, and it showed up on my doorstep yesterday afternoon.&lt;br /&gt;&lt;br /&gt;This is to date the most expensive piece of audio kit I have purchased, which is surprising in the sense that I never even fiddled with one in the store (they are pretty hard to find). Most of my prior purchases have involved several trips to a local music shop and much obsessing before pulling the trigger. However, things have changed a lot in the years since I originally loaded up my studio, and with so many resources at my disposal on YouTube, SonicState, and musicians forums, I got a great feel for what I was getting in to. But even with so much info at my fingertips prior to the acquisition, I've been blown away by this thing after only a few hours of use.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A Mini-Review&lt;/b&gt;&lt;br /&gt;I've only had my Virus a little while, so there's only so much I can report on, but I intend to build upon this over time as I work my way through the manuals.&lt;br /&gt;&lt;br /&gt;While you need a computer to take advantage of the full TI capabilities, you can also just turn the thing on, plug in a pair of headphones, and get cracking without hooking it up to a computer. As a standalone hardware synth, the quality of the audio engine is above and beyond any hardware or software synthesizers I have ever seen before, including the &lt;a href="http://www.nordkeyboards.com/main.asp?tm=oldproducts&amp;clpm=Nord_Lead_2&amp;clnl2m=Information"&gt;Nord Lead&lt;/a&gt; and &lt;a href="http://www.alesis.com/andromeda"&gt;Alesis Andromeda&lt;/a&gt; that I had coveted in the past. The filters on the Virus are amazingly rich, and the combination of access to almost every parameter from the control panel combined with a very intuitive menu system allows for a massive variety of sounds.&lt;br /&gt;&lt;br /&gt;Out of the box, you get over 2,000 high-quality sounds distributed across a number of ROM and RAM banks. Within the first few patches I was starting to get ideas for tracks, since the quality is very high and the easy tweakability gives you a lot of creative expression. I also love the three-octave keyboard, which is just the right size for composition at the computer. It's the perfect width and height to sit in front of my 22" Dell monitor.&lt;br /&gt;&lt;br /&gt;I spent most of the afternoon today getting familiar with the software integration. The Virus hooks up to a PC or Mac with a USB cable, after which integration is pretty much seamless. One of the benefits of the TI series is the flashable OS, so a quick trip to Access's support section lead me to the latest 2.7.5 release, along with related manuals and video tutorials. The software installed without a hitch, the longest part being the update of the keyboard itself, but after a quick reboot of both my new MacBook Pro and the Virus, I was ready to rock and roll.&lt;br /&gt;&lt;br /&gt;Access provides a number of high-quality manuals to get you going, all in PDF format which worked out nicely since I now have a dual-monitor setup at the house. There were also sample projects for popular sequencer packages; I'm using &lt;a href="http://www.apple.com/logicexpress/"&gt;Logic Express&lt;/a&gt;. I'll throw in a quick shout-out for Logic Express here: it's basically the same pro version that studio musicians use with a cap on the number of audio tracks, but the cap is something ridiculous like 192 audio tracks. After spending around $900 six years or so back on Cubase SX and a sampler package from Steinberg, I can't believe how powerful Logic Express was for a mere $300, especially considering that the software synths and samplers that you get in the basic bundle are sufficient for anybody to get far off the ground with music production. Although I liked Cubase a lot, I had to upgrade to get Leopard support, and decided to switch over to Logic Express rather than sticking with Steinberg's product line; I must say that I am glad that I did. I originally made the switch with Logic Express 7, but Apple completely revamped the interface for Logic 8 and it's now much more streamlined and intuitive than before.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In Action&lt;/b&gt;&lt;br /&gt;Back to the Virus. Once you fire up your sequencer, the Virus shows up as an Audio Unit software instrument in addition to seamlessly infiltrating itself as the MIDI controller and audio interface. This was one of the fringe benefits of getting the TI: rather than spending several hundred on a new MIDI interface and then dicking around with setting it up, I get a MIDI interface right in the TI, along with audio inputs/outputs for recording and playback. This is great because I can use drum loops and other bits from Logic right alongside sound from the Virus, and hear it all mixed down through the Virus's headphone jack.&lt;br /&gt;&lt;br /&gt;True to form for a German synth, the Virus is built like a tank, and has an excellent quality keyboard with velocity sensitivity and nice clicky aftertouch. The thing lights up like a Christmas tree when you turn it on, and has a number of lights that pulsate to the BPM setting, including a guide light above the LCD display (for usefulness) and an Access logo on the back (for showing off). Note that because of the software integration, the Virus is always at the same BPM as your sequencer, which is totally fabulous: your arpeggiators are always in sync no matter where you are! The pots have a smooth action, and the control surface layout is very logical. I was able to get going with basic editing of sounds without having to crack the manual, which is always nice.&lt;br /&gt;&lt;br /&gt;The software integration is really pretty top-notch. Once you fire up Logic, you create the Virus in the Environment as a software synth with 16 MIDI channels. The Virus then shows up in the Mixer as a stereo audio channel, and each MIDI channel for the synth is split across the 16 available slots. The Virus hardware automatically goes in to "Sequencer" mode once you have it established in the sequencer, and then you can start the bi-directional manipulation through the software/hardware feedback loop.&lt;br /&gt;&lt;br /&gt;I have been really impressed with the interface on the software. Not only is it attractive, but it's very intuitive. You can drag and poke just about every control, including grabbing ADSR envelopes graphs and filter slopes and moving them around. All the feedback is instantaneous regardless of which direction you are going in, meaning that the synth and software stay in total sync as you work.&lt;br /&gt;&lt;br /&gt;One thing I noticed is that latency is still a minor issue, although they have a good way of working around it. When you are recording, you can set the Virus up to send the audio directly out of the headphone jack, so you don't suffer from the latency of the audio going from the Virus to Logic and back again. Then, once you have finished recording, you can flip the audio interface back so that it is routed through USB and the latency is handled in the software as usual. The only scenario where this is a little weird is when you are recording multiple MIDI tracks one after the other, since the tracks recorded earlier will be affected as you flip the audio mode back and forth between real-time and USB-routed. A simple solution for this is to either mute earlier tracks as you record later ones. You can also just bounce the audio for prior tracks to disk before you record new ones, removing latency for earlier tracks altogether.&lt;br /&gt;&lt;br /&gt;One thing I did notice that required some getting used to was that MIDI muting and soloing happens in the TI plugin, while audio muting and processing happens in a single channel in Logic. This is because the Virus has 16 MIDI channels but only two stereo audio channels, which means you have to choose between the two audio channels when you are routing audio in to the mixer. I don't see this being a problem in practice since I see myself composing via MIDI and then bouncing all the audio to disk before mixing down, at which time each track will get a dedicated strip in the mixer and can have its own effects in Logic's audio channels as normal. However, if you were performing live with the Virus, you would have to make sure that you either used the on-board effects for each patch, or made careful use of the two channel strips in Logic for adding software effects.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion (for now...)&lt;/b&gt;&lt;br /&gt;It's early days yet, but I am really excited with the possibilities my new Virus is bringing to my home studio.&lt;br /&gt;&lt;br /&gt;My interest in digital audio and composition started in my teens. After finally getting a real job and buying a bunch of audio equipment in 2002, my interest waned back and forth since it used to be such a pain in the ass to get all the stuff working together (technical problems really stifle creativity), and as a result I had put this hobby on the back-burner for a while. My level of interest recently resurged when I started playing with Logic 8's new interface, and between the Virus making hardware integration so seamless and the awesome synth engine, I figured I would give music another spin.&lt;br /&gt;&lt;br /&gt;While I lack the talent to be a professional musician, I am looking forward to writing sound libraries, remixing tracks from my favorite artists, and maybe even composing a track or two in my spare time. If I come up with anything half-decent I might even share it with the world... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-847350093255261713?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/847350093255261713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=847350093255261713&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/847350093255261713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/847350093255261713'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/mini-review-access-virus-ti-polar.html' title='Mini Review: Access Virus TI Polar'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-7359476400102168268</id><published>2008-12-15T12:08:00.004-05:00</published><updated>2008-12-18T10:21:53.345-05:00</updated><title type='text'>StrikeTracker Reviewed by Dan Rayburn on StreamingMedia.com</title><content type='html'>If you are in the streaming media industry, you will definitely have heard of &lt;a href="http://www.streamingmedia.com"&gt;Streaming Media&lt;/a&gt; magazine and their EVP, &lt;a href="http://www.danrayburn.com/"&gt;Dan Rayburn&lt;/a&gt;. Recently, Dan &lt;a href="http://blog.streamingmedia.com/the_business_of_online_vi/2008/12/highwinds-reporting-system-striketracker.html"&gt;blogged about the StrikeTracker console&lt;/a&gt; developed by my team at Highwinds. Dan covers a little history on his post so I won't repeat it all here, but it's great to see some of the things that he has written since they are spot-on with regard to our approach.&lt;br /&gt;&lt;br /&gt;At Highwinds, we have a strong focus on user experience and meeting end user needs, which is evident by the fact that most of our CDN services and reporting can be provisioned and accessed in real-time by the customer without needing to engage the NOC. So, when Dan released the results of his survey of CDN customer needs earlier this year, we immediately incorporated it in to our product roadmap as a CDN customer "wish list". One of the key areas that we have been focusing on is to leverage the real-time nature of our CDN platform to deliver as much actionable analytics to the end user as soon as possible - usually within 30 seconds of the data being captured. This is obviously of great benefit to customers who are delivering marketing-driven content and/or working in a live environment where the timeliness of the information produced by the CDN is directly related to its usefulness.&lt;br /&gt;&lt;br /&gt;To date, our focus on real-time analytics and empowering the end user through the StrikeTracker console is a trend that has won us a lot of favor with our customer base, and has brought over key customers from other CDN players. We certainly have plans to continue to build upon this strategy in 2009, although I obviously can't share the specifics without spoiling the surprise (not to mention tipping off the competition)! Let's just say that if we are successful, 2009 is going to be yet another strong year for Highwinds.&lt;br /&gt;&lt;br /&gt;While I'm on the topic, Limelight also made &lt;a href="http://blog.llnw.com/2008/12/substance-behind-the-graph/"&gt;a blog post on analytics&lt;/a&gt; recently that I found interesting. The following paragraph was of most interest. (Before I comment on this, I'll remind everybody that this blog carries the opinions of me alone and does not reflect the thoughts of my employer.)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"At Limelight Networks, currently accumulate and process over &lt;b&gt;100 terabytes of uncompressed log files each day due&lt;/b&gt; to the sheer volume of Internet traffic we deliver globally on our network. We offer byte-level accurate reporting on this traffic - not a sample or estimate, but an actual accounting of each bit we deliver. Reporting and analyzing this data in a timely and consistent basis is no small task when you are delivering massive traffic volumes. This puts us in a unique position to not only innovate, but also provide analytics and insights that few, if any, companies have ever delivered to their customers."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The blog post is clearly a generalization about CDNs and how their technology scales, which I find largely accurate based upon the industry players that I am familiar with. As Limelight points out, working at the scale of a CDN is extremely challenging, and it makes sense that this would be the case: the reason that the CDN industry exists is that we agreed to take on problems with Internet content delivery that nobody else wanted to, precisely because they are massively hard problems to solve. &lt;br /&gt;&lt;br /&gt;What is interesting to me is that in solving these problems, many CDNs have taken something of a "cookie-cutter" approach, using the same (or very similar) network architecture and patterns as those established when the industry was in its infancy. Indeed, this lack of technology differentiation is a major reason why there is so much litigation currently taking place with regard to patent infringement in the CDN space.&lt;br /&gt;&lt;br /&gt;The reason why Highwinds is successful is our core architecture, which is significantly different from every other CDN on the planet. For example, Limelight points out in their post that they accumulate and process over 100 TB of log files every day to deliver byte-accurate analytics. I believe that this accumulate-and-process approach is the same one that 98% of the CDNs out there would take.&lt;br /&gt;&lt;br /&gt;What's interesting is that the accumulate-and-process approach is the direct opposite of the way we deal with reporting data on the Highwinds CDN. When you deal with analytics by waiting to accumulate it en masse and then processing it after the fact, you give up valuable time waiting for the accumulation and processing cycles to end. This lag in time doesn't make for a real-time solution.&lt;br /&gt;&lt;br /&gt;So, we do something else entirely to process our data, and we can still deliver byte-accurate accounting and analytics. But unlike the other CDNs, we can do it in real-time, and that means you get the information you need when you need it - such as during your live event instead of after it is over. The nicest part of our solution is that it scales directly with the size of our network, so it will always be there as a feature regardless of how much content we are delivering.&lt;br /&gt;&lt;br /&gt;Of course, our differentiated approach doesn't make dealing with the engineering problems of content delivery any easier. Every time we consider a feature for incorporation in to our CDN, we have to be able to answer the questions: "How do we keep this real-time?" and "How do we make this scale?" Answering these questions effectively without compromising on feature usefulness is certainly very hard. However, our CDN has the huge advantage of being built on a proven and scalable real-time platform to begin with. In many cases, our architecture answers these questions for us, which is a huge plus when you are working to deliver new and exciting real-time features to your end users that other CDNs can only dream about.&lt;br /&gt;&lt;br /&gt;In closing, I'm really excited about 2009. We're taking a step back from StrikeTracker and re-evaluating every feature to determine what we have done well and what we can improve upon, and we have a mountain of constructive customer criticism both positive and negative to use as our guide. We've also got some awesome new features in mind that I believe will redefine what users will come to expect from a CDN administration console. I look forward to demo'ing them to you in person at an industry event in 2009.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-7359476400102168268?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/7359476400102168268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=7359476400102168268&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7359476400102168268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7359476400102168268'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/striketracker-reviewed-by-dan-rayburn.html' title='StrikeTracker Reviewed by Dan Rayburn on StreamingMedia.com'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6998887627726080751</id><published>2008-12-13T14:17:00.002-05:00</published><updated>2008-12-13T14:25:52.732-05:00</updated><title type='text'>"Device Removal" Errors with ExpressCard Reader and Late 2008 MacBook Pro</title><content type='html'>I got a new MacBook Pro 15" at the end of November, and just got around to setting it up properly and putting it to use.&lt;br /&gt;&lt;br /&gt;Today, I plugged in my SanDisk SDAD-109 ExpressCard reader to transfer some video and pictures from my HD Sanyo camera/camcorder. After I was halfway through the transfer, I got the "Device Removal" error that you get when you remove a card without unmounting it, even though I had not touched the card. A second later the card remounted. It then proceeded to randomly mount/unmount as it saw fit.&lt;br /&gt;&lt;br /&gt;In trolling the forums, I saw that I was not the only person with this issue. Apparently this is an intermittent problem, since some people have problems and others didn't. The issue was not restricted to one particular type of ExpressCard reader - it seems that it has affected people with both SanDisk and Griffin Technology models (and possibly others). One guy said he sent his Mac back for a new one and that his new one didn't exhibit the same issue.&lt;br /&gt;&lt;br /&gt;Anyway... I was able to fix the issue by simply calling AppleCare, at which point they recommended I reset the PMU (which they walked me through). I &lt;a href="http://discussions.apple.com/thread.jspa?messageID=8619624#8619624"&gt;listed the steps for how to do this in detail on the support forums&lt;/a&gt;, so feel free to link over there for the resolution. I can't find a way to link directly to my comment, so just scroll down to my post at Dec 13, 2008 11:15 AM after you link over (it's listed under my name).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6998887627726080751?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6998887627726080751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6998887627726080751&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6998887627726080751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6998887627726080751'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/device-removal-errors-with-expresscard.html' title='&quot;Device Removal&quot; Errors with ExpressCard Reader and Late 2008 MacBook Pro'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-9025571249818588888</id><published>2008-12-03T22:18:00.007-05:00</published><updated>2008-12-03T23:47:08.192-05:00</updated><title type='text'>Zen and the Art of an Empty Inbox</title><content type='html'>Something I struggled with for years after I became a manager was how to deal with the metric assload of email I would receive on a daily basis. Over time, I have developed a strategy for dealing with email that works as well for 200 emails per day as it does for 10. Since I know more than a few people who struggle with their email volume, I thought I would share my process. I apologize for the length of this post, but I wanted to explain the philosophy behind the system as well as the system itself.&lt;br /&gt;&lt;br /&gt;A full (and constantly growing) inbox is a major source of stress for most managers working in an office environment. The psychological effect of seeing your email grow each day is the same one you would get watching a physical inbox fill with items requiring your attention; you always feel "behind", unproductive, and like there is no end in sight. There is also a negative impact on individual effectiveness for both the email hoarder and their staff, since so much communication takes place in email these days; you can easily end up missing/delaying response to important items if you are always behind on reading your emails.&lt;br /&gt;&lt;br /&gt;Much of what I practice can be gleaned from the basic principles of &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done"&gt;GTD&lt;/a&gt;. I bought the GTD book for $6 in a CompUSA store that was going out of business, and stopped reading it after the first few chapters since I had picked up enough useful info to establish a working system.&lt;br /&gt;&lt;br /&gt;So, here it is.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Philosophy&lt;/b&gt;&lt;br /&gt;My email/task management system is based on the following principles.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;1) Email is for communication, information, and CYA. It is not for task or to-do tracking.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;A lot of people fall in to this trap, using email as a way to indicate that something still needs to be done. This is often achieved by setting emails back to "unread" status if they need to be done/referred to later. Other methods include using subfolder structures or color/project tagging to organize email. Unfortunately, since email is a communication tool and not a task management tool, this technique often doesn't really work.&lt;br /&gt;&lt;br /&gt;We'll come back to how to deal with email effectively, but the essence to take away at this point is that you should not use email in any way to track tasks or to-dos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;2) All emails fall in to three categories: things to do, things to delegate, and things to delete/file for later reference&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;There's not much to expand on here. Take a look at your inbox and see if you can find anything that doesn't fall in to one of these categories; if so, let me know in the comments.&lt;br /&gt;&lt;br /&gt;In order to keep your inbox empty (and thus eliminate the "full inbox stress" you are feeling), you need to quickly go through your emails, identify each message's category, and act upon each accordingly.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;3) Your inbox should always be empty, except for when you are filtering emails in to one of the categories mentioned in item #2&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;If you think this is an impossible feat, think again. I went from having around 500 unread emails at any one time to my current state, which is a near-constant state of inbox emptiness and a feeling of total control over my email. I don't care how much email you get or how infrequently you look at it; you can use the techniques I describe to get it under control and keep it that way. I used to get 200+ emails a day at CFI, and was able to handle them with ease.&lt;br /&gt;&lt;br /&gt;And yes, this does mean that when you start to implement my approach to email management, you will have to burn four hours on a Saturday cleaning out your inbox in preparation for keeping it empty moving forward.&lt;br /&gt;&lt;br /&gt;Believe me: it's worth doing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The System&lt;/b&gt;&lt;br /&gt;The system works as follows. I expect there are variations of this approach that you can use for your own email management based upon the mail client at your disposal, but this is how I do it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;1) Tasks Belong in Calendars&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;An essential part of the process is to use a calendaring system to take deferred action rather than using your email to track things to do. Every email that results in a "do" item for you should immediately be converted in to either a task or appointment on your calendar.&lt;br /&gt;&lt;br /&gt;Note that it is just as important to schedule appointments for yourself to do things as it is to schedule meetings with others, and I have found this to be an important step in managing my own time. The same way that you should always pay yourself first by putting some of your paycheck in to savings before you pay your bills, you should also mark your time off first before offering it up to others for their meetings.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;2) Always empty your inbox when mail arrives&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;As soon as you see that you have email, you need to deal with it and put it in to the "do", "delegate", or "delete" category. Usually I find that I stay focused on a work task for a period of time, and then look up when taking a break to see that I have new email.&lt;br /&gt;&lt;br /&gt;One of the great GTD principles I picked up is to immediately perform all tasks that can be done in less than five minutes; emptying your inbox falls in to this category. And, emptying your inbox is easy to do: go through &lt;i&gt;all&lt;/i&gt; the emails one by one, and read them in their entirety. If you need to reply, do it immediately. As your inbox empties, you will find that you get used to sending short, fast responses 90% of the time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;3) Do small tasks right away&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;If you come across an email that is a "do" item and it will take less than five minutes and you have the time, &lt;i&gt;do it then and there&lt;/i&gt;. If the item requires more time than five minutes or you are about to step out for a meeting, put the item on your to-do list and schedule it for a day in the future. Juggle existing tasks for that day by priority as necessary, pushing lower priority items to a later date.&lt;br /&gt;&lt;br /&gt;Immediately delete the email that spawned the to-do, or file it (if you need to refer to it later) and reference the subject line in your calendar task so you can find the email when you are ready to perform the task. Some programs even allow you to link to-dos to emails - even better.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;4) Read and discard (or file) informational emails&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;If the email is informational and requires no action, read it and delete it. If you want to save it for later, file it and forget about it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;5) Immediately delegate tasks. Track completion as necessary&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Knowing when to delegate can be tough, but I generally delegate anything that is clearly the responsibility of a peer or one of my reports. The act of delegation is simply a forwarding of/replying to the message with the task that needs to be delegated. &lt;br /&gt;&lt;br /&gt;If you delegate a hot topic that requires action, put a to-do on your calendar to follow up with the person you delegated it to at an appropriate junction. Delete the original email.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;6) Live in your calendar&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Since you have created a bunch of tasks/appointments in your calendar from your email, you have benefitted in several ways already: your staff/peers/customers got fast responses, your inbox is clear (so you don't feel stressed out any more), and you have a clear feeling of how much you personally have to do. Also, since calendars track date assignments to tasks, you can evenly distribute the load/priority order of the things that need doing.&lt;br /&gt;&lt;br /&gt;I find that each day, I filter my calendar view to just the things that (a) need doing that day and (b) were supposed to be done yesterday (or on days prior) but were not. This allows me to stay focused, and quickly decide if I have too much on my plate for the day. If I have too much, I defer low priority tasks to the next day and forget about them until I see them again.&lt;br /&gt;&lt;br /&gt;So you might say: "haven't you just shifted too much email to too many tasks?" Not really. If I see a task continuing to float around, I don't get upset about it. If it hasn't been done yet it probably isn't that important, or I would have done it already, and at least I know it is on my radar. However, I will often reconsider a long-existing task's importance altogether and either delegate it or just plain get rid of it if it has floated around too long. You will be surprised how many items you think you need to do that either become unimportant with time, or can live with being pushed back because they just aren't that important to you or anybody else.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tools&lt;/b&gt;&lt;br /&gt;There are a few specific tools/techniques I use that really help me stay focused on this approach to my email.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Smart Folders&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I use OS X Mail, which has Smart Folders. Smart Folders are rules-based folders, which filter your email for you by criteria. I have four Smart Folders set up: "Unread (Work)", "Unread (Personal)", "Unread (All)", and "Flagged".&lt;br /&gt;&lt;br /&gt;"Unread (Work)" is the top priority when I am in the office. Anything that shows up in here is obliterated in to "do", "delegate", or "delete" as soon as I see it. Once I clear my work emails, I will clear out my personal emails if any have come in and I have time; if not, I make a conscious effort to look at the personal folder at least once a day since I don't get as much email there. "Unread (All)" is a great way to obliterate all my emails (work and personal) if I don't have very many to go through.&lt;br /&gt;&lt;br /&gt;Note that my personal Smart Folder consolidates all the emails from all my personal email accounts, so to me they all look the same. Having all my work and personal emails come in to the same mail client really makes staying focused easy; I tried separating them in the past, and found I just ended up getting behind on my personal email. One client to rule them all is the best approach.&lt;br /&gt;&lt;br /&gt;"Flagged" picks up all the emails that I flag in Mail (there is only one flag, and an email is either flagged or unflagged). I use this designation for emails that look interesting but don't require any attention or action, such as links from co-workers about technology articles that are unrelated to immediate concerns. I usually go through this folder on weekend mornings as I catch up on my RSS feeds. However, since these emails don't show up as "Unread" they don't stress me out - and if I never read them, nobody cares.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Filtration&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;We get an awful lot of automated emails at Highwinds. The biggest offenders here are from our ticketing and bug tracking systems. I have set up Mail and our Exchange mail server to straight delete about 30% of these emails that I have identified to be of zero value to me, and which don't require my attention or action.&lt;br /&gt;&lt;br /&gt;Of the remaining 70%, many of the items are conversation threads between clients and our support team. Mail allows me to group email by thread, but this is a view that generally bothers me. Luckily, Mail remembers my preference to group emails by thread on a per-folder basis. So, I leave all my folders ungrouped except for the one folder that gets all of our support tickets and bug notifications. Then, since these threads are grouped, I can easily delete all the emails for a thread that I have no interest/involvement in, and easily read the entire timeline for the issues that I want to be involved in. Sometimes I will delete an entire thread of 15 emails in one go based upon a subject line, which allows me to make short work of the 200 or so emails I get each day from these systems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;iCal&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I use iCal for calendaring. It doesn't sync with Exchange (at least, not until Snow Leopard in 2009), but it has great to-do tracking and a very clean UI. You can also easily make a to-do from an email, although this is a new feature for Leopard and I always forget to do this since I was used to making to-dos the old way.&lt;br /&gt;&lt;br /&gt;I maintain two calendars: work and personal. This seems to be plenty to organize my life. I have tried using multiple calendars to differentiate projects before, and found that to be a dismal failure - simple is best.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Powerful Search&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;One of the reasons I can calmly dismiss the majority of my email is that Mail has such bad-ass search capabilities. I can usually search my entire inbox and all my folders in under five seconds, which gives me complete confidence in either trashing stuff or whimsically filing potentially important emails.&lt;br /&gt;&lt;br /&gt;I also tend to leave emails in my inbox (in "read" status) if I know that I will need them later; I can't see them, since I only look at my Smart Folders, and my Smart Folders only show unread items, so as far as I am concerned they are dealt with and they don't stress me out. I have to leave items in my inbox since I have my trash set up to automatically delete anything that was trashed and is older than seven days. The point is that "out of sight is out of mind", and since I can find anything super-fast, I can easily look up an old email in my inbox related to a task without having to link the task to the referenced email.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In Closing&lt;/b&gt;&lt;br /&gt;I know this has been a long blog post, so congratulations if you made it through it. I hope you will give my system a try, and/or come up with a variant that works for you. You have no idea how much better you will feel with an empty inbox!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-9025571249818588888?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/9025571249818588888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=9025571249818588888&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9025571249818588888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9025571249818588888'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/12/zen-and-art-of-empty-inbox.html' title='Zen and the Art of an Empty Inbox'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-9150513479246096301</id><published>2008-11-15T02:40:00.009-05:00</published><updated>2008-11-20T13:27:56.136-05:00</updated><title type='text'>Scrolling Large Data Sets in Flex Charts</title><content type='html'>Sometimes you just have too much chart data to display it all at once. The problem with this is that if you bind all the data to your chart, the chart axis labels become too small to read.&lt;br /&gt;&lt;br /&gt;I came across &lt;a href="http://www.connectedpixel.com/blog/scrollingcharts"&gt;this blog post by Joel May&lt;/a&gt;, which demonstrated a really neat way to deal with large chart data in Flex by using a component Joel dubbed a "ScrollableAxisRenderer". Basically, Joel made a skin for a ScrollBar component so that it would fit compactly on a chart's X or Y axis. He then made a special implementation of IList that wraps the base data provider (i.e. the one with too many elements to display), so that only a small portion of the data would be "visible" to the chart through the wrapper at any one time. Then, Joel programmed the scroll bar so that moving it around would result in scrolling of the large data set, allowing the chart to "see" as much or as little of the data as you want it to. The effect is really cool.&lt;br /&gt;&lt;br /&gt;Unfortunately, Joel's code didn't work with dynamic data providers. I tried to take his original code and tweak it slightly to handle dynamic data, but it wasn't as simple as I had hoped since all the classes seemed to be collaborating with different parts of the process. So, borrowing heavily from Joel's original code, I re-implemented his idea, focusing most of my effort on a solid implementation of the class that masks the large data set. Once this was finished, I got a sample app working using a basic MXML component with embedded ActionScript. Finally, I split out the code in to AS classes so that the custom scroll bar, custom axis renderer, and collection mask had clearly defined responsibilities and worked as proper components.&lt;br /&gt;&lt;br /&gt;I got it all working nicely, so I sent it to Joel just now to see if he was okay with me submitting our joint work to FlexLib. There was certainly a lot of interest in a dynamic version of his component on his blog post, but (like many of us with non-work projects) it looks like Joel did not have the time to go back and finish it off. It certainly is a really cool way to handle large data sets in Flex charts, so kudos to Joel for coming up with the idea and cooking it up.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE (11/17):&lt;/b&gt; I heard back from Joel, and he's going to look over my additions this week. I'll keep you posted as we get the code ready for FlexLib.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE (11/20):&lt;/b&gt; Joel and I have some work to do before this goes to FlexLib, so I have &lt;a href="http://hypertextfragments.com/maximporges.com/ScrollableGraph.zip"&gt;published the preliminary beta code here&lt;/a&gt;. This code is unwarranted and should be used at your own risk. Also, note that this code has not been tested with vertical scrollbars yet (although I expect it will work fine).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-9150513479246096301?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/9150513479246096301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=9150513479246096301&amp;isPopup=true' title='32 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9150513479246096301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9150513479246096301'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/11/scrolling-large-data-sets-in-flex.html' title='Scrolling Large Data Sets in Flex Charts'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>32</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2296011249980508102</id><published>2008-10-13T21:11:00.004-04:00</published><updated>2008-10-13T21:29:56.010-04:00</updated><title type='text'>Welcoming Brian LeGros</title><content type='html'>We were honored to have several really solid candidates apply for the most recent opening on my team at Highwinds, but in the end we could only choose one. &lt;a href="http://www.brianlegros.com"&gt;Brian LeGros&lt;/a&gt; joined us today as a Senior Software Engineer.&lt;br /&gt;&lt;br /&gt;I have known Brian for a few years, and his contributions put him head-and-shoulders above the rest of the pack on my technical leadership/architecture team at CFI, where we worked together for about eighteen months. Unfortunately, the commute became a bit much, at which point Brian took a position at a company much closer to home. Brian's also a veteran of FCE, where my other team mates Russ and Mario worked for several years, so his arrival today was a reunion on multiple fronts.&lt;br /&gt;&lt;br /&gt;Brian brings an awful lot to the table in terms of... well, pretty much everything that contributes to successful software development, so we're thrilled to have him aboard at Highwinds. I'm glad we were able to work out a scenario where he could work remotely most of the week, making the commute to Winter Park much less of a barrier.&lt;br /&gt;&lt;br /&gt;Brian spent most of his first day drinking from the Highwinds fire hose as we brought him up to speed on the StrikeTracker development environment and our way of working. He's also piloting a Mac for the first time, which always proves interesting for the rest of us. Don't worry Brian; it only takes about two weeks to forget the ways of Windows, and then you'll wonder why you ever used a non-*NIX OS for development.&lt;br /&gt;&lt;br /&gt;We're about to do some major work on StrikeTracker to prepare for an ambitious roadmap we recently laid out for 2009, and I know from experience that Brian's presence will make for a much better product. We're budgeting for my team to grow yet again by several positions next year, so keep your eyes on my blog if you are interested in joining the Highwinds team in the future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2296011249980508102?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2296011249980508102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2296011249980508102&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2296011249980508102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2296011249980508102'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/10/welcoming-brian-legros.html' title='Welcoming Brian LeGros'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8851242277659328939</id><published>2008-10-10T22:31:00.004-04:00</published><updated>2008-10-11T00:34:37.263-04:00</updated><title type='text'>It's a Shame About McCain</title><content type='html'>So, having watched the second presidential debate this week, I feel a little better about the positions/policies of each candidate. For whatever reason, I think the town hall-esque environment seemed to work better for getting the candidates to speak to the questions posed to them (no matter how oddly twisted it was compared to the typical town hall affairs). Maybe it was the fact that they were responding to regular old citizens instead of news anchors.&lt;br /&gt;&lt;br /&gt;Anyway... throughout the debate, I couldn't help but wonder what the hell was going on with John McCain. As I stated in &lt;a href="http://maximporges.com/2008/10/political-frustrations.html"&gt;my last post on the subject&lt;/a&gt;, I had always liked John as a senator after becoming aware of him for the first time during his 2000 presidential race. Whenever I saw him on TV in the years after, he was calling people from both sides of the aisle to the carpet when they acted out, speaking his mind, and generally acting like the kind of guy I wished all politicians could be.&lt;br /&gt;&lt;br /&gt;And then John decided to run for office again in 2008. At first, I was happy - this would be his last shot considering his age, and since I had liked him in 2000 I expected to like him just as much now (if not more). At first, he was almost dropped from the race, and then made a resounding turnaround earlier this year.&lt;br /&gt;&lt;br /&gt;It was at this time that I began to wonder where the old John McCain had gone. Instead of the guy I was used to, here was somebody who seemed uneasy when speaking in public, didn't seem to know what he stood for, and continuously seemed to tow the party line regardless of its stance in a way I have never seen him do in the past. It's only gotten worse in recent weeks, ever since his dubious move of adding Palin to the ticket - a move whose only discernible motive seems to have been to sway Hilary Clinton supporters. I know how terrible that sounds and I hope it's not the case, but having watched her intently the last few weeks I can't see many other qualifications.&lt;br /&gt;&lt;br /&gt;So, coming back to John - what happened? I think I have figured it out. I'm probably wrong, but I figured I would share my thoughts anyway. I will personally be very sad if I am wrong after all, because I have always liked John, and if he has really turned in to this new version of himself then we've lost a serious asset in our government.&lt;br /&gt;&lt;br /&gt;I think that John decided that with this being his last shot for the presidency, maybe he should listen to the political analysts on his campaign staff. I think they shaped his policy decisions for items that would appeal to the base, over prepped him for the debates, and generally ruled over his campaign to the point where John lost his sense of self and identity. I also believe that his campaign suggested Palin as a game changer; it was a strategic marketing move that would give John a chance to win if it worked, regardless of whether or not John thought she was the best running mate.&lt;br /&gt;&lt;br /&gt;The thing that really solidified this belief for me was how John appeared in the last debate. He seemed like a guy acting out a script, with all the unnatural tendencies and voice pitch that accompanies such a performance. Just watch some video of John when he's comfortable, like his many appearances on The Daily Show, or occasions when he's handed somebody their ass in his role on Capitol Hill. Then compare it to his debates; you can immediately see the difference. And while I may not agree with everything Obama has to say or every policy he intends to bring to the office should he win, I at least felt like he was being himself during the last debate.&lt;br /&gt;&lt;br /&gt;I think I saw a glimpse of the old John today in a news clip, when he took the microphone away from a supporter to correct her on the impression that Obama was an arab (although she didn't seem so sure of this herself as John disagreed with her, funnily enough - it was almost like she was trying to appease the crowd with her statement). No matter how much is at stake, there are limits, and I have a lot of respect for John understanding them and making corrections where necessary. McCain's camp has been responsible for plenty of character assassination against Obama in recent weeks, and while this may be par for the course in any political race, if it goes too far it may end up with a real assassination instead. God forbid that any president be taken out of office under such circumstances, but I believe there is plenty of intolerance still running amok in this country. It doesn't take much effort to push serious bigotry to violent action. On that note, since I hail from the country responsible for Margaret Thatcher in the 1980s it is utterly fascinating to me that the USA still has issues with gender and race in its leaders (but I'll save that for another post).&lt;br /&gt;&lt;br /&gt;It is my hope that John has realized that however this race ends, he should end it with a modicum of his former dignity, and that this is the reason he's started publicly setting his supporters straight. Regardless of who is elected for the presidency in November, I would have a hell of a lot of respect for that.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;UPDATE:&lt;/b&gt; Wow - somebody with far more wit and aplomb than I &lt;a href="http://nymag.com/news/politics/powergrid/51016/"&gt;captures my sentiments perfectly&lt;/a&gt; (and backs them with what might be facts).&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8851242277659328939?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8851242277659328939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8851242277659328939&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8851242277659328939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8851242277659328939'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/10/its-shame-about-mccain.html' title='It&apos;s a Shame About McCain'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6388437563036986189</id><published>2008-10-07T20:52:00.018-04:00</published><updated>2008-10-07T22:31:11.933-04:00</updated><title type='text'>Political Frustrations</title><content type='html'>After watching lots of CNBC and political coverage on TV for the last few weeks, there are several things that will drive me to total, irretrievable insanity very shortly.&lt;br /&gt;&lt;br /&gt;- Hearing the terms "Main Street" and "Wall Street" uttered in the same sentence.&lt;br /&gt;&lt;br /&gt;- More video of Sarah Palin winking and playing up the Alaskan accent. I've seen plenty of other videos of her where she's communicated without these affectations, so please - give it a rest.&lt;br /&gt;&lt;br /&gt;- Further rhetoric designed to assuage the anger of the general populace about the economy, as opposed to addressing the actual economic problem itself. Perhaps I'm an idiot, but I don't see how capping executive pay packages will affect problems with lending; it seems like all that will do is make regular people of more modest means feel like the "bad people" are being punished.&lt;br /&gt;&lt;br /&gt;I'm currently waiting in total apathy for yet another presidential debate, during which I expect both candidates to dance like ballerinas and thoroughly avoid answering any of the questions asked of them. I've gathered very little from the debates so far that gives me any further indication of how either candidate intends to run our country; they might as well have not happened. Perhaps we'll get something worth seeing tonight, but I seriously doubt it.&lt;br /&gt;&lt;br /&gt;Quite frankly, I've been really disappointed with both candidates. I thought McCain totally kicked ass when he ran in 2000, but there are no remnants of the former McCain in this shell of a man I now see before me; he seems to have completely lost his take-no-prisoners tendencies (pun intended) in the last 8 years. Obama looked like a serious contender earlier in the race, but is obviously playing it safe this late in the game so as not to give up the slight lead he's picked up in recent weeks, which seems to have come more from Palin's and McCain's public blunders than from any direct action on Obama's part.&lt;br /&gt;&lt;br /&gt;Admittedly, I haven't been paying attention to American politics all that much until the last eight years. After all, this will be the first election in which I have the right as a citizen to vote. But it seems to me that it's been a long time since this country has seen a landslide election as a result of one candidate truly being better suited to run the country than the other. The last two elections seemed to be more about picking the least damaging option from an inherently weak selection, and the latest election seems to be following suit.&lt;br /&gt;&lt;br /&gt;As an independent, it seems to me that many people simply back their party's candidate without any serious examination of their qualifications, and leave the votes split at almost 50/50. That's frustrating. Then again, with the offerings we've had in the past few years (Bush/Kerry and now McCain/Obama), I'm not sure we've had much of a choice. In the absence of candidates with any real substance, mission, or persona, all you have left to guide you is a loose party affiliation based upon some general principles you may agree with for how a country should be run.&lt;br /&gt;&lt;br /&gt;And so, I find myself drawn to choosing my next president for what I consider the wrong reasons, such as "who will screw things up the least?" Although, considering the state of the country today, that might not be such a bad place to start after all. &lt;br /&gt;&lt;br /&gt;Congratulations, mediocrity; if the status quo endures, it seems that you will be the sole winner once again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6388437563036986189?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6388437563036986189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6388437563036986189&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6388437563036986189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6388437563036986189'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/10/political-frustrations.html' title='Political Frustrations'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8786287632027404583</id><published>2008-10-07T20:47:00.002-04:00</published><updated>2008-10-07T20:52:28.415-04:00</updated><title type='text'>AT&amp;T Violates OS X License Agreement on National Television</title><content type='html'>Well, not really, but the guys who put their most recent AT&amp;T 3G Laptop Connect Card ad are clearly not very detail oriented.&lt;br /&gt;&lt;br /&gt;I just saw their commercial with the Laptop Connect guy and Michael Phelps, where the spokesman challenges Michael Phelps to a race with two laptops. When the spokesman turns his laptop to the camera to show how much faster it is, his knock-off PC laptop is displaying a movie of OS X opening windows in the Mac-only apps Adium and Finder, as well as Safari (although Safari is obviously on both platforms).&lt;br /&gt;&lt;br /&gt;Not only does this kind of discredit the fact that their card might be any faster (since the computer is obviously playing a movie put together by their creative team, which is likely using Macs), but you'd expect AT&amp;T to know that it's a violation of OS X's licensing agreement to be installed on a non-Apple PC. After all, they are Apple's partner for their mobile platform.&lt;br /&gt;&lt;br /&gt;Big duh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8786287632027404583?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8786287632027404583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8786287632027404583&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8786287632027404583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8786287632027404583'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/10/at-violates-os-x-license-agreement-on.html' title='AT&amp;T Violates OS X License Agreement on National Television'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4275330417744045749</id><published>2008-10-01T12:24:00.009-04:00</published><updated>2008-10-01T12:45:45.503-04:00</updated><title type='text'>WDS Problem with Airport Express (6.3 Firmware) and Airport Extreme (7.3.2 Firmware)</title><content type='html'>Over the years, I have been through a few wireless routers. I went through two Linksys routers (they seem to have a two year life span before hardware failures), after which I started using an Airport Express. The Airport Express was nice because I could take it with me on vacation/conferences and plug it in to the hotel Internet for strong, instant wireless signals. Then the Airport Extreme came out, with Airport Disk, ability to backup wireless clients over Time Machine, etc., so I picked one of those up.&lt;br /&gt;&lt;br /&gt;To maintain my existing investment in the Airport Express, I set up a WDS network. This allowed me to have my Extreme in the upstairs office and my Express in the living room. The Express both extended the wireless network signal and provided a way to stream music to my entertainment system from any computer in the house (great for parties).&lt;br /&gt;&lt;br /&gt;However, since upgrading my Extreme to the 7.3.2 firmware, I have had issues with my WDS network. The network will connect, disconnect, connect, disconnect, over and over again. The wireless signal to the Extreme is not affected, but the signal to the Express comes in and drops out over and over. Looking in the Airport Extreme logs, I was getting the message&lt;br /&gt;"Authenticating with station xx:xx:xx:xx:xx:xx" followed by "Deauthenticating with station xx:xx:xx:xx:xx:xx (reserved 2)". I could also see that there seemed to be a third wireless client trying to connect to my network and failing, so it's possible that interference from this network is confusing my Extreme.&lt;br /&gt;&lt;br /&gt;Anyway, I didn't really need the wireless network extension - the Extreme provides a good strong signal all over the house. However, I did want the wireless music streaming capability, which I could no longer have since I couldn't figure out how to get WDS to work for the life of me. So, I simply switched the config for the Airport Express in the Airport Utility to "Join a Wireless Network" instead of "Participate in a Wireless Network". I entered the security credentials for the network and rebooted it, and I now have wireless music streaming working again. The Express does not provide any Internet connectivity, however, but since it is on the network, clients connect to the Extreme base station. iTunes will then find the Express and give you the option to stream music to it using Airtunes.&lt;br /&gt;&lt;br /&gt;Not an ideal scenario, but workable. My Airport Express is an old 802.11-G model whose firmware updates stopped at 6.3, and the Extreme base station is an 802.11- N model on the most current 7.3.2 firmware. I could revert the Extreme firmware back to an earlier revision, but then I would be working with dodgy firmware and would lose the ability to do Time Machine backups over wireless, which is a deal-breaker for me.&lt;br /&gt;&lt;br /&gt;If I bought a new Express today it would have the 7.3.2 firmware, and I expect would work fine with WDS again. Alas, I don't need WDS that much, and don't feel like spending the money unnecessarily to find out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4275330417744045749?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4275330417744045749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4275330417744045749&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4275330417744045749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4275330417744045749'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/10/problem-with-airport-express-63.html' title='WDS Problem with Airport Express (6.3 Firmware) and Airport Extreme (7.3.2 Firmware)'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5621571343916415900</id><published>2008-09-27T01:17:00.006-04:00</published><updated>2008-09-27T02:04:24.631-04:00</updated><title type='text'>Review: Dell SP2208WFP 22" Monitor With Web Cam</title><content type='html'>There was a time when I thought my 15" MacBook Pro monitor was plenty large for any given task. Unfortunately (or fortunately depending upon how you look at it), I've been totally spoiled with my dual monitor setup at the office, and found myself sorely wishing for a similar computing experience at home.&lt;br /&gt;&lt;br /&gt;I've been out of the monitor market for a while, but a little Googling made it abundantly clear that the &lt;a href="http://www.apple.com/store"&gt;Apple Store&lt;/a&gt; is out of their gourd if they think I am going to spend $899 for a 23" Cinema Display when there are so many bargains on the market, many of which are a step-up in terms of tech specs. &lt;br /&gt;&lt;br /&gt;My monitor at work is a Dell Ultrasharp. Now, I have had really bad past experiences with Dell hardware. I once had a work laptop that would literally fall to pieces as I picked it up, with the removable drive falling out just from the amount of torsion applied to the case by the act of lifting. That being said, it was after sitting for ten minutes one day waiting for this same Dell laptop to wake from sleep that I decided I was never going to work on a Windows PC again, so I suppose I should be grateful to it for pushing me over to the Mac full time.&lt;br /&gt;&lt;br /&gt;However, unlike that laptop, I like my Dell Ultrasharp a lot - it has great build quality and is a solid performer. Unfortunately, looking at the Dell site, Ultrasharps seemed somewhat on the pricey side as they are considered the higher-end option, and I wanted to keep my purchase between $300 - $400. So, after consulting our resident IT guru at Highwinds and talking amongst some peeps, I decided on a &lt;a href="http://accessories.us.dell.com/sna/productdetail.aspx?c=us&amp;cs=19&amp;l=en&amp;s=dhs&amp;sku=320-6252&amp;redirect=1"&gt;22" Dell SP2208WFP&lt;/a&gt;, which has a built in web cam. I was going to order it through work for about 10% off retail, but Dell ended up doing a $70-off special that was more worth my while, so I ordered it last week directly through their site. Dell promised me the item was in stock during purchase, then told me after the fact that it wouldn't ship until October, and promptly delivered it to me three days after I ordered it (arriving September 24th). So, they get 0/10 for the web site experience, but 10/10 for a speedy delivery.&lt;br /&gt;&lt;br /&gt;As for the monitor itself, it is super nice. Along with everybody else on the Internet who bought one of these monitors and chose to comment on forums, I immediately discarded the factory settings (which make the monitor look like total ass) and tuned its internal settings, along with Apple's built-in color correction utility which I've personally never had success with before now. Luckily, the planets aligned, and I must say the picture is even better than my Ultrasharp at work. I almost bought a 24" model, but having put the monitor in situ in my home office, I am glad I didn't because the 22" is plenty big; seems bigger at home than at the office for some reason. Along with my &lt;a href="http://roadtools.com/"&gt;PodiumPad&lt;/a&gt;, I get dual screens by leaving the laptop open, and find myself &lt;a href="http://www.phrases.org.uk/meanings/as-happy-as-a-clam.html"&gt;happy as a clam&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;By far the best moment of owning this monitor came when I realized that it had three inputs: DVI, HDMI, and VGA. Along with my collection of laptops, my office at the house is home to my first Mac, a Quicksilver PowerMac G4 tower. Under the impression that the tower only had an ADC connector (hooked up to the 17" Cinema Display I bought back in the day), I was searching online for an adapter to convert ADC to DVI when I stumbled across some information about PowerMac video cards. I was reminded on this web site that the 2002 Quicksilver models came with dual-head video cards, with one VGA and one ADC connector. Crawling behind my machine for the first time in about four years, sure enough I was met with the VGA output. I happily plugged in the Dell-supplied VGA cable, and there was much rejoicing. I have a wireless Apple Bluetooth keyboard and Mighty Mouse combo, so all I need to do is push the button to switch video inputs and I don't need no stinkin' KVM switch.&lt;br /&gt;&lt;br /&gt;One note to potential buyers: to switch video inputs, you have to press a button on the front of the monitor. The first press prompts you with "Auto Detect", which (if you are dumb like me) you will interpret to meaning that it will determine which inputs are active and give you a choice to select the one you want. Not so. It took me a few tries to realize that "Auto Detect" is one of four options, the other three being "DVI", "HDMI", and "VGA".&lt;br /&gt;&lt;br /&gt;Other nice features include the glossy monitor coating, solid build quality, USB hub, and built-in web cam with microphone. A total of four downstream USB ports (two on the back, two on the side) and the web cam can all be hooked up to your computer using one USB cable. The web cam has a similar focal range to the one built in to my MacBook Pro, with the only noticeable difference being that the Dell's webcam has slightly softer focus (instantly earning it the nickname "Barbara Walters-Cam"). Both the monitor and web cam worked flawlessly after hook up (without drivers) on both my MacBook Pro and Quicksilver tower, both of which are running the latest versions of Leopard; note that you need to power down the tower and connect the monitor before it is recognized, and you should never unplug an ADC connector from a running computer.&lt;br /&gt;&lt;br /&gt;iChat instantly recognized both web cams for video conferencing, and let me choose between one or the other in the Preferences dialog. The only other thing I had to do was go in to the "Audio Midi Setup" application and set the monitor's microphone resolution to 48 Khz before it would start recognizing input.&lt;br /&gt;&lt;br /&gt;All in all, I'm really happy with my purchase. I got a beautiful, seemingly better-than-Ultrasharp quality 22" monitor including shipping for just shy of $300. I'd definitely recommend the monitor to anybody who is in the market for something that is decent quality without breaking the bank.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5621571343916415900?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5621571343916415900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5621571343916415900&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5621571343916415900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5621571343916415900'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/review-dell-sp2208wfp-22-monitor-with.html' title='Review: Dell SP2208WFP 22&quot; Monitor With Web Cam'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1043032209306752841</id><published>2008-09-27T01:05:00.003-04:00</published><updated>2008-09-27T01:13:09.313-04:00</updated><title type='text'>"Insure" and "Ensure"</title><content type='html'>This is one of those little, niggling language things that has absolutely no impact on society, but still really drives me crazy when I see it in emails and on web sites because I am such a douche. One of these days, it will drive me to purchase an AK-47 and tour the country with a green bar report listing all the offenders, delivering swift justice Jay-and-Silent-Bob-style.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;insure |inˈ sh oŏr|&lt;/b&gt;&lt;br /&gt;&lt;i&gt;verb [ trans. ]&lt;/i&gt;&lt;br /&gt;arrange for compensation in the event of damage to or loss of (property), or injury to or the death of (someone), in exchange for regular advance payments to a company or government agency.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ensure |enˈ sh oŏr|&lt;/b&gt;&lt;br /&gt;&lt;i&gt;verb [ trans. ]&lt;/i&gt;&lt;br /&gt;make certain that (something) shall occur or be the case.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1043032209306752841?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1043032209306752841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1043032209306752841&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1043032209306752841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1043032209306752841'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/insure-and-ensure.html' title='&quot;Insure&quot; and &quot;Ensure&quot;'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1751094613179093433</id><published>2008-09-27T00:55:00.003-04:00</published><updated>2008-09-27T00:59:18.080-04:00</updated><title type='text'>P2P For CDN Video</title><content type='html'>Hmm... if CDN execs are unsure about &lt;a href="http://www.contentinople.com/author.asp?section_id=450&amp;doc_id=164582"&gt;the viability of P2P for video distribution&lt;/a&gt;, maybe they should check out &lt;a href="http://www.highwinds.com/pr23.html"&gt;our new Octoshape services&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1751094613179093433?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1751094613179093433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1751094613179093433&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1751094613179093433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1751094613179093433'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/p2p-for-cdn-video.html' title='P2P For CDN Video'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2478403919214201290</id><published>2008-09-22T23:45:00.003-04:00</published><updated>2008-09-22T23:48:28.257-04:00</updated><title type='text'>Amen To That</title><content type='html'>Is somebody calling you, or did you just decide to subject us all to a tinny cellphone-speaker rendition of the latest crap being aired on MTV?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/479/"&gt;Ringtones are evil&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2478403919214201290?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2478403919214201290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2478403919214201290&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2478403919214201290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2478403919214201290'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/amen-to-that.html' title='Amen To That'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1957278877444927502</id><published>2008-09-07T02:39:00.002-04:00</published><updated>2008-09-07T02:43:16.094-04:00</updated><title type='text'>Rethinking the RDBMS</title><content type='html'>While still in the realm of academia, &lt;a href="http://db.cs.yale.edu/hstore/"&gt;these papers&lt;/a&gt; provide some structure and proof to the interesting real-world implementations of seemingly-weird database architectures that have popped up recently in order to meet the demands of high concurrency/availability Internet-based services.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"We conclude that the current RDBMS code lines, &lt;b&gt;while attempting to be a “one size fits all” solution, in fact, excel at nothing&lt;/b&gt;.  Hence, they are 25 year old legacy code lines that should be retired in favor of a collection of “from scratch” specialized engines.  The DBMS vendors (and the research community) should start with a clean sheet of paper and design systems for tomorrow’s requirements, not continue to push code lines and architectures designed for yesterday’s needs."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Amen. I'll be watching this space closely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1957278877444927502?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1957278877444927502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1957278877444927502&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1957278877444927502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1957278877444927502'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/rethinking-rdbms.html' title='Rethinking the RDBMS'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2916919253599336359</id><published>2008-09-07T02:04:00.002-04:00</published><updated>2008-09-07T02:17:16.535-04:00</updated><title type='text'>The Highwinds Value Proposition</title><content type='html'>I thought &lt;a href="http://www.highwinds.com/pr21.html"&gt;this press release&lt;/a&gt; did a really good job of pointing out some of our strengths.&lt;br /&gt;&lt;br /&gt;It's a press release of course, so apply salt to taste, but I think the following statement really communicates what we are about. It's great to see that the way Highwinds operates is so visible to our customers from the outside, looking in. This is a customer quote from Mark Snyder, COO of VirtuPoint in Los Angeles, CA.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Highwinds has done a great job of acquiring good talent, and their teams have an obvious passion for what they do - both from a technology perspective and a company-wide commitment to customer service. Our customers' videos stream better, faster and more reliably now, Highwinds has been quick to accommodate our requests, and the next-to-real-time establishing of accounts is unprecedented in the industry."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The "quick to accommodate requests" statement is my favorite, since we really focus on this. Meeting new/customized customer needs is a big part of what we are about. In fact, one of the best parts of my job is interviewing customers for their direct feedback (both good and bad) for StrikeTracker, which is presented to executive management immediately in regular product planning meetings. We take customer input to heart, and work hard to make all of our products better to suit their needs. I especially relish these opportunities for direct customer interaction, since my team gets to determine how (and how soon) the resultant improvements are delivered to our customers to enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2916919253599336359?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2916919253599336359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2916919253599336359&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2916919253599336359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2916919253599336359'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/highwinds-value-proposition.html' title='The Highwinds Value Proposition'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1853519469507119058</id><published>2008-09-07T01:52:00.002-04:00</published><updated>2008-09-07T01:55:01.363-04:00</updated><title type='text'>Google Chrome</title><content type='html'>Yes, yes, this is a late post - but I have been on vacation for a week with no computer access, so give me break.&lt;br /&gt;&lt;br /&gt;I must say that Google Chrome (&lt;a href="http://www.google.com/googlebooks/chrome/"&gt;read the comic&lt;/a&gt;) is the biggest step towards a web-based operating system that I have seen in some time. The browser seems to have inherited many of the features you would expect in an OS, such as process and memory management and multi-threading. It will be really interesting to see where this goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1853519469507119058?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1853519469507119058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1853519469507119058&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1853519469507119058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1853519469507119058'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2620282347812797483</id><published>2008-09-07T00:20:00.012-04:00</published><updated>2008-09-07T01:24:01.269-04:00</updated><title type='text'>On Rewrites, Fire-Fighting, and Code Quality</title><content type='html'>Carbon Five wrote &lt;a href="http://blog.carbonfive.com/2008/09/java/rewrite-or-rescue"&gt;an article on "Rewrite or Rescue"&lt;/a&gt;, speaking to legacy Java apps to which they lent their expertise to save.&lt;br /&gt;&lt;br /&gt;However, their comments on the habits formed by a fire-fighting development culture and the steps required to transition an organization out of that toward a focus on quality are spot-on for any development platform.&lt;br /&gt;&lt;br /&gt;They summarize their thoughts as such: &lt;i&gt;"All too often, the source of poor software quality is poor process and practices. Unless you fix those problems it is not worth embarking on a new software development effort."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This all jives completely with my experiences with system/component rewrites and organizational culture change for development teams. If you have low quality code coming out of your teams, no amount of rewrite will produce a better quality product. You have to address the problem at the core, which is the developers themselves. &lt;br /&gt;&lt;br /&gt;Sometimes you have good coders who are failing because they are working in the wrong environment. This is usually very easy to fix. In my personal experience, and from what I've heard often in conversation with industry peers over the years, the usual suspects are (a) insufficient time constraints for architectural planning and (b) throwing out basic quality controls (such as code reviews, and/or the time necessary for writing automated unit tests). These items are usually sacrificed in the name of speed, but (as has been written about countless times before by people smarter than me) the hour or two spent in architectural brainstorming and the extra 25% dev time to write automated unit tests is recouped as soon as the second dev cycle hits, which is usually right after the code goes to production and you get your first batch of new feature requests.&lt;br /&gt;&lt;br /&gt;The rest of the time, you just have "bad" coders. I say "bad" because sometimes you have a good coder who has become jaded or lazy and just needs a kick in the ass; in remaining cases you have people who really are not very detail/quality oriented as part of their personality. I'd say for every five "bad" coders I've come across in my career, only one is salvageable; the rest are clock-punchers that sap the productivity of your good coders who have to spend their valuable time cleaning up the other guy's code (amounting to negative effort). The only solution with the truly bad coders is to fire them and seek better talent. Unfortunately, with the state of the tech industry being what it is, it's always a challenge to find better talent. Pick your poison.&lt;br /&gt;&lt;br /&gt;Carbon Five speaks directly to the fire-fighting situation, too: &lt;i&gt;"To be successful in a rescue mission or even a rewrite, you have to turn the firefighting culture into one where developers value quality and work for it daily. They should be excited to make things better and be engaging each other with ideas and practices to get there."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;As to how to get there: &lt;i&gt;"Again, this can be a very difficult effort. Sometimes it requires dramatic measures. In our experience this includes:&lt;br /&gt;&lt;br /&gt;- Changing a workspace to remove barriers to casual conversation&lt;br /&gt;- Relocating developers to the same physical location&lt;br /&gt;- Hiring new blood and firing those resistant to change&lt;br /&gt;- Pair programming&lt;br /&gt;- Book clubs and study groups"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I generally agree with these statements, but have a few thoughts on specifics. I already spoke to hiring new blood and firing the bad, so here are my thoughts on the other items.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Workspace/Relocating Developers&lt;/b&gt;&lt;br /&gt;Workspace is definitely a huge factor in developer productivity. I was recently given the option to relocate my development team to another part of the building where we'd be split two to a room. I declined because our current space is perfect for the size of my team: we can all see each other with a twist of the head, be at each other's desks within one chair-roll, and when a meeting is required I just ask everybody to reach a reasonable stopping point after which we have the meeting in five minutes or less from our desks.&lt;br /&gt;&lt;br /&gt;Obviously, this won't scale as the team grows. As we get bigger, I plan to slice the team in to squads (of around four coders or less) that can maintain the same gelling qualities as a small team while accommodating the split-up layout of their environment. Experience has taught me that big dev teams are never productive without masses of process to keep everybody in line, which is wasteful and time-consuming. In contrast, squads can be given goals and responsibility for hitting them, after which you can rely on them working effectively as a unit through professionalism and in-team communication. You also get some benefits of having multiple groups relying on each other for components, since the pressure is on to not be the group that misses the deadline (thus holding up the project) or the group that writes the bit that breaks/is buggy (pointing to skill or attention-to-detail issues on a particular squad).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pair Programming&lt;/b&gt;&lt;br /&gt;The XP-based pair programming has never seemed that great to me personally. I just can't see the business justification for two developers working on the same piece of code the whole time.&lt;br /&gt;&lt;br /&gt;However, when you have a gelled team, they pair program automatically at the appropriate junctures, for no longer than the time required to get the benefit. When somebody on my team doesn't know how to do something, or can't decide between several techniques, they vocalize the problem to the room and usually get an answer within a few minutes of discussion. In some cases the topic is sticky enough to require a whiteboarding session, which in itself is essentially an impromptu mini-architectural discussion. We already know from experience that architectural discussions yield better end products.&lt;br /&gt;&lt;br /&gt;The key take-away I want to present here is that if the environment is right and the team is gelled, you get the benefits of pair programming automatically without needing to formalize or force the issue.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Book Clubs and Study Groups&lt;/b&gt;&lt;br /&gt;I'm a big fan of inter-resource training and company-sponsored developer libraries. However, whether or not a company needs to set aside time in a developer's week for clubs and study groups depends largely on the skill set at hand. This sort of thing is a must when you have a lot of junior level coders, but is of much less value with a seasoned team. Seasoned developers will usually initiate their cross-training fix once or twice a month on their own, or at local user tech groups.&lt;br /&gt;&lt;br /&gt;One thing they do at Highwinds that seems kind of cool is a bi-annual in-house conference, where all the remote developers are flown in to the mothership and we share the nitty-gritty behind-the-scenes details of the entire system. I'll get to see my  first one of these in two weeks, so I'll let you know how it goes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;br /&gt;In closing, we've been approaching some rewrites with StrikeTracker and our web service tier since I got to Highwinds in April. We have not had time to address some of the larger-impact work yet, but we've had good success by identifying a high-level plan of where we want to go and writing new system components/organizing incremental cleanup in that vein.&lt;br /&gt;&lt;br /&gt;We identified a few basic tenants: (a) components are developed as agnostic libraries as much as possible, (b) automated unit tests are mandatory, (c) inter-component contracts must be developed as part of the design process and strictly adhered to during implementation, and (d) a new hub will eventually combine the components in a loosely-coupled way. So far, we've hit three out of the four goals without much effort. I've worked on several projects over my career where we've been able to develop new code with this style of plan and plug it in to the old app framework with minimal effort, so I know it works.&lt;br /&gt;&lt;br /&gt;Once again, I can only speak from my experiences, but a full system rewrite rarely proves to be a good idea. It's always better to tackle things incrementally so you can course-correct as you go and start extracting value from the new code being produced. Of course, if you're not going to hold quality in high regard as you go, you might as well just stick with the old code and keep on fightin' those fires!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2620282347812797483?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2620282347812797483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2620282347812797483&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2620282347812797483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2620282347812797483'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/09/carbon-five-wrote-article-on-rewrite-or.html' title='On Rewrites, Fire-Fighting, and Code Quality'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4912085836545877641</id><published>2008-08-25T16:03:00.002-04:00</published><updated>2008-08-25T16:06:29.653-04:00</updated><title type='text'>Jeweler's Mutual</title><content type='html'>If you need an insurance policy for an engagement ring as I did (or any jewelry for that matter), I have to recommend &lt;a href="http://www.jewelersmutual.com"&gt;Jeweler's Mutual&lt;/a&gt;. The online application took about 5 minutes (using a Flex app, no less :) ), after which I uploaded a scan of my jeweler's appraisal.&lt;br /&gt;&lt;br /&gt;Afterward, I called to make sure they had everything and they confirmed that I was covered over the phone. So all in all, I had a full policy in about ten minutes, and I saved about 25% over adding the ring to my homeowner's policy. Pretty cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4912085836545877641?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4912085836545877641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4912085836545877641&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4912085836545877641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4912085836545877641'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/jewelers-mutual.html' title='Jeweler&apos;s Mutual'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-6446347329279146323</id><published>2008-08-24T20:24:00.007-04:00</published><updated>2008-08-24T21:38:18.675-04:00</updated><title type='text'>"Flex vs. Silverlight" Is A Misnomer</title><content type='html'>I was reading over &lt;a href="http://it.toolbox.com/blogs/madgreek/the-battle-for-the-ria-throne-flex-vs-silverlight--26764"&gt;this article&lt;/a&gt; that &lt;a href="http://www.brianlegros.com"&gt;LeGros&lt;/a&gt; posted on &lt;a href="http://maximporges.com/2008/08/silverlight-disappointments.html"&gt;my recent blog post&lt;/a&gt; on Silverlight's performance for those who had installed the plugin.&lt;br /&gt;&lt;br /&gt;The author does a decent job of laying out the case for both products, after which he draws four possible conclusions.&lt;br /&gt;&lt;br /&gt;1) Flex will continue to dominate the market place.&lt;br /&gt;2) Silverlight matches Flex’s market share.&lt;br /&gt;3) Silverlight will fail to gain any significant market share.&lt;br /&gt;4) More competition will flood the market.&lt;br /&gt;&lt;br /&gt;The author felt that #1 was the most likely outcome. Personally, I think #2 is practically guaranteed. Allow me to explain.&lt;br /&gt;&lt;br /&gt;If you want a platform to take hold, you need three things:&lt;br /&gt;&lt;br /&gt;i) Minimal requirements for installation for the end user,&lt;br /&gt;ii) Development tools that developers can't live without, and&lt;br /&gt;iii) Killer front end apps.&lt;br /&gt;&lt;br /&gt;The author states that &lt;i&gt;"The consumer is the least impacted. For consumers it is simply a matter of downloading the plug-in or not."&lt;/i&gt;. To me, the consumer is potentially the most impacted, since they will have to get that plugin installed in order for the platform to fulfill item #i above. &lt;br /&gt;&lt;br /&gt;IMO, there are two reasons that the Flash player has such ubiquitous adoption: (a) people's love of punching a monkey in a Flash ad in the late 90's, and (b) the fact that the Flash player installation is almost seamless. Now, of course, I am being facetious with the "punch the monkey reference", but the point is that you need some application/gimmick that will make users motivated enough to want your plugin in order to get to it, fulfilling item #iii. As for the seamless install, this was especially true for Windows users where IE would almost magically inhale plugin updates and run the new version immediately without even needing to shut down the browser.&lt;br /&gt;&lt;br /&gt;This is where Microsoft could really take hold from a platform perspective. Since they own Windows, and Windows is clearly king in the OS marketplace in terms of market share, they can get Silverlight out there just by bundling it with Vista and waiting long enough for users to upgrade either their OS or their whole PC. Of course, most of the Vista users are still going to want to punch the monkey and will need the latest Flash player to do so, so that puts the number of Silverlight installations at parity with Flash (for Windows users at least).&lt;br /&gt;&lt;br /&gt;Next, we've got to worry about development tools. Well, Microsoft doesn't have much to worry about there. At least amongst my network of professional colleagues, Visual Studio ranks as one of the most powerful and loved development environments on the planet. Add Silverlight capabilities to this and throw in a healthy quantity of C# and VB coding capabilities coming in Silverlight 2.0, and requirement #ii has been covered as well.&lt;br /&gt;&lt;br /&gt;The only thing left to do will be to come up with a Silverlight "punch the monkey" equivalent for non-Windows users. As developers start creating killer apps in Silverlight, it will only be a matter of time before non-Windows users will want one of these apps badly enough to install the Silverlight plugin. If Microsoft can really focus on user experience here they can win over users on any platform. Of course, that might be a pretty big "if" based upon past experience, but I believe they can pull it off based upon the positive movement that took place in Vista (at least for decently spec'd machines).&lt;br /&gt;&lt;br /&gt;So, what does this mean for Flex vs. Silverlight? It means that in all likelihood, Microsoft's best grab of the market will be about 80-90% of installed OS users, most (if not all) of whom will already have Flash as well or will get it soon after plugging in their new computer. I don't think Silverlight is going to offer anything to Flex/Flash developers that will make them jump over to Silverlight development or vice versa, so all the guys coding in Flash and AS3 today will be coding in Flash and AS3 after Silverlight 2.0, and all the guys working with .NET today will start producing more Silverlight apps instead of HTML apps because the rich capabilities in Silverlight will be so much cooler than what the browser can deliver alone today.&lt;br /&gt;&lt;br /&gt;Of course, the proof is already in the pudding. Look at RIA development shops like &lt;a href="http://www.cynergysystems.com"&gt;Cynergy Systems&lt;/a&gt; and &lt;a href="http://www.effectiveui.com"&gt;EffectiveUI&lt;/a&gt;; they aren't building apps in Flex or Silverlight, they are building apps in &lt;i&gt;both&lt;/i&gt; depending purely upon the need. I'd bet a kidney that &lt;a href="http://www.universalmind.com"&gt;Universal Mind&lt;/a&gt; would also be developing in Silverlight today if it weren't for the fact that they are such a close Adobe Solutions Partner (of course, I could be totally off base here - but I think not).&lt;br /&gt;&lt;br /&gt;So, my final word on the subject is that there are plenty of desktops ready to receive Silverlight, plenty of developers ready to code in it, and plenty of action left in the Flex/Flash space for all those guys to be enjoying life too. This may be one of the few cases where it doesn't matter which technology you want to go with - they will all be as ubiquitous as each other since they run cross-platform. Long live Flex &lt;i&gt;AND&lt;/i&gt; Silverlight.&lt;br /&gt;&lt;br /&gt;As somebody who started as a Java developer, this explosion of cross-platform front-end technologies is really something wonderful for me to see in my career. Java held the promise of cross-platform capability but really only ever delivered it on the server side. Now that Flex and Silverlight are here, we finally get to have first-class support for cross-platform capabilities in the front-end as well - and nothing makes developers happier than lots of people using their apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-6446347329279146323?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/6446347329279146323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=6446347329279146323&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6446347329279146323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/6446347329279146323'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/flex-vs-silverlight-is-misnomer.html' title='&quot;Flex vs. Silverlight&quot; Is A Misnomer'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8560195522262922376</id><published>2008-08-24T19:55:00.003-04:00</published><updated>2008-08-24T20:05:48.638-04:00</updated><title type='text'>On A Personal Note</title><content type='html'>I presented the bling and Jessica accepted, so we're engaged! Families on both sides are thrilled, and are joining forces to divert the holiday meal conversation thread from "when are you getting engaged?" to "when are we getting some grandkids?" :)&lt;br /&gt;&lt;br /&gt;Many thanks go out to those of you who assisted with the gemological education and countless unsolicited suggestions for proposal ideas... needless to say, I came up with something special that did the trick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8560195522262922376?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8560195522262922376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8560195522262922376&amp;isPopup=true' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8560195522262922376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8560195522262922376'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/on-personal-note.html' title='On A Personal Note'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2147732365539009860</id><published>2008-08-22T00:17:00.002-04:00</published><updated>2008-08-22T00:22:10.705-04:00</updated><title type='text'>Silverlight Disappointments?</title><content type='html'>You know, I was really hoping Microsoft was going to have Silverlight in top gear before the Olympics, especially since this was their chance to get everybody to install the player. With the Olypmics being as popular as they are, this would have been the time to try to get some foothold in the Internet against the Flash player. People I respect have told me that Silverlight is going to be very cool, and I think the competition against Flex will really push Adobe to keep their current dominance of the RIA market.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.contentinople.com/author.asp?section_id=430&amp;doc_id=161217"&gt;Reading this article on Contentinople&lt;/a&gt;, it looks like this viewer's experience with Silverlight (which is a requirement for the video) has been lackluster, with system crashes being par for the course. He didn't say if he was using a Mac or PC.&lt;br /&gt;&lt;br /&gt;I didn't bother downloading Silverlight after many respected peers had problems with it on their Macs when it first came out, so I can't speak from experience. Has anybody else tried the Silverlight player, and if so, what were the results?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2147732365539009860?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2147732365539009860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2147732365539009860&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2147732365539009860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2147732365539009860'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/silverlight-disappointments.html' title='Silverlight Disappointments?'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2536771622485587734</id><published>2008-08-21T21:55:00.003-04:00</published><updated>2008-08-21T22:47:38.656-04:00</updated><title type='text'>Debunking the Mojave Experiment</title><content type='html'>After disabling the horrendous user protection that was up in my grill at every turn, I actually like Vista on my MacBook Pro in Bootcamp. It runs Dawn of War and Firefox great (which is pretty much all I use it for), and I thought the search features and UI changes (while not a groundbreaking excursion from XP) were a positive change. Of course, anybody who knows me/reads my blog regularly knows I dig the Mac for non-gaming use due to all its shiny UNIX-ness and polish.&lt;br /&gt;&lt;br /&gt;Even though I like Vista, I thought &lt;a href="http://wilshipley.com/blog/2008/07/mojave-experiment-bad-science-bad.html"&gt;this article on debunking the Mojave Experiment&lt;/a&gt; (while a totally biased rant) brought up a few points that were somewhat meritorious.&lt;br /&gt;&lt;br /&gt;Enjoy (or not).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2536771622485587734?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2536771622485587734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2536771622485587734&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2536771622485587734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2536771622485587734'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/debunking-mojave-experiment.html' title='Debunking the Mojave Experiment'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3296579611117886661</id><published>2008-08-21T18:43:00.002-04:00</published><updated>2008-08-21T18:46:44.240-04:00</updated><title type='text'>Flex Development Position Open at Highwinds</title><content type='html'>With &lt;a href="http://www.maximporges.com/2008/08/farewell-and-good-luck-tommy.html"&gt;Tommy's departure&lt;/a&gt;, I've got an opening at present here at the Winter Park, FL office (local candidates only, please). Here's the job description (exported from Word to plain text with a little HTML for formatting - YMMV). If you are interested in applying, please contact me directly if you know me personally, or send your resume over to careers [ at ] highwinds.com with the title "Software Engineer - User Experience Team."&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b&gt;Software Engineer - User Experience Team&lt;/b&gt;&lt;br /&gt;Highwinds is a growing provider of software, messaging and distribution services. Our products are sold to the worlds largest ISPs. We are actively seeking ambitious, dynamic, smart and energetic individuals to be a member of the team that designs, operates and improves our growing content distribution network. &lt;br /&gt;&lt;br /&gt;If you are motivated to deliver high quality and innovative services, Highwinds can offer you a great career opportunity. We offer benefits including 401k, medical, dental, vision and competitive salaries to qualified team members.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;About the User Experience Team&lt;/b&gt;&lt;br /&gt;As a Software Engineer on the User Experience team, you’ll be creating a cutting-edge user experience product on top of a next-generation Content Delivery Network (CDN).&lt;br /&gt;&lt;br /&gt;Every member of our team is focused on the needs of our customers and the future of our business, and your work will directly impact how the company and product get to the next level. When you join our team, your ideas will shape the future roadmap of the platform as you bring them to life through code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Required Personality &lt;/b&gt;&lt;br /&gt;If the following description sounds like you, you are going to love being a part of our team.&lt;br /&gt; &lt;br /&gt;&lt;li&gt;You have strong passion for high-quality software and the ability to deliver product in an informal, agile environment.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You prefer a whiteboard brainstorming session to written specifications.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You don't need a manager. Once you have some direction, you take responsibility for the work at hand and have the initiative, imagination, and motivation to get it done.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You like to learn from others, and to share knowledge and best practices. You're a fan of collaborative design and peer reviews.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You have excellent deductive reasoning, problem solving, and decision-making skills. When it's necessary to compromise to meet a deadline, you're confident you can make the right decisions to achieve a balanced result.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You have a positive attitude with excellent interpersonal/communication skills. You're happy working both independently and with others in a multi-team setting.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You're not comfortable unless you're at the top of your game. When you're not at work, you're tinkering with new technologies or catching up on ideas from industry thought leaders. You might even have your own blog.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You're interested in working with Rich Internet Application (RIA) technologies.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Essential Job Functions &amp; Responsibilities&lt;/b&gt;&lt;br /&gt;&lt;li&gt;Write high quality code and unit tests in Adobe Flex and Java, integrating with RESTful web services and BlazeDS.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Brainstorm with other team members to shape the implementation of end-user and internal stakeholder requests.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Participate in collaborative code review and system design sessions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Work in a release-based lifecycle, taking ownership for individual feature sets and bugs with each release.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support Technical Consultants in the field by assisting with specific customer requests, troubleshooting, and problem solving.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Job Requirements&lt;/b&gt;&lt;br /&gt;These are the bare minimum skills expected for members of our team.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Bachelor's degree in a software-related field (Comp. Sci. or equivalent strongly desired) or comparable industry experience, plus 4 or more years of professional experience as a software engineer in a team environment of any size.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Demonstrable expert-level understanding of object-oriented technology and industry design patterns. Professional experience delivering applications in Java/JEE or C#/.NET.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Strong written and verbal communication skills, including the ability to present ideas in a group setting and constructively critique the work of others. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience with an RDBMS platform such as Oracle, MySQL, MS SQL Server, etc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience working with source control systems in a parallel development environment (Subversion preferred).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Understanding of software development lifecycles and associated development techniques.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Development experience using a server-side web development platform (any of the following or their equivalents: ASP, ASP.NET, JSP, ADF, ColdFusion, Ruby on Rails, Java servlets, JSF, PHP, etc.).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Thorough understanding of the strengths and compromises of distributed application design using web services, REST architecture, and/or other remoting technologies.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience with software development in both Unix/Linux and Windows environments.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Desired Qualifications&lt;/b&gt;&lt;br /&gt;The best candidates will also possess one or more of the following.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Strongly desired: professional or hobby experience with Rich Internet Application development using Adobe Flex 2 (or higher) and ActionScript 3.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Proficient with the web technology stack (one or more of the following: JavaScript, HTML, XHTML, CSS, Ajax). Experience developing web applications for multiple browsers and operating system platforms.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;An eye for clean user interface design and a passion for delivering a high-end user experience.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Working knowledge of graphic design tools (Adobe Creative Suite, Gimp, PixelMator, etc.) a plus.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Familiarity with UML modeling.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience with the setup and administration of web server platforms (Tomcat, JBoss, Apache, etc.).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience with asynchronous message bus technology.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Socket-based programming experience a plus.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience working with geographic/marketing data.&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3296579611117886661?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3296579611117886661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3296579611117886661&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3296579611117886661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3296579611117886661'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/flex-development-position-open-at.html' title='Flex Development Position Open at Highwinds'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3639962962457490869</id><published>2008-08-21T18:36:00.005-04:00</published><updated>2008-08-21T18:48:56.894-04:00</updated><title type='text'>Farewell and Good Luck, Tommy!</title><content type='html'>&lt;a href="http://tomschober.wordpress.com/"&gt;Tommy&lt;/a&gt; let us know today that he has been offered a position as a Team Lead at &lt;a href="http://www.universalmind.com"&gt;Universal Mind&lt;/a&gt;. In addition to being an awesome opportunity with one of the original and most respected Flex consulting shops, he'll be working up north where he can be closer to his family.&lt;br /&gt;&lt;br /&gt;We hate to see you go, Tommy, but we wish you the very best. The FLS servers miss you already. I don't think we'll ever find another salsa-dancing, plane-flying, hockey-playing software engineer/photographer. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3639962962457490869?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3639962962457490869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3639962962457490869&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3639962962457490869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3639962962457490869'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/farewell-and-good-luck-tommy.html' title='Farewell and Good Luck, Tommy!'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4844318948579900115</id><published>2008-08-18T10:31:00.005-04:00</published><updated>2008-08-18T10:53:27.944-04:00</updated><title type='text'>ECMAScript 4.0 "Standard" "Killed"</title><content type='html'>There's a great rundown of what happened &lt;a href="http://whydoeseverythingsuck.com/2008/08/ru-roh-adobe-screwed-by-ecmascript.html"&gt;on somebody else's blog&lt;/a&gt;, so I'll let you read that.&lt;br /&gt;&lt;br /&gt;I say, who cares if the "standard" doesn't get officiated? From my experience, the best industry "standards" emerge from powerful libraries and rich language features, which gain popularity through developer love as opposed to a big stamp from a standards body. Examples of "standards" like this that come to mind include Spring, Hibernate, new Ajax libraries for JavaScript, etc.&lt;br /&gt;&lt;br /&gt;Personally, I think AS3 is a great language, and really enjoy developing in it. If it's not going to be in IE and Firefox as the next version of JavaScript, then so be it; keep it in the Flash player. Support for a language in IE does not strike me as a reason to change the direction for Flex.&lt;br /&gt;&lt;br /&gt;I don't develop heavily in JavaScript, so I don't know if anybody from that community will be missing out based upon this decision, but I doubt it; the JavaScript community has insanely useful and powerful libraries at their fingertips these days. I do think it would be nice if there was a common standard that could be compiled down to (which I believe was the point of Adobe opening Tamarin and its adoption in Firefox). I also think it's a shame that I won't be able to fully transport my skills from AS3 to JS coding, but to be honest, there are so many similarities between AS3 programming and JS as it stands that the language barrier is already pretty non-existent.&lt;br /&gt;&lt;br /&gt;Finally, I would love to see Adobe run with this and put all the non-compliant ECMAScript features they had to take out (like private constructors, abstract classes, etc.) back in. As much as I see the strength in standards compliance across environments, they do put some shackles on innovation. Let's see this through as an opportunity to make Flash better.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mikechambers.com/blog/2008/08/14/actionscript-3-and-ecmascript-4/"&gt;Looks like I'm not the only one who feels this way&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4844318948579900115?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4844318948579900115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4844318948579900115&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4844318948579900115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4844318948579900115'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/ecmascript-40-standard-killed.html' title='ECMAScript 4.0 &quot;Standard&quot; &quot;Killed&quot;'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-1183796641609474860</id><published>2008-08-07T21:22:00.002-04:00</published><updated>2008-08-07T21:25:35.726-04:00</updated><title type='text'>Sidebar Links Updated</title><content type='html'>Looking over the blog today, I realized that my sidebar links were horrendously outdated. I added some new links, but still kept the oldies-but-goodies that continue to represent my state of being.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-1183796641609474860?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/1183796641609474860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=1183796641609474860&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1183796641609474860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/1183796641609474860'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/sidebar-links-updated.html' title='Sidebar Links Updated'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-4648135908503130360</id><published>2008-08-06T22:19:00.003-04:00</published><updated>2008-08-06T22:21:59.171-04:00</updated><title type='text'>Innovative New Way to Crush Hippies</title><content type='html'>&lt;a href="http://www.engadget.com/2008/08/06/video-orb-swarm-gets-a-brain-going-autonomous-at-burning-man/"&gt;See more here&lt;/a&gt; (quote lifted from around 3:25 in the embedded video).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-4648135908503130360?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/4648135908503130360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=4648135908503130360&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4648135908503130360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/4648135908503130360'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/innovative-new-way-to-crush-hippies.html' title='Innovative New Way to Crush Hippies'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-8699692795801970438</id><published>2008-08-01T22:57:00.025-04:00</published><updated>2008-08-02T02:11:01.872-04:00</updated><title type='text'>The First 90 Days</title><content type='html'>Several months ago &lt;a href="http://www.maximporges.com/2008/04/farewell-cfi-hello-highwinds.html"&gt;I posted on my blog&lt;/a&gt; that I was leaving CFI to pursue a new opportunity at &lt;a href="http://www.highwinds.com"&gt;Highwinds&lt;/a&gt;. Since I just passed the 90-day mark in the new job on July 13th, 2008, I thought I would share with all of you how it's going.&lt;br /&gt;&lt;br /&gt;In a word: awesome.&lt;br /&gt;&lt;br /&gt;But to leave it at that would not provide any insight to other twenty- (or thirty-, or forty-...) somethings that might be considering a potentially risky career change, so I'm going to take this blog post as an opportunity to share my experience.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So, Here It Is&lt;/b&gt;&lt;br /&gt;I became the youngest director at CFI after just six years, with a staff of 40 under my wing. For all my success, I have to thank fate for instilling me with a passion for excellence and the knowledge that it can only be achieved through the assembly of talented and highly motivated teams. In the end, it was a simple equation: if I brought the vision, they would bring the talent required to conjure it into being.&lt;br /&gt;&lt;br /&gt;For a long time, things went well. Practices were improved. Money was made and saved. With each new success, I was honored with larger teams and greater responsibility. People who worked on my teams got promoted, too.&lt;br /&gt;&lt;br /&gt;Unfortunately, corporate IT breeds a majority share of tremendous mediocrity. For every person who was like me and wanted to make things better, there were three more who personally benefitted from the inefficiencies of the status quo. In the worst cases, these people were unmotivated or just didn't want to learn something new.&lt;br /&gt;&lt;br /&gt;Ultimately, I was left with a choice: (a) spend my career convincing people of their potential for excellence, or (b) join others in the pursuit of it. My decision to work for Highwinds was the latter.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why I'm Glad I Left&lt;/b&gt;&lt;br /&gt;Regardless of how well my projects turned out, the old guard at CFI often regarded me as a youngster with an unrealistically optimistic and utopian view of how technology teams should be run and how software systems should be built. This was, of course, totally incorrect. I may have been young, but I knew enough to learn from the experience of industry leaders who were kind enough to write books about how things should be done.&lt;br /&gt;&lt;br /&gt;So, one of the most satisfying parts of working for Highwinds is the fact that they follow all the rules that earned me this reputation, and they reap the rewards that come from them. I'm going to detail these rules and illustrate them with examples from my first 90 days.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rule #1: Hire Amazing Talent&lt;/b&gt;&lt;br /&gt;Yes, it costs more. Yes, it takes longer to find the right people. But the results speak for themselves. On the engineering teams, there's very few people at Highwinds who aren't senior level, and everybody brings top-flight skills to the table. The result is a highly innovative approach to CDN technology that has enabled us to close the gap between our system (officially launched in January) and those of the major competition (launched in the late 90's and early 2000's) in less than a year.&lt;br /&gt;&lt;br /&gt;And with high levels of talent comes common experience and understanding. It's nice that when I say things like "use case" and "unit test" and "test coverage" and "design pattern", people don't look at me like I'm from Mars or think I am trying to steal their souls.&lt;br /&gt;&lt;br /&gt;As for executive management, we've got awesome coverage in every area of the business. As a software engineering manager, I can't relay to you how satisfying it is to work with industry veterans that understand technology and what it takes to produce it. It also helps tremendously that we have a focused and business-centric approach to feature prioritization instead of the typical "whoever screams loudest" approach that sets the priorities at so many other companies.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rule #2: Do Things Right The First Time&lt;/b&gt;&lt;br /&gt;Having a CTO really makes a difference. In my previous life at CFI, the CIO reported in under the CFO and did not have a place at the executive table. This meant that there was little push-back to the business and more importance was placed on doing things as quickly as possible, regardless of the long-term costs. In turn, this results in high system maintenance costs and scalability challenges, and you end up with a vicious cycle.&lt;br /&gt;&lt;br /&gt;With a CTO on board, you've got an executive who actually writes code as part of their job. There is no way they are going to let the sales and marketing teams push so hard that the company ends up chasing its tail maintaining badly implemented systems. For the engineers, this means that the development deadlines are reasonable and time is allowed for design work and brainstorming, resulting in better software.&lt;br /&gt;&lt;br /&gt;Of course, Highwinds is still a business, and we live in the real world. When time runs short, necessary compromises are made - in a logical and strategic fashion. We take a pause every few releases to "pay our taxes" on these compromises and clean them up. And we never compromise on the things that are central to the health of the system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rule #3: Create An Environment People Actually Want to Work In&lt;/b&gt;&lt;br /&gt;It's hard to describe our office digs without sounding like I'm bragging. I'll do it anyway.&lt;br /&gt;&lt;br /&gt;We have incredibly nice office suites, with a mix of oversized workspaces and private offices. There's just the right amount of glass so that everybody can see each other without losing privacy.&lt;br /&gt;&lt;br /&gt;There's artwork on the walls. Every office has a whiteboard, and there are well-equipped and comfortable conference rooms. When we have meetings near to lunch time, they are catered without exception. If my team decides to code through lunch or pull a late-nighter, I put it on the company tab.&lt;br /&gt;&lt;br /&gt;Dual 22" flat panel monitors are standard equipment. Everybody who needs it gets VPN access. Hours are flexible so long as commitments are met.&lt;br /&gt;&lt;br /&gt;There's a big break room with leather furniture, two big LCD TVs and a foosball table. The kitchen is stocked with utensils you'd find at somebody's home. The fridge is full of soda, and we've got a coffee service so good that I don't even go to Starbuck's any more after lunch.&lt;br /&gt;&lt;br /&gt;My team has a "cave" at the back of the executive suite where we have the lights down low. When I'm slinging code, I'm sitting in an $800 Aeron chair that is extremely comfortable. We play music in our cave. We've managed to hit a vibe that encourages people to stop by and hang out at what has sometimes been dubbed "Club StrikeTracker." It's so peaceful and productive that the first two months I worked there, I'd often look up from a deep coding trance to realize that it was almost 7 PM already.&lt;br /&gt;&lt;br /&gt;I could go on, but by now you should have the picture.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Life's Short. Do Something You Love.&lt;/b&gt;&lt;br /&gt;So here's the motivational part of the blog post. Hopefully this will inspire some of you to take the leap of faith required to get out of your rut and in to your calling.&lt;br /&gt;&lt;br /&gt;If you're working for a corporate IT department and you feel like you are too talented to be there, you are right. If you think that mindless politics and endless bureaucracy exists everywhere, you are wrong. If your managers tell you that things are that bad at every company, remember that misery loves company and they are trying to convince themselves more than they are trying to convince you.&lt;br /&gt;&lt;br /&gt;Great companies are out there. Many of my respected peers made the decision to leave CFI at the same time I did, and I've stayed in touch with all of them. The majority are much happier in their new jobs, and for those that aren't thrilled it's no worse than it was before. Know that if you take the time to look around and you are honest with yourself about what you want from your career, you will find something better than what you have today.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I Scored 100% On The Rands 90-Day Test&lt;/b&gt;&lt;br /&gt;Well, that's it. In closing, I'll take a run through the 8 steps outlined in &lt;a href="http://www.randsinrepose.com/archives/2007/01/03/ninety_days.html"&gt;Rands's 90 day checklist&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#1: Stay late&lt;/b&gt;&lt;br /&gt;Yep, did this by accident plenty of times, and getting StrikeTracker 1.5 out before we hired Russ and Mario made this a necessity early on.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#2: Accept every lunch invitation you get&lt;/b&gt;&lt;br /&gt;Yep, easy - the teams eat lunch together a lot at Highwinds.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#3: Always ask about acronyms&lt;/b&gt;&lt;br /&gt;Hmm... CDN, NNTP, CPC, ST. Then there are all the components: Canner, Megamaid, Doppler, Windstorm, FlashFlood... the list is long.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#4) Say something really stupid&lt;/b&gt;&lt;br /&gt;I'd say I cover this on a daily (if not hourly) basis.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#5) Have a drink&lt;/b&gt;&lt;br /&gt;My interview process consisted of dinner and bars on Park Ave. in downtown Winter Park, and I'm surrounded by alcoholic engineers and salespeople.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#6) Tell someone what to do&lt;/b&gt;&lt;br /&gt;I'm in management so this comes with the territory, although I like to think that I ask.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#7) Have an argument&lt;/b&gt;&lt;br /&gt;With strong talent comes type-A personalities, so respectful arguments are commonplace. And while many have the confident air that comes from being a bad ass at what they do, there is a surprising lack of ego on the team.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;#8) Find your inner circle&lt;/b&gt;&lt;br /&gt;The circle is there and in flux. It's growing and shifting since the company keeps hiring.&lt;br /&gt;&lt;br /&gt;For those of you that decide to make a jump in your careers, good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-8699692795801970438?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/8699692795801970438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=8699692795801970438&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8699692795801970438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/8699692795801970438'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/first-90-days.html' title='The First 90 Days'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-464269771686133438</id><published>2008-08-01T22:36:00.005-04:00</published><updated>2008-08-01T22:54:58.691-04:00</updated><title type='text'>MobileMe Disasters and the Importance of Early Betas</title><content type='html'>Apple's MobileMe service has been seriously sucking wind since it first launched. First it was down, then it had performance problems (which I understand are ongoing), and then they even lost emails for a bunch of their customers. David Pogue has written &lt;a href="http://www.nytimes.com/2008/07/24/technology/personaltech/24pogue-email.html?_r=1&amp;pagewanted=1&amp;oref=slogin"&gt;an excellent history&lt;/a&gt; of the matter.&lt;br /&gt;&lt;br /&gt;Personally, I would be mightily pissed off with Apple if I was one of their MobileMe customers and had to suffer through this.&lt;br /&gt;&lt;br /&gt;That being said, you get what you get when you are on the cutting edge. It's a well-known fact that Apple's first-run of anything (be it new laptops or iPhone software revisions) tends to be bug-prone and unstable. Those who jump in first usually get burned, and I've seen (and personally experienced) both the best and worst examples of Apple's service recovery.&lt;br /&gt;&lt;br /&gt;The problem, of course, is that Apple keeps things so close to their chest that they can't reveal what they are doing until the last minute, which potentially makes it very difficult to publicly beta any of their product offerings.&lt;br /&gt;&lt;br /&gt;One of the reasons Google is so smart is that they keep many (all?) of their services in beta for an extended period of time, allowing them to work out the kinks long before a product goes gold. Of course, Google has a dirty river of search engine advertising money rolling in, so they hardly care about their value-add (and no doubt personal-info-mining) services.&lt;br /&gt;&lt;br /&gt;That being said, one could argue that people are willing to pay to beta Apple's products for them, so who can blame them for taking the money and stashing it in the bank? If nothing else, it will help to pay for all the support calls and &lt;a href="http://www.apple.com/mobileme/status/"&gt;bloggers&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-464269771686133438?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/464269771686133438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=464269771686133438&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/464269771686133438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/464269771686133438'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/mobileme-disasters-and-importance-of.html' title='MobileMe Disasters and the Importance of Early Betas'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3763270038498369763</id><published>2008-08-01T22:33:00.001-04:00</published><updated>2008-08-01T22:34:56.877-04:00</updated><title type='text'>VMWare Fusion 2.0 Beta 2</title><content type='html'>You know, &lt;a href="http://www.vmware.com/communities/content/beta/fusion/fusion2_beta2.html"&gt;looking at this feature list&lt;/a&gt; I would have happily paid an upgrade fee, but VMWare wants to give me Fusion 2.0 for free. Who can argue with that?&lt;br /&gt;&lt;br /&gt;Awesome stuff, guys - I can't wait for it to go gold.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3763270038498369763?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3763270038498369763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3763270038498369763&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3763270038498369763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3763270038498369763'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/08/vmware-fusion-20-beta-2.html' title='VMWare Fusion 2.0 Beta 2'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-9126124608386831586</id><published>2008-07-31T14:23:00.005-04:00</published><updated>2008-07-31T14:32:37.085-04:00</updated><title type='text'>Microsoft Midori: Destined to Take "Epic Fail" to a Whole New Level</title><content type='html'>We're talking about epic fail that spans a multitude of topologies, ranging from client-server and multi-tier fail to peer-to-peer fail, and in the cloud data center fail. Those topologies form a heterogeneous fail where fail can exist at separate places. &lt;a href="http://www.engadget.com/2008/07/30/microsofts-midori-a-future-without-windows/"&gt;Read it and weep.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I guess you could say &lt;a href="http://www.imdb.com/title/tt0118655/"&gt; I'm "sour"... on... Midori? I thank you...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-9126124608386831586?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/9126124608386831586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=9126124608386831586&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9126124608386831586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/9126124608386831586'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/07/windows-midori-destined-to-take-epic.html' title='Microsoft Midori: Destined to Take &quot;Epic Fail&quot; to a Whole New Level'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-793181383200999795</id><published>2008-07-23T23:59:00.001-04:00</published><updated>2008-07-24T00:00:12.371-04:00</updated><title type='text'>In The News: Technicolor Partners with Highwinds</title><content type='html'>&lt;a href="http://www.contentinople.com/author.asp?section_id=450&amp;doc_id=159485"&gt;Read all about it.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-793181383200999795?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/793181383200999795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=793181383200999795&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/793181383200999795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/793181383200999795'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/07/in-news-technicolor-partners-with.html' title='In The News: Technicolor Partners with Highwinds'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-7874710442813122273</id><published>2008-07-21T22:43:00.003-04:00</published><updated>2008-07-21T22:44:44.721-04:00</updated><title type='text'>Merapi Alpha Announced</title><content type='html'>&lt;a href="http://www.merapiproject.net/"&gt;Merapi&lt;/a&gt; has been announced in alpha form, and I'm pretty interested to see where it goes. Being able to write Java apps on and have them accessible from AIR on the desktop opens up some really interesting opportunities.&lt;br /&gt;&lt;br /&gt;I've signed up for the alpha, so hopefully the team will approve me and I will get to play with it soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-7874710442813122273?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/7874710442813122273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=7874710442813122273&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7874710442813122273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/7874710442813122273'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/07/merapi-alpha-announced.html' title='Merapi Alpha Announced'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-5746561720813531085</id><published>2008-07-03T22:19:00.002-04:00</published><updated>2008-07-03T22:21:55.856-04:00</updated><title type='text'>Flex Maven Tutorial</title><content type='html'>I had planned on posting a tutorial on how we are using flex-mojos at Highwinds to automate our build process, but as you can tell from the lack of blog posts I just haven't had time to blog about anything recently.&lt;br /&gt;&lt;br /&gt;Luckily, &lt;a href="http://www.adobe.com/devnet/flex/articles/fullstack_pt1.html"&gt;Adobe has published an article series&lt;/a&gt; on just this very thing. You can also &lt;a href="http://bugs.adobe.com/jira/browse/SDK-12730"&gt;vote for officially endorsed Maven 2 support for Flex&lt;/a&gt; on the Flex JIRA site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-5746561720813531085?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/5746561720813531085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=5746561720813531085&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5746561720813531085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/5746561720813531085'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/07/flex-maven-tutorial.html' title='Flex Maven Tutorial'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-2657711675334579045</id><published>2008-06-21T00:01:00.002-04:00</published><updated>2008-06-21T00:05:24.877-04:00</updated><title type='text'>Stan Winston: 1946 - 2008</title><content type='html'>I found out via the &lt;a href="http://www.uberbotonline.com/blog/2008/06/18/well-miss-you-stan/"&gt;Uberbot Blog&lt;/a&gt; that Stan Winston passed away.&lt;br /&gt;&lt;br /&gt;Stan was the special effects genius behind most of the movies I loved during my formative years, most notably Predator, Aliens, and the Terminator movies. As a young geek, I had a great appreciation for him bringing the characters to life and doing so in a realistic enough fashion to both thrill and entertain me in equal measure.&lt;br /&gt;&lt;br /&gt;I'm sure the special effects industry owes Stan a debt of gratitude for his skills and inspiration. While he may be gone, he will live on in both his past work and its influence on future generations of movies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-2657711675334579045?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/2657711675334579045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=2657711675334579045&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2657711675334579045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/2657711675334579045'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/06/stan-winston-1946-2008.html' title='Stan Winston: 1946 - 2008'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8421527.post-3478209409767801868</id><published>2008-06-13T07:34:00.004-04:00</published><updated>2008-06-13T07:47:21.572-04:00</updated><title type='text'>AAPL Tanks on Concerns of Jobs' Health</title><content type='html'>Once again, AAPL investors react like a bunch of scared little girls due to speculation over Apple's prospects for continuity if something were to happen to Steve Jobs.&lt;br /&gt;&lt;br /&gt;Jobs' departure is coming in the next decade IMO, and will certainly be a blow to Apple for obvious reasons. However, I'm personally unconcerned about the company's future under different leadership. I'll go on the record saying that (short of any major changes to the management structure at Apple) the CEO job will go to Phil Schiller.&lt;br /&gt;&lt;br /&gt;Phil gives presentations that are equally peppy and enjoyable as Jobs', and he has the same passion and enthusiasm for Apple's products as Steve. I think he can do a great job running the WWDC and other conferences/trade shows and taking the company where it needs to go.&lt;br /&gt;&lt;br /&gt;In addition, TImothy Cook has done a great job as the company's COO, and would continue to operate a tight ship behind the scenes if Schiller took over. He ran the company for nine months while Jobs was dealing with pancreatic cancer, and nobody noticed the difference.&lt;br /&gt;&lt;br /&gt;I'll just ask one favor: don't give the job to the guy who did the iPhone presentations at WWDC this year. His mechanical, clearly-rehearsed delivery was compensated for only by the bad-assedness of the iPhone 3G and the sample apps. I'm sure he's a nice and capable guy, but presentation and evangelism are obviously not his strengths.&lt;br /&gt;&lt;br /&gt;I'm still long on AAPL, with a $240+ price target for the next year. The volume sales that the $199 iPhone 3G promises are comparable in my mind to the iPod rush at the beginning of the millennium, with the App Store representing the next killer device/electronic storefront consumer experience in the same way that the iTunes Music Store did for the iPod.&lt;br /&gt;&lt;br /&gt;I just wish I had the balls to buy some options. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8421527-3478209409767801868?l=maximporges.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maximporges.blogspot.com/feeds/3478209409767801868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8421527&amp;postID=3478209409767801868&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3478209409767801868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8421527/posts/default/3478209409767801868'/><link rel='alternate' type='text/html' href='http://maximporges.blogspot.com/2008/06/aapl-tanks-on-concerns-of-jobs-health.html' title='AAPL Tanks on Concerns of Jobs&apos; Health'/><author><name>Maxim Porges</name><uri>http://www.blogger.com/profile/04752383918409167603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
