Archive for May, 2009

Beware of Google.

Saturday, May 30th, 2009

gooburnsGoogle is, actually, one of my top three disliked companies. The other two are Microsoft and Adobe. Why I dislike Microsoft and Adobe is a post for another day, but today I would like to talk about Google. Believe it or not, I will explain this without ONCE saying any personal bad experiences with Google’s services.

Google has recently unveiled at a developer preview their new product “Google Wave”. If you have not yet read about this, or watched the introduction video available on their webpage, I suggest you click here to go there now, and watch it.

If you have heard of it, and if you’ve watched the demo, you will be amazed. Not only have Google come up with a killer product, they’re going to open-source it, and developers will have access to the most amazing resources to produce the most amazing web applications possible. If you’re still reading and you haven’t watched the video, please go watch the video first.

Right – so the question is, why, especially if it’s open-sourced, are you against Google?

Try to look at it from this perspective. At this moment, we have three main operating systems, Linux, Mac and Windows, each with desktop applications built to cater for the underlying system. You might prefer one more than the other, and thus the more popular ones get more applications built, developers move to develop on the platform, and when the developers move, most users don’t realise this, but it’s where the developers like to go that determines what will progress and ultimately be used by you regular folks.

Right. So it’s a bit stupid to have a lot of competing technologies, and it’s obviously better to have one uniform system that just works ™ for all. That’s why we start to depreciate older technologies, merge together technologies, define standards, etc to make desktop systems more integrated, etc. This is well seen in stuff like KDE, GNOME, etc.

However, Google’s seen something a lot of others have been blinded about. The web is the only cross-platform, standardised system that exists. So whilst Microsoft, Linux and Apple go and fight their differences, Google, armed with its existing monopoly in the search engine system (yeah, indexes the internet, nice one) decides to take over the internet.

Here’s where you roll your eyes. But I’m not joking. Allow me to explain.

Since nobody can actually own the internet, Google has managed to think up another way of doing it. The plan starts with creating a lot of “uncanny” web applications. The uncanny valley was a concept used to describe the point at which one’s appreciation of technology due to its advancement changed to disgust because the technology became too “humanoid”. Eg: a humanoid robot only gets so awesome until it starts look identical to you, and better too, and with a hidden flamethrower. When used in the context of web apps, this is where the website’s interface mimics that of a desktop application. Like, for example: Google Docs.

This impresses a lot of users really quickly, as it allows them to do what was only previously possible if the software was installed on the system instead anywhere around the world with an internet connection and with a decent browser.

…and then Google starts releasing web APIs and toolkits to allow developers to take advantages of the systems it has created. This sounds really good, until you think about what else Google is doing.

Google releases their web browser, Google Chrome. Google Chrome is a breakthrough in certain technologies, allowing separate processes per tab, and support for some seriously cool javascript, ajax, whatever. Google’s aim in Chrome is “to show what the web is capable of”, pushing the limits, etc. With this browser, users can experience the best in uncanny websites, hence all functionality of your average desktop application can now, actually be done right in your browser. Again, Google Docs is a perfect example of this. Don’t believe me? Why don’t you try Photoshop in your browser, right now.

Once Google has a place in the browser market, they have every right to start sticking in their own ideas into the new HTML 5 standards. Now Google has their arsenal to define exactly what the browser is capable of. Together with their existing web toolkits and demos on the amazing stuff that is capable, who wouldn’t be happy to oblige?

Well, nobody. Google has made it so easy for the average person to access all of these great features. Even though Google Sites is a complete joke for web developers, for Joe down the street who can’t spell out HTML to save his life, Google Sites is amazing.

So people start switching. Because the technology behind it, too, is so impressive, developers start switching. In the end, what we now have is in effect “an operating system right in your browser“. Or as one person in IRC put it, another layer to depreciate the coding layers below it. Soon we will not need desktop applications any more, and everything will be done on the web. (of course there are also technical implications about this, like what will happen to the rest of the programming languages)

No, the web is still just through one browser you say, it’s not at all useful like that.

Actually, what about Chrome running as separate processes? What’s the difference between that and different applications? All that means is that instead of running KMail, your notetaking application, Pidgin, IRC client, OpenOffice and feed reader, now you’ll be running 6 or 7 Chrome separated tabs (so they’re just like individual applications) connected to GMail, Google Notepad, GTalk, Google Docs and Google Reader. In fact, you can have *deep breath*

google_evilGMail, Google Notepad, Google Calendar, Google Docs, Google Talk, Google Reader, Google Contacts, Google Desktop, Google Gears, Google Maps, Google Earth, Google Sites, Google Books, Google Translate, Google Scholar, Google Medical Records, Google Directory, Google Groups, iGoogle, Google Adsense, Google Streetview, Google Sync, Google Android, Google Youtube, Google Analytics, Google 23andme, Google Lively, Google Dictionary, Google Voice, Google Feedburner, Google Chrome, Google Chrome OS, Google Public DNS, Google Go, Google Shopping, Google Checkout, Google Apps, Google News, Google Video, Google Blogspot, Google Finance, Google Sketchup, Google Orkut, Google Trends, Google Code, Google Picasa … and now Google Wave.

Every single thing to replace every single desktop application you’ll ever need save for some development tools. I swear I could actually live a year with only using Google Products.

So once people try to compete with the huge massive framework Google has created for itself, the only way to create competitive products is to either rebuild your own framework (which is likely to be extremely time consuming and impractical) or …. Use Google Toolkit and Google API and Google Code.

So even though Google doesn’t own the web, Google has taken over the web. It doesn’t matter if it’s open-sourced, if you have to use Google Toolkit to make anything decent, that’s “Google is here to define what can be done” for you. The ultimate czar of the Internet.

Welcome to the future, where nobody knows what “desktop application” means.

Edited Dec 09 to add 8 more Google products to the list.

Lang-8: Learning languages the fun (and free) way.

Wednesday, May 27th, 2009

