Thursday, August 21, 2014

The Year of Linux Desktop. Is it coming anytime soon? I don't think so.

Before you start raging about how wrong I am, please listen to what I have to say then draw a conclusion.

I don't think Linux is ready to be a desktop. It's too fragmented, which is one of the issues for me. To me, fragmentation is only part of the problem. Right now we have too many flavors; it's hard for a developer to deliver a commercial application and is expected to support all types of distributions in which all of them has different types of libraries versions. It's like someone developing an application in a bleeding edge environment, the person uses the latest libraries and then find out that people using stable distributions such as Debian 7, CentOS, RHEL, etc can't because they are using a shiny libc6 2.19.

Yet. That's not the problem, not at all.

It's hard to make a person who doesn't use GNU/Linux to be comfortable. You can all be screaming about how open and great it is, how you feel great about leaving Windows, how you feel great using the terminal.

And that's the problem. For example, I don't need my father to know what is a package manager or what is apt-get or yum or how to configure NVIDIA drivers so he can play whatever he wants.

Why should an end-user worry about the terminal?
Why should an end-user worry about what is an stable/rolling/semi-rolling release?
Why should an end-user worry about package managers?
Why should an end-user worry about dependency hell?
Why should an end-user worry about about the latest libraries?

Everything I write here are opinions. They can be dumb, enraging, stupid, serious, fun, etc. I like writing my blog posts, even though I know people aren't reading at all. 

My point is that a "normal" person shouldn't give a fuck about any of those. You can argue that it will help him understand linux better. Have you ever seen someone browsing through Microsoft Windows registry to see how it works? Have you ever seen someone trying to figure out how everything is structured in C:/Windows to learn how Microsoft team organizes their shit?

No. A normal user shouldn't even use normal commands like "cd" or "ls" or "grep" or whatever.

Just a note: I'm not saying that a person CANNOT learn it because it's complicated. I'm saying that they shouldn't do it because his/her perspective will say that in Windows he doesn't do anything like that.

I think that GNOME 2 did a great job. I think that KDE4 does a great job. I think XFCE doesn't do a great job, it feels way too conservative.

I feel like the problem right now is that whoever is designing all these stuff--which by the way, thank you for your hard work--is just concentrating in the pretty visuals instead of having a balance between usable and functional.

The biggest challenge to those working on full fledged desktop environments is how can we prevent the user from opening the terminal? it's a challenge alright, an impossible one I might add. Why? Well, what's the first thing an end-user is going to find out when he/she starts troubleshooting on why his/her wireless is not working on the chosen distribution? A terminal will be involved. There's no "device manager" interface (if I'm not mistaken there used to be one).

It's not the same telling someone to go to Device Manager in Windows than telling someone "go open the terminal, type lspci, type modprobe whatever, type lshw, type apt-get whatever". Chances are that the person will go insane and come back to Windows because it's too much of a hassle.

I'm going to make an assumption and say many of you think it's okay for a person to put efforts in reading documentation and learning about shells and how they work. I don't think you are right.

If anything, a desktop environment should, in my opinion, be intuitive, straightforward. Sometimes we don't have that.

I would genuinely feel sorry if they are thrown to use distributions like Arch Linux and be forced to use xmonad, i3, openbox, etc because that's just not how it should be. Everything is about choice, yes, but how solid and stable is that choice?

There's been something on my mind for a while but giving support to Linux users is a bit complicated, especially if they have never been exposed to the terminal. Now I'm going to change the subject:

I want to advocate to the many GNU/Linux users out there to use stable releases. Let's take a note: Windows XP and Windows 7 have been hell successful. They have been receiving security updates and bug fixes most of the time. What they don't do however is upgrade the latest software. 

That's where it gets tricky. If I want a stable release then I will have to sacrifice updates on software, and I can't install new versions of that software unless I compile it myself, or download the binaries, or use a backports repo. In exchange, I get security updates.

But now I mentioned two things the end-user shouldn't know about: compilation and backports.

Let me know your thoughts. What you think of Linux as a Desktop? Will it ever make it?

Wednesday, August 20, 2014

dpkg -i mistakes-0.10.deb: 24 hours into Fedora 20

I did a very stupid mistake yesterday. Oh yes, I did learn from my mistakes very much, thank you!

So I installed Fedora 20 on my main desktop. As some of you know I use Debian 7 (Wheezy) for my main desktop--isn't that "old"? Well, I can play Skyrim, Guild Wars 2, install the latest NVIDIA drivers, etc, so yea, it works wonder for me.

