20127January
I know someone who is a Linux enthusiast who recently landed a job where he is expected to do serious work around Linux. I offered some advice, and when I was done, though it may be worth sharing here. If he’s pretty nerdy like me, he’s probably wondering how he can get started right now, even though he doesn’t officially start for a couple of weeks. Below is the e-mail I gave him; it has suggestions to follow, particularly for someone who has a short time between after that first Linux job before actually starting. My next post will probably be suggestions to follow if you haven’t yet got that job, but are looking.
Learn POSIX or Bash Shell Scripting
If you want to get a head start, we do a lot of shell scripting, so you can have a look at these guides for getting started with shell scripting:
- Greg’s Wiki: BashGuide
- commandlinefu.com one-liners explained
- Advanced Bash Scripting Guide
Super hard-core nerdery and installing Gentoo
You previously mentioned compiling Gentoo. It has the reputation that you have to be super hard-core nerdy to be able to install it, but to be honest, I’d highly recommend against it; it’s mostly a waste of time, and the system it produces (if overlays are involved) can be quite fragile. The things you learn doing that are very Gentoo-specific, and not really useful for dealing with Linux in general. The best way to learn Linux is by using it. With distributions like Fedora and Ubuntu, you’re not really using Linux, you’re using Fedora or Ubuntu, which are using Linux. They hide much of the parts of Linux that we really use in our work. I would highly recommend installing Arch Linux, which is a pretty pure Linux system - you will learn how Linux works without all the extra stuff that is Gentoo-specific, and it’s pretty quick to setup and start using. If you want to go even more raw, Slackware is there, and the Slackware book is awesome.
Finally, the ultimate step (as far as building a Linux system goes) is Linux From Scratch. This is what separates the children from the grown-ups. You start out even more basic than Gentoo starts, and the skills you learn with this actually are generically useful. However, the system you end up with in the end isn’t that useful because you will spend a lot of time either maintaining it or developing tools to maintain it for you, and at that point what you end up with is your own distribution.
20101February
EETimes.com is reporting that according to ABI Research, ARM will overtake the Netbook market by 2014. This is exciting for a couple of reasons. ARM is just an IP supplier; it’s still up to foundries to make the chips. Also, the nature of ARM devices is that they can be easily modified by third parties. This means the CPU market will be much more diverse than it has been for a while. The other exciting reason is that Windows (except for Windows mobile, which is worthless) doesn’t currently run on ARM architectures. We will most likely have much more Linux out there. Either that, or Microsoft steps up their effort on ARM architectures, which is also exciting.
20106January
There is much discussion of i4i’s U.S. Patent #5787449 and their request for an injunction of the sale of Microsoft Word. Unfortunately, many people have the wrong idea of what is happening. The patent deals specifically with the implementation of a certain feature in word - the ability to add your own custom XML schema and tags to a document. This is not about the .docx format, and it isn’t about the feature itself; it is about the feature’s implementation.
XML documents are structured documents. The structure is represented by tags within the content such as the following:
<document id = "112358">
<type>book</type>
<title>A guide to writing guides</title>
<author>Jane Doe</author>
<publisher>McPublisher</publisher>
</document>
This code is meant to be machine and human readable. Typically, a person will view the document with a special program that transforms the document into a more presentable format and shows the relevant information, formatted in a way that is easier to read, without the tags in the way.
A challenge comes when it is time to edit the document. A person could certainly edit the code directly; it is, after all, meant to be accessible to both humans and machines. This method, however, can lead to errors. It is also taxing on the person to have to enter the tags manually. It would be much better if the person could edit it the way it looks when it is presented nicely.
There are a couple of ways that might immediately come to mind about how a computer program might be written to do this. The first is to display the document in a well-formatted way, and have the tags be present in the document, but not visible to the user. The other way this could be accomplished is to have the document represented internally in a different way - the content is in one piece like this:
112358
A guide to writing guides
Jane Doe
McPublisher
and the structural information is in another piece, separate from the content. One might imagine a list of tags and pointers that point to character locations of where they belong:
document 0
title 9
author 37
publisher 48
...
The second piece is a map that assigns certain tags at certain locations in the document.
It is apparently Microsoft’s Custom XML feature that implements this mapping method and that may be infringing the patent. The patent actually doesn’t specifically reference XML, it is more generally for any separation of document and its structure. However, the company specifically makes software that deals with XML in this manner, and this is what they are looking for an injunction for. I will be very surprised if the patent is ultimately found to be valid; there must be some prior art for this method.
I hope that this explanation helps to clear some confusion surrounding the issue. If you have an observation to add, please leave a comment below.
200912December
This article is prompted by the recent news of Gnome considering a vote to split from the GNU project. The GNU project is a software development effort to create a free Unix-like operating system. Indeed, much of the software tools used in Linux (a Unix-like operating system) was created by the GNU project. Much of the philosophy of the GNU project came from its founder, Richard Stallman. Stallman advocates that free (as in freedom) software is the only acceptable kind; any software that removes a person’s freedom is an assault to that person’s inalienable rights. Stallman’s definition of freedom includes a person’s rights to run a program for any purpose, to redistribute the program (either for no cost or for a fee), to modify that program to suit his needs, and to distribute the modified program.
A bit after the GNU project had gained some momentum, Linus Torvalds saw the use of the software tools created by the GNU project. Torvalds had been working on his own project: an operating system kernel called Linux. The GNU project by that time (around 1991) had released some quality software, which Torvalds saw fit to include with his operating system.
Over time, the GNU project also created a software license called the GNU GPL. The license codified Stallman’s philosophy into a legal document. It included terms that required distributors of GPL-licensed software to also distribute the source code to that software. Also, any GPL-licensed software that was modified also had to have the modified source code distributed with the with it. Torvalds wanted to distribute Linux for free and realized that having any modified versions of his code would be beneficial, since he could then incorporate that modification in his own system. Because of this, Torvalds released Linux under a GNU GPL license. Many other people followed suit.
At that moment, two different people with different goals shared a similar means. Ever since then, people of one mindset or the other would associate themselves with the seemingly same community. They called it the Free Open Source Software (FOSS) community. It has seemed to work okay for a while, although there has always been some amount of friction between those who are in it for pragmatic reasons and those who fight for the human right to free software. The pragmatists are making deals with companies that produce proprietary software. The GNU crowd is making very public, very bold statements that don’t represent the views of everyone involved. This friction has begun to start fires.
Arguing for one viewpoint or another is not going to tear “the community” apart, as some people believe is happening. This is not a community to be torn apart; it is two different communities, and it’s time for people to realize that. I do believe that once this becomes accepted, people will be much happier and more productive.
What do you think? Two communities? One community? Post your comments.
20094December
In my communications for engineers class, we had an assignment to write a paper in the style of a technical journal in our industry. Since the subject of extensible processors has recently caught my interest, that was the topic of my paper, and of course, it is in the IEEE Transactions format. You can download and read the paper here.