logo_loggedinPeople that have known me for a while know three things. Firstly, they know me (well, duh). Secondly, they know that I know Chinese. Thirdly, they know that I just lied, I know how to pretend I know Chinese – actually I suck pretty darn bad at it. In fact, I suck at the whole pretending business too.

So the other day, I came across the original Chinese hacker dude who created the Shellex-overlay for running Chromium on Gentoo Linux. Unfortunately the blog post was in Chinese. I immediately enrolled myself in a chinese tuition class an-

No, I fired up Google translate and stole my brother’s Chinese girlfriend to properly translate sections that apparently read “building know not updated porridge“.

Well, I don’t really like languages. Not that I don’t think they’re really useful and stuff, I just don’t like them because 1) they suck, and 2) I suck at them. The reasoning I like to use for “they suck” is the theory behind natural languages, then moving on to mathematics and programming languages and showing how “look. 1=1 is 1=1″. However like a friend of mine, one of my pet peeves is people “who wan talk talk leik vely good you know wan liao!“. (a representative sample of the local accent and style of speaking here. (see Wikipedia entry on Manglish – it’s friggin’ made up of English, Malay, Hokkien, Cantonese, Tamil – oh and you’d find “g’day mate” popping up once in a blue moon) – yeah, so I can’t exactly say being decent at a language is unimportant.

In fact language is really important. Especially when maintaining professionalism. You can’t argue – having good language skills are vital for…communicating well? Wow, that sounded bad.

…and for that reason when some Taiwanese guy lurking in the #gentoo-chat channel (sinsun) introduced me to the website Lang-8, I signed up. It’s a website where you can write journal entries (like a mini-blog) in another language, and other users who are native speakers of that language can come along and insult you.

So you know right away, I go allleady what lah and start correct the crap crap english udder people is writing wan.

No. I actually did start jocking up whatever was left of my 汉语 knowledge and now I’m learning that I sucked even worse than I thought I did. Well, it’s still an amazing website, and I’ve not seen one like it before. I would highly recommend it to anybody thinking to brush up on a foreign language. The correction system is pretty nifty (like crossing out stuff and highlighting) and it has one hell of an active community – you’d get responses literally minutes after you post it.

Feel free to add me as a friend, especially if you’re good at Chinese and can teach me how to say “Git repository” in Mandarin. My username there is “Moult”.

Note: I actually really do think having good knowledge of a language is very useful – up to the point where you start thinking “Here is a piece of paper” is some sort of symbolic metaphorical imagery for racism.

Achieving what?

Sunday, May 24th, 2009

I recently watched a video linked by a person called Florentyna Leow on Twitter (@heroin_e). I suggest you click the link and watch it yourself. It concerns how we’re “educating” ourselves out of creativity, and all just due to what we believe is important around us in this world.

I’ve sat through quite a good deal of talks on similar subjects, and I would like to say that yes, it is true. The people who give these talks certainly know what they’re talking about and feel a certain way about their topics. I too have some topics I feel strongly about, and now is my chance to voice my opinion on one of them.

There are several main flaws I find that consistently pop up with every single one of these speakers.

They don’t know what they are trying to achieve.

It’s very easy to say it’ll lead to something “better” and “brighter”, but why it is “better” and how “bright” it should be is certainly hardly touched upon. These are ignorantly shoved to Religion, whereeverybody believes differently and yet follow the same goals. Not one of them has been able to say exactly “what we want” – and then actually prove it.

I’m not saying that this is the form of a mathematical equation or something that can be parsed easily. I’m not even saying it can be communicated easily in any language. What I am saying is that what is a much more pressing issue is to 1) precisely identify a goal, and 2) ensure uniformity between our goals. In doing this, this brings me to point 2:

There is no practicality in their suggestions, or lack of them.

Again, it’s very easy to identify a problem. It’s also easy to communicate the problem to a (limited) audience. What the speakers don’t say is how to fix the problem, and if they do, they rarely consider how realistic and practical their approach is. This is because our minds are driven towards finding faults. We are exceptionally skilled at identifying faults in great detail. We then think we are clever and able to remove the fault, but instead all we are doing is hiding it. We’ve succeeded in hiding it so well that now we don’t even know what the root problem is.

In fact, look at what I’m doing now. I’m finding fault.

…continuing rather hypocritically:

Smart people don’t save us.

Too much faith is put into intelligence. This one does not appear as consistently through what I’ve heard, but it is an important point nonetheless. The majority of people in the world are stupid. This is a fact. It might sound arrogant but here I am simply stating it bluntly. Addressing such large-scale a problem as many of these speakers do must concern everybody in the world. This includes communicating the problem, communicating the solution, and carrying out the solution. In order for this to be done effectively, it isn’t how intelligent someone is that determines their effectiveness, it’s how wise they are. Wisdom is one of those funny words that cannot be defined precisely, and that’s why it is shunned when it comes to apparently “intellectual” problems. It is time to embrace wisdom, to actually understand the broad and bigger picture, and only then can something actually worth talking about be done.

What did this post achieve? Hardly anything. It’s a post made on a personal blog.

(Note: I apologise if this post sounded critical, a blog post isn’t the most effective medium for this topic hence why I write extremely rarely about it – oh, and if you enjoyed the first video, here’s another one you might like)

rtm – a Command Line Tool for RememberTheMilk

Saturday, May 23rd, 2009

2009-05-23-154648_1280x800_scrotBefore I begin my post, I’d like to apologise to all the Planet Larry readers for the 10 hours or so of downtime I caused sometime yesterday. I don’t always break things, and that borkage was, well – quite unintended. For the technically inclined, basically I had set some .htaccess restrictions on another domain which I forgot I was hotlinking files to. This carried over the .htaccess restrictions and as my blog was aggregated, this somehow carried over there too.

OK, back to what’s new and amazing. Some days ago I wrote an article on RememberTheMilk, a really awesome to-do list website (I have 60+ and counting tasks listed over there now!). However a main issue with it is that even though it’s extremely accessible through lots of mediums (phone, email, twitter, plasmoids, etc) – they are all graphical! We’re missing a command line interface for it!

