Posts Tagged ‘linux’

Tech tip #4: Copy a random set of files from a directory.

Tuesday, January 12th, 2010

More for archival purposes than anything, today I wanted to copy some songs out of my serious mess of a music "collection" onto my microSD card. I didn’t want to have to choose and I haven’t rated my songs so that wouldn’t help. Instead I wanted a random selection of songs. I’m not a bashmaster (absolutely pathetic at it, actually) but this is what I ended up using – after symlinking all of the various directories I had my files under together:

find -L /home/drive/music -type f -name "*.mp3" | sort -R | tail -n100 | while read file; do cp "$file" /media/disk/music/; done

-n100 represents how many files are going to be copied. Hope it helps somebody! Of course any improvements are welcome.

Why is Chrome OS going to be successful?

Saturday, December 5th, 2009

People reading this post who know a little about Chrome might point at the title of this post and consider it a typo – it should read why isn’t Chrome OS going to be successful? I wish that this were true.

Chrome OS is Google’s attempt at an operating system, and can be described as a browser in a box. It looks identical to its namesake and contains little more. The interface is simply a browser window with tabs for separate “applications”, it’s applications are naught more than websites (or in true 2.0 lingo – “web apps”), and just to ensure that the user is limited as to what they can do, the filesystem is read-only. In other words – the Chrome is good for one thing and one thing only: surfing the web.

Why then, with statistics showing internet usage globally leveling out and laptops being introduced to more and more children, would a generation understanding the capabilities of machines be content with such a handicap as Chrome OS? It’s known that “simple sells”, but too simple?

The answer lies with the market that Chrome OS is truly aiming at: SMEs. With the Go Google initiative the next step is to provide the hardware that supports it. Most uses of a laptop in corporate environments are limited to document processing and web research. Given that they choose the specs of the computers, Chrome OS is able to provide this at a bargain. So when management has to give Joe down at accounting a laptop for his work, he doesn’t need to bother about licensing, cost, endless software debugging and maintenance – but simply throw (yep, SSDs!) a Chrome laptop at him. Data redundancy, “software” upgrades and whatever else the cloud brings is an added bonus. Yeah – it’s not a hard choice. It’s cheaper, gets the job done, and it truly is a “work” laptop.

The objective isn’t to throw it into the market as a whole or start from the housewives and grandparents with such a simple laptop but instead the objective is to turn it into an industry standard – an industry standard that works best when companies have Gone Google. Most SMEs don’t care about the drawbacks of using a cloud-based system either – this makes the costs of moving to such a standard minimal. Both sides win. This approach into the market is only one that Google can employ – and is the reason why Chrome OS can break in successfully compared to others like Moblin, even though Moblin has the same simplicity and speed.

Then of course some of the less computer literate (which is the majority of the world, unless you live under a rock) don’t mind using it either. Chrome OS makes the netbook what it should be – a netbook, and schwoop we have another player in the market. In a nutshell. The trick behind this is the frictional costs. The frictional costs of moving to such a system is minimal. I say this as a relative term in comparison to the costs of switching from a cloud-based system.

The conclusion is not that Chrome OS is going to take over the OS market. No – especially in large firms the costs of moving to such a system is unquestionable. However this approach will definitely break the barrier between lightweight computer users and Linux-based OSes. Whether or not this is a good thing for existing Linux platforms is still unknown and free for speculation.

Of course, in the future when our needs for computers far exceed this, Chrome OS is definitely not the choice for that generation – but then again, Google has plenty of time to work towards that!

My OpenDesktop Competition Submission: Wipup

Tuesday, August 25th, 2009

Folks from PlanetKDE last heard me announcing my journey along the path to become a KDE developer. There are many ways to do this and unfortunately the path that involves learning a load of C++ and start developing applications is still making slow but steady progress and not (yet) eligible for public announcement.

But – there are many ways to contribute!

I knew about the OpenDesktop Competition for quite a while now and originating from the area of webdevelopment I realised that my latest project ties almost perfectly with its goals. Obviously being very much related to KDE development and open-source in general I wanted to share it here:

Click here to check out my submission.

Obviously the main way to make this project become successful is through community support. I really think this can be integrated well such as through plasmoids or plugins on applications such as Krita or Dolphin.

Sorry for not really explaining what it’s about because it’s quite difficult to explain very quickly. But here is a crappy attempt: It allows users and developers to showcase the works in progress of their projects and keep in touch through them.

snapshot6

Of course, if you like the idea, I would love feedback and voting :)

The Google Operating System – Chrome.

Wednesday, July 8th, 2009

Read Google’s original blog post about it.

That’s right, my conspiracy theory about Google (orignally posted a good month back) has come true, and it’s going to be out there around late 2010.

Brief summary: Google is making an operating system (Linux-based too) with help from the open-source community that focuses on getting the user online and into a browser as quick as possible. The browser is now the ultimate tool on the system. It is currently mainly meant for stuff like netbooks (note this is a separate project from Google Android) but will apparently also be able to provide a good experience for any desktop setup.