That's not the point though, far from it. I had problems with Fedora 20 I never thought I would run into, maybe because I'm not that experience with its whole ecosystem and vast libraries. However, I'm more of an end-user than anything else. There are things in Fedora 20 that were real deal breakers for me.

Just a note: This post is not meant to be an attack against Fedora distribution or its users.

I told myself yesterday, "you know what? I'm gonna go install Fedora and use it until Debian 8 is out", and that I did! After testing the distro in my overly abused virtualbox hard drive it was more than obvious that Fedora is a very stable distribution.

So, let's start with things I didn't like so we can later concentrate on things I did like:

Fedora 20 Installation process:

Fedora uses anaconda to manage all the installation tasks, get the user info, etc. One of the things that was a heavy deal breaker was how IMPOSSIBLE it was to create a partition with rest of the space available. The case was the following:

I have my /home separated, like any sane person would, and well it was a total of 4 partitions: /, /home, /boot, /another_partition. These were existing partitions and they have never failed me in any way. So, what went wrong?

Fedora didn't want to use the remainder of the space left for my root partition. What it did was the following: It created a root partition of 8.523 GB, and there was NO WAY to alter that value because it would revert to it.

After battling with the partition manager--which I wasn't that comfortable with in the first place--the installation finished. I booted it up, entered my credentials and surprise! Another issue: I think this is because Fedora 20 has SELinux in a more strict mode, I'm not sure if I'm correct here. The thing is that they were permission errors and I had to do a restorecon to fix my /home and finally it would let me enter.

It wasn't much of a problem. I won't lie, I thought Fedora messed up my /home partition, it scared the hell out of me. Usually I've done like 4-5 retaining my /home partition with no backup. I know, I know. It's a bad idea, right? So anyway, it was a solid KDE experience. Everything worked! So you know what this means right? Install ALL DEM APPS AND DEPENDENCIES!

Alright there's a problem. I love yum. I love how cohesive it is, you don't have the silly "apt-file, apt-whatever", instead you can use yum whatprovides and it works flawlessly. BUT! The naming convention for the libraries is a bit nuts. You can have lowercase library names, you can also have lower/upper libraries and it's MADDENING. It's not a big deal, right? Well, that's what I thought until I ended up wasting more time reaching my shift key and deleting characters, even the tab for auto-completition didn't help.

I could live with it though. But then the following case happened: I installed steam through rpmfusion. It was easy and straightforward, yet finding the DEPENDENCIES for each game was itself the biggest chore ever. And some of the dependencies I installed didn't even work when ldd reported to me that the library is not found. The dependencies problems were making me go insane because not only that happened, I couldn't even play a mkv/mp4 video because for some reason it didn't pull the libvpx.

Now, I know that what I'm going to say may or may not bother you but: In Debian if I pulled from the repos mpd or smplayer it made sure to pull all the required and optional libraries. You might object "why install the optional library?!", for the very same reason that we must think of the end-user. It's not about having a tidy, minimal installation. To me, if you can't provide a decent experience that I have to go on hunting then there's something horribly wrong with the user experience.

Now, without further ado: What I liked about Fedora 20:

- Stability. It felt incredibly rock solid for a distribution that has like 2-3 years cycle. I do wish they extended the support up to 3-4 years but Fedora is bleeding edge itself and they do a seriously great job.
- yum - I really like yum, like I said before it felt really great using it.
- Installation - Despite my crappy experience with the partition section, the installation was the shortest and most straightforward thing ever. This is great for anyone lacking technical experience.
- A polished KDE experience
- Useful sites and tools like Fedy, rpmfusion, fedorapeople repos.

I went back to Debian. In less than 2-3 hours I had my setup running with all the applications I used. Funny enough before running apt-get install kde-full I installed openbox, lightdm, thunar, xterm, smplayer, zsh. I mounted my other hard drive disk and proceeded to watch TV Series while kde-full finished installing.

Will I revisit Fedora? I think that yea, maybe in a near future I will. But not as my main OS.

Saturday, August 16, 2014

Happy Birthday, Debian!

One of my favorite distributions, Debian, finally turned 21 years old.

It's okay Debian, people joke about you not having the latest packages (while ignoring unstable exists), but most of us who want a peaceful, solid experience will always prefer Debian stable. Yes, I use Debian stable in my desktop, no, my computer isn't old :P I can play modern PC games with no problems.

Thank you, Debian Developers!

Wednesday, August 6, 2014