Well, not quite so. With some Google-fu I found some French guy with a fetish for white rabbits (no, seriously this time I’m friggin’ sure he’s french) who made a command line tool. It’s not much more than a script, but that doesn’t stop me from me from putting it in the sunrise Portage overlay so Gentooer’s can get it! Actually, what did stop me was the fact that 1) I didn’t know how to write ebuilds, 2) I didn’t have an account to commit ebuilds to the sunrise-overlay, and 3) I didn’t have a GPG key (for part 2).

So, a while later learning about ebuild writing, getting a key and a commit-able account, babysat ever so generously by hwoarang and idl0r for the ebuild part and scarabeus for the key and account, I have today commited two ebuilds to the sunrise overlay (layman -a sunrise). The first is app-misc/rtm, which is the tool itself, and the second is dev-perl/WebService-RTMAgent, which is a Perl module (dependency for rtm). I’m not sure when it’ll get into the publicly approved sunrise overlay, but it’s definitely there in the developer checkout (Unless I borked up the commit).

So, install it, try it out on your architectures (I’m only ~amd64 dont’ forget), and enjoy! Hopefully this’ll mark the start of more Gentoo contribution. Or it will if I don’t get distracted and play this game about white rabbits. – or maybe this one, which is more related to rabbits – in more ways than one.

What the hell do rabbits and ebuilds have in common? :P Stupid French guy.

Setting up SSH to work whilst at college.

Thursday, May 21st, 2009

Well, if you’re out and about quite a bit and you run a Linux computer at home, you should have a good relationship with SSH. If you’ve never felt the need to access your home computer remotely, this is what you should do.

For those that don’t know what SSH is, it is basically a network protocol (for example like FTP, SMTP, etc) that allows you to securely connect to another computer. For those that don’t speak jargon, it is some cool thing that allows me to use my computer remotely.

One of my well-visited locations is my college. I wonder why :P … and like most places, it runs Windows. Using a Windows computer leaves me feeling crippled and with a sense of repulsion at the most innocent of small creatures. Combined with my college’s restrictions, there is a lot of stuff I can’t do. For example, I can’t download a .doc file. Also, it is quite troublesome to constantly transfer files over with a memory stick, so I decided to set up SSH.

Little did I know how pathetically paranoid the IT technicians were.

Problem 1: setting up SSH and connecting to my dynamic IP.

The first step was to install (emerge openssh) and set up SSH. (I run Gentoo- the steps will be different for your distribution or if you are running Windows – say, you can set up SSH on Windows, can’t you?) This was simple. Now the problem here is that my IP keeps on changing. Especially because my ISP’s connection is quite volatile, my IP is dynamic and resets several times a day. The method to solve this was to set up a dynamic dns, available from dyndns.org. This is a free service, and allows me to connect to a sane domain name whilst a client running on my machine updates it regularly on the latest IP.

Problem 2: port 22 is blocked.

The next day I popped PuTTY on a thumb drive and tested it out – or at least tried to. I had a network connection refused error. Later that night I learned that most public networks blocked certain ports, for example port 22 which SSH normally uses.

The fix around this was to change the config in /etc/ssh/sshd_config to use Port 443. You see, whilst http:// defaults to port 80, https:// URLs default to port 443 – and are hence rarely blocked. Et Voila – you can now connect! However, I also run an Apache webserver. This clashes as it also tries to use port 443. As I don’t care to serve SSL webpages on my localhost, I decided it was a decent sacrifice, and I removed Apache’s HTTPS support by removing `-D SSL -D SSL_DEFAULT_VHOST` from /etc/conf.d/apache2. Tada. I can now access SSH at my college.

Problem 3: What about SCP? Surely you’d want to copy files over.

Well, transferring files over is another issue. It’s all good with your vast array of Command-Line-Interface applications for IRC, Vim text editing, file browsing, MSN, email, calendar and PIM, etc – but every so often you will have the need to transfer a file over. Sending yourself an email with a file doesn’t help, as my college blocks almost every single website out there aside from Google.com (note: Gmail is not Google.com – so it is blocked too). At the same time, it also blocks downloading every single file type aside from image files. The quick fix for this was to put the file on my Apache localhost, change the file extension to a .jpg or something then download it from there.

But no. Two problems occured. 1) My website was blocked – haha, and 2) the IT technicians filter it not by extension, but by actual file contents. To get past the website block, I run a proxy script on my webserver (there are plenty of free proxies out there too) to access my webserver. But then of course I’m stuck with the file filter. So looks as though it’s game over.

Not really, there’s always SCP. I couldn’t send files using my computer as I didn’t know the network information of my college network. So I decided to SCP using the college’s Windows computer. I hear there’s a program known as WinSCP which is pretty nifty, but at the time I only had PuTTY’s collection of tools and thus PSCP.EXE – which pretty much did the same thing – with one catch: it’s a CLI application. You see, they’ve also blocked the command prompt. OK – for understandable reasons.

To get myself a command prompt, I did the age old innocent command.com trick. This involves creating a plain text file (eg: .txt), putting the words `command.com` in it, and then saving it as cmd.bat. (Notice the changed file extension). This will give you a prompt to work with. Now – using that to run PSCP.EXE, I succesfully transferred my target file over – which was in this case a .doc file, which contained some homework.

What about the ethics of this?

Well. I personally feel as though these workarounds are anything but a way for me to do my work conveniently. The computer system is riddled enough with viruses as it is without my doing, and I doubt anybody will be motivated enough to have such a complicated setup unless they were either particularly vicious or needed a file really urgently (such as me at the time). But seriously – a learning centre blocking .doc files?

If you have more experience in networks than me and feel as though this article is innappropriate, feel free to contact me and I’ll willingly take it down.

How to install Chromium (Google Chome) on Gentoo Linux

Tuesday, May 19th, 2009

