Pages

.

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.
reade more... Résuméabuiyad

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.

reade more... Résuméabuiyad

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.
reade more... Résuméabuiyad

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.
reade more... Résuméabuiyad

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.
reade more... Résuméabuiyad

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.)
reade more... Résuméabuiyad

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.
reade more... Résuméabuiyad