The importance of open knowledge

I love open source. But I hadn’t noticed the importance of it until two things happened:

* I had a simple problem with a standard java class “javax.xml.validation.SchemaFactory”, when java complained about no SchemaFactory present, and I could go to the source of the openjdk and solve my problem. Whole process took about 10 minutes.

* Had a strange problem with Solaris, with no privileges to run dtrace or some other system tool. Still have no solution.

The first situation is something that happens a lot for my everyday job. I kind of rely on the ability to go read the source. At first it felt kind of bizarre… reading the software in Lucene or the JVM. Now I cannot imagine my life without it. But this is just one of the benefits…

The main thing for me, is that there’s so many people using open source that you get a large maintenance group. Sure, there are no guarantees or SLAs.. but yout should hire a strong team for that, and let the community test, and improve software.

It is strange, and I know that big software companies invest a lot of money in creating products, and it is great if I don’t plan on using it as a base for my work. (I don’t care how donuts or hamburgers are engineered). 

But if I am going to write software using other software or libraries as a platform, I feel pretty strange if I cannot read the source. Over the years I’ve developed a sense of… not trusting closed source software. Even if it rarely fails.. I have this feeling that I’m being cheated.

My example is solaris. It is a great software, dtrace is THE thing. ZFS looks amazing.

But It’s difficult to do stuff with it, I need to pay for training or books to become a ninja.

On the other hand is linux. About 10 years ago it was a pain to use for “normal” users, today I feel that it’s as friendly as Windows and Mac OS. You rarely need to do something special for your drivers. 

People use it everyday, people fix things going wrong with them. And that’s how you get an incredible QA team for free.

I even think that it is only fair for people who doesn’t have the opportunity to pay for an education to have the chance to  learn. Open Source manages to do that.

Just a few thoughts. Would love to hear what you think.

Getting better

I have been writing software for a while, I’ve had the opportunity to learn a lot, and I feel pretty happy about some of the things I’ve done.

But I need to become better, about two years ago I started to feel that I wasn’t going to learn that much anymore about software and development.  MY GREATEST MISTAKE EVER.

In the two years that came after that, I’ve had lots of problems, I’ve learned a lot about what not to do in a software project.

What’s best, I started studying again using Coursera and Open Courseware, and I noticed something. I don’t know a thing.

I’ve read a bit about algorithm design and analysis, compilers, operating systems the last month. And I’ve learned a lot! But the impressive is… that I’ve just found out that I need to learn a lot more, and now I have an enormous list of what I need to know… just take a look, for the stack of books that I need to read:

  • The algorithm design manual
  • Programming Pearls
  • Hacker’s delight
  • Programming Challenges
  • Competitive Programming
  • Learn you haskell for a great good
  • Elements of ML
  • Purely Functional Data Structures
  • C Programming Language
  • Modern C Programming

I need to solve a lot of UVA problems..

And I’m pretty sure, when I’m done reading that… I will feel that I know even less than I do know.

Thank god.. the only thing that I know I’m good at is learning. And thank god I chose a profession that makes me learn.