Update: As of 27th August the buildbot now provides 64-bit builds. Thanks Jeff :)

The other day I was surfing the web and read an article about Google Chrome in some sort of hacking competition – this then prompted me to check out Google’s progress on porting Google Chrome to Linux and Mac. For those that don’t know Google Chrome is Google’s attempt at making a browser. So far it seems like a really good attempt.

It seems as though lately the Linux builds (I ignored the Mac stuff – but I hear it’s getting good too) seem to be getting to a usable state. Definitely not finished, definitely buggy, but usable. So, like any other Gentooer, I began trying to find out how to get it.

Step 1) Any ebuilds out there?

Why bother do hard work myself if somebody’s already put it in portage? With some google-fu it seems as though there are a couple ebuilds. One by the French, and another by the Chinese. The French one (have not tested) is available in the `THE` overlay, available by doing layman -a THE. The chinese one seems to be called “Shellex-overlay”, and can be accessed here. I’m not quite sure what the French one does as the ebuild didn’t really like my amd64 system (note: Google Chrome only supports 32-bit as of writing). However the Chinese one fared better and provided me with a binary. If you are on a 32-bit system (x86) you should try those ebuilds.

If you don’t want to compile from source, check the depencies list just a bit further down, then check out the build bot. Note: the build bot provides binaries for Windows, Linux AND Mac, so if you’re on a Mac, you’re in luck!

For more information, you should visit the Chromium Linux Building page.

Under `Prerequisites`, it lists down the dependencies as packaged by the Ubuntu system. Here is the list of dependencies as what Gentoo calls them:

  • Python >= 2.4
  • Perl >= 5.x
  • gcc >= 4.2
  • bison >= 2.3
  • flex >= 2.5.34
  • gperf >= 3.0.3
  • pkgconfig >= 0.20
  • nss >= 3.12
  • gconf
  • glib
  • gtk-engines-murrine
  • nspr
  • corefonts
  • freetype
  • cairo
  • dbus

Their version requirements are listed as needed.

Step 2) What about 64-bit systems?

There are several techniques of getting Chromium on a 64-bit system. However no matter what, I highly recommend that you create a 32-bit chroot. If you want to track each library individually and symlink your system to hell (as I first attempted), be my guest, but you’re wasting your time. So, first create a chroot by following this nifty guide.

Once you’ve got your chroot up, you can either try out the ebuilds I mentioned before, compile it yourself from source (via Google’s instructions) or be lazy and grab the binary from the Chromium build bot. I have tested the latter two techniques (can’t trust the French nor the Chinese!). To compile it yourself from source, follow the Chromium Linux Building page. Note: you will require quite a bit of HD space (the sources tarball itself is 640MB+), I also suggest you bootstrap from the tarball, the subversion checkout seems a lot longer and a waste of time really. Finally, if you’re just interested in getting the binary and running Chrome (not development), I would do use Release mode (see the building page for instructions). Of course, after making sure you have the dependencies I listed above, you should have Chrome compiled!

If you’re lazy and don’t want to compile, there is a build bot.

Step 3) Run Chromium on Linux!

At this stage, you should have the Chrome binary (either by compiling from source or ebuild, or getting the build bot binary). Now you just have to run the program and enjoy. If you’re running using the chroot, you should use the xhost hack. Do xhost local:localhost outside the chroot, then try run the binary again. Obviously you don’t want to waste time setting up X in the chroot.

Finally, here is a screenshot of Chromium running on Fluxbox! (I normally use KDE, but I wanted a more lightweight WM when compiling Chromium) You might also consider doing nice -n 10 when compiling if you want to continue doing your stuff. In fact, I’m running Chrome right now on KDE to write this post. It’s very fast, uses about 1% CPU, separates itself into different processes per tab, and so far seems pretty “stable”. However I have found that opening a file browse dialog (eg: in an upload form) makes Chromium jump up to about 50% CPU, which sucks.


Any thanks, issues or problems feel free to ask.

Remember The Milk: A Great Online To-do List Service

Sunday, May 17th, 2009

2009-05-14-203431_1280x800_scrotRemember the milk? What an awesome name for my newly discovered service. Just yesterday I was poking around the my newly installed KDE 4.3beta (4.2.85) and I came across the “Remember The Milk” plasmoid hiding in the kdeplasma-addons package in the kde-testing overlay. That was the beginning of about 2 hours or so spent discovering more about Remember The Milk.

Wait, what actually IS Remember The Milk?

It’s a todo list website. You can create categories, and put tasks in them. You can also prioritise tasks from High, Medium and Low. Tasks can also have due dates, and be recurring.

But What’s so amazing about it?

Well, I am no stranger to to-do applications. I have used the Windows Mobile 6’s todo on my phone to quickly note stuff down, I have used KTodo (and despised it), I’ve used devtodo (highly recommended CLI todo list), I’ve used stand-alone plaintext files for todo lists, post-it notes, calcurse (CLI ncurses-based calendar + todo app)…well, a lot of to-do things. Over time here are the things I’ve decided that make a to-do service useful:

  • You make an effort to use it yourself. You don’t use it, it’s not useful.
  • Priority system, but not a bloody /10 rating for each task.
  • Due date system.
  • Fast and accessible.
  • Simple and intuitive interface.

Here’s what makes Remember The Milk great. For a priority, you have a choice of 3: high, medium, low. I think that’s the best combination. It’s awesomely accessible, giving the flexibility of access-the-website-anywhere with a KDE plasmoid to quickly access it on my desktop. It’s fast – it sports an uncanny interface (‘uncanny’ used in the technical sense of the word) with plenty of what looks like jquery usability tweaks (if it’s not jquery, so sue me).

Oh, and the greatest thing is how intuitive and simple it is to use. I can type in “Visit X for dinner tomorrow“, and it’ll parse the “tomorrow” and put it as a due date accordingly. Same with “Mechanics exam on monday“. It’s all automated.  Even cooler is the recurring function, I can do “blog post every two days“, and it’ll work it all out for me. The categorising feature allows me to group it easily in the projects I’m involved with.

