Monday, October 13, 2014

My Final Notes: A Farewell to this blog

Thinking back, it usually don't take me long to criticize something. Sometimes I wish there was a better community, however, the frustration of not being able to get "that great community" ends up on me writing rants.

It shows me how close I am to a subject. Does it affects me in real life? Not really. That's beyond the point though, what I want to talk today is something simple: The ability to control emotions, and the ability to be able to communicate clearly. This goes both ways, not just writing concisely, but being able to read and understand.

In a way, technical people lack that ability. They just read one line and they already an essay on how wrong his argument is; you get the idea.

I'm not going to remove any of my posts because it reflects part of my frustration, and because there's no need to close it. However I would like to bring another subject:

The defunct project: Jester 

Jester is a WINE Manager Wrapper, it was made to be used in CLI. I had a lot of ideas and I was understand of implementing each of the features I wanted. Everything was going as expected and there wasn't anything stopping me from completing it with the exception of the end-user.

I love developing. I love being creative and resolve that puzzle that's been stopping me. For the end-user however, they don't have that ability to program or understand technical things--hence I'm not trying to belittle them--however, Jester fits one audience only, that who is technical enough to use jester. In essence I thought Jester was going to be awesome.

It ended up me not wanting to do it. I wanted to develop something that end-users consider useful. Not having a GUI was one of the things stopping me.

What's the problem? I can just develop a GUI for it, right? Yes, but I decided to focus on important things. And one of the side effects of doing that is that I'll be using GNU/Linux less.

Anyway, I'll be starting another blog. This time I want to tackle subjects with a different mindset and perspective. I don't expect anyone to follow either, you are just one people in an ocean of opinions.

I'll be uploading part of Jester to Github eventually. I need to clean up the source code before that.

Tuesday, September 16, 2014

Dear Blogger: Make your templates easier to edit

Lately I've been wanting to create a custom theme for my blog. After browsing through the INSANE amount of markup they have it wasn't just worth the time. Tumblr does a better job in keeping things simple, and this is where Blogger fails. I hope they realize that it's too overwhelming. I'd rather put on my own site and create a custom theme for wordpress than going through the hell that is Blogger templates.

Monday, September 15, 2014

A Week with Vim

It's been a week now  since I've started using Vim.
I don't plan to make weekly posts about it, but I do plan on sitting down and finally create a Vim resources post. I've been a bit busy trying to get the final nuisances with Vim solved.

One of the things to keep in mind is that if you see a video of someone doing cool things in Vim, chances are that you won't be doing them as fluidly as you'd like to. That's the truth behind learning Vim. It's something you need to continue learning along with the programming languages of your choosing.

I wrote this blog post using Vim. Not because it was a cool thing to do. I believe that if you want to learn a tool, you need to expose yourself to it as much as possible. It's hard to understand Vim if you just pretend that all the amazing features lies within the plugins. When in reality it's the text editing that shines. Plugins are amazing by the way, I actually want to contribute something more polishing for Django, and I say this without any compromise.

It's funny, I never thought I would see myself using Vim, or Emacs. I was resistant to these stuff in the sense that I avoided it. I was a fool, I played the role of the devil's advocate without fully knowing what both tools provided, just because I was tired of hearing all the hype.

Yet, things are now working as they should. I can't wait to continue working on my projects as I've one specifically wanting to finish.

Honest take from me. Give Vim a try and you'll come to love it. It takes a while before you are really productive, maybe you don't see the point but not using the mouse is actually really nice, all you need is the keyboard.

Friday, September 12, 2014

Vim: My Experience as a New User

Many of you have heard of Vim, a lot of people call it the greatest text editor ever "second to none". While that claim seems like a bit of a mouthful and purely driven by the fans there are reasons why Vim is great, as well as there are reasons for you not to use it.

I started learning Vim this week. Let's make this clear, Vim is not an IDE, you can make it look like an IDE but it won't behave like one. As I searched through the web for plugins to empower my Vim editor I noticed one thing: Everyone wants Vim to be an IDE. Oh, the many out there. I don't mind them, but it puzzled me as a new user.

Don't get me wrong, I love Vim. I love all the amazing text editing keymaps you can do with it. I love how you can use Visual Block and replace whatever text with the same name in just a matter of 2-3 keys. I love how you can just ci" and magically delete. I love plugins like YouCompleteMe, how well NERDTree works even though I'm looking at something like Sauce but bookmarks do just fine, how AMAZING is python-mode, tagbar is a must, vim-airline, and oh so many plugins out there that even in 2014 it maintains Vim relevant.

Vim is an investment. As a new user it took me a couple of days to fully get it to where I wanted it. Just like Emacs if you want to be its user, then you'll know that you need to install plenty of plugins for it too.