[Debian 7.6] Nepomuk file indexer, why are you so useless? :(

The place where I live have power outages. Something that I can't control, sadly. I've noticed that while the file indexer is running and there's a sudden power outage, or maybe I pressed the reset button by mistake; it makes the whole KDE environment unstable. Prime example would be Dolphin, it takes like a minute or two to launch.

DBus error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
How to solve the problem?

Disable the file indexer. Something I didn't really want to do to be honest, there's no other way. Well, more like I don't want to invest my time on something that should work out of the box. I wish it had a mechanism where it could automatically get rid of corrupted files, that would be more ideal than having the user delete the corrupted file. Bugs like that kills the user experience, and that for me is unacceptable.

No, no. I won't upgrade or change my distribution. Distro hopping is never the answer. This is one of the things I dislike about Debian is that once a freeze happens, packages won't get updated unless it's a security issue. Even if the package receive bugfixes as minor bugs (lets say 1.7.1 becomes 1.7.2) chances of it making it to the repositories are dim.

Tuesday, August 5, 2014

In The Spirit of the Open Source Community

This post will probably annoy the hell of you and many people that are too far away from reality in OSS land.

This is related to this reddit post and the insane amount of people going to the extreme.

First of all, I'm not going to pretend or be that guy that's always chiming on how open sourcing stuff is always better, or why open source software is good. Let's be frank here, there's a high chance that most people saying that:

1) Aren't developers. Yea, yea, you played with code before, but what are the chances that you have contributed to an open source project yourself? Oh, don't mind me! I know there are people that contribute to some projects; I dare say that the people who say that however, doesn't. But let's take a more realistic step, how many people have developed a full open source solution AND profit from it. Besides the top guys from Red Hat and other companies? I've rarely read successful stories. There are bills to pay, people.

2) They aren't objective when it comes to commercial software. One of the things that I really, really detest about the open source communities is that, no matter what the whole discourse feels like an slap to developers that want to make a living with open source. Everyone wants free of charge software. Appreciation? Hell no, fix the bugs first you lazy dev! Also, what is the matter with that code you just wrote? Do you even know how to program at all? [insert dozen of negative (vitriolic) comments about how useless is the developer, because you know, doing it for free wasn't enough for them]

3) The famous phrases:

"The good thing about open source is that the code is open for everyone to audit, improve. So if there's a bug or a feature...". Well, the thing about that is that I've seen old and new open source software plagued with bugs and guess what? Nobody has come in and fix them. It's not always the case, and people shouldn't rely on that every time. Even popular software like GIMP has bugs in some part of its UI (usually minor bugs) and chances are that no one will do it themselves.

"Then I can fix a bug myself" -- ... really? I've always felt the need to yell "bullshit" when users state that. Especially when it comes to projects that have a huge codebase.

4) Micro$oft is evil, they make terrible software and the drivers sucks. -- The first part I want to say is all relative to which software is in question. Honestly? I've RARELY had problems with software on Microsoft Windows. The second part, the drivers aren't created by Microsoft (I hope you are getting the gist). Is Microsoft fully at fault? Not really, of course you are set to believe whatever stuff you want.

What troubles me so much about these type of people is how irrational their hatred is against Microsoft (almost as if Ballmer came in personally and beat the crap out of his/he family, stabbed the dog and killed his/her grandparents). I just can't participate in a community that have this sort of people in it. Sure I can tolerate a dozen (hopefully not at the same time), but 100 or 200? I'll just hop to another community in the hopes that there are rational human beings.

Also, it doesn't help that the time spent configuring your desktop which I would say it takes hours, depending on what you want to do with it, and the fact that sometimes software have annoying bugs in them (Hello, Nepomuk and KOrganizer) takes a lot of time to search the cause and solution.

Why do I bring this up? Because it hurts me. I want to create a project, open source it and you know, profit from it. The reality is that that won't happen because for some reason people take it as granted that if it's open source then they won't have to pay shit, nada. Sadly, I'll be stuck in a software company writing proprietary software while keeping my kickass open source solution as a pet project. Isn't that usually how it goes though? Everything starts small, suddenly you see all sorts of individuals poking around the mailing list or forums that they want support and you know you don't have the time because then there's this thing called family and your full time shift is draining you to hell.

I suppose I should go to r/linux and tell them how frustrating it is. Of course that won't happen. I do expect people to understand me; however I don't expect majority to agree with me, or even acknowledge the problem. Of course all these what-ifs and assumptions won't get me anywhere, but most of us know the drill. It's like going into r/skyrim and tell them how much the game sucks and you know that people there will downvote you to hell, even if you have legitimate reasons. But you know, if you aren't open sourcing your code it means you are a pretty shoddy programmer. *facepalm*

While the tone of this post may sound "angry". Which I'm not really, sad would be my current state.

It's pretty easy to talk about ideals and burn people in online communities. Hell, I expect to get a load of shit in the future because that's how it usually goes, sadly.