Since it’s too late to grimace at Google during their drawing board sessions, I like to ask myself what would an OS be in a time when many of our activites are web-centric.

Most of the main problems I outlined for Google in my conspiracy theory was how they could convice people to change their workflows. Apparently Google has decided to give them an operating system. This interface can easily be optimised to make it feel natural to shift their workflow completely into what they can do in a browser, some tabs and the new shabang HTML 5 will come with.

I took a look at Moblin, another netbook Linux-based OS – one thing instantly popped through my head: this doesn’t look like any window manager, it looks like a website or single application. Something you might expect similar to MythTV. (If I am wrong please correct me).

The first decision I would make on designing a UI for Google’s purposes is not to have any start menu. Something similar to Apple’s dock with modifications (also with an auto-hide) would be great for optimising screen real estate. I would also integrate what I now see as KDE Plasmoids as part of the entire interface (as in within applications itself too instead of only the desktop shell). I would also ask myself what applications could be and should be replaced by web applications. Such examples are email, document editing, chatting, and social networking. What could not and should not be are graphics and multimedia editors, games, and system management tools. It seems very much now that we can split our activities into 2: if you want to make technology, do it offline. If you want to use technology, do it online.

Personally, I can easily now see how easily I can adapt my workflow to this internet-centric pattern.

What about you? What do you expect from Google’s OS?

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.

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!)

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?).

Kaizen and Kakushin’s Practicality in Open-Source Business Models

Wednesday, April 22nd, 2009

Note, this is a long post. It also covers a tiny fraction of what is out there to understand. More updates will come about the open-source culture in the future. This text is also mainly written for those familiar with the Linux culture (as I use them as an analogy) – though regular business model analysts are welcome to share their ideas too.

Recently I’ve been analysing quite a bit of the open-source business model and its practicality to actually be introduced into commercial industries. A lot of this was analysed by looking at Linux and smaller Linux-related activities (eg: individual distributions or desktop projects like GNOME and KDE) as an analogy.  So when I talk about Linux, I can be referring to any Linux or open-source project, be it KDE, GNOME, Ubuntu, Gentoo, etc. One of the topics I covered in my analysis was the concept of Kaizen and Kakushin. Seeing that recently Aaron Seigo posted an article related to it and the flaws with its methodology, I decided to have my own say.

Although my analysis covered a lot more than Kaizen and Kakushin, I decided to start with those as they were introduced by another (more influential) blogger and I think it’s good to follow up on his ideas. Aaron Seigo probably has the benefits of actually working in an open-source culture, whereas since I am not a developer in a major project (or even any public ones) I probably can say I do not have the same level of personal experience. Therefore let’s just say my ideas are a lot more generalised, and looks at things from the broader picture, encompassing the users and the developers and comparing the two.

Let’s start with Kakushin. For those who are unaffiliated with this term or haven’t read Aaron’s post, it is when leaps are taken in the progress of development. What happens as that over time, the business would set a new quality standard and everybody will be trained to practice this new standard.  This may be done through many methods, such as a work study. This concept is a manager driven approach, as the manager’s job is to view the “big picture” around this organisation, and decide what the next benchmark will be. Though there are obvious disadvantages, such as the distance between the manager and the project (which may cause misinformed decisions on benchmarking), this technique is the most common in the industries. One example of this is Apple and Microsoft. They release a big version every so often with massive updates, led by managers decision on what the business’ vision is. One visionary would be Steve Jobs from Apple.

If we plot a graph of quality over time, we can see this sort of relationship.

diagram1

However, Linux seems to follow a different sort of model. The Japanese have come up with the Kaizen model of quality management, also known as “continuous improvement”. This quality management model is workforce driven. Individual workers are self motivated to continually improving every single process existing within the business, be it production, manufacture, services, or even management and administration. This can therefore not be labeled a model, but instead a philosophy. In the case of Linux, our workforce are our developers, each creating features not because they believe it is for the best. The difference with this model when we plot the quality-time graph can be seen below.

diagram2

Now people who have studied these two concepts before would know that if the graphs are combined, the area, and hence “benefit” of each concept, of the Kaizen model is greater than the Kakushin model. This can be shown mathematically, but here is a graph to explain it clearer.

diagram3

Therefore, theoretically the Kaizen model should be a lot more successful in terms of the business (or in this case the open-source community). However, as we all can see, Microsoft and Apple seem light years ahead (seriously, look at the average Joe’s idea of an OS) compared to Linux, who seems to be turtling along. Why is this so?

Let’s take a look at Linux’s and open-source’s philosophy. There are quite a lot of theories, and one of them is ‘release early, release often‘. This works very well with version control, and allows a lot of developers to work together without compatibility issues. It is this theory that forms the basis of Linux’s Kaizen approach. It is also obvious that a Kakushin approach to development is ridiculously impractical. People turning up with patches of hundreds of lines of code at a time would lead to a lot of disorganisation, and progress would be hindered. Therefore, it can be said that Kaizen is the most effective for developers.

