Hey there guys, I’ve noticed that I’ve gained more and more followers in recent days. I guess I should probably point out that this blog is now largely unmaintained, as it was superseded by my other blog at WordPress. It’s probably best to get in touch over there instead of here, because I rarely check Tumblr.
Anonymous asked: Thanks for the detailed answer. First: is there any chance to get in touch w/o tumblr? jabber? snippl[at]jabber[.]ccc[.]de second: I'm using debian for years now. and yes it is stable and i like that. even testing is very stable, I use it every day as desktop. My problem is not the free software stuff, you can get rid off it. My problem is the actuality. Some stuff is just too old and when i need to build stuff myself, why using debian with apt? unstable on the other hand is just too risky.
Hi there, I’m glad I’ve been helpful in some way. I’m sorry but I don’t use jabber or very many social networks; however, you can find me on twitter at @solpeth. That’s a very important point you raise about Debian: it often lags far behind upstream which can be downright frustrating; who doesn’t want the latest software?
As a side note, if you have any questions about Gentoo, the guys over in the #gentoo channel on irc.freenode.net are extremely helpful, and far more knowledgeable than me. If you require further advice I would most highly recommend checking in there; you’d be surprised at how well some people know the Gentoo system.
Other than that, I really wish you luck with whatever Linux system you do end up using! If I were in your situation, if I only had to download and compile new software at home - and not at work - then I would use Gentoo. Of course I have a slight bias, but it may be worth noting that I do use Gentoo every day at my school and for actual work. It’s not to be mistaken as a hobbyist’s system; it’s the only Linux distribution I will wilfully install on any computer of mine, because it’s the only one that I fully trust to work, because I am in charge every step of the way.
Anonymous asked: I started to play around with sabayon a little bit. I've tried gentoo a few times and i really liked it. But however the time aspect is vital to me. And for my work I need a OS that just works and where I can get software/system updates quite quick. So my question is: Do you know a way how I can get a minimal install with sabayon, kinda like a gentoo one? I've tried the spinbase image to install, but unfortunately it gives me no choice to partion myself and i found no answer regarding this issue
Hey there, thanks for the question!
It’s good to hear that you have played around with pure Gentoo rather than a derivative such as Sabayon, but for the workplace time constraints can make Gentoo difficult for the initial setup, as well as for installing packages from source which have no binary equivalent in the Portage tree.
But the issue lies with what is most important. Do you need the most up to date software, always, available in binary form? Go for Arch Linux. Its package manager is blazing fast, the system is minimal and clean, and updates are available almost a quickly as upstream releases them.
But with this comes the issue of stability, which Arch inevitably sacrifices for faster updates. In the end, it comes down to what is more important. Some major packages are tested on Arch, whereas in Gentoo land you will be pressed to find an unstable package, given the rigorous testing policy.
So, given all this I will try to answer your question. For a specific test case where something like Sabayon or openSUSE cannot satisfy, your best bet is to go with a ‘DIY’ operating system like Gentoo or Arch. Due to time constraints in your case I would highly recommend Arch, and I’m sure you have the computer wits about you to keep on top of any rare instabilities that you may encounter. They are generally well-documented on the always up to date home page of Arch Linux.
The fact of the matter is trying to get a minimal operating system from a vendor trying to cater for the broadest audience almost never works well. It’s often better to start with the bare essentials and go from there. If resources permit and you wish to use Gentoo, you could always set up a build server and pull the binary packages built from there. Unfortunately I cannot provide any help with this, but this is well documented on the Gentoo website.
Otherwise, your best bet is Arch. Give it a try on some non-critical systems if you can for a few weeks, just to see how everything works. I’ve never used Debian because they have put me off by sacrificing usability for extreme Free Software Foundation compliance, but I’m sure you could also give that a try. I hear it is very stable; then again, I’ve never had an issue with Gentoo or Arch. Best of luck
I believe that there is only one way to do software right, and that is by developing in the open, giving source code access to all who would wish for it. I use the free and open-source adaptations of everything, such as for Java and Adobe Flash, unless there is no such working adaptation in existence.
The great thing about the GPL is that it guarantees this freedom and open-source nature for the life of the software. The source code must always be available, unconditionally, for every developer that wishes to improve on and publicly release the code.
Now, this therefore seems like the perfect licence for the free and open-source community, but is it really that free?
I don’t particularly agree with the fierce activism of the Free Software Foundation unless I’ve had an earful that day from a Windows or Mac user preaching about the superiority of closed-source, proprietary systems over open-source, free systems. That is when I really see the necessity for the Free Software Foundation, and thus it makes sense to protect our code with copyleft licensing.
But the issue is that the GPL, spreading virally and forcing more and more freedom and open-sourcing in the entire community, ignores all other open-source licences. Take this for example: a BSD project develops a device driver and releases it under the Simplified BSD License. Members of the GNU/Linux community take this code, improve further on the code, and then release it under the GPL. Now, this presents a major problem: it just fragmented the two development trees of the BSD and GPL communities.
Due to the GPL’s terms the original BSD developers cannot merge any new improvements made by the GPL developers, but the opposite can still occur. In a sense, this is reflective of what the GPL fights against: the stealing of code by proprietary companies. Unfortunately, however, virtually the same thing has occurred in this example, with the only difference being that the GPL’d source code is available, but untouchable unless the BSD developers re-license their code to the GPL. This is a saddening example of dominating nature of the GPL; its viral spread demands GPL adoption, or creates fragmentation within the free and open-source community, between the GPL supporters and everyone else.
The above example actually happened with an Atheros driver, published with a BSD license. Instead of improving on the original development tree, a fork was made and licensed under the GPL, creating a divide that it so commonly creates. How is this helping the spread of free and open-source software?
Demanding freedom by force and lawful extent is not the way to get people to believe in a cause, because only the true supporters of an idea can follow it without persuasion. Freedom by forcing all to abide by your interpretation of the concept is akin to communism: you are welcome within the GNU community, until you start opposing their ideals - in other words, messing around with the GPL and its heavily political nature. And that is when the GPL kicks you out of its community, and you generally end up in the BSD camp.
The terms of the GPL are about fairness: a common notion is that when getting paid to develop for a company, you are paid to develop behind closed doors. When you are working with the open-source community, it is only fair that what they get remains free forever, for all who support and uphold the ideals of the GPL. For any of those who wish to violate these terms by making the software proprietary, GNU will deal with you.
Perhaps in theory the GPL appears to be the perfect licence, but as depicted in the above example, fragmentation in the open-source community due to the GPL is a common problem. For GNU, it is either the GPL way, or no way, even if both ways are free and open-source.
While the GPL provides great protection against proprietary companies, it comes at a great cost to the rest of the open-source community. Any code touched by the GPL means that any following renditions to the software will also be licensed under the GPL, generally overriding the terms of permissive, copy-free licences preceding it. This is seen as immoral, ignorant, and counteractive to the common goal of a free and open-source world.
When using permissive licences there is a perceived risk, that anybody can take your code and turn it into proprietary software. But this does not render the original open-source project as useless. In the vast majority of cases, the proprietary companies will want to work with the open-source project to help further development together; it is cheaper for the company, and arguably of a better quality since the project is guided by the visions of the developers, and not the company. This is an example of mutual benefit: to have the open-source and proprietary worlds co-exist as one, instead of the image engendered by the Free Software Foundation of the proprietary world as evil, and therefore being kept isolated from the open-source communities.
If the company is serious about development, it will pay the developers to work on the project. The project remains open-source, and while there is a proprietary product based off of it users can always choose the open-source option. It does not simply vanish because of the interests of a business.
The next time you start work on a project, instead of again selecting the GNU GPL licence it may prove beneficial to consider the choice more carefully. It can be difficult to accept the openness of permissive, copy-free licences because of the Free Software Foundation’s portrayal of the proprietary world, but the only way that open-source can survive in a proprietary environment is through permissive licensing. Without it, we will forever have this unabridged divide between the fiercely campaigning GNU supporters, and the capitalistic businesses eager to maximise their profits. Instead of focusing on keeping free and open-source software free by eliminating all other non-free possibilities, it is much less costly - and far more friendly - to reach a common agreement between the two camps; to make peace, with a permissive licence.
Anonymous asked: I think Gnome 3 is a good thing. It shows that people are still re-thinking the desktop, and that they're willing to take a chance. Other people who don't like what Gnome is doing can (and have) gone in different directions. That's one of the things that's so great about free software. Personally, I use LXDE now, but I'm always glad that we have lots of options. I'll switch to whatever best suits my needs - so choice is good.
Hey there, that’s a very fair answer, and I agree with choice being a good thing. The problem is that GNOME alienated a lot of users who chose GNOME 2 over GNOME 3 (and still do to this day). They removed a lot of customisability from the shell and general workings of the desktop, which is against a lot of what the Linux desktop has come to represent. Regardless, it utilises a very efficient desktop paradigm, and I admire the true uniqueness of the design, but it isn’t for me. I’ve tried each release for two weeks at a time, and I’ve still never been able to fully warm up to it.
These days, the argument of GNOME 3 alienating GNOME 2 users has less worth since the birth of the MATE desktop environment. And in the end, choice does wonders in the Linux world. Thanks for your comment.
Anonymous asked: I used to think RMS was too extreme, but then I spent some time reading what he had written and viewing some videos or talks he had given. He really makes some very good points, and his whole philosophy is pretty solid. Right now I can't make the same commitment to Free software that he has, but I have to respect him for taking a stand. - stuart
Hey Stuart, I have to agree with you. Interesting that you should mention this now, because I was just pondering what the world of free software would be like without Richard Stallman’s contributions - and it looks grim. The philosophy of GNU and the Free Software Foundation is extremely solid; they take a very concrete stance on a number of matters, and this is definitely a strong point. What I admire about GNU is their commitment to software freedom, especially enforced through the GPL.
I really don’t think we would have the software freedom that we have today without GNU. Even the BSDs wouldn’t cut it, being licensed under an almost clause-less license, and we saw Apple taking advantage of FreeBSD for Mac OS X development. Imagine if the Linux kernel were under such a free license…
I agree with you in respecting Richard Stallman; he really has done a lot for the free software community since he created GNU many decades ago. Thanks for your comment.
P.S. It was late at night when I wrote this up, I apologise if it isn’t as coherent as I (and you) would like.
I have never understood why the simple decision about coding style erupted into such a holy war amongst programmers. The majority of these fierce cries and complaints attack other coding styles and proclaim their own style as something of a ‘silver’ bullet. And yet, these comments have the grammatical adeptness of a three year old.
This makes me think that the majority of this holy war is fought between the mass of younger programmers, who unfortunately become involved in such meaningless debates.
Of course, the majority of programmers will toy around with different coding styles, in terms of tabs or spaces, indentation size, brace style, and whatever other quirky convention the human mind can come up with. I too did this, messing around with GNU style, K & R style, and KDE style. If at all relevant, my favourite of these was the KDE style (and by KDE style, I mean the style dictated in their Kdelibs policy).
I soon concluded that putting so much emphasis on coding style was detracting from the main point of coding itself. When you code for another project, it’s likely they have their own policies in place regarding coding style. And, if you’re going to be the only programmer reading your code, why bother trying to decide which is the best coding style? It’s like trying to decide which date format is better: YYYY/MM/DD, DD/MM/YYYY or MM/DD/YYYY. In the end, they all mean the same thing.
My recommendation, therefore, is to pick a coding style that is as simple as possible; no quirky conventions, no exceptions, just straightforward rules. Perhaps my favourite example of this is the style commonly known as the One True Brace Style. It’s simple and legible; that’s what we use coding style standards for, right?
If you complicate your own coding style too much, when you end up work on a foreign project you’ll find that you become frustrated with the standards that are in place: ‘why, these uncultured monsters break all of my coding rules!’
If you put that much emphasis on coding style, you need your priorities checked. And while you’re at it, take an OCD test. In the land of the programming gods you will find peace; there are no holy wars fought over such trifles. After all, they are gods. They know what is right and wrong.
Down here, where every just-turned-twelve programmer argues and cries over coding style, just try to remember what is important. Not only will you be doing yourself a huge favour, you will also be distinctly separate from the lowlife programmers fighting more holy wars than quashing bugs. It is only then that you can smell the roses, realise the more important aspects of programming, and become a true master of your craft.
By using a smart pointer instead of a regular pointer, the pointer automatically manages its own memory allocation and deallocation. Thus no manual memory management is necessary.
Smart pointers have a significant advantage over C-style pointers, especially in larger projects where manual memory management becomes infeasible. Memory leaks are more likely to occur using C-style pointers due to the size of the project, and managing new and delete allocations and deallocations is time lost that could be better spent elsewhere.
Thus, the argument can be made that smart pointers increase productivity, and improve the robustness of the program. The programmer will never need to worry about headaches down the track concerning memory management.
For this reason alone, using smart pointers is an advantage for using C++ instead of C, at least in the application development domain. Using smart pointers has a very small overhead, and hence C-style pointers should be avoided in general-purpose programming when using C++. Herb Sutter, a prominent C++ expert and member of the C++ ISO Standards committee, claimed in his recent talk, ‘(Not Your Father’s) C++’ that the committee is no longer recommending people to use the keywords ‘new’ and ‘delete’.
Using these keywords makes any program prone to human error, and hence allowing smart pointers to do the work for you is much safer.
Let’s look at an example.
The following line creates a unique pointer of type ‘Employee’, and allocates memory for the object ‘foo’ the size of Employee. It is analogous to:
Employee *foo = new Employee;
So, the smart pointer way:
std::unique_ptr<Employee> foo(new Employee);
For reference, here is the Employee class:
While using C-style pointers requires fewer keystrokes, using smart pointers means that the programmer does not need to explicitly call ‘delete’, which is an invaluable advantage. This is especially advantageous when the programmer has to look after multiple instances of memory allocation and deallocation.
I want to digress slightly and mention the never-ending C vs C++ war. It seems that the vast majority of people who criticise C++ have either never used it in its modern form, especially with C++11, or were too closed minded too look outside of C’s procedural programming paradigm.
I am no expert programmer, but I’m beginning to see C++ develop into its own language. For a long time, it seemed like a half-hearted experimental C remix. Now, it definitely feels like a highly polished language in its own right. The comparison between C and C++, therefore, is irrelevant in today’s world: C will always be the minimal, simple language that it was created to be, and C++ is now (finally) taking gallant steps forward to keep C++ relevant in today’s world.
Has it done it? Certainly. And, I assure you, it will only improve from here on.
Anonymous asked: in "Why I Still Choose Gentoo" you tell us that "Portage is a brilliant package manager. Of all that I have used, it has still remained my favourite. A close second would have to be Arch’s Pacman" ... whaat!? why arch packman and not sabayon entropy package manager wich is 100% compatible with portage!?
Firstly, the speed of Pacman is truly unrivalled; I found it considerably faster than Entropy. This is not in terms of my download speeds, but there was something with Entropy that was lagging behind. I’m not sure if it’s to do with the fact that Pacman is written in C, whereas Entropy is written in Python, but I doubt it would have such an impact on the performance. Regardless, I dreaded when I had to install Sabayon between releases, because I’d end up waiting three hours just to get a fully up to date system.
Arch’s Pacman - although not entirely intuitive (e.g. -y means refresh) is straight forward, clean and lightning fast. It also has support for package groups, which makes it incredibly simple and flexible for installing software, such as KDE SC or GNOME.
The syntax highlighting in Entropy is fantastic; it was a huge reason why I enjoyed using it so much. I’m not sure if Entropy has this option or not, but the last time I used it it did not have an equivalent of ‘—depclean’, which is a necessity for me, but please correct me if it did.
In the end it comes down to preference. You really have to use both and see which better suits your needs. For me, if I’m going to be using a binary package manager where I will be losing the flexibility of source-based package management, I want something like Pacman.
On another note, I don’t understand how you can call two package managers compatible, unless they can directly build and/or install each other’s packages. Thus I am not seeing how Entropy is at all compatible with Portage. The Sabayon build servers pull ebuilds from Portage, build them into binaries, and push them into the Sabayon repositories. As far as I’m concerned, this does not mean compatibility at all.
Thanks for your comment.
Linux users - hell, even BSD users - have been known to criticise Gentoo for its installation method, usually because these users tried installing Gentoo and failed. This is a bad mindset to have; while graphical installers are superb, the aim of Gentoo is not to be newbie friendly. Unfortunately, newbies tend to have little patience and open their mouths wide for a large corner of the Linux community to hear, but the problem is not with Gentoo; it is with the user.
The first time I installed Gentoo, it took me a good three hours just to get a base system installed - only because I reread each line in the handbook at least five times to make sure I hadn’t missed something. I was extremely paranoid. I ran into some issues, but they were all my own fault, not Gentoo’s fault.
These days, Gentoo takes me under an hour to get a base system going, and about 6 to get a fully functional OS up and running with X and KDE. I never run into problems because instead of blindly reading the documentation (this is a bit of an oxymoron) I understood what was happening in each step, and why it had to happen. And let me tell you, knowing what’s going on puts you into a whole new world of comfort using Gentoo.