But see, Vim is a great tool. Let me show you the first screenshot:


My .vimrc is a mess so I'm not going to post it here today but let's take a look at semantic completion provided by YouCompleteMe, it also uses omni-completion. This is just one of my random projects. 


Here is a more IDE-like screenshot that shows you tagbar.

It looks great, doesn't it? As a new user I should have waited a bit before getting into plugins but at the same time I wanted to do some C++ already. My reason to choose Vim was because Eclipse just keep crashing over and over again and it also froze several times. Netbeans didn't even want to work. 

So, I chose Vim because it was THE text editor I needed. The world whispered in my ears and said "Use vim, use vim! You won't regret it!" I don't regret it. I like it, I haven't worked on a REAL project with it but I know that it'll be a delight to work with. 

Now, all my praises for it so far ends here. Let's go on to why you might not want to deal with vim. 

  • Setting up a project with virtualenv and YouCompleteMe is a pain. No matter how you look at it, you don't get a predefined workspace like you do in Eclipse or Netbeans. There's no ROOT PROJECT folder to use. It causes YCM not look up the libraries set with virtualenv. And it's just awkward hard to make it work. Since YCM looks at your system libraries, what I did was just install the framework I wanted to use to get the semantic support. It's sad. 
  • ctags? Manual generation of something that should be automated? Well, yea it's like that. Apparently you gotta freshen up your ctags if you want to navigate your source files. 
  • No way to jump around headers/sources file. I can't for the life of me find a way to JUMP at the standard header I just included. In Emacs, this is done oh so easily, it makes me sad. 
  • It takes time to deal with buffers/windows/tabs. If you are new like me, chances you are going to be nuts jumping from buffer to buffer, or tab to tab. 

Listen, if I were to choose between PyCharm and vim, my answer would be PyCharm. It removes a lot of the hassle that is introduced by vim. But see, vim is a text editor and such it cannot be blamed for not working as one. 

So where's the investment exactly? Text editing. No, really. Once you learn the flow of vim you will be fast to get that source written. At first, you will feel slow, frustrated because the workflow is really different. I know I have. Heck, I have started typing while it was in Normal Mode and I've screwed up plenty of files due to that. It happens because we are just new to vim.

Is it worth the pain? That's for you to choose. I'm sticking with it for a while because it doesn't hurt. 


Tuesday, September 2, 2014

Debian Desktop Environment experience is dropping?

As I have been checking deeper into distributions like Ubuntu, Fedora, OpenSUSE there's one thing that Debian still lacks. It feels really unpolished compared to the former.

Why?

In Ubuntu, if you use Files (GNOME file manager)  right-click and try to share a folder it will ask you to download Samba and configure it for you.

In Debian I would get funny errors because Samba isn't configured at all. This was one of my experiences with Dolphin that I would right-click and try to share a folder with the other Windows computers and it wouldn't