It also has the amazing feature of sharing todo lists and publishing them publicly/privately. This allows me to set up a collaborative todo list for a mini-project or such – allowing me to communicate development easily to the public and letting them use it as a wishlist! I can also send/receive todos from other users. I swear, if I were leading any sort of team in a business, I would make it compulsory for them to use this – it’s great for collaboration!

Well, that’s my two cents, and I suggest you check out RememberTheMilk!

The Blender Model Repository and BlenderNation: open-source merger?

Friday, May 15th, 2009

2009-05-15-005937_1280x800_scrotAs some might know, Blender is an open-source 3D content creation application – it’s cross-platform, a pioneer in the free 3D application market, and I use it. Not only do I use it, love it, and hang out in the #blenderchat IRC channel on freenode, I host the Blender Model Repository, taking over from Andrew Kator long time ago when he suffered legal issues. It’s been running stable for the past year or so, every so often getting new model submissions, and users finding it a useful resource.

Even if you know nothing about Blender, help me in this open-source dilemma, please read on.

Recently, Bart Veldhuizen over from BlenderNation.com started beta-testing for a new resource sharing system known as BlenderNation Links. BlenderNation, for those that don’t know, is the central news website for all things Blender related. It’s the central hub that Blender development and community news goes through – outside the official blender.org website, which is a bit more boring and just says “hey guys, new version” – as do most official websites. (Just joking!)

I was recently pleased to be given the opportunity to beta-test the new system. Well, this new BN Links categorises things as “individual” items – a model repository, as one might expect is not just one individual item, but instead a whole other resource system. The thing I’m wondering about is “how do I make the repository’s resources just as accessible through the BN Links system?“.

A while back I wrote the second part of my open-source analysis article, called “The Open-Source Market – Limitless and Forever Expanding?” (click it to read the article – it might interest you) One of the conclusions I came up with there was that in the short term, open-source should have plenty of choice and competition, but in the long-term, it must realise the synergy is what is needed to ensure its survival and continued growth. This is a perfect example of this concept in real life. There are two resource sites, one obviously much larger and more popular than the other, originally offering slightly different things. BlenderNation focuses on news, and has a small tutorials/resources section, whereas the BMR (Blender Model Repository) focuses on…hosting models and tutorials. Now BlenderNation wants to increase its focus on tutorials and resources, thus duplicating the BMR’s function somewhat. Is this, perhaps, the time to synergise?

Firstly, let’s get the facts down:

  • BlenderNation is much more popular and well known than the BMR. It also has a cooler name.
  • The BMR is a hub for models. I have no legal right to give all my models/let them be published on BN Links.
  • Competition is good, but function replication is not.
  • I do have the legal right to “link” to each individual model, but such manual addition is tiresome, and will have to be constantly updated as new models come in.
  • The BMR does have a built-up reputation for those that know it. It’s not very nice to say “hey guys, we’ve uh, disappeared – check out this cooler site
  • The BMR is running on depreciated technology – sad but true. Whoops, did I just say that? But hey, if it ain’t broke, don’t fix it.
  • The BMR is a bit like a music collection with some missing metadata. Some files are hosted elsewhere, some don’t have preview pictures. This means that links die out.
  • The BN Links system, from what I’ve seen, seems a lot more flexible and makes it much easier for users to find what they want, which is great for the community.
  • I juggle a lot of projects. BMR maintenance is somewhat of a gypsy on my todo list.
  • I’m human – try ask someone else to delete a section of their site so somebody else can run it. (Ok, that sounded very selfish and attached)

Well. Here’s where you guys come in. To what extent can I realistically share resources, how should this be done, and tell me – is this the time to synergise?

Please leave a comment. Even if you know nothing about Blender.

Ratpoison: an efficient and minimalist WM.

Wednesday, May 13th, 2009

Ratpoison. It sounds like something that kills a rat. It sure does. Ratpoison is a WM (Window Manager) that runs on Linux that has one purpose: to kill your rat.  Here we are referring to that disgusting little lump beside your keyboard that shoots lasers out of its arse.

Ratpoison is a tiling WM, which basically means that windows do not overlap.  They tile. An easy way to visualise this it by thinking of a table. A table can have rows and columns split up into as weird a configuration you can think of, but there is only one value per cell, and that value cannot overlap another cell. You can resize your cells, switch values from one cell to another, split, remove and merge cells. Not only that, but you can do this using naught but your keyboard. It’s time to push that rodent away from your computer and appreciate the gazillion keys you already have to input information to your computer.

But why, you say, would I enjoy having to design a complex table layout for a simple task? For a number of reasons. Firstly, it’s damned fast. It’s so fast you can split em, switch em, merge em, and focus on what matters most: your work … not moving around windows so that you get a good look at them. Secondly, it uses up all your screen space. No wasting space on window borders, taskbars, panels, etc. Every single bit of your screen is showing useful information, and nothing more. This is often referred to as “efficient use of screen real estate”. Thirdly, it’s a minimal WM. This means it starts up quick, doesn’t have a gazillion dependencies, and is lightweight on your system space and resources.

Take a quick peek at this screenshot to show ratpoison in use (click for full resolution):

2009-02-09-005748_1280x800_scrot

Now terminal junkies would feel right at home here. The only time ratpoison doesn’t really play nice is with The GIMP, which has 3 windows. However splitting your screen into frames where the docks fit nicely into is good enough for most people. It’s just a bit of a hassle.

As you can see, ratpoison is basically shortcut driven. You use the keyboard to do everything: open new applications, close applications, resize windows, move windows … well, pretty much everything.

One thing I didn’t really like about ratpoison was the keybindings. The default ones look as though they were programmed by a drunkard (well, if you visit the official ratpoison website, and take a look at how they get inspiration, you’ll see they are drunkards). The solution to achieving a wonderful system is to use a combination of .ratpoisonrc settings and xmodmap settings. Here is a nifty guide that should get you started with some usable keybindings.

