Sunday, March 28, 2010

Microsoft gets behind SVG -- finally

They say good things come to those who wait. Well, a lot of us have waited a long time (ten years, roughly) for Internet Explorer to support SVG, and some of us didn't think it would ever happen. Some of us have been proven wrong, however. It now develops that Microsoft has decided to provided support for the W3C’s Scalable Vector Graphics (SVG) 1.1 (Second Edition) Specification in the Internet Explorer 9 Platform Preview.

After years of resisting SVG in favor of VML (which never took off), Microsoft now says "We value web developers as our customers and anticipate interoperable SVG becoming a powerful tool that can be written easily across different web browsers." Moreover: "The use of the more interoperable SVG over VML is highly encouraged."

The following SVG features are currently supported in the IE9 Platform Preview (at least partially):
  • Methods of embedding: inline HTML, inline XHTML, <object>, full .svg documents
  • Structure: <svg>, <defs>, <use>, <g>, <image>
  • Shapes: <circle>, <ellipse>, <rect>, <line>, <polyline>, <polygon>, <path>
  • Text
  • Filling, Stroking, (CSS3) Color
  • DOML2 Core and SVGDOM
  • Events
  • Presentation Attributes and CSS Styling
  • Transforms: translate, skewX, skewY, scale, rotate

Not yet supported, but soon to be:
  • Methods of embedding: <embed>, <iframe>, <img>, css image, .svgz
  • Gradients and Patterns
  • Clipping, Masking, and Compositing
  • Cursor, Marker
  • Remainder of Text, Transforms, Events