What is Debian? It's something that I've been pondering for a while. Debian's site doesn't have a welcoming design like Fedora one does. The community (forums) seems like a passive-aggressive sort of bunch (although honestly it feels like it's like that with most Linux communities). So is Debian just a distribution template for other based distributions to copy? Maybe.

Another example, this time unrelated to KDE is the GNOME experience in Debian jessie/testing. Sure, you would argue that it's unreleased. Fine, it's a total valid point but hear me out:

I couldn't for the life of me CHANGE the language to Spanish in GNOME Debian. I went to the expected place to change the settings but the option wasn't there at all. In Ubuntu, it will give you the option to install the Spanish language package and make that user use the Spanish language while other accounts maintains the English language as default.

The GNOME 3.12 account integration with other services was well done. Of course, in Ubuntu it was just plain better.

I haven't checked Fedora yet. I'm actually downloading it right now to see how polished is Fedora.

As much as people hate Ubuntu, because it seems to be the popular thing to do Ubuntu does a lot of things right that the desktop experience needs. You can hate it all you want, it won't remove the fact that Ubuntu just wins hands down.

This is not about "well, I prefer is the distribution would let me configure the installed software rather than it making the decisions by itself". Fine, you like to waste time and configure your own stuff. That's great, but you are missing the point. This so called "newbie distro" is aiming to be things that other distributions couldn't do and that is to bring a easy to use GNU/Linux desktop and see that sharing, installing printers, etc is working as expected.


Monday, September 1, 2014

I was wrong about GNOME 3, it might become one of the strongest DE contender than it ever was.

I was wrong. I won't apologize of course, we all know that GNOME 3 didn't exactly had an spectacular release. And I still hate the official tablet-like look--mind you, I still use GNOME Classic.

So what was I so wrong about? Why doesn't GNOME 3 die and burn in hell for eternity?

Well, if you have to ask. They did a lot of things right. I would say they provided an even more intuitive interface than KDE ever did.

How important is unification?

If you are some sort of neckbeard or wannabe zealot then chances are you are enjoying your Linux desktop in whatever window manager of your choosing while simultaneously assaulting other desktops environments and depriving them of their choices.

After using GNOME 3.12, something came to mind. They were doing a lot of things right. I think screenshots will do a better talking than me.

User Management is a bliss.

Evolution unifies really well with my google account

No brainer date and time interface

One of my favorites! I wish KDE had something like this

Automatic printer sharing detection. I was using Samba of course.

It's so easy it hurts.

Beautiful font rendering

And this wins the prize

I don't think many of you know but I was a GNOME 2 avid user. I loved it to death, and then KDE 4 came with all its stupid wobbly windows, but you know, it worked. It was usable, sure it had its ups and down but it didn't turn out so bad. 

GNOME 3 did a daring move though, one that could have ended the project itself. Yet, they started listening to feedback. I think that in a way I blame their user interface designers because they could have introduced more HUMANE interfaces than what they provided in the initial release. It felt like they forgot their old userbase existed and that's bad. The thing that "we don't know what we want" is a bullshit line, imho. Even if the end-user didn't know what she/he wants, you shouldn't have gone full retard. 

Of course, GNU/Linux is all about choice. Sadly, if we are going to CONQUER the desktop we need to choose a desktop environment to rule them all. If so, which would be your desktop environment of choice that the end-user would feel usable? Let's play a game. Choose one that needs the least of terminal interaction.


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 libc-2.15.so[7f8e8e72b000+1b5000]
Aug  3 10:03:34 debianbox kernel: [ 1380.689115] kde-open[5084]: segfault at b0 ip 00007fc14602cf31 sp 00007fff713dc430 error 4 in libc-2.15.so[7fc145efc000+1b5000]
Aug  3 10:03:34 debianbox kernel: [ 1380.709502] kfmclient[5085]: segfault at b0 ip 00007f3223e50f31 sp 00007fffdd5736c0 error 4 in libc-2.15.so[7f3223d20000+1b5000]
Aug  3 10:06:12 debianbox kernel: [ 1539.401962] pulseaudio[5110]: segfault at b0 ip 00007f8cceb70f31 sp 00007fff28bb95c0 error 4 in libc-2.15.so[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
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/david/Libraries/firefox/:/home/david/Libraries/thunderbird:/home/david/Libraries/screenfetch-3.2.2/:/home/david/LocalApps/bin:/home/david/.Jester/shortcuts/:/home/david/.cabal/bin


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.

Downgrade EVERYTHING!

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!

Wednesday, July 30, 2014

A Taste of Slackware (14.1)

Lately, I've been exploring minimalist distributions where they let you maintain your craft your own environment from the scratch. I don't blame distributions for trying their own thing; not at all, I actually promote and cheer on them to bring a more polished experience. If I'd ever work on a distribution myself I'll do my best to bring the best KDE experience on it--as a KDE user myself.

I like Slackware. I like its philosophy, I like how down to earth it is when it comes to maintaining your Slackware system.

I've been spending a few hours each day getting more and more into Slackware environment. It's no different than your typical Debian or Arch Linux setup when it comes to GNU/Linux. Some things regarding the init scripts changes and that's to be expected since they also tell you about it.

I installed Slackware 64-bit, the installation itself was delightful. I only ran into a few struggles and it all came down to LILO. For some reason it kept throwing errors and I wasn't remotely sure on the why. I wasn't ready to take on LILO either, mostly because over the years the default boot loader has been GRUB.

Anyhow, it all worked out. I just followed the main instructions to boot the root partition from the DVD messages and I was in my Slackware system in mere of seconds. Truly amazing! I did a rerun of LILO configuration and it managed to properly reinstall itself. What went wrong? I don't know.

Immediately after my system booted. I ran xwmconfig and as you expected, I chose KDE. I had the opportunity to try XFCE and some other window managers like Fluxbox. For some reason if you are out of the QT/GTK environment the application appearance becomes quite ugly and you have to go the extra mile to figure out what's wrong. I kinda knew what was wrong, at least on the GTK part, but on the QT side I wasn't that sure.

Slackware is truly an stable distribution, at least from what I've managed to work with. What brought me to "fear" it was that I was in charge of managing my own multilib.

I'll try to elaborate:

In the Debian environment, we are used to do apt-get install package:i386 which is at best the most simple thing ever. It's straightforward and it gets the job done. In Slackware, for a 64-bit to be multilib-enabled you have to do certain extra steps.

You need to download "third party" from a long term contributor that goes with the nickname "Alien Bob". Note that I don't mind doing this. I've found that this person has been a strong supporter of Slackware for years and I don't want to make it sound like it's a bad thing itself. After all, Slackware is nothing without a community--in my humble opinion.

Slackware package manager has no sense of "dependency management". It means, you need to brace yourself and do all the library/applications dependency resolves. I have mixed feelings about this honestly; I have read many of their reasons on the why, yet to me I don't really feel convinced on why it shouldn't resolve dependencies, at least at best the base ones and leave the optional ones as optional.

What "troubled' me was installing 32-bit libraries in my 64bit system. There wasn't exactly an easy way to do it. And by easy I mean "take the least time possible". I had to do some googling and found out that there are unofficial tools out there that helps you get 32bit libraries easily.

I did the initial steps of enabling multilib like I said before. However the tutorial went down to "mirror the Slackware 32bit tree packages" and I certainly wasn't fond of that idea. Neither was using massconvert32 to get the packages I want.

I feel like I've been introduced to something that takes even more time. It's not that I don't feel like administrating my own system. It's that the initial setup would take longer than I expected. To me, these are itself "deal breakers". It's not the fact that I have to track dependencies myself, but the one that I've to jump a few hoops to get the 32bit libraries and convert them to be compatible.

I'm gonna move on, I think I've said plenty on the 32/64bit subject. In terms of installation and configuration I'll be frank, it's just the same thing over and over. If you have set up MPD and other applications then you will know where to find the configuration files. System wide configuration files usually reside in /etc. Like always, things like this never changes. What I mean is that if you are familiar with GNU/Linux then you won't have problems.

Stability! It's such an important word for me. Not stability as in the system crashing, but stability as in packages receiving their proper updates for minor point versions.

I might be wrong, but one of the things with Debian stable is that if a package releases bug fixes and it's not a major version. It all depends on the release team to see if it will make it to Debian stable.

I don't know how Slackware manages the influx of packages myself, this is the first time I've used it in a prolonged manner. What I want is an stable system, a conservative one, like Slackware. At the same time I also expect that normal bug fixes releases also remains updated in the stable branch.

An example: I'm using Debian unstable sid. I haven't had many problems with it but I did come acoss some problems, most of the time it's the dependency hell that occurs. If there are dependency problems sometimes apt-get dist-upgrade tries to remove a whole bunch of libraries that shouldn't be removed.

Obviously, as a person that likes to keep the system stability in-check I'd just cancel the upgrade and wait for the fixes to come.

What does this have anything to do with stability? Well, there are certain features in Dolphin file manager that stopped working out of nowhere. It just happened abruptly and up to this date I haven't found the cause.

In Slackware, all Dolphin features works. The system is rock solid.

I know I know. Why are you using Debian unstable? You should know better! Well, that itself is a fair question! Why use Debian unstable when you want an stable system. Debian "unstable", despite its name is not unstable as in the software will break any time. I've yet to see my desktop environment breaking apart. It hasn't.


I'm going to wrap this up because I feel like I've written a lot already. I'm willing to give Slackware a decent try as my main distribution if only I get the answers I need regarding 32/64bit issues and well that's it. I usually compile my WINE versions (32bit) and I don't exactly feel like it'll be a challenge to do that in Slackware, minus the dependency tracking which is itself like an sport.

It was a nice experience. I'm still not a fan of compiling my own stuff (mostly because it always takes too much time), but if it means to keep my system in stable conditions and receiving good upgrades of the software I use, then yea I'm all for Slackware.

 If you have any thoughts, input about Slackware or know all the answers to my doubts. Please feel free to comment!






Friday, June 27, 2014

Astebreed on WINE

Heyo guys!


I got this little Japanese Shoot 'Em Up. It run almost flawlessly on wine-1.7.11 and wine-1.7.18-CSMT. I think my only problem with it is that the audio doesn't work. It seems it uses xact, sadly I can't seem to get the audio working in any way, it just doesn't want.

I'll report back. To be honest you don't need to install any library to get it running, besides xact (which doesn't work either).

The game is excellent, if you are into mechas like I am. You'll love the designs they have.

UPDATE:

Install:

- xact_jun2010
- directx9
- dinput [builtin]

Control Setup:

Disable: Vibration

Disable: Hat Switch


Thursday, June 19, 2014

Compiling problems with Dolphin Emulator on Linux? It may be the compiler

Hello guys, long time no see!

I'm alive. I'm no longer using LinuxMint. I am now a proud Debian user and I am extremely happy being part of the Debian community. 

I'll leave that for another post. For now let's concentrate on Dolphin emulator. Recently I've been failing to compile Dolphin, it was throwing awkward errors that well, to me it didn't make any sense. I started googling for a few hours, because you know, once you get that itchy feeling that something is wrong and some of the results don't match your criteria then there's something horribly wrong with what you are doing. 

It turns out that GCC/G++ 4.9 that were pushed into Debian recently has some problems compiling wxWidgets (and  a few other source files). It was weird, but it worked for me. If you are going to compile Dolphin, stick with the 4.8. 

Go into the build folder and: 

$ CC=/usr/bin/gcc-4.8 CXX=/usr/bin/g++-4.8 cmake ..


I won't get into a tutorial on how to compile dolphin.. if you are experienced enough, you should know what it will do. 

Dolphin GUI is really unstable for some reason, it keeps crashing randomly... sadly I don't have time to report bugs :(

Friday, March 14, 2014

MMORPG: Why can't we have nice things?

Let's talk about "elitism" or certain traits about elitism. It's a topic that many people who just want to enjoy the game have to deal with at one point in their life, sometimes on a weekly basis.

I've been thinking of coming back to Final Fantasy XIV: A Realm Reborn lately to enjoy the game. My character is near end-game dungeons and I think my first worries is the community state. To me, playing the game how I want is more important than getting results. I can't deny that a lot of people play the game to farm the hell out of it, to become the best player ever or to have the more hardcore guild, of course there are other reasons.

I play the game for fun: Is my first thought, this is so far true; always been. Now, the definition of fun is slippery, it could have a different definition, even if at the core they could be wrong. However, playing for fun means that regardless of the struggle my team goes through, we'll remain as civil as possible, or maybe sass a bit, throw a punch or two to blow steam but never go full retard on a team mate.

My problem with srs business people is that they don't leave the party, they stick there like an annoying stain filling the chat with vitrol on how much X or Y player sucks. Why oh why can't he keep aggro? I'm a healer I shouldn't overwork myself! (btw I believe healers in FFXIV have the shortest temper, they want everything easy I guess). Yapping yapping, annoying your team mates in group.

Then there's captain hindsight who won't shut up about a thing.

So, no matter what you do, there's always THAT guy who you get stuck with through all the way in a party. They won't give any advice, they won't shut up, they just want to finish the dungeon, get their commendation (lol), and hope that whatever item he wants drops. (everyone, GREED EVERYTHING)

It brings me to the question, why can't we have nice things in MMOs? It's so... tiresome dealing with people's sense of elitism, and sometimes entitlement depending on the issue. 
 

Thursday, March 6, 2014

Sometimes the Open Source Community is too draining

Alright, it's been a while and welcome to yet another blog post. I've been on and off, to be honest I have some subjects to write about but I've been misusing my time on other matters.

 Today's subject is how the community reacts when there's a security issue in different distributions. I came across a security issue where Portal 2 crashes in SELinux, the initial response in reddit was "valve doesn't give a shit about security", such a title full of assumption and ripe with opportunities to magnify an issue. I do care about security, but sometimes people get.... a little emotional maybe?

The debates gets to the point where you don't know if they are discussing the subject or totally went off topic to keep their "knowledge pride" intact. I found it really draining and sometimes I just have to give kudos to the developers that have to endure hours of endless babbling reading the same responses in different grammar structures. I'll probably get some heat too on my part, but then again I'm just yet another GNU/Linux user out of the thousands out there so whatever people leave in the comment section will be either spite or some type of excuse for their behavior.

That aside, I'm hoping to get into my normal routine once I make a full recovery. I have a project that I want to work on and share with the world but due to my back problems my time is limited =/

Thursday, February 20, 2014

Motherboard Failures / SSD / WINE Solutions And The Spirit of OSS

Welcome to yet another laundry post. It's been a long week for me. I'm still recovering after hurting my back, twice now in less than 7 months. So let's begin with motherboard failures

Recently I noticed that my motheboard SATA slots were faulty, sometimes I had to change cables or slots to make a SATA device work. Now, the cable I used was brand new, I didn't really think it had anything to do with the cable. Even before the new cable, before moving to a full linux environment this year I had ran into a problem where my DVD ROM had read errors. I was taken back with the issue because I did an integrity check after burning the disc.

So what happened is that I had to move the cable to another SATA slot. This was the first strike of something going wrong with the mobo. I ignored it back then.

Now I know I need to get a new motherboard. So with that I want to get an extra 8GB DDR3, and SSD with a debian-based distro.

I looked at the possibility of moving to a arch-based distro, but a question remained: Why bother with a rolling-release distro? Now, I might be biased because I lean toward debian-based distros, it doesn't have to be Ubuntu. It could even be Debian Sid or whatever.

In the end, I just didn't bother coming up with an answer. The ending result no matter what linux distro you go with is that you will end up with a linux system, different package manager. KDE, GNOME, OpenBox, whatever WM you choose won't change that experience.


That said, let's talk about WINE wrappers. Normally, I don't have any problems with WINE wrappers. I actually don't by the way. I just think that WINE
wrappers have been focusing on the wrong things.

There are too many problems with reporting bugs with WINE. If people used winetricks, developers complain, if users used playonlinux, developers would mark it as invalid even if they are using a vanilla WINE installation (no patch whatsoever), it's so, so tedious to fill a bug report with a wrapper. Even if the wrapper took care of basic stuff like library installations, it still would be "invalid". So how can I report bugs to WINE? God knows... if you know how, let me know.

So with that in mind. If you create a wrapper for WINE, users will use it, there's no doubt about that. WINE with patches? Yes, I understand the implications of why people shouldn't file a report.

Now, there have been many applications that handles WINE for you. Thanks to the OSS community we get to have many options available. I'm still thinking whether I should bother creating one or not. I don't know to be honest, maybe I'm having second thoughts on how an I create a tool that WINE developers wouldn't mind, at the same time the tool is aimed for users, not the developers.

Why not improve an existing one? Because they all have different ideology on how to handle WINE from under the hood to the frontend. I also have a different idea on how user interface should be handled, I still use POL btw.



Well,that's it for now.

Saturday, February 15, 2014

MPD + Laptop issues

I had a hunch on the issue already... let me tell you that working with audio stuff in linux gets me a little "nervous", because a computer without any audio output is simply nothing to me... not having my good mate MPD shuffling through songs through a shared MPD music/playlists? it kills me.

So apparently, for me to run MPD system-wide I have to run pulseaudio system-wide, this is regardless on how many groups you add to the MPD user, it won't run. It kind of rubs me off the wrong way.

I just ended up making mpd making it run at a user-level... not happy about it.

I'm gonna join in the many who have a qualm with pulseaudio... sometimes it works... sometimes it just screws up your sound with WINE.




How To Organize Your Steam Games with PlayOnLinux

Are you tired of installing Steam multiple times using PlayOnLinux? Do you want to organize all your Steam games in one giant library (e.g Steam Library), then this guide is for you.


Installing multiple Steam client always drove me crazy with PlayOnLinux, when you see the big picture (no pun intended) you realize that you have over 100+ steam games and that you need to create a new virtual for each, and it's not even rare. Why one virtual drive for each game? There's something called regression, sometimes games break in new WINE releases, so people have to use the WINE version that works for that game. 

Before we start:


  • By configuring it this way you will have to create the shortcuts for each single steam game. This might sound “bad”, but it's really easy.
  • We don't use the terminal as much in this guide, so rest at ease.
  • Please read through the notes and comments I leave. Skipping the registry steps could make Steam unstable.
  • (Optional) Users are required to have a very basic understanding of what is a WINEPREFIX, this helps a lot.
    The guide may seem really long, but it isn't. Most of the time it's just me explaining stuff.



The Idea

The main idea or scope of this guide is to teach you how to have ONE steam installation and be able to manage multiple Steam Libraries in different drives.


Side note
Symlinks (Symbolic Links) plays a big role in this guide. PlayOnLinux as of 4.2.3 and older version has a bug that doesn't know how to handle symlinks. This is not important, WINE knows how to handle them just fine. If you create a drive_c symlink from a NFS mount, it will run the application just fine.


Benefits

  • By having only one Steam installation you can manage/download your Steam games in one central point
  • You will also save space from all the tedious redundant Steam installations done by PoL
  • Your credentials are saved in the main Steam installation, meaning that re-using it will keep you logged in for as long as is takes.
  • Settings are never forgotten, this is a plus if you want specific games to have overlay.
  • Easy management and updates.
  • If you are a GamersOnLinux user, the Steam game installations will be done in a slight different way. I will do a follow up after this guide on how to know what to do, however, there's a high possibility that you'll know how to do it at the end of this guide.



Drawbacks

  • To make this work, you will have to create shortcuts manually in PoL folder for both Steam and games.
  • Import registry for every new virtual drive.
  • Not exactly a drawback, using the terminal is awesome but yea, you have to use the terminal to create the symlinks. I'm not going to do screenshot examples because everyone has different Desktop Environments.



If you notice, they drawbacks are really.... silly, compared to what we will be gaining.



Wait a moment, if I have all Steam games in one location, won't it mess up wine prefixes done by PlayOnLinux?



Not at all. Remember that PoL is pretty much a wrapper around WINE. When you create a virtual drive, you do it for the purpose of making that game work. After you finish the guide, you will see the bigger picture.



So why do I need to create a shortcut of Steam in every virtual drive?



Steam games requires it to be running, if you are new to Steam don't let that take you by surprise, a lot of windows gamers are used to it. When you create the shortcut and launch it using that virtual drive, you are telling WINE “launch Steam, using version 1.7.8”, once Steam is running, within the same virtual drive you'll launch the Steam game you want.



In a nutshell, you run Steam on the virtual drive (wine prefix), when you launch a steam game within the same virtual drive, the game will recognize that steam is running and steam will know that a steam game is launching.



Alright, enough talk, let's get our hands dirty.



Side Note



I'm going to make this guide as uniform as possible. I'll be taking decisions for you, however, you can set up the folders HOWEVER you want.



Step 1) Choose a main location for your Steam installation.



I chose mine to be in /home/david/WINEApps/Steam



Open up your terminal and write:


mkdir ~/WINEApps





Step 2) Choose a main location for your Steam Library. Remember, I said Steam Library. I'm not going to explain what are Steam libraries, please search the web.



I chose mine to be in /media/david/Usagi/Library/Games, however to keep this guide uniform. I will create it in your user directory.




mkdir ~/Library/Games



Step 3)