My RatPoison setup.

I’ll admit that I have not run ratpoison in a while. Recently I’ve hopped on the hip & trendy KDE 4.x bandwagon, and I love to see active development. All the same, the memories I’ve had with ratpoison have always been awesome, and that’s why I’m sharing it here.

Basically, the default ctrl-t to access the commands is stupid imho, because you have to stretch your hand and it hurts. So the first thing I do is remove my Caps Lock key (nobody ever uses it anyway) and change it to an imaginary key called F13. This way all I have to do is shift my left pinky slightly to the left when I want to do something. This makes using RP really fast!

So create a file called .xmodmaprc in your ~ directory, and put this in it:

remove lock = Caps_Lock
keycode 66 = F13

Next thing you want to do is make sure these key changes take effect before you start the X server. So in your .xinitrc file in the ~ directory, before the exec ratpoison line, add this:

xmodmap .xmodmaprc

Now you want to actually configure ratpoison. Create a .ratpoisonrc file in your ~ dir (yes, all these files are hidden with a . prefix). Put this code:

escape F13
bind Next exec amixer -q set PCM 2- unmute
bind Prior exec amixer -q set PCM 2+ unmute
unbind k
bind j focusdown
bind h focusleft
bind k focusup
bind l focusright
bind J exchangedown
bind H exchangeleft
bind K exchangeup
bind L exchangeright
bind C-k delete
exec /usr/bin/rpws init 4 -k
set winname class
defborder 0
defpadding 0 0 0 0
defbarpadding 0 0
bind space exec xterm

Alright. From top to bottom. First I say F13 (the caps lock) is now the new special key. Then I set my pageup and pagedown (next and prior) keys to control my volume (just because I like it. It’s not compulsory. The next bunch of binds basically make it so that it uses the Vim keys hjkl to move from left/down/top/right windows respectively. Then let’s say I want to switch the bottom window with the top one, I just do F13 + shift + k. So that’s basically F13 + capital K. K is the up key in vim, so it’s very logical and easy to use. I never have to move my hands anywhere on the keyboard when I want to switch windows. When I want to use alt tab, it’s even easier, just double tap the F13 key! The bind C-k delete is the shortcut to close the window. The exec rpws thing is simply if you have rpws installed (not sure if it’s there by default) it sets up virtual desktops. So ctrl-f1,f2,f3,f4 will switch between the 4. set winname class makes the window names something intelligent than the default. The border and paddings simply reduce the space between applications so I get 100% screen real estate used. Finally I use xterm a lot, so I find it easy to just do F13+space to quickly launch it.

There are lots of documentation available on what else to put in your .ratpoisonrc to configure it more. In these following lines what I have done is turned my Windows Key (Hyper_L) into a special key, so that when combined with another key, it launches one of my favourite programs, or even controls my music player! Nifty!

definekey top Hyper_L thisIsNotAWindowsKey
definekey top H-f exec firefox-bin
definekey top H-o exec ooffice
definekey top H-b exec blender
definekey top H-p exec mpc toggle
definekey top H-bracketleft exec mpc next
definekey top H-bracketright exec mpc prev

Don’t forget if you want to try out the commands real time, use F13 (or whatever modifier) + : then type your command that you would use in your .ratpoisonrc. If you want to run a shell command or app, just do F13 + ! then type it in.

Well. Good luck with ratpoison, and I hope you enjoy using it. I know I have!

How do you use your desktop?

Monday, May 11th, 2009

Imagine a computer system that was semantic. For those unaffiliated with this concept, this is similar to having your computer understand you as a human would. This is often easier to explain through examples. For example, when you click that spot on the screen, that’s because you want to achieve something. The computer understands what you are trying to achieve and thus will do it for you. What we have now is “this is how I work – use me”.
There are many ways in which people are trying to achieve this symantic desktop. Two examples off the top of my head are 1) Nepomuk and Strigi and 2) The 3D desktop.

Let’s first look at nepomuk and strigi. These are two technologies used by the K Desktop Environment (excuse any technical misunderstandings), which from what I understand are meant to store a wealth of “meta-info” about all your stored data. Be it your email, contact lists, favourites, essays, presentations, music, images, etc. It will turn them from being stored as data into being stored as information. I’m then meant to be able to find/sort/store them much easier than before. Must be heaven when trying to find that centuries old self-note I wrote.

The second example is the 3D desktop. A concept that I myself am trying to spread is that your desktop is…well, a desktop. You keep what you’ve been recently working on and what you’re currently working on…on your desktop. Your desktop is where you dump  your stuff in-between sorting them, and where you leave stuff piled after a long days’ work. It is where it is both easy to access stuff and dispose of stuff.

Oh really.

I don’t think it’s working so far. Nepomuk/Strigi has never once shown me anything useful. I store my own files the way I want to. Microsoft and Apple both categorise things for you (well, Microsoft tries) in their own structures, whilst the Linux filesystem is…organised chaos.

KDE was meant to have revolutionised the desktop. I might not know the advance of the system’s backend of plasma and the such, but whatever happened, i’m just not quite seeing it. The concept of plasmoids on the desktop itself (yes, on panels they are very useful) might be good, but utterly impractical. The main reasons I find for this are:

They are inaccessible.

Even with show-desktop/show-plasma-dashboard, they are still very limited in function. The folder view plasmoid just shows a folder, then allows me to open files in the folder or open subdirectories in Dolphin. I can’t do my actual file sorting with the plasmoid. The quicklaunch plasmoid is heaps better, but very small.

They replicate functionality.

We have the folder view, and dolphin (not to mention konqueror). All browse files. We have the calculator plasmoid, but what use is that when I have my nifty alt-f2 calculator embedded in krunner? The media player plasmoid – which is easier, tapping a shortcut or showing my desktop then pausing/playing/etc? Analog clock? I have my good ‘ol digital clock in the bottom right corner. Web browser plasmoid? Seriously. Blue marble, ball, binary clock, conway’s game of life? Useful? I think not.

