From caaef52a2a961b4d21efcba6b42c7e3606d40fc7 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Sat, 11 Jun 2011 14:35:20 +0300 Subject: [PATCH] added a new post --- _posts/2011-06-11-django-vs-rails.markdown | 9 + _posts/2011-06-11-jvm-langs-java-7.markdown | 7 + ...ence-killing-linux-on-the-desktop.markdown | 195 +++ .../Java/2011/05/12/jvm-langs-clojure.html | 29 +- _site/Emacs/2011/05/11/zenburn-emacs.html | 29 +- .../Emacs/Git/2009/07/19/dotemacs-github.html | 29 +- .../2009/05/19/emacs-shift-return.html | 29 +- .../Emacs/Linux/2009/12/05/menubar-emacs.html | 29 +- .../Linux/2011/06/05/emacs-default-font.html | 29 +- .../Fedora/Linux/2009/07/14/yum-provides.html | 29 +- .../05/26/3d-support-nouveau-fedora-13.html | 29 +- _site/Hardware/2008/06/16/das-keyboard.html | 29 +- .../2009/09/25/xerox-phaser-3117-fedora.html | 29 +- .../2009/05/04/switch-string-idiom-java.html | 29 +- _site/Java/2011/06/11/jvm-langs-java-7.html | 235 ++++ .../07/13/java-type-indicators-eclipse.html | 29 +- .../Groovy/2011/05/06/jvm-langs-groovy.html | 29 +- .../JBoss/2009/09/03/jboss-jvm-params.html | 29 +- .../2010/04/19/changing-laf-in-netbeans.html | 29 +- .../2008/09/29/singleton-java-ruby.html | 29 +- .../Scala/2011/05/08/jvm-langs-scala.html | 29 +- .../2011/04/26/jrebel-with-scala.html | 29 +- .../12/18/center-jdialog-over-jframe.html | 29 +- .../Swing/2010/02/26/enable-aa-in-swing.html | 29 +- .../2011/04/24/add-atom-feed-to-jekyll.html | 29 +- .../Fedora/2011/05/31/fedora-15-tips.html | 29 +- .../2011/06/04/phaser-3117-fedora-15.html | 29 +- ...perience-killing-linux-on-the-desktop.html | 422 +++++++ _site/Misc/2008/05/05/first-post.html | 29 +- .../2011/04/26/thoughts-on-the-kindle.html | 29 +- _site/Misc/2011/04/29/career-development.html | 29 +- .../Common Lisp/2011/05/04/lisp-problems.html | 29 +- .../Jekyll/2011/04/23/moving-to-jekyll.html | 29 +- _site/Misc/LaTeX/2010/09/07/cv-in-latex.html | 29 +- .../programming-languages-worth-learning.html | 29 +- .../parsing-numbers-from-string-in-lisp.html | 29 +- .../Emacs/2011/04/24/emacs-dev-kit.html | 29 +- .../2011/05/17/recommended-ruby-books.html | 29 +- .../Emacs/Rails/2008/06/19/emacs-rails.html | 29 +- .../Ruby/Java/2011/05/18/jvm-langs-jruby.html | 29 +- .../2011/05/03/ruby-or-python.html | 29 +- .../Django/2011/06/11/django-vs-rails.html | 235 ++++ .../04/29/one-shell-to-rule-them-all.html | 29 +- .../Z Shell/Linux/2008/07/27/zsh-prompt.html | 29 +- .../12/05/execute-stuff-after-zsh-login.html | 29 +- _site/about.html | 29 +- _site/archive.html | 35 +- _site/atom.xml | 228 +++- _site/categories/Books/index.html | 29 +- _site/categories/Clojure/index.html | 29 +- _site/categories/Common Lisp/index.html | 29 +- _site/categories/Design Patterns/index.html | 29 +- _site/categories/Django/index.html | 211 ++++ _site/categories/Eclipse/index.html | 29 +- _site/categories/Emacs/index.html | 29 +- _site/categories/Fedora/index.html | 29 +- _site/categories/Git/index.html | 29 +- _site/categories/Groovy/index.html | 29 +- _site/categories/Hardware/index.html | 29 +- _site/categories/IntelliJ/index.html | 29 +- _site/categories/JBoss/index.html | 29 +- _site/categories/Java/index.html | 31 +- _site/categories/Jekyll/index.html | 29 +- _site/categories/LaTeX/index.html | 29 +- _site/categories/Linux/index.html | 31 +- _site/categories/Misc/index.html | 29 +- _site/categories/NetBeans/index.html | 29 +- _site/categories/Programming/index.html | 29 +- _site/categories/Python/index.html | 31 +- _site/categories/Rails/index.html | 31 +- _site/categories/Rant/index.html | 211 ++++ _site/categories/Ruby/index.html | 31 +- _site/categories/Scala/index.html | 29 +- _site/categories/Swing/index.html | 29 +- _site/categories/Windows/index.html | 211 ++++ _site/categories/Z Shell/index.html | 29 +- _site/contacts.html | 29 +- _site/index.html | 1124 ++++------------- _site/projects.html | 29 +- 79 files changed, 3496 insertions(+), 1580 deletions(-) create mode 100644 _posts/2011-06-11-django-vs-rails.markdown create mode 100644 _posts/2011-06-11-jvm-langs-java-7.markdown create mode 100644 _posts/2011-06-11-linux-desktop-experience-killing-linux-on-the-desktop.markdown create mode 100644 _site/Java/2011/06/11/jvm-langs-java-7.html create mode 100644 _site/Linux/Windows/Rant/2011/06/11/linux-desktop-experience-killing-linux-on-the-desktop.html create mode 100644 _site/Ruby/Rails/Python/Django/2011/06/11/django-vs-rails.html create mode 100644 _site/categories/Django/index.html create mode 100644 _site/categories/Rant/index.html create mode 100644 _site/categories/Windows/index.html diff --git a/_posts/2011-06-11-django-vs-rails.markdown b/_posts/2011-06-11-django-vs-rails.markdown new file mode 100644 index 0000000..75a1545 --- /dev/null +++ b/_posts/2011-06-11-django-vs-rails.markdown @@ -0,0 +1,9 @@ +--- +layout: post +title: "Django 1.3 vs Rails 3: A not so final showdown" +categories: +- Ruby +- Rails +- Python +- Django +--- diff --git a/_posts/2011-06-11-jvm-langs-java-7.markdown b/_posts/2011-06-11-jvm-langs-java-7.markdown new file mode 100644 index 0000000..3dc8864 --- /dev/null +++ b/_posts/2011-06-11-jvm-langs-java-7.markdown @@ -0,0 +1,7 @@ +--- +layout: post +title: "Java.next() - Java 7: The King is dead, long live the King" +categories: +- Java +--- + diff --git a/_posts/2011-06-11-linux-desktop-experience-killing-linux-on-the-desktop.markdown b/_posts/2011-06-11-linux-desktop-experience-killing-linux-on-the-desktop.markdown new file mode 100644 index 0000000..f001f02 --- /dev/null +++ b/_posts/2011-06-11-linux-desktop-experience-killing-linux-on-the-desktop.markdown @@ -0,0 +1,195 @@ +--- +layout: post +title: "The Linux desktop experience is killing Linux on the desktop" +categories: +- Linux +- Windows +- Rant +--- + +**Disclaimer** + +_This post is a bona fide rant. It tells how a hardcore Linux user +(me) decided to abandon Linux as a desktop platform and the reasons +behind this decision. It might provoke some controversy, but +I frankly don't care._ + +# Overture + +I'm generally known as one of the biggest supporters of GNU/Linux, +I've taught courses on Linux administration, I've spoken at Linux +conferences and I naturally use Linux as my primary desktop on all my +machines. Well, that last part is not so true anymore. Here the story +begins... + +# The background + +I've been using GNU/Linux exclusively for 8 years now. I've spent a +lot of time with Fedora, Gentoo and Arch Linux. I use it at home, I +use it at work and along the way I've converted many Windows users to +Linux. I've lived through a lot of driver and software problems +with Linux, hoping that the day would come when it will become a +first-class citizen of the desktop operating systems town. Alas, this +day never came and probably never will. + +My patience ended this week and I'll be gradually moving all my +desktop machines back to Windows. What caused me to take such drastic +course of action? I've bought myself a new ThinkPad T520 laptop, +powered by Nvidia's Optimus GPU switching technology - when the GPU +load is low it uses the built-in Sandy Bridge GPU, when it gets higher +- it switches to the discrete NVS 4200M GPU. Needless to say - this + technology is not supported under Linux, but I was prepared to live + without it. After all both Intel and Nvidia are known to have decent + Linux drivers so I was about to try both GPU and select the one with + the better performance. All I had to do was pick a shiny new + distribution to power my mobile powerhouse... + +# The Distribution + +I love Fedora - always have, always will. They constantly deliver to +the end users the cutting edge in Linux technologies (both desktop and +server), so it's naturally my distro of choice (I'm quite fond of +cutting edge tech). I installed on the new +laptop the latest Fedora 15 with GNOME 3.0 and here the problems +started. GNOME 3 requires 3d acceleration to work properly - a +reasonable requirement these days, at least on an operating system with +normal video drivers. + +The Intel driver sucked so bad that I got constant screen corruption +and hang-ups. Too bad, because I preferred to use the Intel GPU since +I mostly work on the laptop. The open source Nvidia driver nouveau +doesn't support the NVS 4200, so I was forced to install the +proprietary driver. It ran OK initially, but after some time my system +just started to freeze while waiting for Plymouth (probably after some +kernel update, which I didn't notice). I could have tried the usual +tricks and fixed the problem, but at this point I finally realized how +idiotic it was of me to keep using Linux for a desktop OS after all +the shit I've endured and the time I've wasted dealing with stuff that +should have been "just working". I just want to get some work done, I +don't want to waste my time debugging all kind of crap. + +# The Shit I endured + +**Non-existing ethernet/wireless drivers** - not so common today, but + try remembering the time circa 2005 + +**Non-existing/crappy audio drivers** - got an X-Fi 5 years ago, ALSA + driver was released 3-4 years later and was total piece of garbage, + OSS driver was barely usable + +**Lamest video card drivers ever** - most video card drivers for Linux + are so bad I cannot even watch tear-free video. Nvidia have the only + decent video driver, but it's far from perfect either - no KMS, poor + 2D acceleration. AMD's drivers are a punishment from the Lord and + Intel's constantly "evolving" drivers are barely usable most of the + time. The video card drivers made me buy and HD media player and an + PS3 (for which I'm thankful), but I have to ask myself - why suffer + all this shit instead of getting a normal desktop OS like OS X or + Windows? Did I love Linux that much? Did I believe that much it's + desktop day would come? What an idiot I was. + +**Lack of printer drivers** - that's a funny one. Often printers + listed as having Linux drivers are mostly unusable. The printer that + own is listed as having a "perfect" Linux compatability in + openprinting.org. If this is perfect I cannot begin to imagine what + is "poor" compatibility. + +I'll stop writing about the driver problems now, because they affect +so many thing. Even my fairly advanced mouse is missing some functions +in Linux. I'm not even mentioning the things like support for "Turbo +Memory", Optimus, etc. + +**Lack of decent office software** - call it OpenOffice.org and don't + insult it anymore... + +**Problematic sound architecture** - let me be completely blunt - + everything sound related in Linux sucks - OSS, ALSA, PulseAudio (the + sucker king). From a technical standpoint OSS never actually sucked, + but since it wasn't picked up by the community the project fell + into oblivion. How many of you have enjoy Dolby Digital or DTS sound + from their Linux boxes? + +**Poor flash support** - should I explain? Have you tried it on a 64 + bit distro? Do I hate it? Sure. Do I hope HTML5 will kill it? + Sure. Do I need it? Sure. + +**Poor skype support** - Same story as with flash. I keep dreaming of + a world with more intelligent users where GTalk has a conference + mode and everybody's using it instead of skype. + +**Poor quality of desktop apps** - Known issues in core applications + such as Nautilus don't get fixed for years. Such things naturally + piss me off. Trying to contribute to the solution of a problem is + often met with apathy by maintainers. Btw Linux users thing that + Mozilla Firefox is very slow and memory hungry - but it turns out + that the Windows version is generally performing a lot better (not + to mention - supporting hardware video acceleration). + +I can keep listing things here forever. When I come to think about it +for the entire time I've been using Linux only one major problem got +resolved - USB devices support. I still remember the days when I had +to write auto mounting policies myself or to use _mount_ manually all +the time. I won't even mention the quality of most proprietary apps on +Linux, the huge amount of missing essential application and the +unavailability of mainstream video games. + +So this is it! Asta la vista, Linux! You still remain the best server +operating system, though. You'll always have a special place in my +heart and a VMWare instance on my Windows boxes. + +# What I'll miss + +- shell +- transparency +- package management + +Although most common desktop users probably don't use the shell very +often, I practically live(d) in it. OS X has zsh and bash, so it's a +long term option for me, but due to the need for new hardware I'll be +using Windows 7 on the desktop front for now. Hopefully the rumors +that PowerShell is great will turned out to be true. + +The ability to tweak every aspect of the configuration, to build +custom drivers and kernels will be missed as well, but I don't tend to +do this as often as I used to. + +Probably the biggest loss for me would be the wonderful distro package +management systems like YUM and APT. + +# Epilogue + +I remember the first time I used Linux. A friend of mine installed +Fedora 2 on my personal computer and there was a glitch in GRUB that +prevented me from booting in Windows. My ethernet card wasn't +supported so I was left without Internet. I asked my friend can I at +least watch a few movies while he brought me a patched version of the +buggy GRUB. He told me - you need to compile MPlayer from sources with +several optimization, you need windows video codecs, etc. At the time this +excited me a lot - adventure, excitement. I learned A LOT by using +Linux non-stop for so long time. But at some point you stop learning +exciting things and are just stuck with tedious things you have to +keep doing over and over again. And as I already mentioned - I don't +want my time wasted, I want to get the job done with minimum hassle. + +I've been hearing each and every year that "year 20xx" will be the +year of the Linux desktop. It never came and it's my firm believe that +it never will. Constantly plagued by hardware and software woes Linux +is doomed to fail. Without major support from hardware and software +vendors every OS is ultimately doomed to fail. + +It's no secret that a lot of money are made by Linux server businesses +and this naturally drives a lot of the development in the area of +improving server performance. Nobody put it better than +[Con Colivas](http://apcmag.com/why_i_quit_kernel_developer_con_kolivas.htm) +- "_Linux is burdened with enterprise crap that makes it run poorly on + desktop PCs, says kernel developer Con Kolivas who recently walked + away from years of work on it._". Linux will remain the king of the + server world, but on the desktop front it will always be an OS for + enthusiast and hackers only. + +Goodbye, my dear old friend. You'll be missed... but not that much. + +P.S. Btw I'm as pro a Linux user as they get - a professional sys +admin, a former kernel developer so don't bother me with moronic +comments from the type "you're not doing something right/you should +try another distro". diff --git a/_site/Clojure/Java/2011/05/12/jvm-langs-clojure.html b/_site/Clojure/Java/2011/05/12/jvm-langs-clojure.html index 40d06c8..2a871ad 100644 --- a/_site/Clojure/Java/2011/05/12/jvm-langs-clojure.html +++ b/_site/Clojure/Java/2011/05/12/jvm-langs-clojure.html @@ -1150,15 +1150,15 @@