Side Note



For the sake of getting a fresh install of Steam (one last time – Dream Theater), let's install Steam. If you are following this guide, by now you should know how to do this. Experienced users can skip to step 4






Open your PlayOnLinux, click Install



Click on Install a non-listed program


Create a virtual drive called Steam. (as shown in the screenshots)








Click on “Use another version of WINE” choose any from 1.7.8 and up. I used a 32 bits installation.






Then choose the Steam installer you downloaded. 





It will probably appear without these letters, but yea. close it.

Let Steam finish installing then close it after the Steam login popup appears.

If PlayOnLinux window thinks it's still installing Steam after you closed it, just press cancel, no harm done.





Step 4)



Awesome, you got a fresh Steam installation.



First, Downloadthis registry file. You can look at it, it just has basic Steam registry. KEEP THIS FILE BECAUSE YOU WILL CONTINUE USING IT.



Side Note



In truth I don't know if the registry import is completely required. Do note that not choosing to import the registry could make Steam crash or become unstable.



Open your terminal and type




cd ~/WINEApps


mv ~/.PlayOnLinux/wineprefix/Steam/drive_c/Program\ Files/Steam ./



Alright, we got the Steam installation in our WINEApps folder if no error message appeared. You can check by typing ls in the terminal, like this




ls

david@david-mate:~/WINEApps > ls
Steam



