dW

Feb 1st 2010

Flash Fires

Arguments have flared up recently about the Adobe Flash plugin on the Macintosh. I’ve been rather vocal about the issue lately by Tweeting my views about the entire debacle; I have written bits about Flash’s and Adobe’s general incompetence here; and I have made comments in weblogs where I find it an effective platform to get my views heard by those who matter. I and others like me have been nothing but insulted by the Adobe Flash team for our viable and extremely genuine problem.

I will say imperatively that I absolutely abhor Flash. I can’t express in words my undying hatred for it, but I don’t despise the plugin because it’s not a web standard; it has so far filled a void that web standards have been incapable of filling and as of right now can’t fill. I detest it because it’s unstable, inaccessible, and inefficient. It does absolutely nothing but attenuate my browsing experience by either crashing the browser or bringing my computer to a screeching halt by devouring its available resources to display something as minute as a 320×240 video. If the Adobe Flash team were to remedy the capriciousness and incompetence of the program then my convictions about Flash would take a complete 180° turn toward outpouring support for their product if and only if when it doesn’t impede the expansion of web standards. However, they’ve refused to do so. The Adobe Flash team have done nothing but insult their users pointing fingers at people and other corporations as the source of their problems when evidence presents itself proving it’s everything to the contrary.

This past Sunday paraphrased transcripts of the iPad town hall meeting at Apple were released, and Steve Jobs didn’t have much that was nice to say about Adobe:

About Adobe: They are lazy, Jobs says. They have all this potential to do interesting things but they just refuse to do it. They don’t do anything with the approaches that Apple is taking, like Carbon. Apple does not support Flash because it is so buggy, he says. Whenever a Mac crashes more often than not it’s because of Flash. No one will be using Flash, he says. The world is moving to HTML5.

Steve Jobs sites Flash’s instability as the reason why none of Apple’s iPhone-like devices are able to execute Flash. I have been throwing around a theory for some time that stated that Apple didn’t want Flash near their products because Adobe was incapable of programming a stable release for the Macintosh. Steve’s statements have proved my theory to be true.

Mr. Jobs also calls Adobe out on being lazy. I thoroughly agree with that, however, all of Adobe isn’t indolent. Anyone who has attempted to install Adobe CS3 or CS4 absolutely have much scorn for the installer. The Installer Team have taken the complaints to heart and gone above and beyond to fix the installer. A much improved installation process will be present for CS5. Likewise, complaints about Flash UI extensions in CS4 and the severe lack of extensions being developed have caused the Creative Suite team to allow the use of WebKit for UI extensions in CS5. Now if the Creative Suite Team would submit more than one or two bug fixes for their software things would be perfect on that front. What does the Adobe Flash team do? Instead of doing what their colleagues at Adobe have done they instead point fingers at their own users and at Apple for the source of their application’s troubles. Adobe itself isn’t lazy, but the Flash team sure is.

Adobe’s executives and managers could be called lazy for not firing their employees who refuse to do their jobs such as John Dowdell and Lee Brimelow who have done nothing but spread lies and malcontent over this issue. The problems with the Adobe Flash plugin began long before Adobe acquired it by purchasing Macromedia. After nearly a decade of having to deal with an unstable plugin it’s about damn time it’s fixed. Adobe’s developed it for four years of the nearly 9 year period of misery. Instead of accepting Steve’s reasons for the iPhone, the iPod Touch, and the iPad’s lack of support for Flash they instead claim it’s still Apple’s fault. If it was Apple’s fault then Flash would work wonderfully on Linux like it does on Windows; it hardly works at all on Linux. So, Adobe, is Flash’s incompetence Linux’s fault as well? Adobe also claims that Apple doesn’t cooperate. Apple had absolutely no trouble cooperating with Adobe during the PowerPC to Intel conversion, letting Adobe in on Rosetta months before the masses even knew Apple was switching architectures. Adobe was given immense amounts of lead time to work with Apple to make sure that all of Adobe’s applications ran smoothly (including the Flash plugin), and when bugs arose in Rosetta months down the road which caused rounding errors in Illustrator among other incredibly annoying problems Apple worked with Adobe yet again to remedy the problem in short order. Like with Rosetta, Apple would benefit from a stable Flash plugin on the Macintosh, but I’m sure it’s difficult for Apple to cooperate now when Adobe’s doing nothing but badmouthing the company and its policies. Instead of whining and posting false information about website support on the iPad they could fix their plugin and hope to God that Apple would be merciful and willing to allow Flash on the devices and others it produces like it. Regardless the Adobe Flash Team is doing a great job at tarnishing Adobe’s fading reputation as it’s almost fashionable to give Adobe a good tongue lashing over Flash these days. That’s a good thing because they’ve deserved it for several years now.

Apple’s not without fault in their relationship with Adobe. H.264 hardware decoding isn’t in the Flash plugin on the Mac because there are no open API’s on the platform for decoding; they’re specific to QuickTime. Apple definitely should work with Adobe, providing them with a way to decode video on their plugin. However, the absence of hardware decoding isn’t the source of the Flash plugin’s sluggishness at rendering video when there’s other players on the platform without hardware decoding capable of displaying H.264 video without crippling the computer in the process. Additionally, back when Apple announced they were dropping support for 64-bit in Carbon Adobe was caught by surprise, having spent countless hours developing its CS4 suite for deployment in 64-bit. This lack of communication by Apple caused its users to receive a 32-bit only release of Creative Suite 4 applications; none of it was Adobe’s fault like some have claimed. Some good is coming out of this because if Carbon was 64-bit in Mac OS X Adobe wouldn’t have a reason to rewrite their entire suite in Cocoa which provides better system integration among other benefits from the aging Carbon API’s.

There was a time where the name Adobe was synonymous with great software and great customer support and communication. This is hardly the case anymore. Reports have come back by people who attended Apple’s town hall meeting about the iPad which said that Steve Jobs was almost nostalgic about the Adobe of old. That’s what Adobe needs to be again. They need to listen to their customers’ concerns, keep the employees who do their job, and fire the ones who don’t like the ones who are in charge of maintaining the Flash plugin.

Jan 29th 2010

iTampon

An Apple user is typically a computer user who has to be at the ready to defend himself at the drop of a hat at any given point in time. Imagine being both an Apple and Opera user. Imagine having to defend yourself not just on your platform of choice but also for your web browser of choice. That’s me. I’m unsure what constitutes an Apple user, but I do know for sure what constitutes myself. Neither I nor people I know personally or online are the stereotypical user exclaiming that the sun shines out of Steve Jobs’ every orifice and waiting for long lines at launch while blindly buying everything Apple makes regardless of whether they perceive a necessity or not. I and many others like myself despise those people as much as the Apple haters do as they are usually our public face, making idiotic gestures at the camera while they foolishly stand out in the elements to get some unnecessary object. A purchase regardless of price should be considered thoroughly and have a particular purpose before the money is spent. Many different products can be bought for multitudes of reasons, but electronic devices typically need to be purchased only if they have a purpose to fulfill. Putting all of its hardware and software problems aside for a bit, from what I saw this past Wednesday the iPad isn’t something I can yet see a use for. In fact that is my main beef with the product as a whole as I can’t get to its other problems without first observing the main one.

Usefulness

Apple has had multitudes of successes in the past. The Macintosh, iPod, and iPhone are all successes any company wishes it had, and Apple is hailing the iPad as yet another innovation to be among the ranks of those three. I just don’t see that yet, but just because I don’t doesn’t mean it won’t be a success in the marketplace like its predecessors have been, and my not seeing a use for the device doesn’t equal a belief in its being abominable. It just looks like a large iPod Touch with an even more ridiculous and easily ridiculed name.1 Unlike many in the country I was born and reside in, I have to see a purpose for a device before I’d even consider buying it. What’s the use for an iPad? I have to reach deep into my head to come up with anything that can even resemble reasoning to purchase such an object. The absolute only thing I can think of is to own one to test websites on as its form factor opens another can of worms for website development. Even with that thin logic it never would constitute in my forking over $500+ for it as it doesn’t change things enough in that category to warrant such a price. I’m not the only one who has difficulty describing just what the product is for, and I’m not the only one wondering what the answer to the question is. Even people who are in ecstasy over it have difficulty describing its usefulness.

John Gruber is an example of someone who’s about ready to kill someone because he’s so ready to get one for his own. He describes people like me as “not getting it”. “Getting it” to my mind means first actually seeing a use for it. He cannot even explain just what that is. He can only exclaim how you need to use it first to know. His entire argument for the device revolves around the fact that it is fast. He repeats the word numerous times over the course of a few separate articles on his website, but one paragraph in his article entitled The iPad Big Picture contains three mentions of the word in a row as a form of emphasis on the subject:

It is fast, fast, fast. The hardware really does feel like a big iPhone — and a big original iPhone at that, with the aluminum back. (I have never liked the plastic 3G/S iPhones as much as the original in terms of how it feels in my hand.) I expected the screen size to be the biggest differentiating factor in how the iPad feels compared to an iPhone, but I think the speed difference is just as big a factor. Web pages render so fast it was hard to believe. After using the iPhone so much for two and a half years, I’ve become accustomed to web pages rendering (relative to the Mac) slowly. On the iPad, they seem to render nearly instantly. (802.11n Wi-Fi helps too.)

The speed of the product is probably exhilarating, but driving a Camaro at 290 km/h must be exhilarating and fast. I’m not going to buy one of those simply because it’s fast. Buying a product for that reason alone is impulse purchasing by someone with more money than he knows what to do with as five hundred dollars or more is quite a chunk of change to just be throwing around for something that can’t be justified with a viable use. This is true especially when devices he already owns fulfills the tasks it can perform. Even as a “couch computer” it still is a desultory purchase because dispensing with that much cash for the sole purpose of being able to browse while lounging on a couch is just absolutely silly to me. In an article for Ars Technica John Timmer describes the complete void of usefulness the iPad exhibits:

When I leave the apartment for anything beyond local errands, I’m almost invariably carrying both a cell phone for communicating and a laptop for getting work done. A truly useful device would be one that could let me leave one of those devices and its added bulk, cables, and worries about charge status at home. The iPhone went a little way towards that dream—it was a phone, but its ability to handle a bit of web browsing and some light e-mail meant that leaving the laptop at home was possible in a few additional circumstances—but, for the most part, I’m still stuck lugging two devices.

The iPad doesn’t fix that. It’s clearly not a phone, so my phone would still have to come with me. It would do a better job of e-mail and Web browsing than the iPhone, but if I’m carrying one of those anyway, that’s not a huge help. On the other side of its category divide, the iPad might add a few more cases where a laptop is unnecessary, but very few. I’m a touch typist; I take notes on presentations while watching the speaker, and I am often writing in one application while looking over a document in a second. With no physical keyboard and no multitasking, the iPad simply wouldn’t work for me. It’s just too limited to mean I could leave my laptop home any more often than I already do.

That just about sums it up, and so far I’ve come to a conclusion that at present it has really no practical use. It’s a device for impulse purchasers like John Gruber to snag up. There’s a market for it to be used like Amazon’s Kindle, and I’m sure people who have wasted their money on a Kindle and people who have been considering purchasing one are giving the iPad a consideration. My perceived usefulness for this product perhaps might change in the future say if developers were pushing out many games with the same caliber as the Nintendo DS or Sony’s PSP. Its larger screen and resolution that comes with it along with its capability to still be portable would make it a device for gamers to enjoy. The rest of its functions would be only an added benefit when the device has a use as a gaming machine. Even then less than $500 could buy you a non portable console capable of high definition and incredible capabilities infinitely beyond anything the iPad can exhibit.

With all that said I would sure as hell purchase an iPad before I even gave any netbook, eBook reader, or tablet computer on the market any sort of consideration despite the caveats the iPad has after acquisition.

Caveats

The iPad is clearly shown to be in a category between a mobile phone and a notebook computer, and in being so it causes problems as people will tend to want to see it more like the latter. In my opinion it can only fit that bill if it is indeed more like the latter except with a multitouch interface and software which caters to the device’s distinct method of human interaction. It’s a personal computer no matter how you look at it. It has the premise of being that, yet it isn’t today.

Throngs of people have made up their lists of missing features and have checked them twice. The majority of the lists will most likely contain the following:

  1. It doesn’t have either a front-facing or rear-facing camera.
  2. The iPad doesn’t support Adobe Flash.
  3. The aspect ratio of the device’s screen is ill suited for widescreen movie viewing.
  4. There’s no CDMA support, so Verizon and Sprint are locked out of the party.
  5. No 1700 MHz support for GSM UMTS/HSDPA, preventing T-Mobile in the US and WIND Mobile in Canada from utilizing the device.

All of these are what I would deem as nitpicks. The second complaint isn’t even viable in my book. My theory on Flash’s exclusion on the iPhone, iPod Touch, and now the iPad isn’t that it will invariably deplete the batteries of the devices and cause stability issues but because it has the same effect on the Macintosh. The Flash plugin for the Macintosh is comparable a pile of shit allowed to ferment for several hours from a horse who’s eaten too much limburger cheese. It’s neither stable nor efficient, so why in hell would Apple even attempt to let that smelly pile of manure be anywhere near its consumer electronics? Flash’s problems on the Macintosh are self-imposed and not created because of Apple; it started long before Adobe acquired Flash itself. Adobe’s just allowed it to remain a problem for the four years it’s maintained the plugin. If Adobe were to finally accept the mess their Flash plugin is on the Macintosh (all of this applies actually more so to Linux) and rework it Apple probably would be glad to work with them to get Flash on Apple’s consumer electronics like Adobe so badly desires. The rest aren’t even worth going into further detail about and should be obvious to anyone with a lick of common sense.

The device actually has some real problems. From first glance its first problem would be its name. Legal battles over the name aside, did anyone at Apple speak up about its similarity to the the maxi pad in name? Have they even seen this video prior to the iPad’s release? Does anyone from Boston with a thick accent work there? Bostonians have long said “iPad” to mean “iPod” because of the accent. Apple should have given the name a wider consideration internally before releasing the product; the legal battles over the name are the least of its problems.

Its largest problem software-wise by far is its lack of third party (and a lot of first party) multitasking. There’s some logic behind it when it comes to the iPhone and iPod Touch because it can severely drain the battery.2 If battery issues are the purpose for excluding multitasking in the iPad then why does the lowest end MacBook get a reputed 7 hours of battery life when it can effectively multitask? It’s just absolutely beyond retardation to release a product which has a 1 GHz processor in it without allowing it to multitask. This isn’t a feature request; it’s an absolute necessity. Hell, even the shittiest netbook is capable of some multitasking.

Perhaps its worst problems are the policies surrounding the App Store. Now the App Store has so far been the reason for the iPhone and iPod Touch’s success. There’s no denying that, but its policies have done nothing but the opposite. The App Store’s stringent, imperfect, and demeaning approval process has given it quite a bit of bad press. The approval process combined with the monopoly Apple places on application distribution is the main problem. On top of that Apple doesn’t like to approve applications which compete with their own. It’s a volatile development situation to be in as a developer, and many have refused to develop for Apple’s consumer electronics because of this. It is absolutely necessary for Apple to have an approval process for their store, but it doesn’t and shouldn’t be the only game in town for application distribution. The Mac works fine with multiple places for application distribution. There’s no reason why the iPhone, iPod Touch, and now the iPad couldn’t do the same.

I’m not going to make any predictions about the success of the iPad. I just think it is useless and misguided in its present state. People will probably buy them regardless. I just don’t see myself at this point purchasing one unless someone is able to explain to me a proper use for the thing. One good thing I can see to come out of this is Apple’s processor. It’ll be quite nice when there’s one in the iPhone.


  1. Its name’s vulnerability to attacks is displayed by my titling choice for this essay.

  2. Although I believe multitasking could and should be added as a toggle switchable option.

Jan 23rd 2010

War of the Video Formats

Recently both YouTube and Vimeo have announced beta implementations of HTML 5 video on their websites. Despite Adobe’s insistence to the contrary, Flash is a much despised piece of software and not just among web standards supporters. It’s hated by multitudes of people from different backgrounds as it does nothing but consume computer resources at alarming rates while being the primary cause of all browser crashes on any platform mostly due to how horribly programmed and maintained it is. For many years now Flash’s usage has diminished as the necessity to ensure functionality in every browser has become easier thanks to the widespread adoption of web standards by all browsers — even Microsoft’s Internet Explorer. However, it is still a necessary evil for video as there’s no superior standards-based method to replace it as video requires a plugin of some sort to function. Despite celebrating as people should of YouTube and Vimeo’s decision to support new developing web standards they have been expressing displeasure toward the two video online community websites’ choice of format which is MPEG-4 H.264 over their preferred format of Ogg Theora.

H.264

MPEG-4 H.264 is a proprietary format which is closed source, patented, and license-encumbered. Despite those setbacks it has been adopted by an abundance of devices and computing platforms as the format of choice mostly due to its astounding bitrate to quality ratio and the fact that many of the patent holders of the format are influential:

  1. Apple uses it for QuickTime video, and on its Macintosh platform video is easily encoded in this format for distribution to all of its devices from iPods to the iPhone.
  2. Blu-Ray and the discontinued HD DVD video are encoded using the format.
  3. Flash video can and is mostly encoded using H.264 such as on YouTube and Vimeo due to its superior quality over Flash video’s initial encoding format.
  4. A wide range of user friendly software across many platforms can be used to encode or convert video efficiently to H.264.
  5. Hardware manufacturers have developed computer components with hardware support for the format, allowing all kinds of devices such as many DVRs and mobile phones on the market today to decode the format without the necessity of processor intensive software.