Entering The World of Haskell

There's this thing that baffles me when it comes to picking a new language. I was supposed to learn C++ but honestly I don't have any drive to learn it at all. I don't have any use for it and while I want to contribute to projects I just don't see many open source projects taking pull requests from a starter like me. 

This are my reasons right now of why I don't feel like learning C++:

- There's nothing interesting about it... fine, not a good reason if I do say so myself, but it's an impact to my motivation
- I have no use for it. If I can't do it in Python, chances are that I'll be doing it in Java. Weird, I've chosen those two languages as my go to ones when dealing with clients, etc. Worst case scenario is that I'll be using PHP.
- I want to contribute to an open source project, yet I feel like they'll reject my contributions. C++ is widely used for many things: traditional applications, games, servers, system programming, etc, etc. 
- I'm interested in system programming but I don't know where to find the right direction. (materials, books, etc)
- Motivation plays a big factor when learning a language. 
- I find C++ to be a bit nuts...

What motivated me to learn Haskell?

It's the first functional programming language I take on. I've been reading Learn You A Haskell for Good and so far I've been pretty impressed by it. Especially the list comprehension part, it blew my mind the many things you could do with it in terms of filtering, or well, adding multiple predicates. 

This is from the bottom of my heart: I find Haskell to be fun. Yea, if you are one of those programmers that facepalm at the thought that "programming is fun" then this post isn't exactly for you. However, I do agree that the whole bullshit "code is poetry" or "code is art" needs to go. 

And you know, fun is good. Would I use Haskell for real projects? Yea, I would. I actually find it to be really solid at what it does. 

My motivation stems from curiosity and wanting to see what it can provide. It being a functional programming language is also a big plus in terms that you get to get away from the C-like languages, or well, imperative languages.

Monday, August 4, 2014

An Additional Note for WINE underrun audio issue

A month or two ago I saw a comment that mentioned "PulseAudio underruns occurs in the newer versions, not in the old ones"

I was unsure about this myself--being a Debian sid user also came into play because I would have to do my own compilation, which I never did and I was always using the new shiny PulseAudio they provided. You could say that I didn't really look into it, also compiling PulseAudio was a pain from their repos (mostly because I had the brightest idea of compiling the git master).

Anyways, I'm here to confirm that it's true. For some reason the older versions just work. I'm using PulseAudio 2.0 and while I have run into underruns myself, it recovers pretty fast (3-4 seconds). I've played Guild Wars 2 without audio problems, usually underrun issues happens really fast.

So yea, try downgrading PulseAudio to version 3 or 2. I can't guarantee it will work but it's an option.

Sunday, August 3, 2014

Rockbox: An open source firmware alternative for your MP3 Players (iPod, Sansa Clip+, etc)

This isn't going to be a lengthy post, I promise you that.

I learned about Rockbox back when I was still using Ubuntu, and therefore browsing through Ubuntu forums years ago. It wasn't that well known, and to be honest I don't know if it got the spotlight it deserves but well, give it a try. Rockbox truly rocks.

What is Rockbox though? And why do I bring it up?

Rockbox is an alternative firmware for your MP3 Player, simply put if you don't want to depend on your MP3 Player manufacturer to provide updates for your Sansa or iPod in terms of firmware, you can choose Rockbox.

Why did I choose it? Today I had one hell of a struggle. I'm using youtube-dl to download a few audio files, you know, to play then when I exercise, etc. And for some reason my Sansa default firmware was freezing up when I played an mp3 file that was freshly converted by avconv. I spent like 2 or 3 hours figuring out what was the issue. Sadly, I couldn't find what was the issue. But you know what? I recalled that years ago I installed Rockbox on one of my mp3 players, which was also a Sansa.

Problem eliminated, and now I have even more features that Sansa Clip+ couldn't provide me. I have a very stable firmware that can play any audio file and the most important part? It didn't choke up, hurrah!

Screw you, random freezes!

Yesterday in my post about joining the crew of the thousands using Debian (Wheezy) 7. I mentioned that I was getting random freezes in Debian unstable (sid). At first I thought it was because there was some sort of obscure library crapping out. Sadly that isn't the case, apparently it could be a bad driver (weirdly it mostly pointed to NVIDIA drivers). I also noticed this in my syslog:

Aug  3 17:41:22 debianbox kernel: [   48.601212] nvidia 0000:01:00.0: irq 54 for MSI/MSI-X
Aug  3 09:52:43 debianbox kernel: [  729.734969] pulseaudio[4819]: segfault at b0 ip 00007f8e8e85bf31 sp 00007fff0017a430 error 4 in[7f8e8e72b000+1b5000]
Aug  3 10:03:34 debianbox kernel: [ 1380.689115] kde-open[5084]: segfault at b0 ip 00007fc14602cf31 sp 00007fff713dc430 error 4 in[7fc145efc000+1b5000]
Aug  3 10:03:34 debianbox kernel: [ 1380.709502] kfmclient[5085]: segfault at b0 ip 00007f3223e50f31 sp 00007fffdd5736c0 error 4 in[7f3223d20000+1b5000]
Aug  3 10:06:12 debianbox kernel: [ 1539.401962] pulseaudio[5110]: segfault at b0 ip 00007f8cceb70f31 sp 00007fff28bb95c0 error 4 in[7f8ccea40000+1b5000]

I came into conclusion:

PulseAudio shouldn't be using libc-2.15 that resides in Steam library, and neither should those applications. I don't know why it chose to do that though. I might have an idea of why it's doing so... 

Still, it's not the culprit. Not until a freeze happens again--which it hasn't for some weird reason. My fears is that my video card might be dying... which I hope that's not the case!

It kinda sucks... because it would mean that I have to buy a new video card, best case scenario is that one of the RAM sticks is failing. (they are cheap, what? I'm still a poor college student!)

Saturday, August 2, 2014

Huff! Hello, Debian Wheezy 7.6!

Yesterday I decided to format my computer and install Debian Wheezy. There was no data loss, of course; because any rational person would separate their /home partition. In a future I'm hoping for a more "complex" solution as in extending my /home partition when I install a new hard drive disk.

Why go back to old libraries and applications?

You might be thinking. If you aren't a Linux Developer or a developer of any type, chances are that a rolling-release is an overkill choice, this is my honest take on rolling-release distributions, or even semi-rolling. Yes, there may be libraries, applications that delivers certain bugfixes you need. However I believe that the cost of stability is too high for such pesky problems. Let's say you use Thunderbird from stable (Icedove, I love it so much). There's this bug preventing you to use it.

My initial take is to download the official binaries from Thunderbird site, set up a PATH for it and be done with it. In fact I do have several paths for applications. I also have a local application so I don't override my distributions libraries/applications:

# david at debianbox in ~ [12:24:01]
$ echo $PATH

I live on the (bleeding) edge!

I used to do that too! Personally, like I said I just don't find a purpose of doing so. I learned something from Slackware's way of upgrading. If everything is working perfectly, even modern applications, then why bother upgrading at all? I'll keep using Wheezy until Debian decides to drop support. (My thoughts may change over time, not everything is black and white)

The Exceptions

Normally. There are always exceptions. For example, you take your time testing Debian jessie and spend the time filling bug reports, etc. I find that truly wonderful and I thank you for your time!

You need the latest libraries because you are developing a software that requires it. It could be because the library uses new features, etc. I've always found it a bit distasteful that developers sometimes forgets users that aren't using an "up-to-date" distribution.

Why I say this? Well, yesterday I ran into a problem where Steam launcher was compiled against a newer version of libc6, this was quite worrisome because 1) I had a slightly older version, it wasn't so old 2) I already had an idea on how to fix it, luckily there was this awesome contribution that already provided a debian package.

The hardware you bought is not supported until you use the newest kernel or need the module requires a newer kernel.


The downgrade wasn't bad at all, everything worked. Except Dolphin, for some reason I had to wipe out all the configuration because there was a dbus problem.

Aside from that. I compiled MPD/Cantata. Installed Steam, everything else was straightforward. I installed all the 32bit libraries so WINE could function, in matter of minutes I was already running Guild Wars 2, Torchlight, TripleTown and some other games I have installed.

It sort of bring a peace of mind. I was already getting tired of running apt-get dist-upgrade every 3 days, yea I could automate it--let's be honest that's one of the most horrible ideas ever, you don't do automatic upgrades in an unstable distribution. Only masochists do that!

There was a problem with my Debian sid. I won't lie, there were several problems with it. The main one: Random freezes. I'm not talking about X server freezing on me. I'm talking about a whole computer freeze, and the thing about this freeze is that it never logged anything. I couldn't file a report to the kernel people because I didn't have anything to offer and I couldn't post a thread because I don't know what was triggering it.

Random freezes were my blue screen of death. I couldn't restart X server, I couldn't switch to a different TTY and syslog/dmesg didn't show anything.

I could have installed Debian sid back again. But for what? My mind was set that at this moment I didn't feel like dealing with that stuff.

I hope this doesn't come down as a pretentious post. This is my honest take on stuff. Feel free to comment!