Side Note: Why not leave the Steam installation there?



Commodity, /home/david/WINEApps/Steam can be easily memorized and less error-prone than /home/david/.PlayOnLinux/wineprefix/Steam/drive_c/Program\ Files/Steam





After you are done moving Steam, remove the virtual drive you created to download it.



Step 5) Let's create a new virtual drive!



Call it Steam4All (or whatever you want, just no spaces, and please remember the name you use, we'll keep using it)

(32 bit WINE, 1.7.8 or above)








When it asks you to browse the file to install, press cancel.






Step 6) Let's create a symbolic link now.



Side Note - IMPORTANT



For every virtual drive you create to run a Steam game, you have to create a symlink for each of them. In this case. We are going to do a symlink of our Steam folder in ~/WINEApps/Steam in the Steam4All virtual drive.



For example: If you want to run Skyrim, then create the virtual drive for skyrim THEN create the symlink of the steam folder.






Open your terminal:
 

ln -s ~/WINEApps/Steam ~/.PlayOnLinux/wineprefix/Steam4All/drive_c/Program\
Files/Steam



Side Note – Complimenting my Skyrim comment –



THIS IS JUST AN EXAMPLE. If it was a Skyrim installation, after the virtual drive creation, supposing it's called Skyrim




ln -s ~/WINEApps/Steam ~/.PlayOnLinux/wineprefix/Skyrim/drive_c/Program\
Files/Steam



