The Blog
Jan 28, 2009
T-Shirt Hell Closing Its Doors
You have to respect somebody who
goes out on their own terms. F*** you too, Sunshine Megatron - you guys will be missed.
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.
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.
Highwinds Streamed the People's Choice Awards
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.
A few weeks back, we streamed the
People's Choice Awards 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
StrikeTracker 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.
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
after the event is over, let alone after each chunk of data is sent to the viewers as it is happening.
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.
Our support of the People's Choice Awards is also currently the top story on
contentinople.com.
In Search of a User Experience Design Expert
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.
Highwinds is in search of an independent contract resource to assist with user interface/user experience development for a next-generation Rich Internet Application.
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.
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.
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
maxim.porges@highwinds.com. 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.
Jan 24, 2009
Hilarious and Tragic in Equal Measure
First week at the White House has been a
technological trip back in time for Obama's team. Hardly surprising, yet also ridiculous; no wonder it takes the government so long to get anything done.
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
Spotlight,
Quicksilver, 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.
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.
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.
Jan 22, 2009
Flex Camp Miami Topic Announced
My topic and speaker bio have been posted to the Flex Camp Miami web site. My talk is titled
In Search of AOP for AS3, and you can get the full scoop by following the link.
Jan 21, 2009
Government 2.0
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.
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.
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.
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.
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.
And that's why I'm pretty excited about the new
whitehouse.gov web site. Not only are there several RSS feeds to follow, but the new president has
promised to make all non-emergency legislation available five days before it is signed, and there's
an easy way to send feedback to the White House if I so desire - something I've been invited to do. I can also
watch the president's weekly video address and
sign up for email notifications. 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.
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.
So let's review the status of my citizenship in Government 2.0.
1) Subscribed to the
presidential blog? Check!
2) On the White House email list? Check!
3) Bookmarked for the weekly video address? Check!
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...
Highwinds Delivers a Live Streaming Record During 2009 Inauguration
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,
it was a record day for us.
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.
For a little more, you can read
Dan Rayburn's post.
Flex Camp Miami Announced on InsideRIA
Sweet. With all the press on the event so far (and the limited number of seats) I expect it will be packed.
AOP Advice for ActionScript 3 and Flex Coming Very, Very Soon
UPDATE: You can now follow the latest goings-on with Loom at the Loom Blog.At the end of December, I
made a passing reference to my bytecode weaving library (
Loom) 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.
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.
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.
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.
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.
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.
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.
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
the SVN repo on my Google Code project within a week or so.
Jan 19, 2009
Eight Years of Epic Fail

"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.
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.
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.
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.
Let's hope the new guy does better.
Jan 18, 2009
monome
Ever since I discovered that I enjoyed programming as much as synthesizers, I've been looking for ways to combine the two.
To this end, I was planning on buying a
Chameleon 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.
Anyway, I just came across the
monome while trolling the
Virus forums. 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
apps 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. :)
Check out some videos of the monome in action. Most of these are using the
mlr application for sample looping.
Jan 16, 2009
Flex Camp Miami - March 6th, 2009
Brian Rinaldi is organizing
Flex Camp Miami, 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.
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.
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
his blog.
Jan 14, 2009
Farewell, Steve Jobs
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.
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.
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.
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.
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.
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.
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.
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.
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.
Jan 10, 2009
Blu(-Ray) Completes Me
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.
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.
The only downside of all this extra visual quality is that I now want a
Tumbler 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.
Jan 9, 2009
Lack of Top Level Error/Exception Handling in Flash Player
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.
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.
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).
There has been a
bug/feature request 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.
So, if you are a Flash/Flex developer and want proper exception management in Flash, go and
vote on the issue. Global exception handling is a feature in any self-respecting development platform, and the Flash player should be no exception (pun intended).
NOTE: 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.
Jan 1, 2009
Farewell, 2008
Another year slips in to the ether. 2008 was a transformative year for me in so many ways.
Jessica and I got engaged after almost six years together.
I finally figured out what I wanted to do with my career, and took the first step to making it happen.
I re-prioritized my work/life balance. It's not perfect yet, but I hope the trend will continue.
I made my scouting trip to the west coast, which was everything I hoped it would be.
I turned 30, 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.
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.
I got a new MacBook Pro, a Blu-Ray player, and an Access Virus Ti. Meaningless chachkis perhaps, but I still love my gadgets.
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.
I hope 2009 brings as much happiness, surprise, and excitement to your life as 2008 did to mine.