Epilogue

@@ -1173,22 +1173,22 @@

Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -1230,7 +1230,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -1241,6 +1241,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Emacs/2011/05/11/zenburn-emacs.html b/_site/Emacs/2011/05/11/zenburn-emacs.html index 3d5cd38..b80d113 100644 --- a/_site/Emacs/2011/05/11/zenburn-emacs.html +++ b/_site/Emacs/2011/05/11/zenburn-emacs.html @@ -148,15 +148,15 @@

    A new Zenburn theme for Emacs

    @@ -171,22 +171,22 @@

    A new Zenburn theme for Emacs

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -228,7 +228,7 @@

    A new Zenburn theme for Emacs

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -239,6 +239,15 @@

    A new Zenburn theme for Emacs

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Emacs/Git/2009/07/19/dotemacs-github.html b/_site/Emacs/Git/2009/07/19/dotemacs-github.html index 1807ea4..5eb704e 100644 --- a/_site/Emacs/Git/2009/07/19/dotemacs-github.html +++ b/_site/Emacs/Git/2009/07/19/dotemacs-github.html @@ -129,15 +129,15 @@

    Emacs configuration in github

    @@ -152,22 +152,22 @@

    Emacs configuration in github

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -209,7 +209,7 @@

    Emacs configuration in github

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -220,6 +220,15 @@

    Emacs configuration in github

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Emacs/IntelliJ/2009/05/19/emacs-shift-return.html b/_site/Emacs/IntelliJ/2009/05/19/emacs-shift-return.html index 7590a67..0d8f5e1 100644 --- a/_site/Emacs/IntelliJ/2009/05/19/emacs-shift-return.html +++ b/_site/Emacs/IntelliJ/2009/05/19/emacs-shift-return.html @@ -135,15 +135,15 @@

    Emulate the behaviour of Return+Shift(insert new line) from po @@ -158,22 +158,22 @@

    Emulate the behaviour of Return+Shift(insert new line) from po
  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -215,7 +215,7 @@

    Emulate the behaviour of Return+Shift(insert new line) from po
  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -226,6 +226,15 @@

    Emulate the behaviour of Return+Shift(insert new line) from po
  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Emacs/Linux/2009/12/05/menubar-emacs.html b/_site/Emacs/Linux/2009/12/05/menubar-emacs.html index eb12400..76dd454 100644 --- a/_site/Emacs/Linux/2009/12/05/menubar-emacs.html +++ b/_site/Emacs/Linux/2009/12/05/menubar-emacs.html @@ -122,15 +122,15 @@

    Accessing the menu bar in Emacs

    @@ -145,22 +145,22 @@

    Accessing the menu bar in Emacs

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -202,7 +202,7 @@

    Accessing the menu bar in Emacs

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -213,6 +213,15 @@

    Accessing the menu bar in Emacs

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Emacs/Linux/2011/06/05/emacs-default-font.html b/_site/Emacs/Linux/2011/06/05/emacs-default-font.html index 005a247..4540db3 100644 --- a/_site/Emacs/Linux/2011/06/05/emacs-default-font.html +++ b/_site/Emacs/Linux/2011/06/05/emacs-default-font.html @@ -148,15 +148,15 @@

    Emacs Tip #1: Set the default font in Emacs 23

    @@ -171,22 +171,22 @@

    Emacs Tip #1: Set the default font in Emacs 23

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -228,7 +228,7 @@

    Emacs Tip #1: Set the default font in Emacs 23

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -239,6 +239,15 @@

    Emacs Tip #1: Set the default font in Emacs 23

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Fedora/Linux/2009/07/14/yum-provides.html b/_site/Fedora/Linux/2009/07/14/yum-provides.html index 47b1e56..9781806 100644 --- a/_site/Fedora/Linux/2009/07/14/yum-provides.html +++ b/_site/Fedora/Linux/2009/07/14/yum-provides.html @@ -146,15 +146,15 @@

    Find out quickly which package provides a certain library with @@ -169,22 +169,22 @@

    Find out quickly which package provides a certain library with
  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -226,7 +226,7 @@

    Find out quickly which package provides a certain library with
  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -237,6 +237,15 @@

    Find out quickly which package provides a certain library with
  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Fedora/Linux/Hardware/2010/05/26/3d-support-nouveau-fedora-13.html b/_site/Fedora/Linux/Hardware/2010/05/26/3d-support-nouveau-fedora-13.html index 3b5e983..73263ce 100644 --- a/_site/Fedora/Linux/Hardware/2010/05/26/3d-support-nouveau-fedora-13.html +++ b/_site/Fedora/Linux/Hardware/2010/05/26/3d-support-nouveau-fedora-13.html @@ -127,15 +127,15 @@

    Enabling 3D support for Nouveau in Fedora 13

    @@ -150,22 +150,22 @@

    Enabling 3D support for Nouveau in Fedora 13

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -207,7 +207,7 @@

    Enabling 3D support for Nouveau in Fedora 13

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -218,6 +218,15 @@

    Enabling 3D support for Nouveau in Fedora 13

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Hardware/2008/06/16/das-keyboard.html b/_site/Hardware/2008/06/16/das-keyboard.html index 8c2b4fa..37de884 100644 --- a/_site/Hardware/2008/06/16/das-keyboard.html +++ b/_site/Hardware/2008/06/16/das-keyboard.html @@ -151,15 +151,15 @@

    Das Keyboard

    @@ -174,22 +174,22 @@

    Das Keyboard

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -231,7 +231,7 @@

    Das Keyboard

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -242,6 +242,15 @@

    Das Keyboard

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Hardware/Fedora/Linux/2009/09/25/xerox-phaser-3117-fedora.html b/_site/Hardware/Fedora/Linux/2009/09/25/xerox-phaser-3117-fedora.html index 7124ba6..3649a69 100644 --- a/_site/Hardware/Fedora/Linux/2009/09/25/xerox-phaser-3117-fedora.html +++ b/_site/Hardware/Fedora/Linux/2009/09/25/xerox-phaser-3117-fedora.html @@ -127,15 +127,15 @@

    Using Xerox Phaser 3117 on Fedora

    @@ -150,22 +150,22 @@

    Using Xerox Phaser 3117 on Fedora

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -207,7 +207,7 @@

    Using Xerox Phaser 3117 on Fedora

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -218,6 +218,15 @@

    Using Xerox Phaser 3117 on Fedora

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/2009/05/04/switch-string-idiom-java.html b/_site/Java/2009/05/04/switch-string-idiom-java.html index bf82171..7a56164 100644 --- a/_site/Java/2009/05/04/switch-string-idiom-java.html +++ b/_site/Java/2009/05/04/switch-string-idiom-java.html @@ -119,15 +119,15 @@

    A switch on String idiom for Java

    @@ -142,22 +142,22 @@

    A switch on String idiom for Java

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -199,7 +199,7 @@

    A switch on String idiom for Java

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -210,6 +210,15 @@

    A switch on String idiom for Java

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/2011/06/11/jvm-langs-java-7.html b/_site/Java/2011/06/11/jvm-langs-java-7.html new file mode 100644 index 0000000..b2fcdf5 --- /dev/null +++ b/_site/Java/2011/06/11/jvm-langs-java-7.html @@ -0,0 +1,235 @@ + + + + + + + + (think) - Java.next() - Java 7: The King is dead, long live the King + + + + + +
    +
    + +
    + +
    +
    +

    Java.next() - Java 7: The King is dead, long live the King

    + + +
    Posted on 11 Jun 2011 by Bozhidar. Filed under Java.
    +
    + +
    +
    +
    + + + +blog comments powered by Disqus +
    +
    + +
    +
    + +
    + +
    + + + diff --git a/_site/Java/Eclipse/2009/07/13/java-type-indicators-eclipse.html b/_site/Java/Eclipse/2009/07/13/java-type-indicators-eclipse.html index 5ded590..d943780 100644 --- a/_site/Java/Eclipse/2009/07/13/java-type-indicators-eclipse.html +++ b/_site/Java/Eclipse/2009/07/13/java-type-indicators-eclipse.html @@ -126,15 +126,15 @@

    Java type indicators in Eclipse

    @@ -149,22 +149,22 @@

    Java type indicators in Eclipse

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -206,7 +206,7 @@

    Java type indicators in Eclipse

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -217,6 +217,15 @@

    Java type indicators in Eclipse

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/Groovy/2011/05/06/jvm-langs-groovy.html b/_site/Java/Groovy/2011/05/06/jvm-langs-groovy.html index 835820c..3716db0 100644 --- a/_site/Java/Groovy/2011/05/06/jvm-langs-groovy.html +++ b/_site/Java/Groovy/2011/05/06/jvm-langs-groovy.html @@ -827,15 +827,15 @@

    Epilogue

    @@ -850,22 +850,22 @@

    Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -907,7 +907,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -918,6 +918,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/JBoss/2009/09/03/jboss-jvm-params.html b/_site/Java/JBoss/2009/09/03/jboss-jvm-params.html index 4509291..94e4e3e 100644 --- a/_site/Java/JBoss/2009/09/03/jboss-jvm-params.html +++ b/_site/Java/JBoss/2009/09/03/jboss-jvm-params.html @@ -134,15 +134,15 @@

    Mofidy JVM parameters for JBoss AS

    @@ -157,22 +157,22 @@

    Mofidy JVM parameters for JBoss AS

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -214,7 +214,7 @@

    Mofidy JVM parameters for JBoss AS

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -225,6 +225,15 @@

    Mofidy JVM parameters for JBoss AS

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/NetBeans/2010/04/19/changing-laf-in-netbeans.html b/_site/Java/NetBeans/2010/04/19/changing-laf-in-netbeans.html index 7eca235..2a69dd9 100644 --- a/_site/Java/NetBeans/2010/04/19/changing-laf-in-netbeans.html +++ b/_site/Java/NetBeans/2010/04/19/changing-laf-in-netbeans.html @@ -134,15 +134,15 @@

    Changing the look & feel in NetBeans 6.8

    @@ -157,22 +157,22 @@

    Changing the look & feel in NetBeans 6.8

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -214,7 +214,7 @@

    Changing the look & feel in NetBeans 6.8

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -225,6 +225,15 @@

    Changing the look & feel in NetBeans 6.8

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/Ruby/Design Patterns/2008/09/29/singleton-java-ruby.html b/_site/Java/Ruby/Design Patterns/2008/09/29/singleton-java-ruby.html index b47768e..0f5c78c 100644 --- a/_site/Java/Ruby/Design Patterns/2008/09/29/singleton-java-ruby.html +++ b/_site/Java/Ruby/Design Patterns/2008/09/29/singleton-java-ruby.html @@ -149,15 +149,15 @@

    The best way to implement the Singleton pattern in Java and Ru @@ -172,22 +172,22 @@

    The best way to implement the Singleton pattern in Java and Ru
  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -229,7 +229,7 @@

    The best way to implement the Singleton pattern in Java and Ru
  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -240,6 +240,15 @@

    The best way to implement the Singleton pattern in Java and Ru
  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/Scala/2011/05/08/jvm-langs-scala.html b/_site/Java/Scala/2011/05/08/jvm-langs-scala.html index 08b85d3..ea89518 100644 --- a/_site/Java/Scala/2011/05/08/jvm-langs-scala.html +++ b/_site/Java/Scala/2011/05/08/jvm-langs-scala.html @@ -1258,15 +1258,15 @@

    Epilogue

    @@ -1281,22 +1281,22 @@

    Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -1338,7 +1338,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -1349,6 +1349,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/Scala/Programming/2011/04/26/jrebel-with-scala.html b/_site/Java/Scala/Programming/2011/04/26/jrebel-with-scala.html index 28108fc..0ebde3d 100644 --- a/_site/Java/Scala/Programming/2011/04/26/jrebel-with-scala.html +++ b/_site/Java/Scala/Programming/2011/04/26/jrebel-with-scala.html @@ -203,15 +203,15 @@

    Incremental development with Scala and JRebel

    @@ -226,22 +226,22 @@

    Incremental development with Scala and JRebel

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -283,7 +283,7 @@

    Incremental development with Scala and JRebel

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -294,6 +294,15 @@

    Incremental development with Scala and JRebel

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/Swing/2009/12/18/center-jdialog-over-jframe.html b/_site/Java/Swing/2009/12/18/center-jdialog-over-jframe.html index 53c0e98..090756d 100644 --- a/_site/Java/Swing/2009/12/18/center-jdialog-over-jframe.html +++ b/_site/Java/Swing/2009/12/18/center-jdialog-over-jframe.html @@ -135,15 +135,15 @@

    How to center a JDialog over a JFrame in Swing

    @@ -158,22 +158,22 @@

    How to center a JDialog over a JFrame in Swing

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -215,7 +215,7 @@

    How to center a JDialog over a JFrame in Swing

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -226,6 +226,15 @@

    How to center a JDialog over a JFrame in Swing

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Java/Swing/2010/02/26/enable-aa-in-swing.html b/_site/Java/Swing/2010/02/26/enable-aa-in-swing.html index 8ce80b9..4c4899e 100644 --- a/_site/Java/Swing/2010/02/26/enable-aa-in-swing.html +++ b/_site/Java/Swing/2010/02/26/enable-aa-in-swing.html @@ -131,15 +131,15 @@

    How to enable font anti-aliasing in a Java Swing app

    @@ -154,22 +154,22 @@

    How to enable font anti-aliasing in a Java Swing app

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -211,7 +211,7 @@

    How to enable font anti-aliasing in a Java Swing app

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -222,6 +222,15 @@

    How to enable font anti-aliasing in a Java Swing app

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Jekyll/2011/04/24/add-atom-feed-to-jekyll.html b/_site/Jekyll/2011/04/24/add-atom-feed-to-jekyll.html index aa1fa2c..fccc719 100644 --- a/_site/Jekyll/2011/04/24/add-atom-feed-to-jekyll.html +++ b/_site/Jekyll/2011/04/24/add-atom-feed-to-jekyll.html @@ -131,15 +131,15 @@

    Add Atom feed to Jekyll powered blog

    @@ -154,22 +154,22 @@

    Add Atom feed to Jekyll powered blog

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -211,7 +211,7 @@

    Add Atom feed to Jekyll powered blog

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -222,6 +222,15 @@

    Add Atom feed to Jekyll powered blog

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Linux/Fedora/2011/05/31/fedora-15-tips.html b/_site/Linux/Fedora/2011/05/31/fedora-15-tips.html index 8440fea..0133ffa 100644 --- a/_site/Linux/Fedora/2011/05/31/fedora-15-tips.html +++ b/_site/Linux/Fedora/2011/05/31/fedora-15-tips.html @@ -396,15 +396,15 @@

    Epilogue

    @@ -419,22 +419,22 @@

    Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -476,7 +476,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -487,6 +487,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Linux/Hardware/Fedora/2011/06/04/phaser-3117-fedora-15.html b/_site/Linux/Hardware/Fedora/2011/06/04/phaser-3117-fedora-15.html index 43315c4..ef5b28e 100644 --- a/_site/Linux/Hardware/Fedora/2011/06/04/phaser-3117-fedora-15.html +++ b/_site/Linux/Hardware/Fedora/2011/06/04/phaser-3117-fedora-15.html @@ -137,15 +137,15 @@

    Running Xerox Phaser 3117 under Fedora 15

    @@ -160,22 +160,22 @@

    Running Xerox Phaser 3117 under Fedora 15

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -217,7 +217,7 @@

    Running Xerox Phaser 3117 under Fedora 15

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -228,6 +228,15 @@

    Running Xerox Phaser 3117 under Fedora 15

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Linux/Windows/Rant/2011/06/11/linux-desktop-experience-killing-linux-on-the-desktop.html b/_site/Linux/Windows/Rant/2011/06/11/linux-desktop-experience-killing-linux-on-the-desktop.html new file mode 100644 index 0000000..069ed46 --- /dev/null +++ b/_site/Linux/Windows/Rant/2011/06/11/linux-desktop-experience-killing-linux-on-the-desktop.html @@ -0,0 +1,422 @@ + + + + + + + + (think) - The Linux desktop experience is killing Linux on the desktop + + + + + +
    +
    + +
    + +
    +
    +

    The Linux desktop experience is killing Linux on the desktop

    +

    Disclaimer

    + +

    This post is a bona fide rant. It tells how a hardcore Linux user +(me) decided to abandon Linux as a desktop platform and the reasons +behind this decision. It might provoke some controversy, but +I frankly don’t care.

    + +

    Overture

    + +

    I’m generally known as one of the biggest supporters of GNU/Linux, +I’ve taught courses on Linux administration, I’ve spoken at Linux +conferences and I naturally use Linux as my primary desktop on all my +machines. Well, that last part is not so true anymore. Here the story +begins…

    + +

    The background

    + +

    I’ve been using GNU/Linux exclusively for 8 years now. I’ve spent a +lot of time with Fedora, Gentoo and Arch Linux. I use it at home, I +use it at work and along the way I’ve converted many Windows users to +Linux. I’ve lived through a lot of driver and software problems +with Linux, hoping that the day would come when it will become a +first-class citizen of the desktop operating systems town. Alas, this +day never came and probably never will.

    + +

    My patience ended this week and I’ll be gradually moving all my +desktop machines back to Windows. What caused me to take such drastic +course of action? I’ve bought myself a new ThinkPad T520 laptop, +powered by Nvidia’s Optimus GPU switching technology - when the GPU +load is low it uses the built-in Sandy Bridge GPU, when it gets higher +- it switches to the discrete NVS 4200M GPU. Needless to say - this + technology is not supported under Linux, but I was prepared to live + without it. After all both Intel and Nvidia are known to have decent + Linux drivers so I was about to try both GPU and select the one with + the better performance. All I had to do was pick a shiny new + distribution to power my mobile powerhouse…

    + +

    The Distribution

    + +

    I love Fedora - always have, always will. They constantly deliver to +the end users the cutting edge in Linux technologies (both desktop and +server), so it’s naturally my distro of choice (I’m quite fond of +cutting edge tech). I installed on the new +laptop the latest Fedora 15 with GNOME 3.0 and here the problems +started. GNOME 3 requires 3d acceleration to work properly - a +reasonable requirement these days, at least on an operating system with +normal video drivers.

    + +

    The Intel driver sucked so bad that I got constant screen corruption +and hang-ups. Too bad, because I preferred to use the Intel GPU since +I mostly work on the laptop. The open source Nvidia driver nouveau +doesn’t support the NVS 4200, so I was forced to install the +proprietary driver. It ran OK initially, but after some time my system +just started to freeze while waiting for Plymouth (probably after some +kernel update, which I didn’t notice). I could have tried the usual +tricks and fixed the problem, but at this point I finally realized how +idiotic it was of me to keep using Linux for a desktop OS after all +the shit I’ve endured and the time I’ve wasted dealing with stuff that +should have been “just working”. I just want to get some work done, I +don’t want to waste my time debugging all kind of crap.

    + +

    The Shit I endured

    + +

    Non-existing ethernet/wireless drivers - not so common today, but + try remembering the time circa 2005

    + +

    Non-existing/crappy audio drivers - got an X-Fi 5 years ago, ALSA + driver was released 3-4 years later and was total piece of garbage, + OSS driver was barely usable

    + +

    Lamest video card drivers ever - most video card drivers for Linux + are so bad I cannot even watch tear-free video. Nvidia have the only + decent video driver, but it’s far from perfect either - no KMS, poor + 2D acceleration. AMD’s drivers are a punishment from the Lord and + Intel’s constantly “evolving” drivers are barely usable most of the + time. The video card drivers made me buy and HD media player and an + PS3 (for which I’m thankful), but I have to ask myself - why suffer + all this shit instead of getting a normal desktop OS like OS X or + Windows? Did I love Linux that much? Did I believe that much it’s + desktop day would come? What an idiot I was.

    + +

    Lack of printer drivers - that’s a funny one. Often printers + listed as having Linux drivers are mostly unusable. The printer that + own is listed as having a “perfect” Linux compatability in + openprinting.org. If this is perfect I cannot begin to imagine what + is “poor” compatibility.

    + +

    I’ll stop writing about the driver problems now, because they affect +so many thing. Even my fairly advanced mouse is missing some functions +in Linux. I’m not even mentioning the things like support for “Turbo +Memory”, Optimus, etc.

    + +

    Lack of decent office software - call it OpenOffice.org and don’t + insult it anymore…

    + +

    Problematic sound architecture - let me be completely blunt - + everything sound related in Linux sucks - OSS, ALSA, PulseAudio (the + sucker king). From a technical standpoint OSS never actually sucked, + but since it wasn’t picked up by the community the project fell + into oblivion. How many of you have enjoy Dolby Digital or DTS sound + from their Linux boxes?

    + +

    Poor flash support - should I explain? Have you tried it on a 64 + bit distro? Do I hate it? Sure. Do I hope HTML5 will kill it? + Sure. Do I need it? Sure.

    + +

    Poor skype support - Same story as with flash. I keep dreaming of + a world with more intelligent users where GTalk has a conference + mode and everybody’s using it instead of skype.

    + +

    Poor quality of desktop apps - Known issues in core applications + such as Nautilus don’t get fixed for years. Such things naturally + piss me off. Trying to contribute to the solution of a problem is + often met with apathy by maintainers. Btw Linux users thing that + Mozilla Firefox is very slow and memory hungry - but it turns out + that the Windows version is generally performing a lot better (not + to mention - supporting hardware video acceleration).

    + +

    I can keep listing things here forever. When I come to think about it +for the entire time I’ve been using Linux only one major problem got +resolved - USB devices support. I still remember the days when I had +to write auto mounting policies myself or to use mount manually all +the time. I won’t even mention the quality of most proprietary apps on +Linux, the huge amount of missing essential application and the +unavailability of mainstream video games.

    + +

    So this is it! Asta la vista, Linux! You still remain the best server +operating system, though. You’ll always have a special place in my +heart and a VMWare instance on my Windows boxes.

    + +

    What I’ll miss

    + +
      +
    • shell
    • +
    • transparency
    • +
    • package management
    • +
    + +

    Although most common desktop users probably don’t use the shell very +often, I practically live(d) in it. OS X has zsh and bash, so it’s a +long term option for me, but due to the need for new hardware I’ll be +using Windows 7 on the desktop front for now. Hopefully the rumors +that PowerShell is great will turned out to be true.

    + +

    The ability to tweak every aspect of the configuration, to build +custom drivers and kernels will be missed as well, but I don’t tend to +do this as often as I used to.

    + +

    Probably the biggest loss for me would be the wonderful distro package +management systems like YUM and APT.

    + +

    Epilogue

    + +

    I remember the first time I used Linux. A friend of mine installed +Fedora 2 on my personal computer and there was a glitch in GRUB that +prevented me from booting in Windows. My ethernet card wasn’t +supported so I was left without Internet. I asked my friend can I at +least watch a few movies while he brought me a patched version of the +buggy GRUB. He told me - you need to compile MPlayer from sources with +several optimization, you need windows video codecs, etc. At the time this +excited me a lot - adventure, excitement. I learned A LOT by using +Linux non-stop for so long time. But at some point you stop learning +exciting things and are just stuck with tedious things you have to +keep doing over and over again. And as I already mentioned - I don’t +want my time wasted, I want to get the job done with minimum hassle.

    + +

    I’ve been hearing each and every year that “year 20xx” will be the +year of the Linux desktop. It never came and it’s my firm believe that +it never will. Constantly plagued by hardware and software woes Linux +is doomed to fail. Without major support from hardware and software +vendors every OS is ultimately doomed to fail.

    + +

    It’s no secret that a lot of money are made by Linux server businesses +and this naturally drives a lot of the development in the area of +improving server performance. Nobody put it better than +Con Colivas +- “Linux is burdened with enterprise crap that makes it run poorly on + desktop PCs, says kernel developer Con Kolivas who recently walked + away from years of work on it.”. Linux will remain the king of the + server world, but on the desktop front it will always be an OS for + enthusiast and hackers only.

    + +

    Goodbye, my dear old friend. You’ll be missed… but not that much.

    + +

    P.S. Btw I’m as pro a Linux user as they get - a professional sys +admin, a former kernel developer so don’t bother me with moronic +comments from the type “you’re not doing something right/you should +try another distro”.

    + +
    Posted on 11 Jun 2011 by Bozhidar. Filed under Linux, Windows, and Rant.
    +
    + +
    +
    +
    + + + +blog comments powered by Disqus +
    +
    + +
    +
    + +
    + +
    + + + diff --git a/_site/Misc/2008/05/05/first-post.html b/_site/Misc/2008/05/05/first-post.html index a365ea7..8457166 100644 --- a/_site/Misc/2008/05/05/first-post.html +++ b/_site/Misc/2008/05/05/first-post.html @@ -131,15 +131,15 @@

    Every blog has its first post...

    @@ -154,22 +154,22 @@

    Every blog has its first post...

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -211,7 +211,7 @@

    Every blog has its first post...

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -222,6 +222,15 @@

    Every blog has its first post...

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Misc/2011/04/26/thoughts-on-the-kindle.html b/_site/Misc/2011/04/26/thoughts-on-the-kindle.html index 7e665db..d3d31ad 100644 --- a/_site/Misc/2011/04/26/thoughts-on-the-kindle.html +++ b/_site/Misc/2011/04/26/thoughts-on-the-kindle.html @@ -260,15 +260,15 @@

    Conclusion

    @@ -283,22 +283,22 @@

    Conclusion

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -340,7 +340,7 @@

    Conclusion

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -351,6 +351,15 @@

    Conclusion

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Misc/2011/04/29/career-development.html b/_site/Misc/2011/04/29/career-development.html index 441edfa..61b1c97 100644 --- a/_site/Misc/2011/04/29/career-development.html +++ b/_site/Misc/2011/04/29/career-development.html @@ -232,15 +232,15 @@

    Conclusion

    @@ -255,22 +255,22 @@

    Conclusion

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -312,7 +312,7 @@

    Conclusion

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -323,6 +323,15 @@

    Conclusion

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Misc/Common Lisp/2011/05/04/lisp-problems.html b/_site/Misc/Common Lisp/2011/05/04/lisp-problems.html index cc83c9e..59f7c1a 100644 --- a/_site/Misc/Common Lisp/2011/05/04/lisp-problems.html +++ b/_site/Misc/Common Lisp/2011/05/04/lisp-problems.html @@ -544,15 +544,15 @@

    Misc

    @@ -567,22 +567,22 @@

    Misc

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -624,7 +624,7 @@

    Misc

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -635,6 +635,15 @@

    Misc

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Misc/Jekyll/2011/04/23/moving-to-jekyll.html b/_site/Misc/Jekyll/2011/04/23/moving-to-jekyll.html index 3539b93..36442fe 100644 --- a/_site/Misc/Jekyll/2011/04/23/moving-to-jekyll.html +++ b/_site/Misc/Jekyll/2011/04/23/moving-to-jekyll.html @@ -147,15 +147,15 @@

    Moving from WordPress to Jekyll

    @@ -170,22 +170,22 @@

    Moving from WordPress to Jekyll

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -227,7 +227,7 @@

    Moving from WordPress to Jekyll

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -238,6 +238,15 @@

    Moving from WordPress to Jekyll

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Misc/LaTeX/2010/09/07/cv-in-latex.html b/_site/Misc/LaTeX/2010/09/07/cv-in-latex.html index eb76708..c350b7d 100644 --- a/_site/Misc/LaTeX/2010/09/07/cv-in-latex.html +++ b/_site/Misc/LaTeX/2010/09/07/cv-in-latex.html @@ -122,15 +122,15 @@

    My professional CV in LaTeX

    @@ -145,22 +145,22 @@

    My professional CV in LaTeX

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -202,7 +202,7 @@

    My professional CV in LaTeX

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -213,6 +213,15 @@

    My professional CV in LaTeX

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Programming/2011/04/27/programming-languages-worth-learning.html b/_site/Programming/2011/04/27/programming-languages-worth-learning.html index db84370..5dbf7f2 100644 --- a/_site/Programming/2011/04/27/programming-languages-worth-learning.html +++ b/_site/Programming/2011/04/27/programming-languages-worth-learning.html @@ -337,15 +337,15 @@

    Conclusion

    @@ -360,22 +360,22 @@

    Conclusion

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -417,7 +417,7 @@

    Conclusion

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -428,6 +428,15 @@

    Conclusion

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Programming/Common Lisp/2011/04/30/parsing-numbers-from-string-in-lisp.html b/_site/Programming/Common Lisp/2011/04/30/parsing-numbers-from-string-in-lisp.html index 5f51087..3e6c61d 100644 --- a/_site/Programming/Common Lisp/2011/04/30/parsing-numbers-from-string-in-lisp.html +++ b/_site/Programming/Common Lisp/2011/04/30/parsing-numbers-from-string-in-lisp.html @@ -166,15 +166,15 @@

    Parsing numbers from string in Common Lisp

    @@ -189,22 +189,22 @@

    Parsing numbers from string in Common Lisp

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -246,7 +246,7 @@

    Parsing numbers from string in Common Lisp

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -257,6 +257,15 @@

    Parsing numbers from string in Common Lisp

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Programming/Emacs/2011/04/24/emacs-dev-kit.html b/_site/Programming/Emacs/2011/04/24/emacs-dev-kit.html index 3a879e4..807aedb 100644 --- a/_site/Programming/Emacs/2011/04/24/emacs-dev-kit.html +++ b/_site/Programming/Emacs/2011/04/24/emacs-dev-kit.html @@ -164,15 +164,15 @@

    Emacs Dev Kit

    @@ -187,22 +187,22 @@

    Emacs Dev Kit

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -244,7 +244,7 @@

    Emacs Dev Kit

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -255,6 +255,15 @@

    Emacs Dev Kit

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Ruby/Books/2011/05/17/recommended-ruby-books.html b/_site/Ruby/Books/2011/05/17/recommended-ruby-books.html index cb30b4d..95360a4 100644 --- a/_site/Ruby/Books/2011/05/17/recommended-ruby-books.html +++ b/_site/Ruby/Books/2011/05/17/recommended-ruby-books.html @@ -286,15 +286,15 @@

    Epilogue

    @@ -309,22 +309,22 @@

    Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -366,7 +366,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -377,6 +377,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Ruby/Emacs/Rails/2008/06/19/emacs-rails.html b/_site/Ruby/Emacs/Rails/2008/06/19/emacs-rails.html index 2b2da0f..99d4803 100644 --- a/_site/Ruby/Emacs/Rails/2008/06/19/emacs-rails.html +++ b/_site/Ruby/Emacs/Rails/2008/06/19/emacs-rails.html @@ -189,15 +189,15 @@

    Using Emacs for Rails development: The perfect setup

    @@ -212,22 +212,22 @@

    Using Emacs for Rails development: The perfect setup

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -269,7 +269,7 @@

    Using Emacs for Rails development: The perfect setup

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -280,6 +280,15 @@

    Using Emacs for Rails development: The perfect setup

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Ruby/Java/2011/05/18/jvm-langs-jruby.html b/_site/Ruby/Java/2011/05/18/jvm-langs-jruby.html index a369565..7ae9fe1 100644 --- a/_site/Ruby/Java/2011/05/18/jvm-langs-jruby.html +++ b/_site/Ruby/Java/2011/05/18/jvm-langs-jruby.html @@ -534,15 +534,15 @@

    Epilogue

    @@ -557,22 +557,22 @@

    Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -614,7 +614,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -625,6 +625,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Ruby/Python/Programming/2011/05/03/ruby-or-python.html b/_site/Ruby/Python/Programming/2011/05/03/ruby-or-python.html index 5de8a40..179d484 100644 --- a/_site/Ruby/Python/Programming/2011/05/03/ruby-or-python.html +++ b/_site/Ruby/Python/Programming/2011/05/03/ruby-or-python.html @@ -633,15 +633,15 @@

    Conclusion

    @@ -656,22 +656,22 @@

    Conclusion

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -713,7 +713,7 @@

    Conclusion

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -724,6 +724,15 @@

    Conclusion

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Ruby/Rails/Python/Django/2011/06/11/django-vs-rails.html b/_site/Ruby/Rails/Python/Django/2011/06/11/django-vs-rails.html new file mode 100644 index 0000000..2c9d0e8 --- /dev/null +++ b/_site/Ruby/Rails/Python/Django/2011/06/11/django-vs-rails.html @@ -0,0 +1,235 @@ + + + + + + + + (think) - Django 1.3 vs Rails 3: A not so final showdown + + + + + +
    +
    + +
    + +
    +
    +

    Django 1.3 vs Rails 3: A not so final showdown

    + + +
    Posted on 11 Jun 2011 by Bozhidar. Filed under Ruby, Rails, Python, and Django.
    +
    + +
    +
    +
    + + + +blog comments powered by Disqus +
    +
    + +
    +
    + +
    + +
    + + + diff --git a/_site/Z Shell/2011/04/29/one-shell-to-rule-them-all.html b/_site/Z Shell/2011/04/29/one-shell-to-rule-them-all.html index d619d2c..0db4d56 100644 --- a/_site/Z Shell/2011/04/29/one-shell-to-rule-them-all.html +++ b/_site/Z Shell/2011/04/29/one-shell-to-rule-them-all.html @@ -359,15 +359,15 @@

    Useful resources

    @@ -382,22 +382,22 @@

    Useful resources

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -439,7 +439,7 @@

    Useful resources

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -450,6 +450,15 @@

    Useful resources

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Z Shell/Linux/2008/07/27/zsh-prompt.html b/_site/Z Shell/Linux/2008/07/27/zsh-prompt.html index b1e5de8..059f222 100644 --- a/_site/Z Shell/Linux/2008/07/27/zsh-prompt.html +++ b/_site/Z Shell/Linux/2008/07/27/zsh-prompt.html @@ -155,15 +155,15 @@

    A nice zsh prompt

    @@ -178,22 +178,22 @@

    A nice zsh prompt

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -235,7 +235,7 @@

    A nice zsh prompt

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -246,6 +246,15 @@

    A nice zsh prompt

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/Z Shell/Linux/2009/12/05/execute-stuff-after-zsh-login.html b/_site/Z Shell/Linux/2009/12/05/execute-stuff-after-zsh-login.html index 95ecedc..7dbcc2c 100644 --- a/_site/Z Shell/Linux/2009/12/05/execute-stuff-after-zsh-login.html +++ b/_site/Z Shell/Linux/2009/12/05/execute-stuff-after-zsh-login.html @@ -131,15 +131,15 @@

    Automatically execute programs after zsh login

    @@ -154,22 +154,22 @@

    Automatically execute programs after zsh login

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -211,7 +211,7 @@

    Automatically execute programs after zsh login

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -222,6 +222,15 @@

    Automatically execute programs after zsh login

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/about.html b/_site/about.html index 5b6c031..db001b8 100644 --- a/_site/about.html +++ b/_site/about.html @@ -102,15 +102,15 @@

    (think)

    @@ -125,22 +125,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -182,7 +182,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -193,6 +193,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/archive.html b/_site/archive.html index 045dc52..ceac595 100644 --- a/_site/archive.html +++ b/_site/archive.html @@ -42,6 +42,12 @@

    (think)

    @@ -191,22 +197,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -248,7 +254,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -259,6 +265,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/atom.xml b/_site/atom.xml index 0e7651e..f8a6de1 100644 --- a/_site/atom.xml +++ b/_site/atom.xml @@ -4,7 +4,7 @@ www.batsov.com - 2011-06-05T10:53:15+03:00 + 2011-06-11T14:30:37+03:00 http://www.batsov.com/ Bozhidar Batsov @@ -12,6 +12,232 @@ + + http://www.batsov.com/Linux/Windows/Rant/2011/06/11/linux-desktop-experience-killing-linux-on-the-desktop + + The Linux desktop experience is killing Linux on the desktop + 2011-06-11T00:00:00+03:00 + + Bozhidar Batsov + http://www.batsov.com/ + + <p><strong>Disclaimer</strong></p> + +<p><em>This post is a bona fide rant. It tells how a hardcore Linux user +(me) decided to abandon Linux as a desktop platform and the reasons +behind this decision. It might provoke some controversy, but +I frankly don’t care.</em></p> + +<h1 id="overture">Overture</h1> + +<p>I’m generally known as one of the biggest supporters of GNU/Linux, +I’ve taught courses on Linux administration, I’ve spoken at Linux +conferences and I naturally use Linux as my primary desktop on all my +machines. Well, that last part is not so true anymore. Here the story +begins…</p> + +<h1 id="the-background">The background</h1> + +<p>I’ve been using GNU/Linux exclusively for 8 years now. I’ve spent a +lot of time with Fedora, Gentoo and Arch Linux. I use it at home, I +use it at work and along the way I’ve converted many Windows users to +Linux. I’ve lived through a lot of driver and software problems +with Linux, hoping that the day would come when it will become a +first-class citizen of the desktop operating systems town. Alas, this +day never came and probably never will.</p> + +<p>My patience ended this week and I’ll be gradually moving all my +desktop machines back to Windows. What caused me to take such drastic +course of action? I’ve bought myself a new ThinkPad T520 laptop, +powered by Nvidia’s Optimus GPU switching technology - when the GPU +load is low it uses the built-in Sandy Bridge GPU, when it gets higher +- it switches to the discrete NVS 4200M GPU. Needless to say - this + technology is not supported under Linux, but I was prepared to live + without it. After all both Intel and Nvidia are known to have decent + Linux drivers so I was about to try both GPU and select the one with + the better performance. All I had to do was pick a shiny new + distribution to power my mobile powerhouse…</p> + +<h1 id="the-distribution">The Distribution</h1> + +<p>I love Fedora - always have, always will. They constantly deliver to +the end users the cutting edge in Linux technologies (both desktop and +server), so it’s naturally my distro of choice (I’m quite fond of +cutting edge tech). I installed on the new +laptop the latest Fedora 15 with GNOME 3.0 and here the problems +started. GNOME 3 requires 3d acceleration to work properly - a +reasonable requirement these days, at least on an operating system with +normal video drivers. </p> + +<p>The Intel driver sucked so bad that I got constant screen corruption +and hang-ups. Too bad, because I preferred to use the Intel GPU since +I mostly work on the laptop. The open source Nvidia driver nouveau +doesn’t support the NVS 4200, so I was forced to install the +proprietary driver. It ran OK initially, but after some time my system +just started to freeze while waiting for Plymouth (probably after some +kernel update, which I didn’t notice). I could have tried the usual +tricks and fixed the problem, but at this point I finally realized how +idiotic it was of me to keep using Linux for a desktop OS after all +the shit I’ve endured and the time I’ve wasted dealing with stuff that +should have been “just working”. I just want to get some work done, I +don’t want to waste my time debugging all kind of crap.</p> + +<h1 id="the-shit-i-endured">The Shit I endured</h1> + +<p><strong>Non-existing ethernet/wireless drivers</strong> - not so common today, but + try remembering the time circa 2005</p> + +<p><strong>Non-existing/crappy audio drivers</strong> - got an X-Fi 5 years ago, ALSA + driver was released 3-4 years later and was total piece of garbage, + OSS driver was barely usable</p> + +<p><strong>Lamest video card drivers ever</strong> - most video card drivers for Linux + are so bad I cannot even watch tear-free video. Nvidia have the only + decent video driver, but it’s far from perfect either - no KMS, poor + 2D acceleration. AMD’s drivers are a punishment from the Lord and + Intel’s constantly “evolving” drivers are barely usable most of the + time. The video card drivers made me buy and HD media player and an + PS3 (for which I’m thankful), but I have to ask myself - why suffer + all this shit instead of getting a normal desktop OS like OS X or + Windows? Did I love Linux that much? Did I believe that much it’s + desktop day would come? What an idiot I was.</p> + +<p><strong>Lack of printer drivers</strong> - that’s a funny one. Often printers + listed as having Linux drivers are mostly unusable. The printer that + own is listed as having a “perfect” Linux compatability in + openprinting.org. If this is perfect I cannot begin to imagine what + is “poor” compatibility.</p> + +<p>I’ll stop writing about the driver problems now, because they affect +so many thing. Even my fairly advanced mouse is missing some functions +in Linux. I’m not even mentioning the things like support for “Turbo +Memory”, Optimus, etc.</p> + +<p><strong>Lack of decent office software</strong> - call it OpenOffice.org and don’t + insult it anymore…</p> + +<p><strong>Problematic sound architecture</strong> - let me be completely blunt - + everything sound related in Linux sucks - OSS, ALSA, PulseAudio (the + sucker king). From a technical standpoint OSS never actually sucked, + but since it wasn’t picked up by the community the project fell + into oblivion. How many of you have enjoy Dolby Digital or DTS sound + from their Linux boxes? </p> + +<p><strong>Poor flash support</strong> - should I explain? Have you tried it on a 64 + bit distro? Do I hate it? Sure. Do I hope HTML5 will kill it? + Sure. Do I need it? Sure.</p> + +<p><strong>Poor skype support</strong> - Same story as with flash. I keep dreaming of + a world with more intelligent users where GTalk has a conference + mode and everybody’s using it instead of skype.</p> + +<p><strong>Poor quality of desktop apps</strong> - Known issues in core applications + such as Nautilus don’t get fixed for years. Such things naturally + piss me off. Trying to contribute to the solution of a problem is + often met with apathy by maintainers. Btw Linux users thing that + Mozilla Firefox is very slow and memory hungry - but it turns out + that the Windows version is generally performing a lot better (not + to mention - supporting hardware video acceleration).</p> + +<p>I can keep listing things here forever. When I come to think about it +for the entire time I’ve been using Linux only one major problem got +resolved - USB devices support. I still remember the days when I had +to write auto mounting policies myself or to use <em>mount</em> manually all +the time. I won’t even mention the quality of most proprietary apps on +Linux, the huge amount of missing essential application and the +unavailability of mainstream video games.</p> + +<p>So this is it! Asta la vista, Linux! You still remain the best server +operating system, though. You’ll always have a special place in my +heart and a VMWare instance on my Windows boxes. </p> + +<h1 id="what-ill-miss">What I’ll miss</h1> + +<ul> + <li>shell</li> + <li>transparency</li> + <li>package management</li> +</ul> + +<p>Although most common desktop users probably don’t use the shell very +often, I practically live(d) in it. OS X has zsh and bash, so it’s a +long term option for me, but due to the need for new hardware I’ll be +using Windows 7 on the desktop front for now. Hopefully the rumors +that PowerShell is great will turned out to be true.</p> + +<p>The ability to tweak every aspect of the configuration, to build +custom drivers and kernels will be missed as well, but I don’t tend to +do this as often as I used to. </p> + +<p>Probably the biggest loss for me would be the wonderful distro package +management systems like YUM and APT.</p> + +<h1 id="epilogue">Epilogue</h1> + +<p>I remember the first time I used Linux. A friend of mine installed +Fedora 2 on my personal computer and there was a glitch in GRUB that +prevented me from booting in Windows. My ethernet card wasn’t +supported so I was left without Internet. I asked my friend can I at +least watch a few movies while he brought me a patched version of the +buggy GRUB. He told me - you need to compile MPlayer from sources with +several optimization, you need windows video codecs, etc. At the time this +excited me a lot - adventure, excitement. I learned A LOT by using +Linux non-stop for so long time. But at some point you stop learning +exciting things and are just stuck with tedious things you have to +keep doing over and over again. And as I already mentioned - I don’t +want my time wasted, I want to get the job done with minimum hassle.</p> + +<p>I’ve been hearing each and every year that “year 20xx” will be the +year of the Linux desktop. It never came and it’s my firm believe that +it never will. Constantly plagued by hardware and software woes Linux +is doomed to fail. Without major support from hardware and software +vendors every OS is ultimately doomed to fail. </p> + +<p>It’s no secret that a lot of money are made by Linux server businesses +and this naturally drives a lot of the development in the area of +improving server performance. Nobody put it better than +<a href="http://apcmag.com/why_i_quit_kernel_developer_con_kolivas.htm">Con Colivas</a> +- “<em>Linux is burdened with enterprise crap that makes it run poorly on + desktop PCs, says kernel developer Con Kolivas who recently walked + away from years of work on it.</em>”. Linux will remain the king of the + server world, but on the desktop front it will always be an OS for + enthusiast and hackers only.</p> + +<p>Goodbye, my dear old friend. You’ll be missed… but not that much.</p> + +<p>P.S. Btw I’m as pro a Linux user as they get - a professional sys +admin, a former kernel developer so don’t bother me with moronic +comments from the type “you’re not doing something right/you should +try another distro”.</p> + + + + + http://www.batsov.com/Java/2011/06/11/jvm-langs-java-7 + + Java.next() - Java 7: The King is dead, long live the King + 2011-06-11T00:00:00+03:00 + + Bozhidar Batsov + http://www.batsov.com/ + + + + + + + http://www.batsov.com/Ruby/Rails/Python/Django/2011/06/11/django-vs-rails + + Django 1.3 vs Rails 3: A not so final showdown + 2011-06-11T00:00:00+03:00 + + Bozhidar Batsov + http://www.batsov.com/ + + + + + http://www.batsov.com/Emacs/Linux/2011/06/05/emacs-default-font diff --git a/_site/categories/Books/index.html b/_site/categories/Books/index.html index 22ba293..c889605 100644 --- a/_site/categories/Books/index.html +++ b/_site/categories/Books/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Clojure/index.html b/_site/categories/Clojure/index.html index 1da2985..9b9ec3f 100644 --- a/_site/categories/Clojure/index.html +++ b/_site/categories/Clojure/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Common Lisp/index.html b/_site/categories/Common Lisp/index.html index 99ad875..036c3df 100644 --- a/_site/categories/Common Lisp/index.html +++ b/_site/categories/Common Lisp/index.html @@ -94,15 +94,15 @@

    (think)

    @@ -117,22 +117,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -174,7 +174,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -185,6 +185,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Design Patterns/index.html b/_site/categories/Design Patterns/index.html index 1721330..5643bee 100644 --- a/_site/categories/Design Patterns/index.html +++ b/_site/categories/Design Patterns/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Django/index.html b/_site/categories/Django/index.html new file mode 100644 index 0000000..b41e7ad --- /dev/null +++ b/_site/categories/Django/index.html @@ -0,0 +1,211 @@ + + + + + + + + (think) - Category: Django + + + + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + + diff --git a/_site/categories/Eclipse/index.html b/_site/categories/Eclipse/index.html index fea1163..6fd8cfc 100644 --- a/_site/categories/Eclipse/index.html +++ b/_site/categories/Eclipse/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Emacs/index.html b/_site/categories/Emacs/index.html index 54be59c..445df26 100644 --- a/_site/categories/Emacs/index.html +++ b/_site/categories/Emacs/index.html @@ -104,15 +104,15 @@

    (think)

    @@ -127,22 +127,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -184,7 +184,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -195,6 +195,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Fedora/index.html b/_site/categories/Fedora/index.html index 3f83996..bad9c51 100644 --- a/_site/categories/Fedora/index.html +++ b/_site/categories/Fedora/index.html @@ -100,15 +100,15 @@

    (think)

    @@ -123,22 +123,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -180,7 +180,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -191,6 +191,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Git/index.html b/_site/categories/Git/index.html index e73dde5..67f551d 100644 --- a/_site/categories/Git/index.html +++ b/_site/categories/Git/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Groovy/index.html b/_site/categories/Groovy/index.html index 1a1c838..8af0cf2 100644 --- a/_site/categories/Groovy/index.html +++ b/_site/categories/Groovy/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Hardware/index.html b/_site/categories/Hardware/index.html index 09fc81b..b4fb36f 100644 --- a/_site/categories/Hardware/index.html +++ b/_site/categories/Hardware/index.html @@ -98,15 +98,15 @@

    (think)

    @@ -121,22 +121,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -178,7 +178,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -189,6 +189,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/IntelliJ/index.html b/_site/categories/IntelliJ/index.html index beefd0b..4f95fd1 100644 --- a/_site/categories/IntelliJ/index.html +++ b/_site/categories/IntelliJ/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/JBoss/index.html b/_site/categories/JBoss/index.html index 9436225..8cf9d9b 100644 --- a/_site/categories/JBoss/index.html +++ b/_site/categories/JBoss/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Java/index.html b/_site/categories/Java/index.html index c5fb6ba..bf5a09e 100644 --- a/_site/categories/Java/index.html +++ b/_site/categories/Java/index.html @@ -42,6 +42,8 @@

    (think)

    @@ -137,22 +139,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -194,7 +196,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -205,6 +207,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Jekyll/index.html b/_site/categories/Jekyll/index.html index be50cc6..5254a32 100644 --- a/_site/categories/Jekyll/index.html +++ b/_site/categories/Jekyll/index.html @@ -94,15 +94,15 @@

    (think)

    @@ -117,22 +117,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -174,7 +174,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -185,6 +185,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/LaTeX/index.html b/_site/categories/LaTeX/index.html index f404cd7..5622ef9 100644 --- a/_site/categories/LaTeX/index.html +++ b/_site/categories/LaTeX/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Linux/index.html b/_site/categories/Linux/index.html index 8f9e947..5a216ae 100644 --- a/_site/categories/Linux/index.html +++ b/_site/categories/Linux/index.html @@ -42,6 +42,8 @@

    (think)

    @@ -131,22 +133,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -188,7 +190,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -199,6 +201,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Misc/index.html b/_site/categories/Misc/index.html index 249442f..3d1a393 100644 --- a/_site/categories/Misc/index.html +++ b/_site/categories/Misc/index.html @@ -102,15 +102,15 @@

    (think)

    @@ -125,22 +125,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -182,7 +182,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -193,6 +193,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/NetBeans/index.html b/_site/categories/NetBeans/index.html index 7b4e8c0..63bb9db 100644 --- a/_site/categories/NetBeans/index.html +++ b/_site/categories/NetBeans/index.html @@ -92,15 +92,15 @@

    (think)

    @@ -115,22 +115,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +172,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +183,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Programming/index.html b/_site/categories/Programming/index.html index 7c88d1e..a430a23 100644 --- a/_site/categories/Programming/index.html +++ b/_site/categories/Programming/index.html @@ -100,15 +100,15 @@

    (think)

    @@ -123,22 +123,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -180,7 +180,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -191,6 +191,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Python/index.html b/_site/categories/Python/index.html index 6c4739f..aafb0c6 100644 --- a/_site/categories/Python/index.html +++ b/_site/categories/Python/index.html @@ -42,6 +42,8 @@

    (think)

    @@ -115,22 +117,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +174,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +185,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Rails/index.html b/_site/categories/Rails/index.html index 53de2b3..6490d5b 100644 --- a/_site/categories/Rails/index.html +++ b/_site/categories/Rails/index.html @@ -42,6 +42,8 @@

    (think)

    @@ -115,22 +117,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -172,7 +174,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -183,6 +185,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Rant/index.html b/_site/categories/Rant/index.html new file mode 100644 index 0000000..151a01e --- /dev/null +++ b/_site/categories/Rant/index.html @@ -0,0 +1,211 @@ + + + + + + + + (think) - Category: Rant + + + + + +
    +
    + + + +
    + +
    + + + diff --git a/_site/categories/Ruby/index.html b/_site/categories/Ruby/index.html index 36d7c80..6e80400 100644 --- a/_site/categories/Ruby/index.html +++ b/_site/categories/Ruby/index.html @@ -42,6 +42,8 @@

    (think)

    @@ -123,22 +125,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -180,7 +182,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -191,6 +193,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Scala/index.html b/_site/categories/Scala/index.html index c17cf5a..da41152 100644 --- a/_site/categories/Scala/index.html +++ b/_site/categories/Scala/index.html @@ -94,15 +94,15 @@

    (think)

    @@ -117,22 +117,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -174,7 +174,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -185,6 +185,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Swing/index.html b/_site/categories/Swing/index.html index 317fb5a..dea3efc 100644 --- a/_site/categories/Swing/index.html +++ b/_site/categories/Swing/index.html @@ -94,15 +94,15 @@

    (think)

    @@ -117,22 +117,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -174,7 +174,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -185,6 +185,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/categories/Windows/index.html b/_site/categories/Windows/index.html new file mode 100644 index 0000000..a455944 --- /dev/null +++ b/_site/categories/Windows/index.html @@ -0,0 +1,211 @@ + + + + + + + + (think) - Category: Windows + + + + + +
    +
    + + + +
    + +
    + + + diff --git a/_site/categories/Z Shell/index.html b/_site/categories/Z Shell/index.html index 66f6c25..090267c 100644 --- a/_site/categories/Z Shell/index.html +++ b/_site/categories/Z Shell/index.html @@ -96,15 +96,15 @@

    (think)

    @@ -119,22 +119,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -176,7 +176,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -187,6 +187,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/contacts.html b/_site/contacts.html index 5b5e2bb..a71fe4b 100644 --- a/_site/contacts.html +++ b/_site/contacts.html @@ -98,15 +98,15 @@

    (think)

    @@ -121,22 +121,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -178,7 +178,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -189,6 +189,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/index.html b/_site/index.html index 304cd0f..43ca0e8 100644 --- a/_site/index.html +++ b/_site/index.html @@ -41,6 +41,212 @@

    (think)

    +

    The Linux desktop experience is killing Linux on the desktop

    +

    Disclaimer

    + +

    This post is a bona fide rant. It tells how a hardcore Linux user +(me) decided to abandon Linux as a desktop platform and the reasons +behind this decision. It might provoke some controversy, but +I frankly don’t care.

    + +

    Overture

    + +

    I’m generally known as one of the biggest supporters of GNU/Linux, +I’ve taught courses on Linux administration, I’ve spoken at Linux +conferences and I naturally use Linux as my primary desktop on all my +machines. Well, that last part is not so true anymore. Here the story +begins…

    + +

    The background

    + +

    I’ve been using GNU/Linux exclusively for 8 years now. I’ve spent a +lot of time with Fedora, Gentoo and Arch Linux. I use it at home, I +use it at work and along the way I’ve converted many Windows users to +Linux. I’ve lived through a lot of driver and software problems +with Linux, hoping that the day would come when it will become a +first-class citizen of the desktop operating systems town. Alas, this +day never came and probably never will.

    + +

    My patience ended this week and I’ll be gradually moving all my +desktop machines back to Windows. What caused me to take such drastic +course of action? I’ve bought myself a new ThinkPad T520 laptop, +powered by Nvidia’s Optimus GPU switching technology - when the GPU +load is low it uses the built-in Sandy Bridge GPU, when it gets higher +- it switches to the discrete NVS 4200M GPU. Needless to say - this + technology is not supported under Linux, but I was prepared to live + without it. After all both Intel and Nvidia are known to have decent + Linux drivers so I was about to try both GPU and select the one with + the better performance. All I had to do was pick a shiny new + distribution to power my mobile powerhouse…

    + +

    The Distribution

    + +

    I love Fedora - always have, always will. They constantly deliver to +the end users the cutting edge in Linux technologies (both desktop and +server), so it’s naturally my distro of choice (I’m quite fond of +cutting edge tech). I installed on the new +laptop the latest Fedora 15 with GNOME 3.0 and here the problems +started. GNOME 3 requires 3d acceleration to work properly - a +reasonable requirement these days, at least on an operating system with +normal video drivers.

    + +

    The Intel driver sucked so bad that I got constant screen corruption +and hang-ups. Too bad, because I preferred to use the Intel GPU since +I mostly work on the laptop. The open source Nvidia driver nouveau +doesn’t support the NVS 4200, so I was forced to install the +proprietary driver. It ran OK initially, but after some time my system +just started to freeze while waiting for Plymouth (probably after some +kernel update, which I didn’t notice). I could have tried the usual +tricks and fixed the problem, but at this point I finally realized how +idiotic it was of me to keep using Linux for a desktop OS after all +the shit I’ve endured and the time I’ve wasted dealing with stuff that +should have been “just working”. I just want to get some work done, I +don’t want to waste my time debugging all kind of crap.

    + +

    The Shit I endured

    + +

    Non-existing ethernet/wireless drivers - not so common today, but + try remembering the time circa 2005

    + +

    Non-existing/crappy audio drivers - got an X-Fi 5 years ago, ALSA + driver was released 3-4 years later and was total piece of garbage, + OSS driver was barely usable

    + +

    Lamest video card drivers ever - most video card drivers for Linux + are so bad I cannot even watch tear-free video. Nvidia have the only + decent video driver, but it’s far from perfect either - no KMS, poor + 2D acceleration. AMD’s drivers are a punishment from the Lord and + Intel’s constantly “evolving” drivers are barely usable most of the + time. The video card drivers made me buy and HD media player and an + PS3 (for which I’m thankful), but I have to ask myself - why suffer + all this shit instead of getting a normal desktop OS like OS X or + Windows? Did I love Linux that much? Did I believe that much it’s + desktop day would come? What an idiot I was.

    + +

    Lack of printer drivers - that’s a funny one. Often printers + listed as having Linux drivers are mostly unusable. The printer that + own is listed as having a “perfect” Linux compatability in + openprinting.org. If this is perfect I cannot begin to imagine what + is “poor” compatibility.

    + +

    I’ll stop writing about the driver problems now, because they affect +so many thing. Even my fairly advanced mouse is missing some functions +in Linux. I’m not even mentioning the things like support for “Turbo +Memory”, Optimus, etc.

    + +

    Lack of decent office software - call it OpenOffice.org and don’t + insult it anymore…

    + +

    Problematic sound architecture - let me be completely blunt - + everything sound related in Linux sucks - OSS, ALSA, PulseAudio (the + sucker king). From a technical standpoint OSS never actually sucked, + but since it wasn’t picked up by the community the project fell + into oblivion. How many of you have enjoy Dolby Digital or DTS sound + from their Linux boxes?

    + +

    Poor flash support - should I explain? Have you tried it on a 64 + bit distro? Do I hate it? Sure. Do I hope HTML5 will kill it? + Sure. Do I need it? Sure.

    + +

    Poor skype support - Same story as with flash. I keep dreaming of + a world with more intelligent users where GTalk has a conference + mode and everybody’s using it instead of skype.

    + +

    Poor quality of desktop apps - Known issues in core applications + such as Nautilus don’t get fixed for years. Such things naturally + piss me off. Trying to contribute to the solution of a problem is + often met with apathy by maintainers. Btw Linux users thing that + Mozilla Firefox is very slow and memory hungry - but it turns out + that the Windows version is generally performing a lot better (not + to mention - supporting hardware video acceleration).

    + +

    I can keep listing things here forever. When I come to think about it +for the entire time I’ve been using Linux only one major problem got +resolved - USB devices support. I still remember the days when I had +to write auto mounting policies myself or to use mount manually all +the time. I won’t even mention the quality of most proprietary apps on +Linux, the huge amount of missing essential application and the +unavailability of mainstream video games.

    + +

    So this is it! Asta la vista, Linux! You still remain the best server +operating system, though. You’ll always have a special place in my +heart and a VMWare instance on my Windows boxes.

    + +

    What I’ll miss

    + +
      +
    • shell
    • +
    • transparency
    • +
    • package management
    • +
    + +

    Although most common desktop users probably don’t use the shell very +often, I practically live(d) in it. OS X has zsh and bash, so it’s a +long term option for me, but due to the need for new hardware I’ll be +using Windows 7 on the desktop front for now. Hopefully the rumors +that PowerShell is great will turned out to be true.

    + +

    The ability to tweak every aspect of the configuration, to build +custom drivers and kernels will be missed as well, but I don’t tend to +do this as often as I used to.

    + +

    Probably the biggest loss for me would be the wonderful distro package +management systems like YUM and APT.

    + +

    Epilogue

    + +

    I remember the first time I used Linux. A friend of mine installed +Fedora 2 on my personal computer and there was a glitch in GRUB that +prevented me from booting in Windows. My ethernet card wasn’t +supported so I was left without Internet. I asked my friend can I at +least watch a few movies while he brought me a patched version of the +buggy GRUB. He told me - you need to compile MPlayer from sources with +several optimization, you need windows video codecs, etc. At the time this +excited me a lot - adventure, excitement. I learned A LOT by using +Linux non-stop for so long time. But at some point you stop learning +exciting things and are just stuck with tedious things you have to +keep doing over and over again. And as I already mentioned - I don’t +want my time wasted, I want to get the job done with minimum hassle.

    + +

    I’ve been hearing each and every year that “year 20xx” will be the +year of the Linux desktop. It never came and it’s my firm believe that +it never will. Constantly plagued by hardware and software woes Linux +is doomed to fail. Without major support from hardware and software +vendors every OS is ultimately doomed to fail.

    + +

    It’s no secret that a lot of money are made by Linux server businesses +and this naturally drives a lot of the development in the area of +improving server performance. Nobody put it better than +Con Colivas +- “Linux is burdened with enterprise crap that makes it run poorly on + desktop PCs, says kernel developer Con Kolivas who recently walked + away from years of work on it.”. Linux will remain the king of the + server world, but on the desktop front it will always be an OS for + enthusiast and hackers only.

    + +

    Goodbye, my dear old friend. You’ll be missed… but not that much.

    + +

    P.S. Btw I’m as pro a Linux user as they get - a professional sys +admin, a former kernel developer so don’t bother me with moronic +comments from the type “you’re not doing something right/you should +try another distro”.

    + +
    Posted on 11 Jun 2011 by Bozhidar.
    + +

    Comments

    + +

    Java.next() - Java 7: The King is dead, long live the King

    + +
    Posted on 11 Jun 2011 by Bozhidar.
    + +

    Comments

    + +

    Django 1.3 vs Rails 3: A not so final showdown

    + +
    Posted on 11 Jun 2011 by Bozhidar.
    + +

    Comments

    +

    Emacs Tip #1: Set the default font in Emacs 23

    Emacs 23.2 will pick up the default GNOME monospaced font, so if you’re a GNOME user - you’re basically covered. If you’re not - don’t @@ -107,895 +313,6 @@

    Comments

    -

    Fedora 15 post installation setup & tips

    -

    Overture

    - -

    I’ve recently upgraded all my systems to Fedora 15. The default -installation is not very usable for some tasks for several reasons - -like CD size limitations and software patents for instance. I also -happen to disagree with some defaults in Fedora like the fact that -sudo is not enabled by default (like in Ubuntu) and the use of the -bash shell. In this article I’ll share some of the things I do after a -fresh Fedora 15 installation to enhance it (at least by my standards).

    - -

    Tweak defaults

    - -

    Configure sudo

    - -

    sudo gives you a way to execute single commands as the superuser. You -can also do this with “su -c”, but you have to quote the commands there, -which I don’t like very much. To enable sudo for some account first -run the command:

    - -
    $ su -c "visudo"
    -
    -
    - -

    The file /etc/sudoers will open up in a customized vi editor. Append -somewhere to the end of the file the following line:

    - -

    username ALL=(ALL) ALL

    - -

    You should replace username with your username.

    - -

    Configure yum

    - -

    yum has a lot of plugins, but one of them is particularly useful - the -fastest mirror plug-in. You can install it like this:

    - -
    $ sudo yum install yum-plugin-fastestmirror
    -
    -
    - -

    Disable SELinux

    - -

    If you’re a desktop Linux user you want to disable SELinux - trust -me. Open the file /etc/selinux/config and change this line:

    - -

    SELINUX=enforcing

    - -

    to

    - -

    SELINUX=disabled

    - -

    Restart afterwards.

    - -

    Install additional software

    - -

    Fedora’s default installation medium is a 700MB CD. It’s -understandable that not everything can be fitted in there. Luckily -adding new software from the vast Fedora on-line repos is child’s play.

    - -

    Install REAL text editors

    - -

    gedit is ok for causal text editing, but professionals like software -engineers and system administrators will definitely need something more:

    - -
    $ sudo yum install emacs vim
    -
    -
    - -

    Personally I use Emacs most of the time and use vim only to edit -config files that require root access.

    - -

    Install Z Shell

    - -

    It’s no secret that I love the Z Shell - after all I rave about it -quite often. It should come as no surprise that I happen to use it -and probably you should start using it as well:

    - -
    $ sudo yum install zsh
    -$ sudo vim /etc/passwd
    -
    -
    - -

    Find the line about your account and change there /bin/bash to -/bin/zsh. Afterwards start a new login shell and a simple wizard will -fire up asking you some questions to create a default .zshrc file for you.

    - -

    Install LibreOffice

    - -

    LibreOffice is currently the best Linux option for word processing, -spreadsheet handling and presentation creation. You can install the -most common components with the following command:

    - -
    sudo yum install libreoffice-calc libreoffice-impress libreoffice-draw libreoffice-writer
    -
    -
    - -

    LibreOffice uses hunspell to do spellchecking. An English dictionary -will be installed by default, but you’ll need to install additional -dictionaries manually:

    - -
    $ sudo yum install hunspell-bg
    -
    -
    - -

    This command will install the Bulgarian hunspell dictionary. You -likely don’t need it so install some more helpful dictionary instead. :-)

    - -

    Install OpenJDK

    - -

    If you need to run Java programs/applets:

    - -
    $ sudo yum install java-1.6.0-openjdk java-1.6.0-openjdk-plugin
    -
    -
    - -

    If you’re planning to do some Java development:

    - -
    $ sudo yum install java-1.6.0-openjdk-devel java-1.6.0-openjdk-javadoc java-1.6.0-openjdk-src
    -
    -
    - -

    Install Deluge torrent client

    - -

    The default Transmission torrent client is pretty basic. I recommend -you to replace it with the much more feature-rich deluge:

    - -
    $ sudo yum install deluge
    -
    -
    - -

    Install Inconsolata font

    - -

    I’m a software engineer and I obviously spend a lot of time reading -and writing source code. I’m very picking about the monospace font -that I use and currently Inconsolata happens to be my favorite:

    - -
    $ sudo yum install levien-inconsolata-fonts
    -$ gsettings set org.gnome.desktop.interface monospace-font-name "Inconsolata 12"
    -
    -
    - -

    These two commands will install the font and make it the default -monospaced font on your Fedora system.

    - -

    Install GIMP -Fedora does not ship with an image editor. GIMP is generally -considered the best option so you might want to install it:

    - -
    $ sudo yum install gimp
    -
    -
    - -

    Install gnome-tweak-tool to customize fonts, themes, etc in GNOME 3.0

    - -

    GNOME 3.0 has stripped many configuration options, but luckily most of -them are available by installing gnome-tweak-tool:

    - -
    $ sudo yum install gnome-tweak-tool
    -
    -
    - -

    Run it (by pressing Alt+F2 and typing gnome-tweak-tool) and change the -settings. It does not have OK or Apply buttons, but simply selecting the -options performs the changes. Some changes may require logging out and -logging back in.

    - -

    Install additional patent encumbered/proprietary software

    - -

    Enable RPMFusion

    - -

    RPMFusion is the most popular third party repository for Fedora. It’s -full of goodness like audio/video codecs, proprietary drivers, etc. To -enable it just run the following command:

    - -
    $ sudo yum localinstall --nogpgcheck \
    -http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
    -http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
    -
    -
    - -

    Install proprietary codecs

    - -

    No MP3 support in Fedora by default? And almost no video codecs? -RPMFusion to the rescue! Type this:

    - -
    $ sudo yum install gstreamer-plugins-ugly gstreamer-plugins-bad gstreamer-ffmpeg
    -
    -
    - -

    Install VLC

    - -

    With MPlayer’s development in stagnation VLC has established itself as -the best video player for Linux recently. It’s in RPMFusion, so if you -enabled it installing it is as easy as typing the following command:

    - -
    $ sudo yum install vlc
    -
    -
    - -

    Install Adobe Flash Player

    - -

    Love it or hate it - you probably need it.

    - -
    $ sudo rpm -Uvh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
    -$ sudo yum install flash-plug-in
    -
    -
    - -

    You can omit this if you’re planning to use Google Chrome, since it -comes with Flash Player built-in.

    - -

    Install Skype

    - -

    Download Skype from the -official site. Assuming -you’ve downloaded it to ~/Downloads, you can install it like this:

    - -
    $ sudo yum localinstall Downloads/skype-2.2.0.25-fedora.i586.rpm
    -
    -
    - -

    Yum will automatically installed any dependencies required by skype.

    - -

    Install Oracle JDK

    - -

    OpenJDK is great, but due to licensing problems it’s not quite the -same as the Oracle JDK. If you start experiencing strange problems -(mostly in Swing programs) you’d probably do well to try the Oracle -JDK instead. Download Oracle’s JDK from the -official site. Select -“Linux x86 - RPM Installer” or “Linux x64 - RPM Installer” depending -on your distribution and install the JDK like this:

    - -
    $ sudo sh jre-6u25-linux-i586-rpm.bin
    -
    -
    - -

    Fedora uses OpenJDK by default, so you’ll have to do some more work to -tell it to start using Oracle JDK. The alternatives program allows -you to select between multiple installed versions of a program:

    - -
    $ sudo alternatives --install /usr/bin/java java /usr/java/default/bin/java 1000
    -$ sudo alternatives --install /usr/bin/javac javac /usr/java/default/bin/javac 1000
    -$ sudo alternatives --install /usr/bin/javaws javaws /usr/java/default/bin/javaws 1000
    -
    -
    - -

    These commands will make alternative aware of the java binaries and -set high priorities to them which will make them the default Java -binaries. You can use “alternatives –config binaryname” to select -active binaries manually.

    - -

    Install Google Chrome

    - -

    Firefox is dying, Google Chrome is the new king of the -browsers. Download it from the official site and install it:

    - -
    $ sudo yum localinstall ~/Downloads/google-chrome-stable_current_i386.rpm
    -
    -
    - -

    Google Chrome will install a yum repository as well, so you’ll receive -updates as soon as they arrive.

    - -

    Install DropBox

    - -

    DropBox is a great file sharing service -which allows you to sync files between all of your computers and -mobile devices(Android, iPhone, iPad, etc). It has a great Linux -client which I use all the time. Download it from -here and install it like -this:

    - -
    $ sudo yum localinstall --nogpgcheck nautilus-dropbox-0.6.7-1.fedora.i386.rpm
    -
    -
    - -

    Epilogue

    - -

    Hopefully some of my setup has made your setup more enjoyable and more -productive. I’ll update this article along the way if I stumble upon -other things that I consider to be generally helpful.

    - -
    Posted on 31 May 2011 by Bozhidar.
    - -

    Comments

    - -

    Java.next() - JRuby: The Rubyists Strike Back

    -

    Overture

    - -

    So far in the Java.next() series I’ve discussed only languages that -were engineered from the start to run on the JVM (Groovy, Scala and -Clojure). However, a lot of good programming languages existed even -before the inception of the idea to run languages other than Java on top of -the JVM. Some notable examples are Ruby and Python for instance. Today -I’ll be writing about JRuby - the pure Java port of the Ruby -programming language (and undoubtedly the most advanced and widely -adopted of the 9 (!) actively maintained Ruby ports).

    - -

    This post will differ somewhat from the others so far, because I won’t -be spending any time to dwell on the basic Ruby syntax and will only -highlight the advantages over plain old Ruby that JRuby provides - -like calling Java code from a Ruby application and scripting Ruby from a -Java application.

    - -

    Why JRuby?

    - -

    Ruby has long been known as one of the most elegant programming -languages out there. With the rise of the Rails web framework several -years ago the language was propelled into the mainstream and showed a -lot of common developers alternative (better) ways to get their jobs done with -less hassle and more grace. While the language is generally well liked -(albeit is has some syntax quirks and oddities, mostly courtesy of its -Perl heritage) its default execution environment MRI (Matz’s Ruby -Interpreter) is not the object of international affection. As an -application written in C it suffers some portability problems (a few -years ago it was quite hard to get MRI to run properly on Windows and -even now you might run into some missing dll error from time to -time). MRI’s performance is not stellar either and it even used to be -quite terrible before the advent of Ruby 1.9 which incorporated YARV -(Yet Another Ruby VM), which significantly improved its performance -(but still left a what to be desired). There is also the problem with -the missing standard portable GUI development library and the somewhat -limited deployment options because of MRI’s limited -portability.

    - -

    Matz’s has often said that he’s no VM specialist, he’s a -language architect/designer and the beauty of the language concerns -him more than the performance of the reference implementation. He’s -also said that he loves diversity and is certain that interested -parties will offer high quality alternatives to the standard Ruby -runtime.

    - -

    When it comes down to a high quality runtimes few people don’t start -thinking immediately about the Java platform, known for its infinite -(not literally infinite of course, but vast enough) libraries, -rock-solid and secure JVM and great support for compile-time and -runtime performance -optimizations. It’s not unheard for a Java application to match and -excel the performance of a native C application by employing -techniques like just in time(JIT) compilation, hot spot detection and -optimizations, etc.

    - -

    So it’s only natural that at some point a bunch of people decided to -create a version of Ruby that could run on top of the acclaimed -JVM. This version of Ruby is (believe it or not) known as JRuby. With -JRuby you get the best of both Java and the Ruby worlds. Here are just a few possibilities:

    - -
      -
    • Deploy a Ruby on Rails web application to Google’s App Engine -service.
    • -
    • Write a Rails web frontend to your existing Java enterprise -application.
    • -
    • Target the latest Android smartphones with your Ruby code using Ruboto
    • -
    • Create cross-platform GUIs with Java’s Swing (or SWT)
    • -
    • Build your project on solid libraries written in Java, Scala, Clojure, -or other JVM languages.
    • -
    • Use the solid platform independent JDBC database -drivers. Platform dependent drivers used with MRI Ruby are a common -source of gripe for developers trying to migrate an application from -one platform to another.
    • -
    - -

    Great prospects indeed! Now it’s about time to get that magical piece -of software called JRuby up and running…

    - -

    Installing JRuby

    - -

    There are several options to consider in the department of JRuby -installation. JRuby requires a Java runtime 5.0+ to be installed. You -can get one from here.

    - -

    Using an Installer

    - -

    The easiest way to install JRuby is to use one of the prebuilt installers -available from the official download site. These will take care of the -low level of detail, such as setting up your PATH environment -variable to make finding JRuby easier. -The JRuby team currently maintains installers for Windows and Mac -machines. If you’re on Linux, your distribution may package its own -JRuby build. For example, on Ubuntu (or any other Debian derived -distro) you can type this:

    - -
    $ sudo apt-get install jruby
    -
    -
    - -

    Red Had distribution users might try this incantation instead:

    - -
    $ sudo yum install jruby
    -
    -
    - -

    Most Linux distributions don’t upgrade to the latest JRuby release the -instant it comes out. If you want to stay with the latest and greatest, -you might prefer installing from an archive instead or RVM instead.

    - -

    Using RVM

    - -

    Most Ruby hackers -favour a powerful bash script called RVM(Ruby Version Manager) that -allows you to install several different version(or flavours of Ruby) -and switch easily between them. Please refer to the official -RVM documentation for installation -and usage instructions. After you’ve installed RVM getting JRuby -installed is a child’s play:

    - -
    $ rvm list known | grep jruby
    -jruby-1.2.0
    -jruby-1.3.1
    -jruby-1.4.0
    -jruby-1.6.0
    -jruby[-1.6.1]
    -jruby-head
    -
    -$ rvm install jruby
    -$ rvm use jruby
    -
    -
    - -

    Just for the record - I personally use RVM and I recommend to all -*BSD, Linux & OS X hackers to try it out as well - great piece of -software. One of the nicer side effects of using RVM is that you won’t -have to run operations like gem install as the root user.

    - -

    Using prebuilt archive

    - -

    If you have a heavily customized setup or just like doing things -yourself, you can get a .zip or .tar.gz archive from the same download -page. Extract the archive somewhere convenient on your system, such -as C:** or **/opt. You can run JRuby straight from its own bin -folder, but you’ll probably find it more convenient to add it to -your PATH. On UNIX (including Linux & Mac OS X), you can do the following:

    - -
    $ export PATH=$PATH:/opt/jruby/bin
    -
    -
    - -

    Testing the installation

    - -

    Type the following commands:

    - -
    $ which jruby
    -~/.rvm/rubies/jruby-1.6.1/bin/jruby
    -$ jruby -version
    -jruby 1.6.1 (ruby-1.8.7-p330) (2011-04-12 85838f6) (Java HotSpot(TM) Server VM 1.6.0_22) [linux-i386-java]
    -$ jruby -e 'puts "Hello, JRuby!"'
    -Hello, JRuby!
    -
    -
    - -

    Now we can see some of the unique JRuby features in action.

    - -

    Common tasks with JRuby

    - -

    REPL

    - -

    JRuby comes with an equivalent of the standard Ruby REPL irb, called -jirb. To start it simply type:

    - -
    $ jirb
    -
    -
    - -

    Now you can do some interactive Ruby development:

    - -
    jruby-1.6.1 :001 > puts "Hello, JRuby"
    -Hello, JRuby
    - => nil 
    -jruby-1.6.1 :002 > arr = ["Chuck", "Sarah", "Morgan", "Casey"]
    - => ["Chuck", "Sarah", "Morgan", "Casey"] 
    -jruby-1.6.1 :003 > arr.length
    - => 4 
    -jruby-1.6.1 :004 > arr.size
    - => 4 
    -jruby-1.6.1 :005 > arr.size()
    - => 4 
    -jruby-1.6.1 :006 > arr.each { |name| puts name }
    -Chuck
    -Sarah
    -Morgan
    -Casey
    - => ["Chuck", "Sarah", "Morgan", "Casey"] 
    -jruby-1.6.1 :007 > arr.each_with_index { |name, index| puts "#{index}: #{name}"}
    -0: Chuck
    -1: Sarah
    -2: Morgan
    -3: Casey
    - => ["Chuck", "Sarah", "Morgan", "Casey"] 
    -
    -
    - -

    jirb is a great tool for exploratory programming and has some nice -features like TAB completion. Use it often!

    - -

    Running scripts

    - -

    Same as before (with MRI Ruby):

    - -
    $ jruby some_script.rb
    -
    -
    - -

    That was simple, right?

    - -

    Running Ruby tools

    - -

    You should prefix calls to common Ruby tools like gem and rake with -jruby -S - otherwise they might get confused which Ruby version -(if you have more than one Ruby installed, that is) to use:

    - -
    $ jruby -S gem install rails
    -$ jruby -S rake install
    -
    -
    - -

    Using the JRuby compiler

    - -

    You can compile Ruby scripts directly to Java bytecode and run the -resulting class files using the JVM:

    - -
    $ jrubyc hello.rb
    -Compiling hello.rb to class example
    -
    -
    - -

    The compiler supplies a main method for you, so you can now run the -program straight from the java command (adjust the path here to point -to your JRuby installation):

    - -
    $ java -cp .:/opt/jruby/lib/hello.jar example
    -
    -
    - -

    Note that your compiled program still depends on some JRuby-defined -support routines, so jruby.jar needs to be on your classpath. Also, -the compiler compiles only the files you specifically pass to it. If -you reference some_ruby_library.rb from hello.rb, you’ll have to -compile that extra .rb file yourself or ship it in source form -alongside your .class file. The Java compiler understands dependencies -between source files and compiles them automatically so Java -developers should keep this difference in mind.

    - -

    Using Java from JRuby

    - -

    One of the nicest features of JRuby is undoubtedly the ability to use -Java libraries directly in your Ruby code. JRuby goes a long way to -make the Java classes integrate into normal Ruby code as seamlessly as -possible - for instance it gives you the ability to call methods using the -snake_naming_convention, instead of the common in Java -camelCaseNamingConvention. Let’s see the Java integration in action:

    - -
    require 'java'
    -java_import 'java.lang.System'
    -java_import 'java.util.ArrayList'
    -java_import 'javax.swing.JOptionPane'
    -
    -System.out.println("Feel the power of JRuby")
    -
    -# using snake_names for Java method names
    -puts System.current_time_millis
    -# regular names work as well
    -puts System.currentTimeMillis
    -
    -array_list = ArrayList.new
    -
    -# the array list supports some common Ruby idioms
    -array_list << 1
    -array_list.add 2
    -array_list << 3
    -
    -puts "List length is #{array_list.length}"
    -
    -array_list.each { |elem| puts elem }
    -
    -# a glimpse of Swing
    -JOptionPane.show_message_dialog(nil, "This is a message from the future of Ruby!")
    -
    -
    - -

    You shouldn’t, of course, use ArrayList unless you’re using a Java API -that is requiring you to do so. Hopefully these simple examples gave -you an idea how easy it is to access Java code from JRuby.

    - -

    It might be tempting to think of Java/Ruby integration as nothing more -than calling from one language to another. That’s not the case. In a -typical project, you’re really interacting with both platforms. You -might construct a Ruby object, pass it to a Java function, and watch -the Java code call other Ruby methods you’ve defined. All the advanced -interactions are beyond the scope of this cursory overview, but you’re -definitely encouraged to explore them on your own.

    - -

    Using JRuby from Java

    - -

    While Java libraries are capable of doing just about anything they are -generally not as elegant as some of their Ruby counterparts. This might -make you want to run some Ruby code from a Java program. JRuby allows -you do this:

    - -
    import org.jruby.embed.InvokeFailedException;
    -import org.jruby.embed.ScriptingContainer;
    -
    -public class RubyFromJava {
    -    public static void main(String[] args) {
    -        ScriptingContainer container = new ScriptingContainer();
    -        container.runScriptlet("puts 'Ruby bridge established successfully'" );
    -    }
    -}
    -
    -
    - -

    This example is quite basic, but you should be able to grasp the basic -idea from it.

    - -

    Compatibility with standard Ruby and performance

    - -

    JRuby 1.6 is mostly compatible with MRI Ruby 1.9.2. Since Ruby doesn’t -have a formal standard and is mostly defined in terms of the reference -implementation (although there are some compatibility test suites) -alternative implementations like JRuby are bound to be a step behind -the current reference version from time to time. JRuby, however, -catches up very quickly and has reached a state in popularity and adoption -at which I’m certain that they (the JRuby team) keep an open communication channel with -upstream MRI developers and are capable to add the new features with -very little delay.

    - -

    In terms of performance JRuby is slightly faster in many tests than -MRI 1.9.2 and with the inclusion of support for dynamic method -dispatching in Java 7 (coming up later this year) the performance will -probably be improved significantly. The only real performance problem -is the JVM startup time. If you’re using JRuby to run very simple -scripts you might be mislead to believe that JRuby’s very slow, when actually the -delay you’re witnessing is caused by the JVM startup (which is not -very fast). Some Ruby features like ObjectSpace don’t perform very -well on the JVM as well, but they are used rarely.

    - -

    In a sentence - JRuby is quite compatible with the standard MRI Ruby -and one of the fastest Ruby implementations around.

    - -

    Deployment options and future prospects

    - -

    With JRuby your number of deployment options vastly improves - now you -can deploy your Ruby applications anywhere where a JVM can be run (and -there are lot such places, believe me about that). With JRuby you can -deploy your Rails applications on the Google App Engine or in a Java -enterprise container such as Glassfish. You can also write mobile -applications for the Android operating system.

    - -

    JRuby’s development is funded by a very solid company, called -“Engine Yard” which is famous for its world class Rails hosting -solutions. The company obviously has a lot at stake here and you -shouldn’t be afraid that JRuby might die anytime soon.

    - -

    IT consulting companies like -ThoughtWorks have used JRuby to deliver both products and customer -applications on far more aggressive schedules than they could -have with more conventional languages

    - -

    The tools of the trade

    - -

    Most Ruby hackers tend to program without the aid of sophisticated -IDEs. Emacs, vim and TextMate are popular choices. Recently -SublimeText has been getting a fair share of attention as well. While -it’s fairly easy to write Ruby code in a text editor it’s generally a -nightmare to write Java code in an editor. Some of the most old-school -hardcore developers that I know bowed down before the complexity of -Java and started using Eclipse, NetBeans or IntelliJ to keep their -sanity intact. When you’re working on a project that’s a mixture of Ruby -and Java code it might be a good choice to opt for using some IDE as -well.

    - -
      -
    • IntelliJ IDEA - The legendary Java IDE comes with a very capable -Ruby plug-in, that integrates well with Rails, the common templating -languages often used with it and most Ruby testing -frameworks. IntelliJ even has a variant for pure Ruby development -called RubyMine which is regarded by many devs as the best Ruby -IDE out there.
    • -
    • NetBeans - At some point the core JRuby team were employed by -Sun and at that time great Ruby support was added to -NetBeans. Oracle killed the official Ruby support in NetBeans 7.0, -but it’s still maintained as a community project. It’s not as good -as the one in RubyMine, but it doesn’t cost anything either.
    • -
    • Eclipse - Eclipse has an official -Ruby plug-in(part of DLTK), but most people tend to prefer using -Aptana Studio - a web -development IDE built on top of Eclipse.
    • -
    - -

    Epilogue

    - -

    JRuby is a solid addition to the ranks of JVM languages. Given the -fact that Ruby served as the principle inspiration for Groovy many -people will probably do better to use JRuby in preference to Groovy -(except the ones fond of the Java syntax I guess). I personally love -both Ruby and the JVM and for me JRuby was a match made in heaven. It -opens a lot new and exciting possibilities before one of the most -beautiful languages ever conceived.

    - -

    I particularly like the ability to create portable GUIs with Swing and -the extended deployment options that JRuby provides. If Java 7 brings -the promised speed improvements I’m certain that JRuby will have a -shot at becoming the reigning Ruby implementation.

    - -

    So what are you waiting for? Go grab a copy of the JRuby Bible -“Using JRuby” and -start coding. :-)

    - -
    Posted on 18 May 2011 by Bozhidar.
    - -

    Comments

    - - -

    Overture

    - -

    Back in the day when Ruby wasn’t particularly popular outside Japan -there was only one book in English about Ruby - -“Programming Ruby”, affectionately called the Pickaxe by most -Rubyists. Those day are long gone now. Ruby on Rails propelled Ruby -into the mainstream and quite a few books on Ruby (and Rails) have -been published over the past five or so years. With so many books to -choose from developers often find it hard to pick up the right book.

    - -

    In this post I’ll share with you my thoughts on the Ruby books that I’ve found -to be the most interesting and valuable. Feel free to disagree with -me, after all this is a highly subjective matter.

    - -

    Beginner books

    - -

    Every saga has a beginning, every journey has a first step, every -programming language has a first book…

    - -

    Learn to Program

    - -

    A book that teaches programming to absolute beginners with Ruby as the -implementation language. I haven’t read this book (only excerpts from -it), but I’ve used it as a gift for several acquaintances of mine, with the -desire to learn to program. All of them were frustrated by other -introductory books they’ve read and all of them praised “Learn to -Program” for its immense clarity, engaging and enjoyable style and -comprehensible examples.

    - -

    The Well Grounded Rubyist

    - -

    “The Well Grounded Rubyist” is a thoroughly revised and updated edition -of the older book Ruby for Rails (which was 90% Ruby and 10% Rails). In this new book, author David -A. Black moves beyond Rails and presents a broader view of Ruby. It -covers Ruby 1.9 in great detail, unlike many introductory texts that -tend to offer only superficial coverage of many topics.

    - -

    Starting with the basics, The Well-Grounded Rubyist explains Ruby -objects and their interactions from the ground up. In the middle -chapters, the book turns to an examination of Ruby’s built-in, core -classes, showing the reader how to manipulate strings, numbers, -arrays, ranges, hashes, sets, and more. Regular expressions get -attention, as do file and other I/O operations. At 500+ pages it’s a -bit of a hefty tome, but it’s definitely worth reading it.

    - -

    Reference books

    - -

    Reference books are not usually the biggest fun to read, but they tend -to cover everything a language has to offer and we generally keep them -close. Their value increases with the increase of our knowledge of a -particular language.

    - -

    The Ruby Programming Language

    - -

    Co-authored by Ruby’s creator Matz this is without a doubt the best -analysis of the languages. Everything you need to know is explained in -a crisp and easy to comprehend manner. The thing I liked most about the -book was the depth in which all the topics were discussed - given the -superficial coverage of some topics (such as encodings) in other books, -this book really stands out. The book is full of examples and -artwork by why the lucky stiff, and covers both Ruby 1.8 and 1.9. The -chapters on proc & clojures and metaprogramming were particularly -strong. The books is geared mostly towards experienced programmers who -are new to Ruby. If you’re one of them - it’s unlikely you’ll find a -better starting point in your journey to Ruby mastery.

    - -

    Programming Ruby

    - -

    Co-authored by the Pragmatic Programmers themselves (Dave Thomas & -Andy Hunt) this was the very first English book on Ruby (and arguably -an instrument in Ruby’s international success). The first edition of -the books is freely available on-line, but it’s very outdated so I -wouldn’t recommend you to read it. The book has two parts -- a tutorial part and a reference part.

    - -

    The tutorial part is very well written and quite readable. It’s geared -towards less experienced developers and you’ll not find as detailed -coverage of the topics as in “The Ruby Programming Language”. You’ll, -however, find full coverage of everything new in Ruby 1.9 - the book includes all the new and changed syntax and -semantics introduced since Ruby 1.8 and information about the new parameter -passing rules, local variable scoping in blocks, fibers, -multinationalization, and the new block declaration syntax.

    - -

    The reference part of the book includes a description of all the -standard library modules, a complete reference for all built-in classes -and modules (including all the new and changed methods introduced by -Ruby 1.9).

    - -

    I’m not sure we need the whole Ruby standard library documentation on -paper anymore in the age of the Internet, but I guess some people will -find it helpful. I just feel that the additional documentation simply -made the book heavier (and possibly pricier).

    - -

    Intermediate Ruby books

    - -

    Once you’ve read a reference or a beginner’s Ruby book you might want -to move to some book that illustrates common Ruby style, techniques -and idioms.

    - -

    Ruby Best Practices

    - -

    “Ruby Best Practices” is aimed at programmers who want to use Ruby as -experienced Rubyists do. Written by the developer of the Ruby project -Prawn, this concise book explains how to design beautiful APIs and -domain-specific languages with Ruby, as well as how to work with -functional programming ideas and techniques that can simplify your -code and make you more productive. You’ll learn how to write code -that’s readable and expressive.

    - -

    The whole book is currently available from free -on-line -and has a very nice companion blog.

    - -

    Eloquent Ruby

    - -

    The latest (and one of the greatest) Ruby books I’ve read. The book -pretty much has the same aim as “Ruby Best Practices”, but covers a lot -more ground and is generally a lighter and more enjoyable read. Russ -Olsen has a very particular writing style that turns even the most -boring subjects into interesting discussions. All chapters feature -some real world examples of the concepts introduced, and a discussion -of potential pitfalls.

    - -

    Very highly recommended second Ruby book.

    - -

    Design Patterns in Ruby

    - -

    A most enjoyable rendition of a generally boring subject by Russ Olsen. “Design -Patterns in Ruby” explores 14 of the classical GoF design patterns and -compares the canonical implementation of the patterns to idiomatic -Ruby versions of them. Every pattern features a discussion of common -use cases, pitfalls and real world usages.

    - -

    The book also builds on top of the original patterns by adding a -couple of new ones like DSL and Convention over configuration.

    - -

    Without a doubt one of the best Design pattern books and a must read -for all Ruby hackers. You don’t need any previous knowledge of design -patterns prior to reading this book, but there are a lot of references -to the classic GoF text so you might want to read it beforehand.

    - -

    Advanced Ruby books

    - -

    At some point you might want to explore some of the darker corners of Ruby.

    - -

    Metaprogramming in Ruby

    - -

    The ability to modify programs at runtime is one the greatest -strengths of Ruby, but it seems to frighten a lot of people (which is -understandable given the constant usage of fancy words like -eigenclass). If you want to sharpen your Ruby metaprogramming skills - -this is the one true book.

    - -

    Using JRuby: Bringing Ruby to Java

    - -

    Believe it or not currently JRuby seems to be best Ruby implementation -around. If you’re interested in using JRuby you’d do well to learn -more about the integration with the JVM that JRuby provides as well as -the various new deployment options that JRuby introduces.

    - -

    This book was written by the core JRuby developers and it’s absolutely -excellent. Clear and concise writing style, lots of useful examples.

    - -

    Epilogue

    - -

    There are certainly other great Ruby books around that I haven’t read, -but I guess that at some point reading books is just not as helpful as -writing real code. I do believe, however, that even experienced -developers can benefit from a good programming book.

    - -

    So, which Ruby books that I’ve missed would you recommend?

    - -
    Posted on 17 May 2011 by Bozhidar.
    - -

    Comments

    -
    @@ -1043,15 +360,15 @@

    Epilogue

    @@ -1066,22 +383,22 @@

    Epilogue

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -1123,7 +440,7 @@

    Epilogue

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -1134,6 +451,15 @@

    Epilogue

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • + diff --git a/_site/projects.html b/_site/projects.html index 4160722..a6d5770 100644 --- a/_site/projects.html +++ b/_site/projects.html @@ -123,15 +123,15 @@

    (think)

    @@ -146,22 +146,22 @@

    (think)

  • Hardware(4)
  • -
  • Ruby(5)
  • +
  • Ruby(6)
  • Emacs(7)
  • -
  • Rails(1)
  • +
  • Rails(2)
  • Z Shell(3)
  • -
  • Linux(9)
  • +
  • Linux(10)
  • -
  • Java(12)
  • +
  • Java(13)
  • Design Patterns(1)
  • @@ -203,7 +203,7 @@

    (think)

  • Common Lisp(2)
  • -
  • Python(1)
  • +
  • Python(2)
  • Groovy(1)
  • @@ -214,6 +214,15 @@

    (think)

  • Books(1)
  • + +
  • Django(1)
  • + + +
  • Windows(1)
  • + + +
  • Rant(1)
  • +