Step 7) Let's create the shortcut manually



I'm going to get visual so you get an idea of what I'm doing. Usually this is a PlayOnLinux shortcut:



Let's go to ~/.PlayOnLinux/shortcuts folder here are some screenshots







We are going to create a new file called “Steam4All” and paste this



#!/bin/bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
# Always remember to change the WINEPREFIX path
export WINEPREFIX="/home/USERNAME/.PlayOnLinux//wineprefix/Steam4All"
export WINEDEBUG="-all"
# Important part
cd "/home/USERNAME/WINEApps/Steam"
POL_Wine Steam.exe "$@"



REMEMBER TO REPLACE USERNAME WITH THE USER YOU ARE CURRENTLY USING.





Side Note



If you take a look at PlayOnLinux picked it up instantly. DO NOT RUN IT YET




Step 8) Import the registry!



If you haven't downloaded the file, click here. (If you wanted you could do Step 8 before 7, it doesn't matter, but never forget the registry)


Press Configure in your POL.



Go to the Wine tab and press Registry Editor



Click on the Registry label in the menu bar.



Click on Import Registry, find the registry you downloaded and load it. No messages will be given. Once you load it, close the registry editor.




IMPORTANT NOTE



You don't have to write -no-dwrite anymore. I disabled dwrite in the registry you loaded. Hurrah? HURRAH



