How Apple could fix Mac OS X
Posted by Simon on May 26, 2010 at 12:01 AM
Categories: mac, predictions
Mac OS X 10.7—the OS that no one is talking about—should be the next major release of the venerable Mac OS X (since 1989!) So, what will it look like? Seems like nobody knows. All of the focus has been iPhone and iPad for so long that it seems like everyone has forgotten about the old desktop/laptop computers.
Frankly, although Mac OS X is easier to use than Windows or Linux, it's still not what I would call "easy to use". I see not only my parents but even programmers bumble around with trying the locate the right window, the invisible application with no windows open, and lots of UI fragmentation (for example, should you have a "start screen", or open a blank document, or open the last document, or what).
As far as things went in the past, Apple was stuck with that system. For example, if they had moved the menu bar from the top of the screen to the top of the window (like every other operating system ever) there would have been howls of protest from the Mac clan back when they introduced OS X. Believe it or not, OS X was actually a step backwards from OpenStep in many ways. Steve Jobs and the NextStep clan were forced to adopt many old Mac conventions even when they didn't work particularly well.
Remember that the Mac interface was designed for a strictly one-app-at-a time system. That's right, the first Macs did not have multi-tasking, not even fake "co-operative" multi-tasking. So the whole idea of having menu and windows separated wasn't so confusing at first. But then System 6 came along with the MultiFinder and things started to go a little wacky (and note, that was after Jobs left the company).
The iPhone was a blank slate, and so Jobs and the UX gurus at Apple could go back to square one and design an OS that was well and truly proper. Don't doubt that they spent many years on it prior to the public even hearing about the iPhone touch UI, probably since circa 2003, maybe sooner. There were always tablet dreams circulating in the company. I had conversations about it there in 2001.
The blank slate meant they could get rid of all the broken things in Mac OS X. And indeed in all window-based operating systems. Like, floating windows. The original "windows" designs at Xerox PARC didn't float, they were just arranged in a grid. Much simpler to understand. And that indeed is the paradigm used on the iPad, where they are called panels instead.
So... what comes next? I predict that the next step for Mac OS is going to be a major revamp of the UX for desktops and laptops to bring back the best ideas from the Touch UI. I would personally be glad to see the last of the Apple Menu, the File menu, all of the submenus. Most of the Finder I could scrap as well (keep the column view of course :-). No application should ever NOT have a window visible—that's just crazy. It would be nice if they could sort things out so that I don't have to care which applications are running vs. not running. Maybe they could even—somehow—eliminate floating windows. Maybe that's too much to ask.
Since they've been able to break with the past in the iPhone/iPad, I hope that they'll be able to find a way to bring the best parts of the new and integrate them with the old Mac OS X ... the user interface that hasn't changed in any major way in 20 years.
(PS: and I wouldn't count on it being called 10.7 either...)
Another job opening :-) iPhone developer — learn on the job
Posted by Simon on May 04, 2010 at 04:32 PM
Categories: code, business, iphone, jobs
My iPhone custom software development business is expanding yet again and we need more part-time programmers. The last round I hired two people, now we need more. Our recent apps include Unitron's uHear to test your hearing, OurKids, the Kik chat app, and others.
You must:
- know C, C++, pointers, object and object-relational patterns already
- be ready to learn the iPhone SDK fast (we'll help)
I've personally been programming on the Cocoa SDK since 1998 back when it was called OpenStep, so if you can pick things up, we can get you up to speed in a few weeks.
Demonstrate your qualifications by answering 2 out of these 3 tricky questions:
[Question 1] (C Pointers) Here is some slightly odd C code, but it will produce an (int) result, provided that you make some small changes in order to make it compile. What is the result going to be, and why?
int * a = 1990; int result = &5[a];
[Question 2] (Database design) Create an entity-relationship diagram for a small subset of the Facebook database. In particular, include in your diagram:
- User
- Photo (including who is tagged in the photo)
- Wall Post
Focus on the relationships/associations between these three objects, and only include one or two of the most important static fields (like a person's name). Make sure to indicate the cardinality of a relationship e.g. one-to-one/one-to-many/etc.
To get an idea of what I'm looking for see: http://en.wikipedia.org/wiki/Entity-relationship_model
Here's a tool you can use to draw it online: Gliffy. Then just send me a screenshot. Or feel free to use ASCII art or draw on a piece of paper and photograph/scan, as long as it's very clear.
[Question 3] (C++ Objects) The C++ program below has just 2 compile time errors, 1 runtime error, and there is 1 single line missing. Send us a fixed version that compiles and runs correctly. The errors will test your knowledge of object use and management in C++, and the missing line will test you on abstract/virtual inheritance.
SEND TO: simon@semacode.com. Include your answer(s) and some source code that you have written, whether it's open source, for assignments, for fun, or whatever.
REMUNERATION: Competitive.
MORE INFO: http://simonwoodside.com/pages/consulting
(PS Please keep the answers to yourself)
//// File: futurama.cpp ////
#include <iostream>
class Drinker {
public: Drinker(); void drink( int potency ); int _numberOfDrinksSoFar;
private: virtual int cantDrinkAnyMoreThan() = 0;
}; Drinker::Drinker() { _numberOfDrinksSoFar = 0; }
class Robot : public Drinker { int cantDrinkAnyMoreThan() { return INT_MAX; } };
class Human : public Drinker {
};
void Drinker::drink( int potency ) {
_numberOfDrinksSoFar += potency;
if( _numberOfDrinksSoFar > cantDrinkAnyMoreThan() ) { std::cout << "I'm all done." << endl; }
}
int main (int argc, char * const argv[]) {
int beer = 5, coffee = 3;
Human fry;
Robot * bender;
for( int i=0; i<6283; i++ ) { bender.drink(beer); }
for( int i=0; i<100; i++ ) { fry.drink(coffee); }
std::cout << "Bender: " << bender->_numberOfDrinksSoFar << " Fry: " << fry._numberOfDrinksSoFar << std::endl;
fry.drink(1);
return 0;
}
Maybe Nokia just can't make good software?
Posted by Simon on April 28, 2010 at 04:20 PM
Categories: tech, theories, symbian, mobile, predictions, nokia
Nokia looks to be in serious trouble. They've delayed Symbian^3, which was supposed to be the sort or basic catch-up version of their main smartphone OS. Symbian^4 is supposed to be the move ahead again version and who knows when they'll release it. Meanwhile, Maemo or whatever they're calling it these days is more like vaporware even though theoretically it's out on a couple of devices.
Hey, you know what? Maybe Nokia just can't write good software.
Think about it ... when was the last great release of software from Nokia. The first version of Symbian S60. Which, if you remember your history, was actually written by PSION. Symbian has not improved in any major way since then. The first Symbian smart phones were epic—the Nokia 7650 was way ahead of its time in 2002 and make Nokia the smartphone kings. But after that they didn't seem to be able to put out a really substantial upgrade.
Big companies have a long history of not being able to complete operating system upgrades. Back in the late 80s early 90s Apple managed to fail to create a new OS not once but twice—Pink and Copland—were both epic failures of massive proportion. Making software is hard.
The question is, can Nokia learn how to do it. One option - which I have advocated in the past - is to simply ditch Symbian and get on to the Maemo train full stop. But it's not clear if Nokia has the guts to do something so drastic.
Well, they'd better grow some, because they haven't put out a competitive smartphone since the N95 three years ago. Their current offerings are jokes. Android, Blackberry and iPhone are way ahead of them. And, the investors are starting to figure it out. Hopefully Nokia's shareholders will beat them up until they take the drastic measure before it's too late.
Review of Resonance by Daniel Stepp (mac os x/windows)
Posted by Simon on April 25, 2010 at 09:51 PM
Categories: music, tech
Once upon a time while tripping across the 'net I stumbled upon a piece of software called Resonance. The web site is cryptic:
resonance includes a mathematically-precise binaural tone generator, capable of producing fifteen hundred unique binaural frequencies.
What is a binaural tone? Why would I want to listen to one? I downloaded it to find out.
The interface is equally mysterious, but fortunately it has some presets which immerse you into audio soundscape that defies clear description. Those binaural tones were pulsating, interacting stereo waves that gave me a tingly feeling, the kind of feeling that you get when you're learning something profound. Maybe some people would call it a spiritual feeling.
If you look up binaural tones, the great wiki has some descriptions of odd and perhaps unbelievable effects they can have on your body and brain. I don't know if I believe a word of it. But I do believe there is something odd happening when I listed to Resonance.
The author does because he created the program to help him concentrate:
I personally use it when I am programming or writing, basically whenever I need a lot of concentration. Others use it for relaxation, sleep aid, meditation, yoga, background noise...etc. [via email]
He also pointed out that for best effect you should use headphones with no other sound or music playing. Even though, Resonance does include a variety of natural sounds effects from the Earth Recordings library—which accounts for the large size.
This is definitely an odd program, but I have a feeling that it would be a great candidate for conversion to the iPhone, where I think it could gain a cult following.
Bottom line: if you're interested in audio phenomena or unusual interface design, check it out. Resonance.
An incomplete list.
Per:
- line of code: 1 point
- line of generated code: 5 points
- repeated line of code: 50 points
- repeated comment: 10 points
- TODO note: -10 points
- comment explaining hack: -10 points
- hack: 50 points
- clever hack: -50 points
- memory leak: 10 points
- ignored warning: 100-1000 points
- public but should be private: 100 points
- unreadable line of code: 50 points
- whitespace at the end of a line of code: 15 points
- a tab: 25 points
- incorrect indentation: 5 points
Compare: technical debt.
Job Opening: iPhone part-time / contract coder wanted -- we'll teach you
Posted by Simon on February 11, 2010 at 03:07 AM
Categories: code, business, iphone, jobs
My iPhone custom software development business is expanding and we need more part-time programmers. Our recent apps include Unitron's uHear to test your hearing, OurKids, an upcoming app for Kik, and others.
You must:
- know C, C++, pointers, object and object-relational patterns already
- be ready to learn the iPhone SDK fast (we'll help)
I've personally been programming on the Cocoa SDK since 1998 back when it was called OpenStep, so if you can pick things up, we can get you up to speed in a few weeks.
Demonstrate your qualifications by answering 2 out of these 3 tricky questions:
[Question 1] (C Pointers) Here is some slightly odd C code, but it will produce an (int) result, provided that you make some small changes in order to make it compile. What is the result going to be, and why?
int * a = 1990; int result = &5[a];
[Question 2] (ORM) Draw an relational/DB model that would work for the Twitter database or the Facebook database. You don't have to cover all of the features, just the basics. You can use ascii art if you like.
[Question 3] (C++ Objects) The C++ program below has just 2 compile time errors, 1 runtime error, and there is 1 single line missing. Send us a fixed version that compiles and runs correctly. The errors will test your knowledge of object use and management in C++, and the missing line will test you on abstract/virtual inheritance.
SEND TO: simon@semacode.com. Include your answer(s) and some source code that you have written, whether it's open source, for assignments, for fun, or whatever.
REMUNERATION: Competitive.
MORE INFO: http://simonwoodside.com/pages/consulting
(PS Please keep the answers to yourself)
//// File: futurama.cpp ////
#include <iostream>
class Drinker {
public: Drinker(); void drink( int potency ); int _numberOfDrinksSoFar;
private: virtual int cantDrinkAnyMoreThan() = 0;
}; Drinker::Drinker() { _numberOfDrinksSoFar = 0; }
class Robot : public Drinker { int cantDrinkAnyMoreThan() { return INT_MAX; } };
class Human : public Drinker {
};
void Drinker::drink( int potency ) {
_numberOfDrinksSoFar += potency;
if( _numberOfDrinksSoFar > cantDrinkAnyMoreThan() ) { std::cout << "I'm all done." << endl; }
}
int main (int argc, char * const argv[]) {
int beer = 5, coffee = 3;
Human fry;
Robot * bender;
for( int i=0; i<6283; i++ ) { bender.drink(beer); }
for( int i=0; i<100; i++ ) { fry.drink(coffee); }
std::cout << "Bender: " << bender->_numberOfDrinksSoFar << " Fry: " << fry._numberOfDrinksSoFar << std::endl;
fry.drink(1);
return 0;
}(Update Feb 14: updated code to make my intentions clearer)
It's getting harder to tell. Be sure to watch it in fullscreen:
The Third & The Seventh from Alex Roman on Vimeo.
Not only that but Alex Roman did a fantastic job on this. The Third & the Seventh homepage. Thanks to Tinselman.
Previous related entry: Fake or Real?
14 Errors in anti-Light Rail thinking
Posted by Simon on February 01, 2010 at 09:46 PM
Categories: (none)
I'm part of a group called Hamilton Light Rail which has been pushing for the development of a european-style light rail (aka Tram) in Hamilton. Recently the Hamilton newspaper The Spectator published an anti-LRT rant by a businessman who owns, among other things, a car wash. His opinion piece is so full of factual errors that I couldn't resist making a list. I actually found 14 factual errors (that is errors that require no argument, simply a correction of information from easy to access sources). So, without further adieu (sic) here it is:
- Chicago does not have a light rail. (It does have a heavy / commuter rail system. There was an LRT proposal in Chicago which was cancelled at an early stage.)
- Detroit does not have a light rail. (There is discussion underway to develop one.) (It does have a medium/heavy rail rapid transit line which loops overhead, running the same system as Scarborough RT.)
- Hamilton employment in 2008 was 362,000. I don't know how much of that is downtown.
- The LRT project in Hamilton began moving in 2007, whereas issues related to the Pan Am games did not arise until 2009. Metrolinx plans, and LRT in Hamilton in particular, were already firmly developed, including routes and support statements from different government levels, before the Pan Am games began to influence planning.
- The 2007 Pan Am Games in Rio attracted in the range of a billion viewers, so it's difficult to assert that people haven't watched it.
- When you drive to downtown and park you face the same issues of finding a parking location as you do if you drive to an LRT terminal.
- The US Department of Energy projects that gasoline prices could double in the next decade (AEO2009).
- Downtown will not be closed off. One recent proposal suggests a pedestrian zone for one block (TODO I can't find the source) of King Street.
- Downtown parking garages will still be accessible by cars either from the reduced lanes, or in the case of a pedestrian zone, from the opposite street. For example, Denningers (outdoor) parking lot is accessible from both King and Main.
- Statements regarding access to business assume that shoppers drive to a parking lot in front of their target business, make a purchase, get in their car and drive to the next business. In fact today even with our current car centric model that is not the case in downtown Hamilton. Many shoppers drive to the vicinity of the business, park, and then visit multiple stops on foot.
- LRT plans do not include removing sidewalks. Pedestrian areas would increase.
- Parking provisions should naturally be different in areas with different densities of population and business, including differences between the mountain and downtown.
- An overhead railway proposal for Hamilton in the early 80s was roundly and appropriately dismissed due to the effect it would have on the street environment. The few overhead railways that have been built worldwide do not share the success of on-street LRT. Manhattan recently converted its defunct Elevated railway platforms into garden parks.
- LRT does not require 20 metres width. Each direction requires the width of one standard lane of traffic, which is 11-12 feet wide (3.5 metres).
Mucho thanks to The Cartoonist for discovering this lovely Steampunk film "Reise Zum Mars" (journey to mars, in german). Made by german film student Sebastian Binder, along with Fabien Grodde and Alexander Schumann, it's a short film based on a draft screenplay by Walter Dexel, an early 20th Century Constructivist. But don't worry, it's just music and action, so there's no need to know any german to watch it. And what's more, the lyrics to the song are in english anyway.
And you can watch it at their cool web site, which also has some interesting making-of videos.
Unfortunately they only show the video at the original size. So, if you want to watch it full screen, here is a direct download link that I hacked out of their SWF file: Reise Zum Mars direct FLV download (106MB).
Overall I have only two criticisms: one, that it needs an increase in brightness, it's quite difficult to make out what's happening. This is a simple post-production blunder. Second, the music is a little heavy. On the other hand, the silent-movie farce kind of atmosphere/acting works well.
I love steampunk, and I love this film.
Full lyrics to Yazoo (Yaz) song "I Before E Except After C"
Posted by Simon on January 13, 2010 at 06:14 PM
Categories: music
The full lyrics for this great Yazoo song are not to be found on the entire internet. I did some fun audio processing to extract all the different voices... some of the words are a bit tricky.
There would, stop because there will always be, because there will always be, for two there will always inside, you can feel the outside, you can see the difference inside, stop, inside, difference outside, out stop, inside, you can feel the difference feel the you can difference, difference, difference you can see the, feel the difference you can stop, stop, and see the, you can stop, you can see the difference Dragons, the policeman knew, were supposed to breathe, to breath fire, fire, to breathe fire and occasionally get themselves, get themselves slaughtered, slaughtered, slaughtered he decided. That would definitely not he decided stop, stop definitely not stop, stop not definitely That would that would that would stop definitely decided decided decided decided not not stop he decided (repeat) [old woman 1] the basis of the all important process involved in the mixing, and regeneration, of a person's voice incapable of any distinction, between frequency response is such that the entire output, is revealed in the voice is the actual voice itself, and the voice being used is the voice being used, is the voice being used used voice being used being used voice being voice (repeat) [young woman, with laughter] this type of formation can only be explained when two or more separate units are linked together thus forming a string only detectable through specially designed equipment or at least that's what I thought stop. is that enough? (repeat) [old woman 2] despite the pure outlook which have been forced upon me stop stop upon me force the tools available I decided to use the tools available mainly because the function of the stop the stop available being used demanded an experience which I did not fully understand (repeat) Yes, I'm all right [laughter]
The only word I'm not 100% sure about is "pure" for old woman 2. Aside from that it's solid.
Is the man Vince Clarke? Is the young laughing woman Alison Moyet?
What I want to know is, where did they get the text these people are reading? Did they make it up? None of it seems to search in google.