However, why does Microsoft and Apple succeed with their apparently Kakushin approaches? This is because Kakushin is applied to their marketing strategy, not their developing strategy. This difference between development and marketing is rarely identified in the open-source culture, and is one of open-source’s major flaws. Microsoft and Apple’s developers work in a similar version controlled system, no matter how monolithic the project they are working on. However, to the user, we do not experience the Kaizen that the developers do, instead we experience Kakushin.

Even though we previously theoretically disproved Kakushin’s effectiveness of Kaizen, there are factors which prove this theoretical approach false. The two factors are what I like to call “change rewarding“, and “resistance to change“.

Let’s start with “change rewarding“. When Microsoft releases their new version of Windows, Microsoft’s marketers know that there is going to be a lot of change that the user must experience. In order to cancel out the “resistance to change“ factor, they combat it by creating buzz and excitement about the release. This makes the user more accepting for what they are about to experience. Microsoft also looks at things from a user’s point of view, knowing that interface and fancy eyecandy are one of the things that actually gets noticed, and so therefore tries to put this into every new release. Therefore when users finally check out the product, they experience the “wow” factor, and they love the upgrades. They feel as though it’s new, improved, and they embrace the change. Take this for an example. Let’s say we are developing your average application. A month later, you release a new version, but you only change the splash image. Nothing else. The first impression on the user will be a positive one (unless you choose a crap splash image) – they will embrace the change and expect big things. This is how Microsoft’s Kakushin approach is effective. (Note: I am not saying Microsoft executed it pretty well – for example their release of Windows 7 beta was a huge failure)

However, I’m not saying it’s all good. I’m not saying we should stuff eyecandy and make useless interface changes just to give the illusion that things have improved. Here is where the “resistance to change” factor comes into play.  Change too much and your users will hate you. Take a look at KDE, Amarok, or Vista. (Let us for the moment disregard the fact that sometimes these are required for innovation and survival of the project – more on this will be covered in the future). In fact, I recently read an article where US businesses were starting to say that when Windows 7 came out, they would not switch their systems. This is because they were worried about compatibility. This is very understandable, and shows one of the disadvantages of the Kakushin concept.

Of course, Kaizen isn’t perfect either. For example, Kaizen needs variations in its curve. Even though Kaizen seems to work forever in a culture (such as Linux), Kaizen is not self-sustainable within a single project. Incremental upgrades all the time with no big successful release is demoralising to the workforce (our developers – [one of] our most important assets). Imagine if you never tagged a release version in the version control? Well, this is what we result in.

diagram5

Of course, this can be eliminated through effective developer sprints – also known as a Kaizen blitz according to Aaron. Variations should be introduced.  One example of a project that needs this (please, no offense) is GNOME. Google does this extremely well in its Google Summer of Code projects, and I know this is also done in KDE (such as Kamp KDE and so on), and this sort of activity should no longer be considered an every-so-often event of the developers, but a required part of the open-source business model in order to succeed.

This (highly summarised – sorry, but it is a blog post after all) analysis does not say Kakushin or Kaizen is better. What it does say is that they both have their benefits, and can be each be effectively utilised – what matters is the manner in which they are both combined. It can therefore be said that open-source businesses, or in this case, we are beginning to see the emergence of a culture of open source, should recognise users needs and developers needs.  We don’t just need hackers – we need artists, business orientated people, marketers, multimedia specialists, people who understand management and delegation. I believe this was also recently stressed on another blog post in Planet KDE.

In order to bring Kaizen and Kakushin to a practical business model – or culture, which I shall now refer to it as, we need to understand people’s needs.  Developers in the open-source model are workforce driven – they don’t need a manager. The Kaizen approach is effective for them. However, the users (not all users! Please do not be mistaken) need to experience the “wow” factor more than ever. However, we should obviously not overload them with changes, which brings me to my next section.

Users are a whole different ball game that most developers don’t understand.  Proof that you (no matter how wonderful you all are ;) ) don’t understand is that Linux is still highly considered a geeky or techies’ system by the average Joe.  You can’t argue with that. Because the developers don’t understand it, they just decide to impose their own ideas on users, and if they don’t like it, get out.  There are advantages to this ideology – for example, it keeps out idiots which may hinder development (wow, that was blunt!). However the developers need to understand that we actually can accommodate these idiots whilst not hindering development!

Allow me to explain. There are many levels of users. Some may be power users who dream in code, and some might be your grandmother down the street. Therefore what we can do is segment our market (users) based on their tech savvyness. I use Gentoo myself, and I have seen this segmentation employed in the form of Portage overlays. This may be compared to as Debian unstable, and developer releases of Ubuntu. What this does is allow average users to enjoy the stable system and experience the “wow” factor, whilst it allows more technically literate people to enjoy the Kaizen incremental improvement, staying more bleeding edge. It seems that knowledge/interest of the industry is proportional to the persons preference of Kaizen over Kakushin. This, of course, ties in very well with the open-source philosophy of choice.