Step 9) Friends, mates, aliens. We are done. Let's run this.  If you really need to know what to do .... just click on Steam4All and run it.







Step 10) Let's create a Steam Library.



Go to View-> Settings



Go to Downloads

Click on Steam Library Folder

Click on Add Steam Library







Add the path we created, it should be in /home/USERNAME/Library/Games and you are done.



This is it people, We finished configuring our main Steam installation. You can add as many steam libraries you want.



COMPLEMENTARY GUIDE – How to install games with this setup



Okay, I'm not going to walk you through a whole game installation guide. I will however explain how to compliment our new steam setup with your steam game installations. I'm going to install Skyrim.



Here's what I will do, if you need help on installing Skyrim, read GamersOnLinux Skyrim Guide. However, you DON'T NEED TO install Steam. Also, please remember to choose the right Steam Library.



With the new Steam installation, download Skyrim. (Please note that this is an example) 




Step 1) Once Skyrim finishes downloading go to PlayOnLinux and create a virtual drive for Skyrim. I'm using WINE 1.7.10-CSMT. Remember to use GamersOnLinux guide to know what libraries to install for your virtual drive (e.g .NET Framework, dxfullsetup, etc)



Step 2) Once you create the virtual drive, we are going to create two shortcuts (three if you are using SKSE)