So, the question is, how do you use your desktop? (if in KDE, this includes plasma – if not, then just in terms of file organisation?)

(in unrelated news, my blog now uses Slimbox for displaying images, so there is increased sexiness when you click on them!)

Into the Summer

Saturday, May 9th, 2009

I’m about to go through 5 weeks of exams, the first starting this coming Wednesday. This is normally the time when I finalise the list of what I plan to do over the summer holidays. Here’s what’s on my list:

  • Finish off the POSE2 Project.
  • Work on The ThoughtScore Project animation (hopefully finding some local enthusiasts with expertise to help).
  • Learn more C++.
  • Get into an attachment program with one or two companies.
  • Do something together with Chris, for the path to hell is paved with good intentions.
  • Do something charitable and not end it abruptly (last time I unintentionally caused some poor kid to cry for many days and nights)
  • Turn the open-source model into something that’s both realistic and comprehensible, then actually employ it.
  • Pacify myself more- and figure out what the hell I want to do in the future.
  • Return to the piano, which I’ve been avoiding for the past 6 months.
  • Do some sorting on my music collection, which represents something similar to the inside of my brain.

Comments,  ideas? What are your plans?

The Open-Source Market – Limitless and Forever expanding?

Tuesday, May 5th, 2009

Warning: long post. All lazy readers must hide now.

In my original post about the practicality of open source business models, I talked about the differences in Kaizen and Kakushin, how they were used, their benefits and disadvantages, and how each could be used to our benefit. In this post, I have decided to go a bit back into basics, take a broader look at things, and actually consider the nature of open-source compared to other models. I left the ending of the last post asking several questions – I will not answer those questions right now, but hopefully the stuff I consider in this post should help understand what solutions are practical and what aren’t.

Let’s start by considering the nature of Linux – the largest open-source project around (technically not, but you get the idea). Linux is essentially a free market economy, whereas Microsoft is more of a planned economy. For those familiar with the advantages, disadvantages and features of each economy, that sentence should summarise a lot of Linux’s culture. However, I believe analysis based on the type of economic system Linux represents, though interesting, has very little realistic value. It’s much more useful to look at Linux from a smaller perspective. Let’s begin.

The Linux community is extremely modular. Imagine a Lego set – there are hundreds of different types of pieces, and new ones come out all the time, the old ones are still there, but over time get lost, don’t fit so well, or get broken. A user has the image of a perfect creation in their minds, and are thrust upon them a huge mess of Lego pieces, with nobody to guide them on how they fit together. Here’s a graphical representation (no, I don’t care if I made an inaccuracy :P ):

diagram7

That, is Linux from Scratch (again, please don’t try and be a smartass here). You build your entire system yourself. There are manuals, but no common Joe is going to bother. Hence we have distributions.  Distributions try to package these Lego bits together, giving you 1) An easier starting point, 2) Easier/faster to get the pieces you need (using the package manager), and 3) a small community which can provide support. There are varying levels of these distributions, such as Gentoo, which still believes in the build-it-yourself philosophy (quite literally! You compile everything!), to Ubuntu, which tends to stick a silver spoon in your mouth.

If you read the first article, you might have noticed that this is actually a very effective use of market segmentation, allowing the average user to enjoy things like Ubuntu, whilst allowing for more hardcore users to push ahead development. It seems as though we’ve already got what it takes – but why doesn’t it work?

Firstly, people are not used to the open-source culture. And it just so happens that the open-source culture is the only culture that gives this sort of choice to “the average user”. The only other place this sort of freedom occurs is in technical industries, aimed at skilled users. Because people aren’t expecting this sort of treatment, they don’t choose this sort of treatment, instead they choose what they’re used to, which are self-packaged monolithic projects. Let’s look at Microsoft’s Windows. Here is a graphical representation:

diagram8

It’s basically a finished Lego structure, superglued together with a couple bare spots for add-ons.

Looking at Microsoft’s success, does this mean we should get the glue and start merging projects? There are two issues to look at here, 1) Is it really beneficial? and 2) how practical is it?

Competition is beneficial to developers, but what about our users?

Let’s start with how beneficial it is. Due to the large amounts of projects, we get a huge amount of competition. Competition is healthy – it keeps the developers on their toes, always pushing ahead what is expected of them, it increases quality, it increases efficiency of production, and finally also increases the quantity produced. Competition would probably be the child of Linux, and it’s being abused every day. Even though we have competition implemented to breakneck levels, we also have created a hugely confusing world for newcomers who don’t know what’s new and what’s recommended.

Let’s say the TV market had a huge amount of competition and I wanted to buy a TV. If I knew nothing about TVs, I would be at a loss as to what to choose. In this case, I would find a shop assistant (no matter how crappy they really are) to help me. The TV market will not stop its own competition just to stop making it confusing for me, instead, they will simply employ more shop assistants.  Similarly, we should not bring out the glue and stick our projects together.  The interesting point this raises here, is do we have any shop assistants?

Yes, we do have shop assistants. In fact, we have some of the most knowledgeable shop assistants in the world, and they work 24/7. We have shop assistants that practice the beneficial concept of dogfooding (using their own products – thus duplicating the roles of a user and a developer, leading to more useful upgrades), that are constantly being trained, that don’t charge a single cent for their services, are self-motivated, and best of all, treat you as a friend (unless you are an idiot – no joking about this one).

The problem lies with the fact that newcomers have absolutely no idea where to find these shop assistants. That’s because they all lurk in IRC Chat – a system brought about by tech users, maintained by tech users, and not at all bothered to be advertised to the average joe – mainly because the average joe is an idiot to the tech users. This is actually a very serious issue – the amount of patience a lot of the developers have once they meet an idiot in IRC drops tremendously. We can’t blame them, everybody has better things to do. In fact, one of the sad truths is that if the IRC channel identifies an idiot who seems to be disrupting the flow of the channel, instead of being helpful, they will actually take it upon themselves to insult the person, start using inside jokes, and in the end be quite mean to the person. People who use IRC quite a lot can recognise this and know when to shut up, but for newcomers, not only do we stop providing support, we actually repel them from our product. We have thick skins – “You don’t like it? Go away. You won’t use our product? OK, who cares.