If you’ve understood much of what I’ve written, you would have realised that what I am suggesting is that segment the market further, but at the same time blend in the change from Kakushin to Kaizen based on the users’ choice and preferences. Users must be given the knowledge that they have a choice, and hence freedom of what they want to experience, how they want to experience, and when they want to experience it. The benefits of this can be seen in the graph below.

diagram4

As can be seen, the wow factor is increased (higher jumps in Kakushin), and due to the increased blend in change from Kakushin to Kaizen for developers, as this makes it easier for developers to contribute to the project, this will also accelerate development, resulting in a higher gradient. This shows a wonderful benefit for both users and developers. (and of course, like Aaron mentioned, there’s nothing wrong with developer sprints!)

Of course, there are a couple quirks still to be worked out, and since this blog post is…well, a blog post, I shall probably save these for future posts.  However, for those interested, here are the quirks.

  1. To what extent should the “wow” factor be increased until we encounter a “resistance to change”?
  2. How do we apply this concept? It is impractical to suddenly lump a bunch of managers into a highly technical industry and ask them to create this difference in change. (I shall cover a proposed method to introduce this changes in a later blog post)
  3. How do we communicate this choice of how “into” the project they become to the users? How will they know which “level of complexity” is appropriate for them?
  4. The open-source culture is very modular, how do we enforce uniformity between all the different projects? Each have their own development cycle, and how do we ensure compatibility is continued? (Imagine is all of a sudden KDE 5 was introduced, and all the people who ported their applications to KDE 4 had to re-port everything – they would hate it!)
  5. To what extent should we segment our market before it gets too confusing? (For both developers and users)
  6. and finally, how economical is it for this change to happen?

I thank you for taking the time to read this post, and I hope you have feedback, as I believe over the course of these posts which I plan to talk more about my ideas about the open-source culture there are actual practical solutions which can be put into place. For example, the Linux Foundation for a start.

I hope you enjoyed reading it!

Edit: I want two things to be understood. 1) There is plenty more stuff to consider and cover- which I will likely release in future blog posts, and 2) It isn’t that our Kaizen system is bad, it’s just that there is a whole market segment of users who do not appreciate the Kaizen approach (just if you like it doesn’t mean everybody else does too – it’s all about choice!) – it’s just not suitable for them (like your grandma, perhaps).

Server Moved and Screenshots

Sunday, March 1st, 2009

Right. I didn’t give a post yesterday because my host was moving servers from America to Australia. So to all the people who were experiencing connectivity issues yesterday that was what the problem was. Things are getting ship shape and soon the site should be accessible to everybody worldwide without any issues. It already works fine for me, but the DNS must propagate around. Not to mention now my site is loading almost instantaneously – it’s truly amazing how speedy the site is for me. I’m loving it :)

Aside from that, I’ve been trying to debug why KWin with compositing enabled causing all these crashes and makes X go unresponsive (such that I have to force shutdown). So what I’ve learned is how to use the SysRq key (which is a lifesaver) and also how to abstain from the newer NVIDIA drivers. A word of warning for KDE users, do not upgrade to 180.29 or 180.35 nvidia-drivers, it is full of bugs and requires expert pest control services. Thankfully with the SysRq key I won’t cause my filesystem to bork (as people watching me on Twitter found out today at 4:30AM) and with the added hope of being able to just restart X (alt-sysrq-k) things now seem more livable.

On unrelated news, I decided to see if I could copy Vista’s look. I didn’t really make much of an effort (hence why my panel is untouched and I didn’t make a “reflection” image as well as my icon theme not changed) but here’s what I came up with after a while:

2009-02-28-233054_1280x800_scrot

I currently run a rather Mac-ish setup, as can be seen here. The theme is Bespin. Tada:

2009-03-01-111405_1280x800_scrot

Oh, and just because this is Linux, everything is possible:

2009-03-01-111431_1280x800_scrot

I hope giving you pictures might make up for the fact I missed a post :) I’ll post something with a bit more essence next time.  (Click on those to see full size and true awesomness detail)

Epoch Fail – The UNIX Doomsday

Saturday, February 14th, 2009

big_y2kYesterday was the 13th of February. It was a very special day. Not only was it Friday the 13th, which probably means something unlucky will  happen – it just so happens that yesterday was the end of the world for UNIX systems.

Anybody here remember the Y2K bug? Basically they said computers couldn’t understand what would happen after the  year 2000 starts, and therefore computers would all fail and we’d be cast into a world of non-high-tech evilness. Or something like that. However the year 2000 came and went, and we all continued the happy people we were. UNIX systems, such as Apple Macs and Linuxes, used the UNIX date timestamp in order to calculate time. This is basically measuring the number of seconds since the last epoch. It’s a 10 digit number, and it just so happens that yesterday, the number of seconds since the last epoch would be exactly:

1234567890

Stunning. That happens only once an epoch.

It’s probably the geekiest event to celebrate, and I myself made a good hot cup of cocoa and drank it in bed doing mathematics on this wonderful occasion. How apt. If you visited Google.com around that second, you would’ve seen that their logo had changed to celebrate it too.