The problem with adopting H.264 for the web is that the format isn’t free and to put it quite frankly it’s controlled by a bunch of greedy bastards who want to nickel and dime everyone who wants to use their format. Another problem is that the format is locked in stone, and its upgrade — a potential H.265 — will not be backwards compatible with its predecessor; the format will not improve much. While it is vastly superior to Theora in terms of quality today it more than likely will not remain that way.3 A free, evolving, and backwards compatible video format would be much preferred.

Ogg Theora

Theora can fit that bill as it is free, open sourced, devoid of software patents, and can be actively maintained and improved upon by those who utilize it in their software. Its caveats are essentially H.264’s advantages:

  1. For the large part user friendly software to encode or convert Theora video is nonexistent.
  2. Theora encoders are generally slow and many available today produce sub-optimal quality video files compared to what the format is capable of producing, limiting their uses on video content websites such as YouTube or Vimeo as the ability to encode large amounts of acceptable quality video files efficiently is a necessity.
  3. YouTube, Vimeo, and multitudes of other websites similar to them already have their entire libraries in H.264 which play both as standalone video files and within flash players. Having their entire libraries in a secondary format would both be excessive, costly, and would culminate in lower quality for the resultant format as a lossy video file is being metamorphosed to another lossy video format.
  4. There are no hardware decoders for Theora, and specifications for developing one still is in development. The consequence is that there are no small devices such as mobile phones capable of viewing Theora video currently, and there won’t be unless specifications are completed and manufacturers have a need and a market for such encoders.

Despite YouTube and Vimeo’s decision to support H.264 competition such as DailyMotion and fresh websites such as TinyVid exist which have embraced the Theora format. Unfortunately DailyMotion uses browser sniffing to permit only Firefox users to view their HTML 5 content, preventing users of both Google Chrome and of Opera’s new 10.5 pre beta from having a Flash-free video experience. Nonetheless, I believe that perplexity won’t be permanent.

Fortunately for Ogg Theora all of its disadvantages can be remedied; it will take some time, but unfortunately for Theora I fear that H.264 could become a de facto standard for video long before Theora’s disadvantages setting it back can be effectively addressed. That’s not my prediction. It’s just that it would be a pity if that were to become reality because I believe Theora is a better choice for the long haul despite its damning present inadequacies.

Browser Support

The integral quandary here is that the major players in the browser market currently do not see eye to eye as to what video format to support. That is unfortunate, but everyone tends to my mind to have viable reasons for supporting what they do:

  1. Opera supports Theora video only because they believe an open format is better for the web, and is adamantly against supporting H.264 simply because of its encumbering licensing fees and patents.
  2. Apple supports H.264 only because they have put so much behind the format already, having multitudes of devices already in the wild which are devoid of any support for the alternative. Also, being in the business of providing professional high quality video they believe H.264 produces a superior quality product. It is largely not because they do own portions of the format itself despite conspiracy theorists’ and Apple misanthropes’ accusations.
  3. Google supports both, but because of the excesses of storage that would be necessary to house multiple video formats and because of reservations about the quality of Theora they chose not to utilize it for YouTube.
  4. Mozilla supports Theora video only because of similar reasons to what Opera gives, but there appears to be signs that they would consider attempting to see what could be done to support H.264 in their browser if it is in fact possible at all.
  5. Microsoft is largely being left to twist in the wind on this situation. However, due to historical company practices assertations can be made to the effect that Microsoft would much prefer WMV to be the format. From what I can see they have no plans on adding support for the HTML 5 video element anyway.

Format War

H.264 is divisionistic because of its three main problems stated before, mostly the final two where software patents, ridiculous licensing charges, and asinine conditions are frowned upon for very good reasons. I am, however, not as outraged as many of my colleagues as despite my feelings about the entire ordeal I still see reality. The reality is that at present there is no HTML 5 standard video format, so squawking that neither YouTube nor Vimeo fulfilled their promises to deliver HTML 5 is irrational and childish because they have. Is the format a bad choice on their part? Perhaps, but neither YouTube nor Vimeo made the choice without even giving Ogg Theora any consideration. Vimeo even commented on the point in question:

Almost every thread on the internet about HTML5 devolves into some kind of flamewar. Please don’t comment here extolling the virtues of open source or unencumbered codecs. We know, it’s our job to know, and that conversation has been had a million times. If you really feel like you need to talk about it, please do so in the Feature Request forum. The simple fact is right now h264 allows us the most flexibility to display on many devices and many players with the same file. When that changes, so will we.

Considering Google supports both H.264 and Ogg Theora in Chrome I can almost guarantee they made identical considerations and come to the exact same conclusion as Vimeo did. Although I believe that Theora would end up as a better choice both Youtube’s and Vimeo’s reasons for supporting H.264 at present weren’t diabolical or the result of carefree planning as some would like many to believe.


  1. Some delusional people argue this point, but they can kiss both sides of my ass and continue taking their LSD.

Jan 4th 2010

Redneck in the Headlights

Last year I decided to create a Christmas card. It was the first time I attempted something of the sort, and well I decided then I wanted to do it again. I vowed I’d start earlier and finish quicker. It didn’t quite happen that way. Imagine that.

Illustration of an Ecstatic Redneck

Like last year I decided to do something humorous. Following the same theme as last year I did something I find equally so. I began this about a week and a half before Thanksgiving, and I didn’t finish it until Mid-December. I did start earlier, but it sure as hell took me longer this time around than it did the previous year’s. The illustration is of a redneck showing off his newest kill, Rudolph. I decided to make the redneck as nasty as I could. He had to exhibit a lot of the qualities people despise in Rednecks such as poor personal hygiene and exhibitions of sheer idiocy such as the case here of the necessity to mount dead animals on the wall. To add insult to injury he’s mounted Rudolph.

This wasn’t terribly difficult to draw for me, but it was indeed terribly time consuming so much that I actually never finished it. In my sketches I had Christmas lights hanging from Rudolph’s antlers, but I set myself an unchanging deadline of December 15th, and I just never got to painting the Christmas lights. Also I planned on a wood panel background as well. I never reached that point either, and if I did I think the picture would have better portrayed the idea that Rudolph was mounted on the wall. As it is it is a bit ambiguous; certainly it’s ambiguous as to where they’re at as it’s just a void of darkness behind them. I’m a bit disappointed in the fact that I didn’t get to finish it like I wanted, but I would still be painting it at this moment as I’d continuously make additions and improvements to it. I usually have to set myself a deadline on these things.

Unlike this year I didn’t have any emergency to attend to which diverted me from sending out the cards, but the process of getting them out wasn’t a smooth one either. Instead of printing the cards myself I decided to get them printed which was a huge mistake. The printing quality was complete garbage where the printers simply printed 11×17 sheets of paper of the image out on a laser printer. Last year I printed something like a 1740 dpi image out using a very high quality inkjet printer. I sent 600 dpi images to the printer to print this time where they downscaled to 150 dpi before printing. Much of the detail and color was simply not there where every minute detail could be seen on last year’s and even more with a magnifying glass. Needless to say I was greatly crestfallen in the quality of the card’s printing, especially knowing I could have done much better myself. I didn’t ship them out until the Monday before Christmas knowing full well foreigners wouldn’t have a snowball’s chance in Hell of getting theirs before the big day. Only one of the cards I sent to the United Kingdom has even arrived by the time of this writing which has been another disappointment. Canada’s post wasn’t much better either with cards arriving in Germany two days before they reached a house about 100 km from the US border. Two other packages sent there — one before the card was sent — hasn’t arrived yet.

Generally the response has been quite positive to the card. I was worried some people might be absolutely offended by it. In fact, the only people to be offended by the card have been family. One of my aunts thought I was angry with her despite the note on the back giving no indication of my being angry with her. Other family members weren’t so critical, but they all expressed a similar opinion that I should do something much less nasty next year.

TextMate Sync

I’ve been meaning to write a post about my development process, having several drafts on my computer at varying points over the past year. A combination of my procrastinating and my periodical changes to my development process has delayed the cataloguing of my experiences on the matter. I’ve finally settled on a system I can call my own, and I will have to tell the process in multiple parts as there’s quite a bit of backstory to tell first which discusses the evolution of my development procedure. This first part will be about my testing process — explicitly what I use to test my server-side programming.

Shortly after finishing the previous weblog code update and unveiling my portfolio I decided it was about time to change the way I was working as it was neither working for me nor did it provide me with any sort of security blanket in case something went wrong or mistakes were made on my part. Long ago I discovered I preferred to work using an actual server rather than setting Apache and the other required programs and libraries up on my main computer. I’ve toyed a bit with using virtual machines for it, but I never was successful in creating a complete server environment mostly because I never had the time to sit down and create it. In any case I would require a painless method of getting files to the local virtual server just like I require such for a remote one so in the end what I would require to handle the job should be able to handle both situations if and when I switch to using local testgrounds.

ExpanDrive