Create these shortcuts in ~/.PlayOnLinux/shorcuts



Create the file and call it: Steam (for Skyrim)

(the letters in italic is the filename)



#!/bin/bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
# Always remember to change the WINEPREFIX path
export WINEPREFIX="/home/USERNAME/.PlayOnLinux//wineprefix/Skyrim"
export WINEDEBUG="-all"
# Important part
cd "/home/USERNAME/WINEApps/Steam"
POL_Wine Steam.exe "$@"



Create another file and call it Skyrim



 #!/bin/bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
export WINEPREFIX="/home/USERNAME/.PlayOnLinux//wineprefix/Skyrim"
export WINEDEBUG="-all"
cd "/home/USERNAME/Library/Games/SteamApps/common/Skyrim"
POL_Wine Skyrim.exe "$@"


Create another file and call it Skyrim SKSE



#!/bin/bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
export WINEPREFIX="/home/USERNAME/.PlayOnLinux//wineprefix/Skyrim"
export WINEDEBUG="-all"
cd "/home/USERNAME/Library/Games/SteamApps/common/Skyrim"
POL_Wine skse_loader.exe "$@"



That's all. Go to your PlayOnLinux and launch the game. :)



Side Note



This is a RINSE AND REPEAT process. Now whenever you create new virtual drives, just change the path in WINEPREFIX and make sure the change directory path is pointed to the game folder.



Later on I'll try to do a Borderlands 2 installation setup with this, you'll see how easy it is.







Questions



Q: If I change WINE versions, will the files in my Steam folder be affected?

A: No. That WINE version will get updated, the registry will remain intact.



Q: How does Steam works when the physical files are not in drive_c/Program Files?

A: WINE knows how to distinguish a symlink, you could create a symlink of drive_c and store all the files in Dropbox if you wanted. (not recommended, don't get any weird ideas...)



Q: What happens if I launch the games in my main Steam virtual drives?

A: If you don't prepare a virtual drive for each game properly. The obvious scenario is that the game won't run. The libraries are not installed, the game will crash. It's important to always create a virtual drive for each game, regardless if this Steam installation is being used for all of them.



Q: Can I organize all my previous Steam game installations?

A: Yes, and please don't panic right away. Please read carefully.



Go to your previous installations through PlayOnLinux's Virtual Drives



All Steam games are installed in Steam/SteamApps/common



You will see all games folder with their proper name.



If you followed the guide, just drag and drop the folder to /home/USERNAME/Library/Games/SteamApps/common



Open your Steam4All installation, the game won't be recognized on the fly. Proceed to install the game, Steam will say “Discovering Borderlands 2 files” then “Verifying files”. When it completes, you are done. You have successfully ported the game.

Like this: 





Please ask in the forums if you have doubts.