unix1234567890

During the Y2K bug, nobody was certain whether or not it would affect them. This is because it was on DOS systems (Windows) and naturally all Windows users are a bit soft in the head. However, us savvy UNIX users know that we do have our own time bomb, and that it’ll happen in the year 2038, when UNIX reaches the end of the epoch – it’s the mark of the doomsday where all our systems would shut down. Well, at least we are certain a disaster would happen instead of causing unnecessary fear.

Of course, we aren’t stupid and we actually did somethign about it – we now run in 64 bit mode and UNIX systems would only fail … let’s say about the time the sun burns out.

So much for the year of the Linux Desktop.

Oh, and in unrelated news, happy Valentine’s day – I guess.

The Open Source Nature

Friday, January 30th, 2009

Some people have heard things like “open-source”, “freeware”, “hacker etiquette”, etc. However, a lot of people are doubtful about it and this is mostly because they don’t understand it fully. I have decided that for today’s post, I will shed some light on the background behind open source culture.

Yes, there is such thing as free software

Most of the technologically savvy teenagers will go “yeah, duh” at this. However, the fact remains that when computers were coming out, if you weren’t into Unix or bothered to learn much more that “Start up. Type. Print. Shutdown”, you’d might be one of those who don’t think free software exists. There was this article about a teacher who confiscated Linux CDs because “ I am not sure what you are doing is legal. No software is free and spreading that misconception is harmful” Sounds like she needs a little exposure. Even Microsoft gives out free software. Want to bet? Look on your computer. Do you have Microsoft Movie Maker on it? How about MSN Messenger? Yes. That’s right. Free software. What about Apple? It gives us QuickTime (the player). iTunes is another one.

Free as in they don’t charge money for it?

No, not necessarily. Though this is generally the case. Free can also be as in freedom. Freedom to look at the source code and edit it. Freedom to use the program for any use. Yes, that’s right, even steal it, put it under another name, make some changes, and sell it again.

Take for example the Linux kernel. It’s free. Everybody can edit it. Everybody can do whatever they want with it. The result of this is a huge amount of Linux “distributions” which are specialised flavours of the same operating system. Benefits to the consumer? You bet. There’s lots of competition. Standards are kept high. People choose what suits them. Lots of choice.

If everybody can contribute, where’s the quality control?

Aha yes. More than half the programmers that think they’re good are crap. (Heck, I could be one of them!) They insert horrible code. They don’t follow conventions. This is why open source projects need good user and technical guidance and support, either through documentation or tutoring techniques. One popular choice is for an open source projec to have “beginner jobs”, which are simple tasks a beginner or a person just entering the project can tackle. This will give them a feel as to the style of the project, where things are located, and is a form of self induction training.

Also, it is important to note that most open source projects work in a method which can be described as people cloning the project, making edits, then applying their edits to a central repository which everybody clones from. Whilst doing this, people write logs about what changes they have made, and so on. All this information is tracked by a system. This technique is called version control. With version control, people can see what others are up to. In general if somebody sees something stupid being done, they fix it, or restrict the user from contributing further. This ensures contributions are beneficial.

Induction training? Nobody wants to do something for free.

Actually, yes they do. This is a big part of hacker etiquette. When the term hacker here is used, I am referring to the proper term hacker, which is basically an enthusiast for a certain subject, willing to delve deeper into it and learn more about the topic to suit their needs and interests. A hacker is not some idiot who tries to crack your computer.

Hackers believe in the sharing of information. They will willingly go out of their way to demonstrate a technique or to help beginners. They are fueled by personal interest. If they like a project, they will contribute. That’s how open-source projects get successful. They need to make the project appealing to developers. More developers joining will make the project progress a huge amount. This will benefit the users, who will then advertise it to the user community. Hackers interested in a topic will always hear the buzz in the relevant user community, and will then try to join too. Take for example KDE 4. These series have been all about revolutionising the desktop. They’ve done a good job of it too. Look at the logs of their version control system? You will see that the number of different people commiting changes have increased, and the frequency at which they commit changes have also increased. So yes, developers will willingly do it for free, especially if it’s something they use themselves. (dogfooding)

Uh, dogfooding? What?

This is a technique where software developers use their own software. Let’s say you were Nokia. What if all your employees used non-Nokia phones? That wouldn’t be very good for your image. Not only your image, but all your development. The best way to know what improvements would be best is to use it yourself. This is what open-source is all about. Making the improvements that people need.

When I said quality control, I meant does it provide what the user wants?