I finally discovered I needed to determine a different way of web programming when one of the primary programs I was using in my development process refused to work properly and its developers refused to acknowledge any problems with it despite considerable evidence to the contrary.

The program was ExpanDrive. It’s a program which allowed for mounting of SFTP as if the remote filesystem is local. FUSE isn’t anything new, but the first version of ExpanDrive worked exceptionally well. The second, however, did not. It is slow, buggy, and freeze-prone. Back when 2.0 was released numerous reports were being posted on ExpanDrive’s Get Satisfaction support page about general lethargicness the program was exhibiting. I was one of them. It became apparent quickly that the developers didn’t seem to give a shit about remedying the application’s ailments, so I quickly came to the conclusion I didn’t give a shit about purchasing the new version or using the previous one for that matter. ExpanDrive took it a step too far when they — in an attempt to camouflage their incompetence — decided to switch to a one-on-one email system as a replacement for their Get Satisfaction support page which clearly showed public dissatisfaction with their product. That plan backfired when users felt as if they were being treated as liars and became riotous. I didn’t become so, but I did literally tell them to go fuck themselves via email shortly before closing the program for the last time and throwing it in the trash despite the fact I hadn’t yet found a suitable replacement.

I desired a better method of getting local files to a remote server. There’s MacFusion for doing the same thing ExpanDrive did, but at that point I was disillusioned with the entire mounting remote filesystems process — at least for this particular task.

TextMate

TextMate is one of the best programs I’ve had the privilege to use. It’s extremely powerful as a development environment especially since it can be extended using shell commands, essentially allowing for extensions using any programming language which can be accessed using a CLI.

A text editor has very little to do with file transfers, and for the longest I never considered extending TextMate to handle transferring files. I looked everywhere; nothing was transparent enough. My eventual solution involved extending TextMate using rsync. It’s fast, reliable, and free — everything ExpanDrive wasn’t.

I typically work in TextMate using folders. Dragging or opening a folder in TextMate has it treat the folder as a project. In doing so it’s possible to rsync individual files or the entire project to a remote server using SSH. It’d require public-key cryptography or a hacked ssh-askpass to make the process truly effortless, but both are elementary.

Screenshot of TextMate’s Bundle Editor with TextMate Sync Highlighted

The TextMate bundle I authored allows for the user to synchronize a single file or the entire project along with a configuration command which places a hidden .tmsyncconfig file in the folder so it’s not seen. When told to sync a file or folder that config file is checked for the settings. I personally bound these commands all to the same key combination ⌃⇧D. TextMate handles that situation with displaying a menu beside the mouse cursor.

Screenshot of Using TextMate Sync

Download

I’ve provided this for download. I’m not going to support it, and I’m not going to take any responsibility for any damages it causes as rsync can be dangerous. The compressed archive contains a license which allows the user to do whatever he/she wishes to do with it as long as attribution and a copy of the license is provided with it. This software requires both a Macintosh capable of running TextMate and running it to function.

TextMate Sync (2.3 KB) — After unarchiving Double-click on the TextMate Sync.tmbundle file to install.

Dec 3rd 2009

Scissors & Glue

One of the most powerful features of Opera is one that is not well-promoted by either Opera Software or its users. There are many features within the browser which feel abandoned and clunky, but this one isn’t the case.

User Javascript

User Javascript is a method for end users to modify the behavior of websites by running local JavaScripts. Opera’s User Javascript has existed since beta releases of Opera 8.0. In fact its inclusion in the beta was the inspiration for Greasemonkey, an add-on that adds limited user scripting support to Firefox. Opera’s implementation is far superior in capability, providing functionality similar to what would be required using an add-on in Firefox.

I personally would wish that Opera Software would promote this infrequently used feature by providing a place to download user scripts similar to what is already done with skins, widgets, and now Unite applications. There is userjs.org, but it hasn’t been maintained in years and many of the scripts are likely not to work anymore. EDIT: However, ExtendOpera is still sustained.4 There just needs to be one organized and moderated by Opera Software. One of the biggest criticisms of Opera is its absence of an add-on system similar to Firefox, but what many do not know is that the capabilities to reproduce the functionality of most Firefox add-ons are already present within Opera but just in different (and mostly superior) ways. It’s just not properly promoted, and that is quite unfortunate.

In addition management of User Javascript isn’t intuitive. Opera already contains methods for automatically installing skins and UI buttons like what I demonstrated in “Amazon’s Universal Wish List & Opera”. Something akin to those should exist for User Javascript to make installation of scripts painless. Also a management panel similar to the one available for Unite would be appreciated so that users can manage their installed scripts from within the browser. A Unite Application exists just for that purpose, but it looks like shit and really isn’t all that intuitive; however, it’s in active development and is improving quickly. Currently User Javascripts are managed by placing scripts within a specified folder whose preference setting is buried deep within the preferences dialog.

iStockGlue

Screenshot of iStockPhoto’s Zooming Toggle

Needless to say I’ve decided to write my own script, and it’s called “iStockGlue”. Necessity is usually the mother of invention, and frequently at work I have the necessity to mock up something to send to a customer. Typically I’m not given anything resembling an appropriate timeframe to complete the job either due to my employer’s greediness or due to a customer’s complete disregard for what I do combined with an ignorance of the process. I sometimes will fall back to iStockPhoto, download a comp of a stock image there, and send the customer a mockup utilizing that image. If approved my employer will purchase the image for the job. Typically when customers view these comps the first thing they ask is “What are the watermarks?” followed by “Why is the image so choppy?”. I can’t do anything about the watermarks, but I thought something could be done about the resolution. If logged in I’m usually able to zoom into the image, but there’s no way to download the entire zoomed image as it’s sliced into multiple images. Bummer.

I stumbled upon a Firefox add-on called iStockZOOM which allows me to download composites of the image slices. I’ve used it for quite some time, but I have a deep loathing of Firefox simply because it’s so damn slow, especially when starting up. The repetitive dialog boxes asking to update Firefox or some add-on along with the long wait for Firefox just to finish loading and get to a state where it can accept user input adds to the frustration. I need to get work done, not wait for a program to load or manually close dialog boxes to a nauseating degree. I finally decided to break down and program something that would work similarly except for Opera and not Firefox. iStockZOOM works well, but it’s clunky and feels like it’s a hastily slapped together hack. Having to clutter up my toolbar with an ugly UI button to activate it wasn’t pleasant either. However, it worked and provided me with a method of grabbing images. I just wanted something better while working in a faster piece of software.

Screenshot of iStockGlue’s Composite Image

I’ve written “iStockGlue” for that reason. If logged into iStockPhoto and having clicked on the image to zoom it automatically zooms in all the way, grabs the image slices, assembles them in an invisible canvas element, and then replaces the document with the image contained within a document structure resembling Opera’s standard image document. There’s no button to clutter your toolbar up, and there’s no added bullshit to the document:

// ==UserScript==
// @name iStockGlue
// @author Dustin Wilson
// @description Creates a composite of the iStockPhoto zoom image slices so it can be downloaded.
// @include http://*.istockphoto.com/stock-photo*.php
// @include http://*.istockphoto.com/stock-illustration*.php
// @include http://*.istockphoto.com/file_closeup.php*
// ==/UserScript==