I, for one, am glad to see Microsoft support SVG natively in IE (even if this version of IE isn't supported on WinXP). One wonders what Adobe's reaction is. Adobe, you may recall, spearheaded the development of SVG and tried (for a while) to jumpstart acceptance of the standard by Trojaning an SVG browser plug-in into every Adobe product install. Eventually, Firefox (and the other browsers) began adding native support. But Microsoft withheld SVG support from IE, and the standard never really caught on, as far as Web graphics are concerned.

Will it catch on now? Hard to say. IE9 doesn't run on XP (or other older versions of Windows), and it'll take years for people to convert en masse to IE9 from IE7 and IE8 (witness the slow death of IE6). As Cameron Laird recently said, "If conventional 'universal coverage' is a requirement, this winter's announcements can only truly impact decisions several years from now."

But hey, better late than never, I say.

Thursday, March 25, 2010

Commodore 64 set for comeback


The Commodore 64 personal computer, not seen on the market since the 1980s, appears poised for a comeback.

You may recall that the original Commodore 64 (a follow-on to the earlier VIC-20) was an early home computer running on an 8-bit processor. It was one of the most popular home computers of all time, selling nearly 17 million units.

The new version will be available through the Commodore USA online store, set to open June 1, according to the company's Web site. Like the original, the new Commodore will be an all-in-one keyboard unit, but this time will feature Intel's 64-bit quad-core microprocessors and 3D graphics capabilities. The new units will also have up to 500GB of hard drive storage and 4GB of RAM. Also standard: a DVD-RW drive, a touchpad, four USB ports, a Gigabit Ethernet port and a DVI (Digital Visual Interface) port to connect monitors. No price has been announced. The original Commodore 64 listed at $595.

Reportedly, the new Commodore will run either Ubuntu Linux or (an undisclosed flavor of) Windows.

Tuesday, March 23, 2010

How to get your software-development priorities right

I've been spending some time reading the 37Signals book Getting Real. It has a lot of common-sense advice for keeping development projects on track. Here's a sampling of some bullet-points that I found particularly worthwhile:
  • Explicitly define the one-point vision for your app. What does your app stand for? What's it really all about? Before you start designing or coding anything you need to know the purpose of your product — the vision. Think big. Why does it exist? What makes it different than other similar products?
  • Work from large to small. Don't worry about the size of your headline font in week one. You don't need to nail that perfect shade of green in week two. You don't need to move that "submit" button three pixels to the right in week three. Just get the stuff on the page for now. Then use it. Make sure it works. Later on you can adjust and perfect it.
  • Find the core market for your application and focus solely on that. (37Signals calls this "Hiring the Right Customer.") The customer is not always right. The truth is you have to sort out who's right and who's wrong for your app. The good news is that the internet makes finding the right people easier than ever. If you try to please everyone, you won't please anyone.
  • Scale later. You don't have a scaling problem yet. If you've got a huge number of people overloading your system, then great — that's a nice problem to have. The truth is the overwhelming majority of web apps are never going to reach that stage. And even if you do start to get overloaded it's usually not an all-or-nothing issue. You'll have time to adjust and respond to the problem. Plus, you'll have more real-world data and benchmarks after you launch which you can use to figure out the areas that need to be addressed.
  • Build half a product, not a half-ass product. Beware of the "everything but the kitchen sink" approach to web app development. Throw in every decent idea that comes along and you'll just wind up with a half-assed version of your product. What you really want to do is build half a product that kicks ass. Stick to what's truly essential. Good ideas can be tabled. Take whatever you think your product should be and cut it in half.Pare features down until you're left with only the most essential ones. Then do it again.
  • Essentials only. Our favorite answer to the "why didn't you do this or why didn't you do that?" question is always: "Because it just doesn't matter." That statement embodies what makes a product great. Figuring out what matters and leaving out the rest.
  • Start with no. Each time you say yes to a feature, you're adopting a child. You have to take your baby through a whole chain of events (e.g. design, implementation, testing, etc.). And once that feature's out there, you're stuck with it... Make each feature work hard to be implemented. Make each feature prove itself and show that it's a survivor. It's like "Fight Club." You should only consider features if they're willing to stand on the porch for three days waiting to be let in. That's why you start with no. Every new feature request that comes to us — or from us — meets a no. We listen but don't act. The initial response is "not now." If a request for a feature keeps coming back, that's when we know it's time to take a deeper look. Then, and only then, do we start considering the feature for real.
  • Expose the price of new features. For example, be on the lookout for feature loops (i.e. features that lead to more features).
  • Avoid preferences. Preferences are a way to avoid making tough decisions. Instead of using your expertise to choose the best path, you're leaving it in the hands of customers. It may seem like you're doing them a favor but you're just making busy work for them (and it's likely they're busy enough). For customers, preference screens with an endless amount of options are a headache, not a blessing. Customers shouldn't have to think about every nitty gritty detail — don't put that burden on them when it should be your responsibility.
  • Ask people what they don't want. Most software surveys and research questions are centered around what people want in a product. "What feature do you think is missing?" "If you could add just one thing, what would it be?" "What would make this product more useful for you?" What about the other side of the coin? Why not ask people what they don't want? "If you could remove one feature, what would it be?" "What don't you use?" "What gets in your way the most?" More isn't the answer. Sometimes the biggest favor you can do for customers is to leave something out.
For more of the book, see the free online edition here.

Friday, March 19, 2010

Are the fat years really over?

Michael Marth makes the interesting case that "the fat years are over" -- referring to the years of predominance of fat-client applications (like Eclipse RCP) over browser apps. He notes that the traditional orthodoxy -- that Web UIs (while faster to develop than thick-client apps) are not powerful enough to compete with standalone thick clients -- is largely a quaint fiction now. AJAX, better widget libraries (in things like jQuery and Ext), and emerging features of HTML 5 have made Web UIs powerful indeed.

But are the "fat years" really over? As much as I want to agree with Michael (and do agree, for the most part), nevertheless it seems to me the world is filled with counterexamples -- of apps that are both popular and fatter-than-fat. There's Eclipse itself, which is a monster that simply won't go on a diet. There's OpenOffice and Word -- each of which is so heavy as to give new meaning to the word "obese." Ditto Excel, PowerPoint, and Outlook.

And then there are the Adobe apps: Photoshop, Illustrator, InDesign, Acrobat, FrameMaker. The ground shakes when these apps walk.

It seems to me the fat years won't really be over until browser-based alternatives to the Adobe apps (and the likes of Eclipse and OpenOffice) have succeeded to the point where Adobe no longer has a reason to live.

Something tells me that won't be happening any time soon.

Thursday, March 11, 2010

IBM allows sneak peek at M2 Insight Engine

Hadoop World: Enabling ad-hoc Analytics at Web Scale

What I found interesting about this presentation is:
  • the existence of a (not-so-)secret IBM Emerging Technology Project called M2, which IBM calls an insight engine for enabling ad-hoc business insights for business users, at Web scale
  • the emergence of a new class of business application that might be called Big Data Analytics
Under "Big Data Business Patterns," IBM counts:
  • Computational Journalism
  • Business Fraud Detection
  • Evidence Based Medicine
  • IT Systems Management
as just a few examples.

And the chief enabling technology? None other than Hadoop.

Wednesday, March 10, 2010

Microsoft Job Interview Questions

I was surprised to see that Wikipedia has started collecting job-interview questions that have been asked by Microsoft's interviewers during followup (second round) interviews. The questions posted so far include the following:
  • Design a cellphone for a blind person.
  • Design a music system for a car. What are the features? Draw a picture.
  • Design a GPS navigation unit for a hiker
  • Design a communication device for Canadian park rangers.
  • Design a remote control for an automatic window-blind system.
  • Design TV Remote Control with Two Buttons.
  • Design a coffee maker that will be used by astronauts.
  • Design an alarm clock.
  • Design an alarm clock for a blind person.
  • Design a search function
  • Design a website for a library
  • What method would you use to look up a word in a dictionary?
  • What are examples of poorly designed software?
  • Design an instant messaging system.
  • I am your grandmother. Describe what MATLAB is to me.
  • How would you explain what a database is to a 5-year-old?
  • How would you explain computer networking to a kindergarten kid?
  • What is your favorite software, and how would you improve it?
  • Write code for an electronic messaging board. What happens when a user logs on?
  • Develop an algorithm for selecting objects in Visio.
  • Tell me about a time when you made a decision and later found out that it was incorrect. What did you do to resolve the issue?
  • Suppose you are one week away from the product shipping date and discover a bug in your software. What do you do?
  • You have a linked list and don't know how long it is; how do you find the middle of it?
  • How would you test a keyboard?
  • How would you test a pen?
  • Write code for finding a duplicate in an array.
  • Write code that returns the length of a string without using any built-in functions.
  • Reverse a Singly Linked List with and without using Recursion.
  • Determine if a Binary Search Tree is well formed.
  • Reverse every word in a String (abc def becomes cba fed).
  • What method would you use to look up a word in a dictionary?
  • Write a function that returns the angle between the hour and the minute hands of a clock, given input of the time.
  • Write a function that takes a string consisting of numeral characters and returns all possible alpha character strings of same length as input that correspond to the keypad of a typical telephone.
  • Imagine you have a closet full of shirts. It’s very hard to find a shirt. So what can you do to organize your shirts for easy retrieval?
  • How would you test an elevator?
  • How would you test a vending machine?
  • How would you test a program that takes in two points and outputs the distance between the two points?
  • Test the Windows scroll bar.
  • Switch every pair of words in a string ("ab cd ef gh" becomes "cd ab gh ef")
  • Write the function for strstr function (finding a substring inside a string)
  • Reverse the order of words in a string ("ab cd ef gh" becomes "gh ef cd ab")
  • Write the function for string comparison. How would you test it?
  • Write a function to zero all duplicate values in an integer array. How would you test it?
  • Write a function that compares two strings and returns a third string containing only the letters that appear in both.
I guess I'm surprised at the breadth of irrelevancy of the questions. Image that you have a closet full of shirts?? How would you test a pen?

Are we hiring Ron Popeil, or are we hiring programmers and QA testers?

Even the technical questions seem incredibly pointless. Reverse the order of words in a string?

The real question is this: Suppose someone does well on these questions. Do they end up doing a good job for the company? Do they do well at Microsoft? Does Microsoft do well? How do you track those things? How do you know what was (in retrospect) a good interview question to ask -- a question that had predictive value, a question that told you whether the interviewee would be a productive employee -- versus a crappy question to ask, a question that ended up predicting nothing, or (worse) caused the wrong person to be hired?

Does Microsoft track such things? One has to wonder. If not, then all of this becomes a silly hazing ritual with no demonstrable value to anyone. I suspect Microsoft (like most companies) has no metrics whatsoever for determining the business value of interview questions. In other words, it's all basically a joke. Please someone tell me that's not true. (And then post the reason to Wikipedia.)

Tuesday, March 09, 2010

Chrome eclipses Firefox -- for a day


Yesterday's visitorship numbers by browser type (click to enlarge).
Chrome-users (blue) edged out Firefox users (green) for the first time.


Yesterday, as luck would have it, was the first day (since I've been monitoring Google Analytics for this blog) that more visitors to this blog surfed here using Chrome than using any other browser. In second place? Firefox.

Out of 1247 total visits to this blog yesterday, 484 came from Chrome users. Some 461 visits came from Firefox users. IE accounted for just 120 visits.

The beginning of a trend? Or the ending of one, perhaps? You decide.

Monday, March 08, 2010

Is Chrome taking share from Firefox?


Silicon Alley Insider ran this graph of browser usage yesterday showing Chrome continuing to make inroads on Internet Explorer and Firefox. The headline was "Google Chrome Is Eating Microsoft's Lunch." I'm not sure the graph actually shows that. What the graph actually shows is:
  • Internet Explorer's market share has been downtrending (quite convincingly) since late 2008.
  • Firefox has apparently plateaued and in fact may be seeing some share deterioration in the last month or so, although there's not really enough data to call it a trend yet.
  • Opera has seen its traditionally miniscule share go down, if anything, over time.
  • Safari has "broken out" and is now a visible presence in the market -- which you really could not have said, prior to July 2009.
  • Chrome has broken out and is a convincing third-place player.
  • Chrome's break-out really became apparent around August 2009. Firefox's upward trajectory, on the other hand, stopped around three months later, in November 2009. Since then, Firefox has been treading water, and in the most recent month its adoption slope has actually gone negative, although this could be a onetime anomaly (it's too soon to tell).
These numbers purport to represent global web browser market share. Just for fun, I'll present a different data set: Traffic from this blog, broken out by browser. The first pie-chart shows browser usage by visitors to this blog, for the period January 1 to March 8, 2010. The second chart shows browser usage for visitors to this blog in the period January 1 to March 8, 2009.

Browser usage on this site, 1 Jan to 8 Mar 2010.


Browser usage on this site, 1 Jan to 8 Mar 2009.

What we can see is that, first of all, people who visit this blog are a very Firefox-centric group and always have been. That's not so unusual for "techie" blogs. But secondly, we can see that Chrome usage is up sharply over the past year (which agrees with the "global" data presented above) -- while Firefox usage is down sharply. Chrome usage more than tripled, going from 6.77% in 2009 to just over 25% in 2010, while Firefox usage sank from 64.09% to 48.92%. Internet Explorer usage went from 11.55% in 2009 to 7.78% in the same period in 2010.

These numbers are based on total traffic of 8,588 visits in the period of 1 Jan to 8 Mar 2009 versus 51,701 total visits for the same period in 2010.

You can draw your own conclusions. I conclude that Chrome is coming on strong -- and it is taking share away from Firefox every bit as much as from IE (at least among the type of users who visit blogs like this one).

Sunday, March 07, 2010

Lessons from Amazon's Success

The folks at High Scalability have rounded up some interesting observations on Amazon's success, based on a number of sources, including an interview with Werner Vogels (three years old but still interesting). Some of the bullet points make fascinating reading:
  • Teams are small -- they are assigned authority and empowered to solve a problem as a service in virtually any way they see fit.
  • If you have a new business idea or problem you want to solve, you form a team, but limit the team to 8 to 10 people because communication is hard. These are called two-pizza teams. That's because 8 to 10 is the number of people you can feed off two pizzas.
  • "Work from the customer backward." Focus on value you want to deliver for the customer.
  • Have a design that is as minimal as possible.
  • Take it for granted stuff fails; that’s reality, embrace it. Go more with a fast reboot and fast recover approach. Create self-healing, self-organizing lights-out operations.
  • Create a frugal culture. Amazon reportedly used doors for desks, in some cases.
  • Settle arguments with A/B testing and Web Analytics. (Avinash Kaushik calls this getting rid of the influence of the HiPPOs: Highest Paid People in the Organization.) If you have a question about what you should do, simply code it up, let people use it, and see which alternative gives you the results you want. Let customers decide arguments with actual results.
  • People’s side projects, the one’s they follow because they are interested, are often the ones where you get the most value and innovation.
  • Innovation comes from the bottom. Those closest to the problem are in the best position to solve it.
  • Any organization that depends on innovation must embrace chaos. Loyalty and obedience are not necessarily the best tools.
  • Look for three things in interviews: enthusiasm, creativity, and competence. The single biggest predictor of success at Amazon.com was enthusiasm.
  • To scale you have to partition (data), so you are left with choosing either high consistency or high availability for a particular system. (Brewer's CAP law.) You must find the right overlap of availability and consistency.
  • Get big fast. The big guys like Barnes and Noble are on your tail. Amazon wasn't even the first, second, or even third book store on the web, but their vision and drive won out in the end.
  • Developers are like artists; they produce their best work if they have the freedom to do so, but they need good tools. Have many support tools that are of a self-help nature. Support an environment around the service development that never gets in the way of the development itself.

Friday, March 05, 2010

Raytraced Venice in Wikipedia


I became aware this morning of a project by the Computer Graphics Lab at Saarland University called XML3D that aims to "add industrial-strength, high-quality, interactive 3D graphics as a built-in, native data type to the Web." Apparently they have done a lot of prototyping in XULRunner. But unfortunately, there are no public downloads yet. Apparently, that'll be coming soon. I can't wait.

Thursday, March 04, 2010

Will Larry Ellison buy Novell?

For the first time in years, shares of Novell were in high demand yesterday as investors sensed a possible feeding frenzy over the beleaguered company after private equity firm Elliot Associates made an unsolicited bid for Novell of $5.75 per share. NOVL stock promptly jumped $1.33 to $6.08, on astronomical volume (137 million shares were traded, more than 28 times the trailing three-month average volume).

I worked for Novell from 2002 to 2007 and watched it falter under some of the worst executive leadership in memory. This is a company, let us not recall, that even Dr. Eric Schmidt (currently head of Google, but onetime president of Novell) couldn't turn around.

This is a company that owned DrDOS and couldn't monetize it.

This is a company that owned WordPerfect and couldn't monetize it.

This is a company that owned (and still does) NetWare, a fabulously profitable operating system, but that turned off the NetWare profit spigot immediately after buying SuSE Linux (which it has still failed to monetize except for a short-lived comarketing agreement with Microsoft). SuSE Linux was the number-two Linux distribution in the world when Novell bought it. It's now what? Number four or five?

This is a company that spent $200 million to acquire SilverStream, then promptly ran the business into the ground.

This is a company that spent an equally astronomical amount of money to buy Cambridge Business Partners, and then all but disbanded it.

The litany of business failures under Jack Messman and Ron Hovsepian is a veritable catalog of business horrors.

Novell's great success in recent years has been in obtaining $500 million legal settlements from Microsoft.

But those days, too, are over.

Novell, however, does still have one plum asset under its control that few people seem to remember. It still owns AT&T UNIX.

And that's precisely why Oracle's Larry Ellison will make a last-minute bid for Novell. If he doesn't, he'll miss a great chance to own UNIX and one of the great Linux distros of the world (SuSE), along with a Gartner Magic Quadrant Identity Manager product, and the sadly aging cash cows GroupWise and NetWare -- a combo that's surely worth a quick cash bid of, say, $6 a share.

If Oracle wants to be in the Operating System biz, now's the time.

Your move, Larry.

Wednesday, March 03, 2010

Google's Radio Patent Blitz


Not content to be the undisputed overdog of Internet advertising, Google appears poised to take on radio advertising (yes, radio) as its next major target of opportunity.

If you go to the US Patent and Trademark Office's site and do a quick search of "AN/Google AND ABST/radio" (meaning, look for patents where the Assignee Name is Google and the Abstract contains the word "radio"), you come back with no less than nine hits (as of today, at least). Five of the nine are actually continuations of a single patent that was filed on March 8, 2005. Two others are likewise extensions of one and the same patent. So in all, there are really just four radio-related patents. But that's surely enough to show the beginnings of a bizarre trend.

The most recent patent (granted March 2, 2010), No. 7,672,337, is called System and method for providing a digital watermark. What's bizarre about this one is that although it purports to be about digital watermarks, the word "watermark" occurs only once in the patent (other than in the title), and nowhere in the abstract. The abstract, in fact, says:
A method for capturing a broadcast is disclosed. The method for capturing a broadcast includes detecting an approximate start time of the broadcast, wherein said detecting includes monitoring for a broadcast trigger, identifying the broadcast and a timed length thereof, such that, based on the timed length and the approximate start time, an approximate end time may be calculated, and recording the broadcast from the trigger to the approximate end time, wherein said recording has captured the broadcast of radio advertising.
What does this have to do with digital watermarks? Good question.

"The present invention enables the monetizing of unsold inventory," Google's inventors (Chad and Ryan Steelberg) explain, adding that the invention "provides a system and method for accurately and timely identifying where and when a radio advertisement or radio program is broadcast. The present invention may provide a communication environment configured to monitor, track, and report on radio verification of broadcast information related to a specific advertisement or program. This broadcast information may be transmitted via a network-accessible server and formatted for retrieval over a network. The present invention may be designed to permit a reporting-service subscriber to connect, such as via a network, to a server and request a report, which may be based on the verification of broadcast information, for a selected advertising campaign or radio program."

If that's clear as mud, you may want to try grokking U.S. Patent No. 7,660,557, Dynamic selection and scheduling of radio frequency communications, granted February 9, 2010. The abstract says:
A manager for playing of broadcast specific information is disclosed. The manager for playing of broadcast specific information includes a managing node that is at least partially resident at a radio broadcast point, wherein the managing node includes a plurality of inputs for receipt of the broadcast specific information from at least two sources, wherein the hub records the broadcast specific information entering at least two of the plurality of inputs for eventual broadcast from the radio broadcast point, and at least one broadcast non-specific information input associated with the managing node, wherein at least one of a format, play time, and play type of the broadcast specific information are varied in accordance with the broadcast non-specific information, and wherein the varied broadcast specific information is broadcast from the radio broadcast point.
And then there's U.S. Patent No. 7,460,863, Method and apparatus using geographical position to provide authenticated, secure, radio frequency communication between a gaming host and a remote gaming device, which is concerned with "the field of radio frequency communications in, more particularly, to a management and distribution network connecting radio frequency broadcast centers for the purpose of delivering data to RF enabled remote devices and an RF enabled remote device with GPS capability for secure off-site gaming applications."

Finally, there's U.S. Patent No. 7,363,001, Dynamic data delivery apparatus and method for same, which describes "a system for providing enhanced radio content to a remote user." According to the abstract:
The system includes at least one input that receives non-radio input; and, at least one output interconnected to the at least one input via a hub, wherein the at least one output receives the enhanced radio content via the hub after at least one manipulation of the non-radio input by the hub to form the enhanced radio content, wherein the at least one manipulation is in accordance with the at least one non-radio input.
The patent goes on to explain:
The present invention may enable small and mid-sized radio groups to aggregate advertising inventory with other stations to create a national advertising network. This technology may enable an intelligent cost effective national ad network. Entities who join a network may be able to capture a greater portion of the national radio advertising market that currently is not captured at all or by the entity. Incremental revenue gain, by capturing national ad buys more efficiently, may permit radio stations to offer additional barter inventory to a company. According to an aspect of the present invention, and based on the installed base, the option may exist to provide national advertisers with access to 3,500 stations to run national radio advertising campaigns.
Moreover:
Preferred embodiments utilize AM and FM sub-carrier bands, TV, Satellite, and Cellular bands.
So there you have it. In case you're not getting enough Google-tailored ad content in the margins of your Gmail, start expecting it in the remnant slots of your AM and FM radio stations -- and maybe your favorite cable channels as well.