Yes. I’ve talked about the developers. To be honest, it can be said rather bluntly that developers are selfish people. If they want a feature, they add it. If they see something they don’t really care about, they won’t add it. They act in their own interests, not yours. However, since most developers are dogfooders, they themselves have similar wants to you. The way the open source community surpasses this developer-user gap is by introducing bug tracking systems and feature brainstorm systems. This allows the community to voice their ideas. Of course, the hacker are always looking at the buzz, so it’s quite likely someone will help. If a large user base agrees on the same feature being needed, a developer will always dedicate time to it. Not necessarily due extreme personal interest, but because it’s part of the hacker culture. In conclusion, this means that yes, it does provide what the user wants. I once read a quote about the upcoming Vista release: “I sure hope the Vista release is amazing, because I know that Linux will have all the same features within a year.” That’s right Vista, and there’s nothing you can do to stop them. The hacker response is “because I can and believe I should.

Give me real life proof.

Sure thing. Paulo Coelho supported piracy of his own books because he believed in the culture of sharing. Not quite open-source, but close enough. What was the effect? His book sales jumped up like crazy. It was a benefit to provide a good book for free so that people would get the hardcopy from the library. (to be honest, nobody in their right mind would only read softcopy books).

Mozilla Firefox. Supposedly the best browser on the market today. The only people trying to challenge that is the Opera people, who live in a world of their own. Pity them. Anyways, Mozilla Firefox is an open source project, and that’s what has mdae it the best browser. Does it attract developers? Sure does, the amount of addons, themes, and customisation that firefox can offer is amazing. What about Safari? Safari runs on Webkit, which was a fork of KHTML. KHTML was open source, and free software. All Apple did was steal it from the Linux KDE guys, develop improvements on it in secret, then release it under a new name. Shame on you Apple. However, that’s open-source culture! There is nothing wrong with Apple doing that. Of course, it’s a sin in hacker culture, but that’s why there’s discussion about merging Webkit and KHTML again (just google it).

Google. Google releases thousands of lines of code. Look at Google Android, the Google phone operating system. Google is a prime example of open source nature.

Wikipedia. Wikipedia runs on Wikimedia, and that is downloadable is free software. People can create their own wikis, anytime, anywhere.

Many country’s government all run Linux. Not because all governments are short on money, but because it provides what they need. The open source nature has made Linux possible to be made extremely secure and customised. The American security agency or whatever their name is all use Linux. Obama right now is encouraging businesses to consider open source and free software and viable alternatives.

One great example I read by Jeff Atwood over at Coding Horror was the comparison of open source to the self-service checkout counters available in most supermarkets nowadays. Think about it. Normally you would pay some guy to sit there checking out your stuff. This is proprietary software. Now you have the user doing their job, all for free. Why? because the user is interested in the stuff in your store (attracting developers). They are willing to do this. Not only that, but they are willing to do it well and get it done quickly and efficiently. Get it done well? This means no stealing stuff, etc. Why? because there are a dozen security cameras watching you (version control). Why quickly and efficiently? Well, nobody else in the store wants to you to check out more than you yourself do. This is a self motivated drive.

Think about open source. True, in some situations, it might not be applicable. However it’s always an option, and most of the time you just don’t see it!

The Dark Side of Linux

Sunday, January 25th, 2009

e4dee531-59e8-4072-8f27-bad5192ae65cMost people who read this blog will know that I use Linux. Not only do I use it, I recommend it to others quite often. Though I do point out some of the shortcomings that Linux have in my recommendations, most of the time it is generally accompanied with a short excuse that goes something like “Yes but if you configure blahdiblah there are alternatives bladhiblah” and so on. However, Even worse than a potential customer hearing the shortcomings about your product is a customer that has bloated expectations about it, then gets epically disappointed when trying the product out.

So here is my short talk about some of the things we all have to say truthfully about Linux:

No, Linux does not Just Work.

I’m sorry. Though many people would like to say “Ubuntu?” to me right now, it’s pretty much a-given that you have to know how to configure things, how to ask questions in IRC channels, and be brave to edit your system. You wanted free software? You wanted powerful software? You have to work things out yourself.  For this, I recommend that you become familiar with IRC (Internet Relay Chat).  By familiar, I mean you start your IRC client, and leave it running throughout the day. Every so often, pop in there and see what’s going on. You will pick up tips, you will hear things you might want to learn more about. This is the greatest learning centre for Linux in my opinion. In conclusion, make sure you are ready to learn more about your system. If you can’t be bothered, the Linux is not for you.

There is choice. Problem is that there might be too much choice.