/*
Copyright (c) 2009 Dustin Wilson

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/

// To prevent any potential conflicts.
userJS=(typeof userJS=='undefined') ? {} : userJS;
userJS.iStockGlue={};

function hijackZoom(ev)
{
 // Grab the closest zooming level and then determine the images' div id number.
 userJS.iStockGlue.size=zoomFile.availSizes[zoomFile.availSizes.length-1];
 userJS.iStockGlue.div=(zoomFile.availSizes[userJS.iStockGlue.size]) ? zoomFile.availSizes[userJS.iStockGlue.size] : ((userJS.iStockGlue.size == 3) ? 2 : 1);

 // Reconstruct the zoom mechanism's events and force it to zoom all the way in.
 if(ev.target.id=='ZoomHoverDiv')
 {
  $("ZoomHoverDiv").stopObserving("mouseover");
  zoomFile.toggleZoomHover(true);
 }

 zoomFile.doMove(ev);
 zoomFile.nextSize=userJS.iStockGlue.size;
 zoomFile.doMove($('ZoomDraggableDiv'));
}

function hijackImages(ev)
{
 // Only do anything if the loading element is one of the zoom image slices.
 var evid=ev.event.target.id;
 if(ev.event.target.id!=null && ev.event.target.id.match(new RegExp('s'+userJS.iStockGlue.div+'r[0-9]+c[0-9]+')))
 {
  // Get the json, and if it's null stop processing to try again.
  userJS.iStockGlue.json=zoomFile.myRequest.transport.responseText;
  if(userJS.iStockGlue.json==null) return;

  // Grab all of the zoom image slices.
  userJS.iStockGlue.images=document.querySelectorAll('#ZoomDraggableDiv #s'+userJS.iStockGlue.div+' img');

  // Create the canvas element, resize it, but do not add it to the document.
  var c=document.createElement('canvas');
  c.setAttribute('width',/"targetWidth":(\d+),/.exec(userJS.iStockGlue.json)[1]);
  c.setAttribute('height',/"targetHeight":(\d+),/.exec(userJS.iStockGlue.json)[1]);
  var ctx=c.getContext('2d');

  var slice=new Array();
  // Iterate through each image and store it in an array.
  for(var loop=0;loop<userJS.iStockGlue.images.length;loop++)
  {
   img=new Array();
   img['obj']=userJS.iStockGlue.images[loop];
   img['id']=img['obj'].id;
   img['width']=img['obj'].style.width;
   img['height']=img['obj'].style.height;
   img['match']=/s[0-9]+r([0-9]+)c([0-9]+)/.exec(img['id']);
   img['x']=img['match'][2]*zoomFile.viewport.width-zoomFile.viewport.width/2;
   img['y']=img['match'][1]*zoomFile.viewport.height-zoomFile.viewport.height/2;
   img['url']=zoomFile.imgURL+'/file_inspector_view/'+zoomFile.fileID+'/'+userJS.iStockGlue.size+'/'+img['x']+'/'+img['y']+'/zoom_'+zoomFile.fileID+'.jpg';

   slice[loop]=new Image();
   slice[loop].src=img['url'];
   slice[loop]['position']=Position.positionedOffset(img['obj']);
  }

  // Remove the img array from memory.
  delete img;

  // Draw each image to the canvas.
  for(loop=0;loop<slice.length;loop++)
  {
   ctx.drawImage(slice[loop],slice[loop]['position'][0],slice[loop]['position'][1]);
   // Removing data from memory as we go.
   delete slice[loop];
  }

  // Hopefully remove as much as possible from memory before finishing.
  delete slice;

  // Remove the listener so it has no chance of firing again even when navigating history.
  opera.removeEventListener('AfterEvent.load',hijackImages,false);  

  document.write('<html><head><link rel="stylesheet" media="screen,projection,tv,handheld" href="opera:style/image.css"/></head><body><div><img src="'+c.toDataURL('image/jpeg',1)+'"/></div></body></html>');

  // Fire J. King's imagesizer if available.
  if(userJS.imgSizer)
   userJS.imgSizer.init();
 }
}

opera.addEventListener('AfterEvent.DOMContentLoaded',function(ev)
{
 // Remove the preset events for #ZoomImage and #ZoomHoverDiv then reconstruct them.
 var zoomImg=$('ZoomImage');
 var zoomHoverDiv=$('ZoomHoverDiv');

 if(zoomImg && zoomHoverDiv)
 {
  zoomImg.stopObserving('click');
  zoomHoverDiv.stopObserving('click');
  zoomImg.addEventListener('click',hijackZoom,false);
  zoomHoverDiv.addEventListener('click',hijackZoom,false);
 }
},false);

opera.addEventListener('AfterEvent.load',hijackImages,false);

User Javascript in Opera can be enabled by going to opera:config#UserPrefs|UserJavaScript, checking the box, and clicking on the “Save” button. A folder then needs to be specified, and can be done so at opera:config#UserPrefs|UserJavaScriptFile. User Javascripts — including this one — can be dropped into that folder to be executed by Opera.

Caveats

The script has some caveats, though. It has a tendency of using large amounts of memory and CPU cycles because images in numbers in excess of 100 or more can be loaded into memory, so Opera will be unresponsive during the latter part of the script’s running. However, indications of progress are available while Opera is busy as Opera’s progress indicator will provide feedback on how many elements are loaded in the document. There will be situations where the script will be unable to start due problems on iStockPhoto’s end such as when some of the image slices are missing. Additionally at times the script will fire despite image slices’ being missing; the resultant composite image will contain blocks of grey. Nevertheless, I have found that those situations are rare and usually are remedied in a short period of time on iStockPhoto’s end.

If Opera supported saving the canvas as an image by right-clicking on it like Firefox does the amount of memory required by this application can be reduced drastically because I wouldn’t have to use the toDataURL() method; it is the cause of the majority of the memory usage in this script.

I can’t guarantee this script will work, but it has worked for a few who’ve been testing it for me. I will maintain this code for as long as I see fit which might be never. Well, maybe not never. Ha. Hopefully Opera will create some respository which will make the process of maintaining this code a bit easier.

EDIT: Added code that allows the script to utilize Jeff King’s autosizer script. My script has also been uploaded to ExtendOpera. The script on this page should reflect the current version of iStockGlue despite any lack of edits to specify changes.


  1. Thanks to Andrey Petrov for pointing this out.

Nov 1st 2009

Some Things Never Change

For years I’ve been a fan of anime and manga since I first had my eyeballs sucked out of my head going to the theater to see Akira, and I’ve been rather disheartened by the recent offering from both. They’re nearly devoid of a plot, and American animation has been and mostly remains so. A friend of mine, Niko Geyer, pointed me to Avatar: The Last Airbender. He expressed similar dissatisfaction with the current state of Japanese animation, and said that it was his escape from it all. I knew about it, but seeing as it was produced by Nickelodeon I figured that it was shit just like everything else is on that channel. I forgot about it apparently, and never gave the show another thought until a few months ago when I was bored and needed something else to watch. I remembered our conversation, and decided to give it a go. Boy were my preconceived notions incorrect. It’s nothing short of the best example of American television animation in recent memory.

Back when Niko and I had our discussion about the show he painted a picture to express his gratification. We fell out of contact for a while for no apparent reason, and I never glimpsed it until just a month or so ago. After seeing his illustration I just had to create my own.

Animated PNG of My Progress of Painting Aang

I wanted to do something completely different from what Niko did; our styles’ being completely different from each other would assure that, but I wanted to do more of an action scene. Aang is rather easygoing and just enjoys having fun, so in his actions I didn’t want to demonstrate any ferocity. I, however, wanted to demonstrate his bending. There is a scene in the first season where Aang is visiting the Southern Air temple. In a fit of annoyance at someone’s showing off he flaunts by riding his “air scooter” along the vertical walls of the temple. This illustration, however, takes place after the storyline in the television show ends. He and his pet lemur, Momo, are out goofing off at an air temple rather than out helping the populace like an Avatar is assumed to do. That’s the impetus for the title to this piece: “Some Things Never Change”.

The image above will either be static or animatic depending on what browser you are using. At the time of this writing only Opera and Firefox support animated PNG’s. The image above shows my progress with illustrating the picture and if clicked on will bring up a larger version of itself displaying the entirety of the piece. Flickr’s policy dictates that when linking back to Flickr any image should link back to its page; however, in this case that’s not really ideal as the page for the image itself shows a shrunken image which is devoid of the animation itself, so I am linking to the image’s original size page. I believe there can be an exception in this case.

Image of Momo

The most difficult thing to draw in here was Momo. Momo is called a lemur in the TV show, but he looks absolutely nothing like one does in real life. A lemur is a primate that only natively lives on Madagascar and has a bear-like face with large bulging eyes. The upright stance and the eyes were the only things that Momo retained from his authentic brethren. He proved difficult to draw partially because I’m not used to drawing anything resembling him. I did several sketches trying to figure out just how to construct his face, and I decided to model it fractionally upon a cat’s face. My initial thought on placement of him was changed as well. I originally intended for him to fly in front of Aang; while it looked fine in my sketches it didn’t look right when painted, so I moved him to his present location. In addition, that alteration required an adjustment of Aang’s eyes as I wanted him to be looking at his little friend. In the end I think I did an okay job with Momo, but I believe if I felt like it I could do better. I just felt as if I spent enough time on the illustration by that point.

This is my first illustration in quite some time, and as stated before on here I find myself a bit restive if I don’t at least illustrate something from time to time. Drawing calms me; this was the result of such expression. I’m unsure what I’ll do next, but I hope it was as fun as it was when working on this.

The completed illustration without the animation can be found by clicking on the image of Momo above.

Oct 30th 2009

Change of Heart

About two years ago I decided to change my ISP from Comcast on the grounds that their service was unreliable, their customer service was next to nonexistent, and their decision to throttle bandwidth at certain hours of the day. At that time I just recently had to switch from Time Warner’s Roadrunner service to Comcast because thanks to an agreement between both of those companies Time Warner sold their offices here to Comcast. As a result we lost about 10 channels on our television and lost about a megabit both ways on their internet service. Where I live there either is Comcast or AT&T for broadband service. We’re not given a good choice as neither company is really noted for their customer service or reliability.

I decided to make the switch to DSL with BellSouth (which was subsequently purchased by AT&T) because at that point it was faster and cheaper than Comcast’s offering even when we were required to maintain a home phone line. It was an excellent move. The service was noticeably faster, and I was even provided with a static IP address. The service was reliable as well. I can’t remember a single point in time where the service ever was down. The title states “Change of Heart”, so it’s to be expected that I switched services yet again. So, with this excellent service why did I decide to jump ship and sell my soul to Comcast? Things didn’t always remain that peachy with AT&T.

Two months ago I started noticing my connection was slowing up. Page loading was noticeably slower, download speed experienced similar properties, and my bandwidth was completely shot. I couldn’t download and upload simultaneously. Transferring files over FTP or BitTorrent while browsing was next to impossible even when limiting speed on both. In addition, I was experiencing quite a bit of packet loss. Naturally I called. AT&T couldn’t figure out what was wrong, and they said that it had to be the wires in my house. It’s bullshit because, well, phone lines don’t degrade that quickly. Even if the problem really was the phone lines I can’t just replace the lines in my house. It’s a major operation as phone lines are part of a house’s internal wiring. I decided to give Comcast a go again after noticing their lowered prices and the FCC’s ruling that Comcast isn’t allowed to throttle bandwidth — that the internet must remain neutral. I don’t believe that it’s good that a government agency is necessary to keep an ISP from performing evil actions upon its customers, but Comcast isn’t the only company guilty of such actions. AT&T would have done the same thing if the FCC didn’t act before they implemented their methods of bandwidth throttling.

Before I did anything I made absolute sure of all aspects of what I was purchasing from the price with TV service and without along with the presence of any penalties if I cancel my service. When I discovered all of the answers to the questions I had I subscribed to their internet service. I was even allowed to set it up myself, and the process was effortless to say the least. I kept DSL for a week putting my new cable connection through the ropes. My new internet connection through Comcast is on average 5 times faster than it was at its best on AT&T among other things. The inability to have or even purchase a static IP is something I’ll miss, but DynDNS and a nice Bash script takes care of that problem. As a result of their inability to properly investigate the methods of their service’s lack of agility, AT&T lost both a broadband internet and a home phone line subscriber. My home phone was cancelled because there was no need to garner a land line anymore.

Has my experience so far with Comcast been unblemished? No, there’s one caveat.

Screenshot of Comcast’s Domain Helper

This is a screenshot of Comcast’s “Domain Helper”, marketing spin for DNS hijacking. DNS hijacking is a method many Windows viruses use to display webpages and content without a user’s consent by placing different DNS addresses in the system’s settings for such. This is, instead, being utilized on the ISP’s end by them and yet still without consent of the user. This shows up when someone types in an address that generates an HTTP 404 error and meet certain criteria for it — usually requiring it to be a 404 error from a working domain. It shows a page with search results and ads that is a ploy from Comcast to bring in revenue at the expense of their users’ purchased internet connection’s usability. It hinders usability by displaying a page that looks as if they just used a search engine to search for something rather than a page resembling the content they were attempting to reach; it doesn’t even resemble any sort of error page. It’s confusing, and it certainly drew a “What the fuck?” from me.

Thankfully, it can be told to fuck off. On the error page there is a hyperlink near the header which allows an annoyed user to log into their Comcast account provided they know their login information. They can change the setting with a couple of clicks there, and after restarting their modem, router, and computer they are presented with a bullshit free 404 error experience. It should end there, but it doesn’t. Comcast, in usual fashion, seems to forget the preference and will eventually revert to presenting the same bullshit again. That can be prevented as well, but like the initial methods of preventing the hijacking it’s not obvious.

Screenshot of My Router’s DNS Configuration

Comcast maintains a list of their DNS server addresses. There’s a list for domain servers with or without “Domain Helper”. There’s two servers for each area of the continental United States. I picked the first ones listed as they corresponded with my region. The screenshot shows where I put them in my router’s configuration. Now, instead of automatically assigning a DNS server it will designate those two always. This should only be for advanced users because if these servers ever change and there’s no connection the user should know to check to see if the servers have changed first by reverting to receiving DNS server addresses automatically. OpenDNS could be used also, but in my tests it has proven slower than my ISP’s provided DNS servers; however, their paid-for service probably is much faster than the free one I tested. I haven’t had any problems since.

Now, am I disturbed by the fact that I have to use Comcast again? Yes. I find it disturbing that I have to use AT&T for my mobile phone service as well, especially since their promised UMTS (3G) system for my city hasn’t arrived yet. I believe finding an ISP that isn’t evil these days is like trying to polish a turd. We will, indeed, have to hope that governments can keep their telecommunications providers in check like the FCC has been successfully doing lately in the United States. Too bad they can’t do much about ridiculous prices.

Oct 1st 2009

Brick Blues

When I first decided to write this it was a comment to a post Jon Hicks made in his weblog about his love/hate relationship with Fireworks, but I’ve instead decided to sweep away a bit of the cobwebs here and write something not font related. I can sympathise with Jon on this, and being reliant upon Adobe applications to do my job I’ve experienced much of the frustration with Adobe’s complete lack of sanity when it comes to their applications. I’m going to focus on their Macintosh releases, but much of what’s mentioned here very well does apply to their Windows releases as well.

Merlin Mann decided to write something about this as well, and I agree with everything he states. However, I don’t believe it is necessary to repetitively state that you’re not trying to insult the developers. If they’re incapable of taking constructive criticism then they really do need to find another job. Adobe’s applications have for quite some time now gotten so horrendous that if they continue down this track their users will be incapable of using their software because it simply isn’t stable enough for usage as anything but printing the applications’ binary data on toilet paper for removing shit from the crack of someone’s ass. Fireworks, today, fits that description. If this is an insult to developers so be it, but we don’t pay over a thousand dollars for a suite of applications to crash; for quite a few years now that’s what we’ve paid for.

Purchasing

The problems with Adobe’s applications don’t even begin with using them. In fact it begins before even purchasing them. I only use two of Adobe’s applications most of the time — Photoshop and Illustrator. I personally like to keep InDesign around for sparatic print work. Now to get three applications I had to purchase a suite of TEN applications:

  1. Photoshop
  2. Illustrator
  3. InDesign
  4. Flash
  5. Dreamweaver
  6. Fireworks
  7. Acrobat
  8. Bridge
  9. Device Central
  10. Version Cue

Out of that list I despise Flash and Dreamweaver both out of principle and the trauma of actually having to use them at one point. I will never install any of those two on any computer I own. After trying really hard (and I mean really) I just can’t like Fireworks. I personally would wish that Illustrator’s pixel preview and pixel rendering be fixed to be more pixel-perfect and Fireworks’ symbol handling be put into Illustrator while its PNG support be placed into all Adobe applications which can open and save PNG files as no other application has as good PNG support as Fireworks does. Aside from creating, saving, and opening PDF files I don’t use them much, so Acrobat is just digital waste to me as well. The largest pile of rotten garbage of that list are the last three. They rode the short bus to make their way into the application suite, even.

Why not buy just the applications I want? Because buying Photoshop, Illustrator, and InDesign separately cost more than buying the suite of ten applications listed above. Doesn’t make a lick of sense to me.

Installation

Adobe has decided to create their own installer which is neither native nor tries to be. It just needs to go away. To be quite frank on the Mac there shouldn’t be an installer. You should stick the disc in and drag all of the applications you want to your hard drive, but they’re not going to do that because it would make things too easy and it would give end users an easier method of installing just what they want instead of letting the installer run by default, therefore placing numerous amounts of bullshit on your computer. Waiting an hour for the installer to place the files on your computer is a much more efficient method than just taking a few minutes to drag files to your Applications folder, surely.

Adobe does an excellent job with fucking its customers over with its overpriced and bloated bundles and with the abhorrent installer it uses, but those compare nothing to how they fuck over their customers with the “activation” process, a form of DRM Microsoft is famous for using with an intent to deter piracy. Adobe is absolutely retarded for resorting to software activation as all it does is piss off people who just finished paying $1000 for a suite of applications most of which they don’t use and have waited an hour for them to install. What does it do to deter piracy? Well, pirates don’t even need to activate the software. They either crack it or use the same key generator to generate an activation key as they did the suite’s serial number. In other words the answer is: NOTHING. It does nothing but cause hell for customers.

Using the Applications

There are three things that are the foundation for good software:

  1. Usability
  2. Stability
  3. Efficiency

Adobe’s Creative Suite applications have none of the three. Usability comes down to making the application as easy to use as possible and thinking about what aspects of the application is used the most. Merlin Mann in his assessment asked if anyone uses Plastic Wrap as much as Unsharp Mask. They have no need of being on equivalent menu levels. Attention to detail like that and establishing a sense of structure again should be a top priority.

Adobe’s applications with each release become less and less stable while becoming more and more expensive. It appears to my eyes that Adobe’s applications have much of the same codebase they had when they first released for Mac OS X. It’s like painting a picture. Sooner or later you have to know when to stop as you’ll eventually make it worse by trying to “improve it”. Adobe CS5 is going to be a complete rewrite because it has to be rewritten in Cocoa for Mac OS X to be 64-bit, but end users are increasingly having to fork over hundreds of dollars for upgrades that are mostly bugfixes and stability improvements that should have been addressed with patches to the previous release. Both Adobe CS4 and CS3 were supposed to address all of the previous release’s stability problems. They either have and introduced new ones or haven’t done a thing to improve stability. I’m not going to hold my breath that CS5 is going to be more stable as we’ve been lied to in the past, and personally I’m quite sick of the lying and broken promises.

When a user has to use an application to do his job the efficiency of the application is perhaps the top priority over anything. Several times a day a beachball of death will delay an opening of a menu or any other such mundane task as clicking on a path in Illustrator. My point is here that much of the slowups in Adobe’s applications come from doing tasks that should be quick and don’t require much memory or processing power to accomplish. Adobe seems to focus on tasks which typically take much memory to accomplish (and I think them for that), but it’s time to up the efficiency for mundane tasks as well. Adobe’s applications with each release require more and more memory to function without any viable reason as to why. Adobe CS4’s reason for memory usage increase is in reality mostly its interface. I’d rather have more of my RAM devoted to the task at hand rather than displaying a crufty interface.

I don’t think I need to express just how bad Adobe’s UI conventions are as others have already done it for me, but the jist of my suggestions for a solution to the problem is to use native UI elements as much as possible as it does indeed take less memory to use system UI elements, and keep Flash, Flex, and AIR the fuck away from my applications. I don’t want anything to do with any of those three, and I sure as hell don’t want them anywhere near applications in which I have to rely upon their efficiency as those three are the poster children for bad behavior. Don’t get me started on Flash. I don’t even want to start ranting on it. It’s ridiculous that users have to ask for these three things as they should be the underlining philosophy of any application’s development.

With Lightroom, Adobe has proven that they are capable of producing amazing software again. However, Lightroom’s very existence is based upon competition from Apple’s Aperture. It can’t be downplayed how well-developed Lightroom is, and hopefully the success that came from the development of Lightroom can make its way to the Creative Suite.

The Company

Adobe is a company with a long history of producing exceptional software, and for the longest time what they produced were some of the best software money could buy. What happened? Marketers and micromanagers took over the company. Proof of this lies in the fact that Adobe’s former CEO, Bruce Chizen, was a toy company sales director before becoming one at Microsoft. What does a toy company salesman know about professional graphics software? Nothing. Adobe today is like Apple was in the late ’90’s, a company run by people who knew nothing of what they were selling producing nothing but shit expecting people to pay a premium for it. Why isn’t Adobe on the verge of bankruptcy like Apple was then? Because there’s no professional alternative to Adobe’s software like there was to Apple’s hardware. In 2005 Adobe gobbled up its last viable competitor, Macromedia. Corel still exists, but their software has long been out of the professional range except Painter; unfortunately it suffers from even more severe efficiency problems than Photoshop does.

Adobe today has the best engineers, programmers, and designers at their disposal but they’re not being allowed to produce good software because the people in charge are about as clueless as a eunuch at a condom factory. If they weren’t no one would have a need to gripe about Adobe’s software other than the free software bastards who believe all software should be free. There are free alternatives to Photoshop and Illustrator, but none of the alternatives provide the necessities for professionals. I’ll say right out that GIMP is shit, but Inkscape has potential of being excellent although it’ll never be accepted on the Mac when it requires X11 to function.

Talking about professionals, Mac OS X is by a wide margin the preferred operating system for creative professionals, and Adobe is apparently ignoring the platform simply because by sales numbers Windows outsells Mac OS X. The applications are only worthwhile when artwork is being produced with them, and the vast majority of produced professional-looking artwork with those applications come from Mac users. It’s time for them to pay attention to all users of all platforms they sell applications under.

The company seriously needs to communicate with its users more than it has in the past. Today there is only one viable communicator between Adobe and its users: John Nack. There’s dire need for more discussions and interaction between Adobe and its professional customers. Wacom, having a similar user base, has done some excellent community work with their customers. Adobe could and should follow suit. They could do even more by utilizing Twitter, Facebook, and other things to provide a large sense of communication; they would be surprised how more satisfied their customers would be with their software if they were capable of holding conversations with their user base.

Conclusion

Perhaps this long rant will all be moot with CS5, but they have other applications to address such as the Flash plugin which is quite possibly the worst software available for the Macintosh platform. That is horrible software that does affect more people than those who rely upon their professional applications and is the number one cause of browser crashes on any platform. I want Adobe to succeed. I love Adobe and have used their applications since Photoshop 2.0 on a Macintosh Centris 650 in the early ’90’s. Adobe seriously needs to get its act together or some enterprising and ballsy indie developers need to step up and fill the void as a competitor to Adobe; the best thing Adobe could have right now is a viable competitor. Having a competitor has forced Adobe to produce excellent software in the form of Lightroom. Having one for everything else can do the same.

Sep 6th 2009

A Perfect Ten

Anyone who knows me thinks of me as an Opera nut, not the shrill singing kind but the fast and excellent web browsing kind. From checking instant messaging chat logs I can pretty much pinpoint to my starting using Opera to the Ides of March 2003. It’s the best browser out there in my opinion, and nothing’s really going to change my mind on that. However, I want to give a fair review of the software. I’ve used Opera 10 in one form or another for quite some time now. I’ve seen it grow from a completely unstable alpha release to this powerhouse of a build that’s quite possibly the best release of the software yet.

Opera or any software for that matter has never been without its faults. My biggest beef with it in the past has been its monkey ass ugly interface and its equally ugly icon. Well, Jon Hicks and Oleg Melnychuk have taken care of that problem completely. As those two things are the first thing that’s noticable with this release I believe I’ll start on them first.

The Icon

Opera Icon

The Opera icon that’s existed for as long as I’ve used the software has been finally changed. It’s been an object of much frustration by many people over quite some period of time just because of how god awful it was. I don’t need to go into grand detail on just how awful the old icon was as Brand New has done a good job diagramming many of the faults the original icon had. I can notice a few additional faults myself they failed to mention, but their assessment contains enough information to prove a point.

The new logo is a breath of fresh air. It’s been carefully designed by Oleg Melnychuk. Yes, Jon Hicks isn’t the only designer at Opera as Opera has a staff of very talented designers. Oleg’s a great guy and deserves recognition for his fantastic work here. I don’t believe anyone could have done better while keeping the current identity going. As an icon it’s still uninteresting compared to its competitors, but I believe that is its strong point. Its competitors’ icons are actually quite complicated, some bordering on too complicated. Just the other day I had to explain to someone that Safari’s icon is a compass because at small sizes it’s impossible to make out what it is, and no one knows what the hell Google Chrome’s icon represents. Opera’s is a red O, easy to recognize and read; now it’s pleasing to the eye, at the very least to my own.

The Interface

Opera 10 Interface

Okay. Let’s face it. Opera’s interface, while functional, has always looked like shit. Almost every release of Opera has received an overhaul to its skin or the appearance of its interface. The last few releases have had their interfaces increasingly simplified by default to allow people new to the software to grow and discover its features gradually rather than being hit with them at the start. This new release is no different. Opera is actually skinned and uses an extremely powerful INI based format to denote skin settings. I and Ralf Demuth, I believe, were asked early on what my suggestions for improving the skinning system were as Opera knew that to have a beautiful interface the skinning system needed a bit of weightlifting. I was regretfully not of much help to Jon and Petter Nilsen as the problems I had with the skinning system when producing my own skin had left me. Most of the problems I still remembered were so stupid or awkward that I couldn’t really describe them fully. In fact my thoughts were to scrap it in favor of CSS with -o-skin- additions for skinning purposes, something I believe would be incredibly difficult to pull off but incredibly rewarding in the end; it, however, would be too difficult to work on for a single release, requiring a lot of time to work on. The best word of advice I had for Jon who was going to have to take up the task of improving Opera’s interface was to work at it, and report the problems as he discovered them; that appears to be pretty much what he did. It was truely wonderful to watch each snapshot improve visually.

I believe Jon created a total of three different skins: a Macintosh native, Windows Native, and Opera Standard skin. On the Macintosh the Mac native skin is the default skin, but on Windows and other platforms the Opera Standard skin is default. A Linux skin wasn’t made because where would he start on one? The best he could do is pick one distribution and attempt to make a skin for it, but it’s just extra work for pretty much no return. It is of my opinion that the Windows Native skin is rather pointless now as the Opera Standard skin does a better job at integrating with Windows Vista or Windows 7 than that platform’s native skin does. Really what is native on Windows anyway? Microsoft themselves can’t even decide what they want to do, never have really. Perhaps the native skin should have retained the old Windows appearance as there are quite a few out there that disable Aero completely, using the legacy Windows appearance instead. The new Macintosh skin is excellent enough for me to say that I’m not going to be updating my own skin, Entr’Acte, as it’d be rather pointless and a waste of my time to do so. I might make minor modifications for my own usage, but nothing resulting in a complete skin is necessary anymore. Entr’Acte is French for “between the acts” and well, Jon Hicks’ skin is the beginning of the third act. Entr’Acte I believe has fulfilled its purpose.

Now, some Macintosh users have complained that Opera’s interface still doesn’t look “native”, citing Safari’s appearance as being so. If all browsers on the Macintosh looked the same — for example like Safari — it would be rather utilitarian. While Opera 10’s skin looks different than anything out there it isn’t so far removed to make it not fit in with the operating system. It’s not perfect as it does have a few visual faults, but they’re all faults which are a result of lingering limitations in the skinning system or results of screen-space-wasting old school Windows conventions which are nonexistant on Mac OS X. Jon is aware of all of this, so nitpicking his skin is unnecessary. Dragonfly has retained its ugly appearances, but that’s about to change as well, so I won’t harp on it either.

Opera 10 Visual Tabs

The most notable addition to the interface is visual tabs. Opera’s not the first browser out there to implement them, but as of this particular point in time it’s the most successful use of them. In the past browsers either forced them down your throats or made you choose either visual tabs or regular ones. Opera’s done neither by letting the user use either visual or standard tabs and by letting the user toggle visual tabs on or off by simply pulling on a toggler to make the tab bar bigger, therefore making the thumbnails appear on the tabs somewhat magically. Even the toggle bar can be removed. Personally, I won’t use them much as I usually have too many tabs open to make using visual tabs rather pointless, but I’ve found it useful at times so I keep the toggle bar on. The only negative thing I have to say about the entire setup has to do with the particular way I browse. As can be seen from the screenshot above I do not have any close buttons on my tabs, and to the casual observer that would appear to be absolutely insane. Well, in Opera you can middle-click to close a tab. I’ve grown so accustomed to using the shortcut having close buttons on tabs seems superfluous to my particular setup, and Opera allows you to remove them. It’s a shortcut so useful I typically start getting pissed off when tabs in other applications refuse to close on a middle-click. However, if you middle-click the toggler it expands the tab bar to show thumbnails, and I somewhat frequently miss the tab with my cursor and middle-click the toggler instead. I’ve yet to find a way to change those shortcuts, and I believe it would be beneficial to allow the end user to remove the middle-click shortcut from the toggler.

Features

Opera 10 Speed Dial

Speed Dial, my favorite feature from Opera 9 and the favorite feature for Opera’s competition to rip off, has received a facelift both due to Jon’s excellent design skills and the developers’ thoughtfulness to allow the end user to customize Speed Dial with their own background image. It’s also added capabilities of having more than nine items, up to 25. Adding more than nine has been possible in the past, but only through manually editing the speedial.ini file in your profile (or preferences) folder. It’s one of Opera’s greatest features only made better.

Highly Compressed Image when using Opera Turbo

However, the most notable new feature of Opera 10 has to be Opera Turbo. It’s a feature targeted only at a particular demographic. Opera Turbo is for people with slow internet connections such as people who do not have access to affordable broadband internet services or are using the internet in a crowded Wi-Fi hotspot. Essentially a transparent proxy, Turbo uses an Opera-run server to compress Web pages and images to drastically reduce their size, the result being that only a fraction of the usual bandwidth is used, and data arrives much faster for those with slow Internet connections. For those with fast connections the time spent compressing may negate the time savings, but the bandwidth savings are real for everyone. I’m personally blessed to have access to a broadband connection, so this feature is turned off on my browser. However, at work I am forced to use an unreliable ISP, and I have it set to “Automatic” — meaning Opera would automatically turn Turbo on when the network speed gets below a certain threshold and off when the connection is optimal.

One complaint about Turbo I have is how heavily it compresses the images. I understand it is for reducing size, but there are some instances where the images are so heavily compressed that it is nearly impossible to make out what the images were originally especially on small images, reducing the quality of the browsing experience in the process. I believe a middle ground between smaller size and image legibility needs to be reached.

Opera 10 has many more features, but these are the only ones I really want to touch upon myself as Opera already has a comprehensive listing and description of new or updated features in Opera 10.

Web Technologies

Perfect Acid 3 Test

Being the latest release of the Opera web browser Opera 10 has the best support for web technologies to date for the Opera browser. As the image above dictates Opera passes the Acid 3 test perfectly. It’s not the only new thing in terms of web technologies Opera has been supporting as Opera has been rapidly working on Web Fonts, something that during Opera 10’s development cycle its competitors such as Safari and Firefox have released final builds with support for. It is of my opinion the single most important web technology that Opera has added support for in this release, and it is the only one I will discuss. Just like with its features Opera provides a comprehensive listing.

Web Fonts (or @font-face) is an old technology, coined over a decade ago in fact. What it entails is that a CSS stylesheet author can provide a hyperlink to a font file which is to be used in the design. The browser would download the font and display it on the website if the browser supported it. However, the only browser to have retained an implementation of it has historically been Internet Explorer, although not surprisingly using a font format only it supports. I’ve written a couple of times about web fonts, the controversy, and licensing problems associated with supporting them. I’m not going to reiterate much of what I’ve discussed in previous posts, so if curious read my previous articles on the matter.

Image of a Heading on This Website

This website has been using web fonts long before Opera has supported them, linking to Delicious — an excellent typeface by Jos Buivenga. Opera has great basic web fonts support, but past the very basics its support is nonexistant. It doesn’t support declaration of weights and styles within @font-face rules which prevent authors from defining bold or italic variants of web fonts. That is problematic in my opinion as I would consider support for weights and variants imperative in claiming to have web fonts support. It also doesn’t support overriding of installed typefaces using local() as Safari does which would allow a stylesheet’s author to do thus:

@font-face
 {font-family: Arial;
  src: local("Helvetica");}

This simple declaration when used within a user stylesheet would replace any instance of Arial with the local copy of Helvetica, a noble cause from any type-minded designer’s point of view. That is only something I would like to have seen supported, but Opera 10’s current implementation also doesn’t support split fonts, a problem brought forth when TypeKit was introduced which can potentially be a problem for Opera itself. Split fonts are multiple font files containing only parts of a whole font’s character set. They are listed in order in a font stack within font-family and if a character isn’t encountered in the first font listed it moves to the next and so forth. Opera 10 gets confused when encountering these. In my opinion this is a potential problem for Opera as TypeKit’s usage on the web is growing rapidly despite only being in closed beta. When it becomes public it could explode in usage, and because of Opera’s market share and many developers’ ignorance or ambivalence of Opera they’re not going to care whether Opera supports it or not. Every single end user using Opera viewing websites using TypeKit will be fed websites that look bizarre. Examples exist today. The average user isn’t going to know what’s going on and will most likely use another browser — potentially permanently. I know Opera is aware of this issue, but I hope they fix the problem before TypeKit becomes final.

TypeKit uses split fonts mostly as a security measure, but like local() they have more of a use than just defining typefaces. An author with the ability to split typefaces and permission from the type designer could create a font file containing every character in the font which contains titular (or uppercase) numerals and another font with just text (or lowercase) numerals. This is also something I will discuss in detail in a later writeup, but the author could define the text numerals for paragraphs and other uses for body text while defining titular numerals for headers based upon how those fonts are listed in the font stack. Therefore, Opera’s necessity for supporting split typefaces for the sole purpose of supporting TypeKit isn’t necessarily truthful as it does have its uses outside of a single potentially popular service.

What I Would Like to See

Aside from what I’ve already mentioned previously I would much like to see support for border-radius, and Opera does have support for it in the pipeline — if I remember correctly using SVG for rounding which will be quite interesting. That and any plethora of CSS 3 or missing/broken CSS 2 properties would be excellent. I would also like to see support for spoofing custom user agent strings. Opera already supports spoofing of browsers, used as a last resort for users who are experiencing compatibility problems on websites due to that particular website’s developer’s stupid usage of browser sniffing and their ignorance of Opera’s existence. In many cases spoofing Firefox on a particular problematic website does the trick. However, for additional compatibility problems and for testing purposes it would be beneficial to allow support for empowering power users to input a user agent string to spoof or mask as. Even Safari supports this out of the box — although it does have to be enabled. It’s a feature I’ve wanted for quite some time, and surprisingly a feature other browsers already possess either out of the box or through extensions.

Final Assessment

What drew me to Opera initially was its speed. Opera’s competitors can claim to be the fastest by using JavaScript benchmarks, but none of its competitors can touch Opera’s speed in the real world. In my opinion Safari is the closest in browsing speed, and with its being 64-bit in Snow Leopard it might even be close or have surpassed it. However, no browser can touch the sheer feature list Opera posesses. There are many features which are nearly as old as the venerable browser itself is which I could not do without and which are missing completely from its competitors or are only available by downloading extensions which do nothing more than slow an already slow browser down. Opera 10 only adds to the long list of personally necessary features; with the addition of a properly designed interface and icon I won’t have much Opera-related topics to bitch about anymore, and that’s perfectly fine by me.

Download

Opera 10 — Best Browser on Earth.