Excessive competition has actually brought about specialisation in the workforce – good or bad?

Right, back to the “is it beneficial” question. Another thing to consider is that what Linux is actually pure specialisation and division of labour. The reason competition has brought about specialisation is because 1) we have the open-source philosophy of “one tool per job”, 2) We have a billion tools for a million jobs, and 3) Our developers work on whatever they like. The developers will choose what they like, or what they are good at. Not only does this make the work on what they’re good at, because they enjoy doing what they do, this is a form of self-motivation. Specialisation is meant to increase efficiency, increase quality and quantity produced. These are all benefits.

The disadvantages of specialisation, which are mainly boredom and immobility of labour are also removed, as when the developers get bored, they simply leave and work on something else. There are no obligations to stay, and no managers to get annoyed at them. Developers, also due to their nature of shifting around a variety of projects also pick up a huge variety of skills – meaning that labour is quite flexible. Thus immobility of labour is removed. If a good developer leaves, there will always be somebody with the capabilities to replace the person – true, the rate of development might still decrease, but the project will still survive (unless the project is doomed due to competition or just an extreme lack of developers).

Strangely, even though it seems to be a very one sided argument saying that open-source’s modular construction is beneficial, Microsoft is still (decently) ahead of us. The reasons are obvious – they have backings of lots of other financially structured companies, and it’s this financial backing which causes a lot of the influence around nowadays. A lost cause, then, for Linux, eh? Not really, there are a lot of financially structured companies going for Linux, such as Sun Microsystems, Oracle (which recently bought over Sun), Google, Nokia (yes, Linux is the most secretive monopoly of the mobile phone market – your phone probably runs Linux), etc. And in these economically pressing times, the chances are that Linux will get even more companies running for them. The idea of having backing from financially-structured firms will be very important when I consider the practicality of implementing these ideas in a future article.  This brings us to the practicality of merging out projects together.

How practical is it to actually merge our projects together?

Short answer – impossible. That will be the equivalent of asking America to turn into a communist country. In fact, it’s easier to cause a derogatory schism in the form of resource-wasting project forks. Keeping that in mind, we can say this:

Competition is good, but if applied excessively it can actually waste resources, being a disadvantage to both consumers and the workforce, and hinder development.

As mentioned countless times before, the open-source business model is no longer a business model – it is a culture. Just like any civilisation, we need a government. However, since we’re so good at having different views, I suggest:

We should have a government like Belgium.

Belgium is probably one of the most screwed up countries (sorry – no offence) in terms of governments. There is the Federal Government, the Flemish Government, The Government of the French Community, Government of the German-Speaking Community, Government of the Walloon Region, and the Government of the Brussels-Capital Region. Going to the Belgian embassy? Which one? Haha.

Oh, and we do have a government(s) like Belgium. Except we have too many.  They also seem to be limited to governing a single project. Those, my good sir, are not governments, those are influential boards of directors. A government, in my opinion, is the noble FreeDesktop Project. The FreeDesktop aims to standardize development within the plethora of desktop environments and window managers. For those unaffiliated these terms, suffice to say they are user interfaces that a user can pick. There are a lot of them (ooh, a list! XFCE, GNOME, KDE, LXDE, Rox, Fluxbox, Blackbox, IceWM, Ratpoison, Ion, Openbox, and so on). If you had a hundred different interfaces all following their own rules (and using their own toolkits even – thank goodness they don’t), nothing will look integrated, and this will give a bad user experience. The FreeDesktop project realised that, and decided to come along and try to put things in order.  They didn’t actually interfere with development, but acted as a sort of mediator for agreeing on standards. Another type of government would be the Linux Foundation, responsible for representing Linux in legal issues (yeah, a bit hard to sue otherwise).

But alas, talking about governing our legal and marketing issues is to be saved for another post. At the moment I am talking about competition and the nature of the open-source culture. So what I suggest is that we have more mediators like the FreeDesktop project to govern development. These will be grouped by project type – such as Desktop Environments, Linux Distributions, or Kernel Development.  Unfortunately, as I’m not a developer, I cannot say which groups would be the most effective, so that is where you, the community, come in.

diagram6

These government bodies will have the responsibility of deciding standards and taking major decisions on which technologies will be brought forward. One example of when this would be useful is the recent controversy between Webkit and KHTML. Perhaps if this were decided users won’t have to choose between so many browsers (I’m not saying only a couple of them aren’t crap – choice is always good!). Another function of these government bodies will be to decide when technologies can be shared. One great example is KDE creating all these behind-the-scenes systems for audio and semantic desktops. These resources can be shared within other desktop projects, such as GNOME. (eg: Phonon can be used by GNOME too).

Overall, these government bodies will have one function – to reverse the effects of competition when deemed necessary. Or as a spin doctor would put it: to act as a mediator to allow synergy between projects.

IN A NUTSHELL.

As examined in the beginning, we saw the modular nature of Linux. We also saw how the user was unused to this concept, and then moved on to seeing how this competition can actually be harmful to development. I also deviated for a short while to consider the structure of our support system, which seems very well hidden ;) We then considered how financially-structured organisations have much more influence than a hundred smaller projects, and finally I propose to have these government bodies to tackle the fact that:

Competition in the short term is good, but in the long-term, what we need is synergy.

Well, that’s about it for this post. I apologise for the lack of fun diagrams, and hope that I touched upon a simple idea that should be implemented. I left a lot of points open for discussion in the text above, and I hope to use that in a future post, meanwhile, I can only hope it serves to bring about other beneficial ideas about the open-source culture. Thanks for reading, the support I got in IRC, and I hope one day these posts will become more than just a post (is that even grammatically correct?).