Yes. You heard me right. People hear about Windows, Mac, and Linux. Want Windows? Sure, get XP, or if you like slow motion effects, try Vista. Perhaps you might want to wait for Windows 7 to come out too. Mac? Just get whatever is the latest in the store. Linux? *deep breath* Ubuntu, Kubuntu, Xubuntu, Ubuntu CE (Christian Edition), Ubuntu ME (Muslim Edition), Ubuntu Satanic Edition, Fedora, SuSe, OpenSuSe, RedHat, Gentoo, PuppyLinux, DamnSmallLinux, Debian, Linux Mint, PCLinuxOS, Mandriva, Slackware, Sabayon, CentOS … hell, the website LinuxCD.org sells CDs (by sell, I mean just enough to cover the costs of some guy mailing you a CD) for over 1000 distributions. Yes, count the zeroes.  That’s a thousand. Choose a web browser? Firefox. Konqueror. Epiphany. Links.  Lynx. Or even a GUI? Most of the people using other OSes would say “What? I can choose a GUI?” Not only that, you can choose from lots of them: GNOME, KDE, CDE, Fluxbox, Blackbox, Awesome, Ratpoison, XFCE. Each has it’s little niche that gives it the zing that might please you. Only tried one? Feel like missing out?  Feel confused which to pick? Yes. Choice. Another problem is that applications are built for different GUIs (I’m talking in non-technical terms here for the majority of users to understand). This means that a program might look really good on one GUI but not on another. Solution? Use GUI-engines. I’m sorry, the first time user would usually think “Hey, ugly” instead of “Woo, time to install gtk-engines-kde”.  In conclusion, unless you’re a person who cares about what applications you use and why, and want your environment customised to please just you and only you, sometimes the huge amount of choice can be a bad thing.

Gaming sucks.

I’m not a gamer. It’s true. I played KingdomOfLoathing.com. Every so often I might try out a MUD (Multi-User-Dungeon – like a command line based game) – that’s basically typing commands like “east, north, kill monster, look, take gold, south, list, buy shoes”. Yes, there are games like that. I’ve made a blackjack game. I play solitaire on my phone. Once in a while, if boredom has played its last hand and I’m in the mood to try something different, there’s always Worms World Party and some sort of Space Fighter Shooter thing on my phone (yeah, it’s a PDA sort of thing). What about my computer? There isn’t even a games menu on it. I’ve got no Linux games installed. The only fun games I’ve tried on Linux (apart from MUD clients) are KTron and Kollision. Those are arcade-ish time waster games. I’ve played Solitaire on my computer too though.  I’m sorry, but with new games coming out like Starcraft (oh, wait, did that come out 10 years ago?) or Halo 3 (wow, I’m out of date), your Linux box is not your penknife.  True, I have got Counter Strike running on my computer via WINE, but WINE is-to put it bluntly- a hack. You are a gamer that can’t live without playing your stuff, Linux is not for you.

The learning curve is steep.

Yes, it’s a whole new world. To survive and appreciate this world you need to have the heart and mind to want to learn about it, use it, and explore.  Otherwise it’s not for you. It seems as though all great things come with a price. (Except that this one is free) You wont find your Microsoft Office here.  You won’t find your Internet Explorer, Microsoft Outlook, or Microsoft Paint.  Yes, you’ll find things which are a hundred times better than them, but at first it’ll be scary, as you’ll be out of your comfort zone.

Hit the ground running, the world is turning.

The very nature of the open-source model is a bit like the self-service checkout systems used at major supermarkets nowadays, says Jeff Atwood. In a nutshell, when you use a self-service checkout system, you are basically doing the job of what the store would normally pay people to do. At the same time, because you are watched by security cameras, you don’t do anything stupid. The big difference is that YOU are the person who wants to get everything checked out as fast as possible, not the normal paid checkout guy. This is a self motivation thing. The result is that you do things the way you want it, and you get it done as fast as you want it.

Similarly, Linux development is done with the same principles. The developers don’t always just make what the user wants them to make, they make what they think will be an improvement. If they decide they want it a certain way, they make it because it’ll benefit themselves, because they enjoy doing it, and because of this, they’ll do it damned fast. Being on a source-compiled Gentoo system, every week I update my system. This is extra maintenance work, but I’m always up to date on what’s new. Trust me, there is A LOT of new stuff all the time. The rate a which things progress is amazing. So if you can’t keep up with it, you’re going to be running on a very jumbled system before long.

You’ll have to go underneath the skin.

The average user has only used graphical applications. If you have no idea what a command line interface is, imagine a computer without images and only able to type in text. Use your imagination and think about a crappily done science fiction movie where computer “hackers” do whiz on their screen, or perhaps those screens you see on the Matrix movie. To really use Linux, you’ll have to learn these commands, how to use them, and so on. This makes the learning curve steep (see previous point), but is also uncomfortable for some users. I know for example I have lost 5gb of information by mistyping a command. In conclusion, you’ll have to learn a lot about how things work, otherwise you’d be clueless and lost on your system.

A Linux user is an independent user.

Don’t always run to your grandson (or other more technologically savvy equivalent) when you need tech help. You need to know your resources. Nobody is going to babysit you. Why do you think sites like JustFuckingGoogleIt or LetMeGoogleThatForYou were made? Learn to use internet search. Learn to look at mailing lists. Look at forums. Look at IRC logs and channels. Read the inline documentation in the config files. And always remember to ask the MAN. (manual) If you aren’t comfortable with doing things yourself, you’re going to worse than a stuck pig doing whatever stuck pigs do.

Well, that’s about it for some of the more darker insight into the world of Linux. This hasn’t been written in the ranting style of Linux Haters Blog, but addresses similar issues in an informational (correct usage of word?) manner. I Hope you found it useful.

How to Actually Use Your Computer: Part 3

