Programming and general geekiness.

Posts tagged ‘os’

The MacBook is dead, long live the MacBook Air

Apple is honestly the most incredible company in existence. The only thing that has really gone wrong for them in the last few years is Ping – everything else has been a success. And they’ve just done something to change it all again: the new Macs. The first major release was one that we already knew about: Mac OS X Lion. This is nothing new and I’ve certainly blogged loads about it. But we had some more surprises instead: a new Mac Mini, new MacBook Airs and a new ThunderBolt display (basically a slightly updated version of the old, but still stunning – if not expensive, Cinema Displays).

The new Mac Mini looks pretty similar to the old one, but this one is clearly going to be a big upgrade, and I wouldn’t blame anyone for buying one – they’re expensive but they are incredibly good, and fast. According to the Apple website the graphics and CPU are about twice as fast (but there is some complicated reasoning behind this, so for the majority of people this probably isn’t true). It appears to be smaller, but it looks great.

Then there is the new MacBook Air, again this looks very similar to the last, though there is not as great a speed improvement, it is more just Apple making sure all the Macs support ThunderBolt technology properly. Having said that, it is a MacBook Air with Lion, which is cool. But there is a very, very big change. This MacBook Air hasn’t just killed the old model; it appears to have killed the legendary MacBook. Those beautiful white (and black, I hear you cry) creations that were there to replace the ancient iBooks. Sadly, this is the end for the classic MacBook.

Windows 8: It’s official

Yesterday Microsoft put out a video on their blog of what Windows 8 is going to be like. I haven’t actually found the original video yet, however Lifehacker have a copy of it here. The interface isn’t really anything of what the world expected, I had certainly been talking of a very standard Windows UI, maybe just Windows 7 tidied up a bit, but Windows 8 is completely different. To be fair, it is very much as if Windows got together with Windows Phone and decided to make some sort of strange hybrid Operating System.

The interface is based around tiles, which are quite cool, and are all run by HTML5 and JavaScript. Yay for destroying the normal Windows code-base of C++ and .Net Microsoft! The interface is completely changed round and looks as if it can only really be run on one kind of computer: a tablet. I wouldn’t want the ‘Mango’ style UI on my desktop purely because I’m happy with a mouse and keyboard, and I’m not going to go and buy a touchscreen just so I can use the shiny new features.

Of course, there is a great deal of potential with all this and some of in the interface magic they’ve created and there is no denying that it won’t give iOS a run for its money, but there is a reason Windows has been successful: its standard, reliable and everything is in the ‘right’ place – a ‘right’ place that has been established for twenty years now. If Microsoft is now giving us the option to have everything in the wrong place it will confuse and put off people – not what they want or need.

The minute I get Windows 8 I will probably play with the new interface briefly before turning it off forever: I want a desktop Operating System on my desktop PC, not a tablet Operating System.

Approaches for building a simple operating system

If you are reading this post odds are that you know a little (minimum) about coding. Your normal programs might be desktop applications that can do interesting, useful and entertaining things, perhaps based on complex complex algorithms, database and the intelligent person’s common sense. It is fun (or at least I think it is fun) to code programs that are useful to people – though generally myself – that make other people’s lives easier. If you can make other people’s live easier, you can make your own more interesting.

Eventually, however, being able to code desktop applications becomes a little dull because you aren’t learning anything new. You are still using the same fundamental coding principles that you’ve known for the last five years, however you are simply learning to use them in different and more efficient ways. At some point you will decide to learn a new language, perhaps on a different system. An interesting challenge might be to code a (simple) operating system.

Coding an OS is very interesting idea, because it gives you complete freedom over the computer, however there is no doubt about it that it is a complicated challenge. It requires extensive knowledge of how computers run, and knowledge of complex languages, such as Assembly. However, there are alternative approaches.

Approach 1: Learn Assembly

This approach is one method that could be used, though probably isn’t suited for beginners. The problem is that the language is very complex, and incredibly low-level to the degree that you can’t even debug it to get an idea where you went wrong. Learning Assembly also requires you to be good at either higher-level programming languages such as C or C++ so you can build more complex applications for your OS.

Approach 2: Modify a Linux Distribution

This is technically not an approach for building an OS from scratch, h0wever it is a nice way of creating your own custom OS. It could involve downloading the source code for a small Linux Distro, like Puppy Linux, making changes and then re-compiling. Or alternatively you could choose to bundle different applications and create your own start-up disk.

Approach 3: COSMOS

COSMOS (www.gocosmos.org) is an interesting project that allows you to compile Operating Systems from Visual C#. I have used it in the past when it was less mature, however now you can create (simple) GUIs relatively easily. It is a free download, and I should imagine that it isn’t too difficult to pick up. Another advantage is that it can compile into various Virtualization programs as well as ISOs.

At some point later this year I am going to code ThomasOS, and it will probably be based on COSMOS, though with some effort I’ll move it to Assembly. It will be built in parts:

  • Core OS
  • ThomasScript (interpreter for programs)
  • Application manager/renderer

I will code ThomasScript and the Render app on Windows first to get the code sorted, and then port it onto ThomasOS later this year. So watch this space…

Chrome Netbooks

I am quite excited about the release of the first Chrome netbooks, because I think that there is a chance that they are going to big. If Google can hit the right formula and get the web apps right, then they will be big. If they don’t, it will be the netbook revolution all over again.

When netbooks were first released last decade everyone flooded towards them because they thought they were a cool and cheap way of getting a small laptop that they would just use whilst traveling for light browsing and e-mail, and that is what the manufacturers thought too, the only problem is that the public opinion started to change. These netbooks were unfamiliar, they came with dodgy, unknown Linux operating systems that few people understand, and people had a reluctance to use what were, at  the time, quite new web apps that weren’t as good as what people were used to, say Microsoft Word. So the netbook companies made more powerful netbooks with more space that could run things like OpenOffice.org.

Eventually Microsoft began to retail out XP on netbooks, and these gradually became more successful and soon they were even putting Windows 7 on them, but that was limited because it was just Windows 7 Starter, and people didn’t like that too much either.

I think that Google is making a risk with Chrome OS, because eventually people will want more from their netbooks, and at that point Microsoft will come back. What with? Windows 8 Cloud.

Follow

Get every new post delivered to your Inbox.