Wednesday, January 21st, 2009

Feeling in a rather procrastinatic (word?) nature, I’ve once again displayed my utter aptitude in presenting delayed articles. This is the third part in the series, so you might want to check out part 1 – a general overview on the types of computer users, and perhaps even part 2 – about web browsing, email & PIM, IMs, and document editing.

Right now, being 00:18AM (and counting!) I’m going to continue this series to talk about a few hidden tricks and activities you could use your computer for that you might not be accustomed to normally.

RSS Feeds

It’s amazing how many people who don’t know what an RSS feed is. RSS stands for Really Simple Syndication (yeah, really) and is basically a format of a web feed. In technophobe terms, this means it’s a fancy new way you can access information. For example, you can access your emails through your email client, you can view web pages with your web browser, and now you can view RSS feeds with, well, an RSS aggregator (or reader). Ok, it’s more complex than that, but that’s all you really need to know.

Let’s use a practical example to explain the usefulness of an RSS feed. Let’s say you absolutely love the thinkMoult blog, and you want to keep up to date on it all the time without getting extra spam in your inbox notifying you of updates. Well, like most blogs, we offer an RSS feed (hint: that was a link to our feed URL) You can input that URL into your RSS aggregator (which is a program you can download), and you can now easily view each post just as it is: a snippet of information, instead of laid out in this bulky (though beautiful) webdesign. It allows you to quickly parse information from all around the web in bitesize pieces. Don’t read too many blogs? You can also use it perhaps for comics, such as Dilbert or XKCD. Now you don’t need to remind yourself to check those pages for updates every time you’re online.

Multiple IM Protocols

Now, that’s just a fancy and technical way of saying MSN Messenger isn’t the only thing that exists. You can use Skype! You can use Jabber (such as GTalk), Yahoo chat, and there are so many other popular IM services that people use, you might just need to sign in to those accounts to make sure you can contact all your clients or important whomevers you meet online. I personally use Skype, MSN, and GTalk all the time.

You might find it’s a hassle to manage the multiple accounts, but fear not! There are less handicapped programs than your Windows MSN Messenger that actually support multiple protocols! For example, I use Kopete on KDE, and I can sign into all my accounts (save for Skype) with just one client. It really makes life easier.

Also, I know it isn’t exactly IM, but you should also familiarise yourself with IRC. IRC stands for Internet Relay Chat, and it’s what the whole online community used before other things got invented. Right now it’s still a massively popular form of communication, though mostly populated by people of the more intelligent and technical sort. It’s basically a huge chatroom (think 800 people per channel) categorised by topic. There are many IRC servers, though the most common is arguably irc.freenode.net. What you’ll need is an IRC client (try HydraIRC on Windows or IRSSI on Linux), and connect to the irc.freenode.net server. Once in, you might want to try joining some channels related to what you’re interested in. For example, I can be found regularly in #gentoo, #gentoo-kde, #gentoo-chat, #blenderchat, #vim, and occasionally some others depending on what I’m doing.

Set up a Personal Server

Yes, you can easily set up your own web server, even on Windows. You don’t need to be a rocket scientist. There’s this nifty little prepackaged LAMP setup (that’s Linux Apache MySQL, and PHP) in the disguised form of XAMPP. The absense of the L means it probably works on Windows, eh? The extra P is probably for Python or Perl, but I haven’t poked too much in the package to find out personally.

What use is a personal server? You can dump your files in it, give others your IP, and then they can easily download files from you. If you’re on a network (even through your router), you can easily transfer files from one computer to another at speeds reaching up to 1gb per second (either that or the little notification window lied). If you’re into webdesign, or need an environment to run PHP scripts, that’s the perfect place to do it! Or even if you want to use PHPMyAdmin (oh, the extra P could be that too) to interface with your MySQL databases (if you use them, of course) a server is probably the most useful thing you could have.

Set up some transfer protocols

We’ve all known the popular protocols, FTP, SSH, SFTP, Telnet, etc. Why don’t you set it up on your own computer? Let people upload files to your computer. Let people connect to your computer and control it remotely! If you have an X server, let people do X tunneling through SSH so from anywhere you can access your GUI applications. Or if you’re braver, setup a VNC server too so that you can control it as though you were sitting right in front of it!

You’d probably have to do some research on how to set these up for your operating system (for Linux just check your package manager), but it’s worth it. The ability to remotely access and manipulate your data from anywhere in the world is priceless. It has plenty of uses too! You can access your files from anywhere (that’s the obvious one). You can debug applications or even your failing router. You can have two people connect to one computer and run tutorial sessions, or do Extreme Programming (a style which involves two programmers working at the same time).

A word of warning though, please learn how to secure these connections, you don’t want random people poking through your stuff.

Well, that’s it for this part of the series. I realise it’s turned ever so slightly more geeky, so I promise the next part will be a lot simpler. If you aren’t of the technologically savvy type and you are reading this, you have a huge amount of research to do before you can find out how to accomplish all these things. However, repeat after me: “It’s worth it.”