Thursday, March 15, 2007

Here I go again

I tried to install lambdabot and found that my Haskell install was missing several libraries. This was sufficient excuse for me to try the "generic linux" GHC6.6 package available from haskell.org. I just followed the instructions and everything worked perfectly. A whole bunch of libraries are included and the docs are more complete than with the Debian package.

I installed a couple of additional dependencies, like hs-plugins and zlib, then tried to install lambdabot again. I think I successfully installed it but wasn't able to connect.
I was pretty tired so I didn't pursue it too much, though I did try to connect to #haskell through Gaim. No luck either. Can you tell I've never IM'd before?

Won't pursue it for the time being for three reasons:
  1. There's already of world of information at Haskell Cafe. I'll do my homework and read up for a while there.
  2. I'll probably start classes in early June so I want to increase my ability to generate useful code as much as possible before that. That means the time I was going to dedicate to Haskell will be split among a couple of different programming platforms, although I won't be able to keep away from Haskell.
  3. I'm going to be moving to Mayaguez, hopefully by April. So I have to get a job over there and look for a dorm. This will eat some of my time and concentration but once I'm over there I should see a boost in productivity.
So, what programming platforms?

Well, right now I'm waiting for confirmation on my application for the Computerized Information Systems program at the University of Puerto Rico at Mayaguez. I had hoped to be admitted to the Computer Science program but I had screwed up my maths on my previous tour at the uni so that was certainly a longshot. I'll have to work my way up again.

Anyway, as long as I'm in that department I'll try to be great at it. I'm guessing that means a less theoretical and more practical approach to programming. This means mainstream, sometimes uninteresting, languages and/or mainstream, sometimes uninteresting, projects. Faced by the two I would choose mainstream languages. I've been led to believe it's quite possible to do cool stuff in Java. Just a little more painful than, say, in Ruby for example.

So, my set of programming platforms for immediate learning, tentatively contains:
  • C - for reasons best summed up here.
  • Java - if only to be able to speak in a language common to IT people. There's also a wealth of code for studying.
  • Bash - I'm inclined to make Ubuntu my default OS. Admin skills are essential for a developer and Bash tutorials, such as those available at tldp, are the ticket.
These could probably be followed by:
  • C++ - There's some cool stuff there. Templates remind me of type classes and objects are nice in lots of areas. It's also a common language among IT circles and basically a resume requisite. But mainly, it'll be fun porting code to Haskell.
  • Python or Ruby - I've already tinkered with both and I liked them. The choice will probably come down to what I want to do and what kind of support, libs and IDEs are available.
  • SQL - Because I need to learn about databases.
I've already polished most of my basic programming concepts with several Python, Ruby, Scheme, Haskell tutorials and a couple of chapters of The Art of Assembly Language Programming (using HLA) and Concepts, Techniques and Models of Computer Programming (using Oz). This means I'll just push myself to work as quickly as possible to cover the technologies on the list above. I'll cover all the fundamentals of each, writing some toy apps and examples then moving on to the next. I'll come back later for more in-depth knowledge if and when I need it.

Monday, March 12, 2007

Here I go

I've installed Ubuntu 6.10 on my Compaq nc6000. Everything looks okay.

Installed GHC 6.6 from debian unstable repositories. Everything looks fine but the docs are not as complete as the docs for the Windows version. Oh, well, I guess it's gonna be a while before I need what's missing, premature optimization and all that.

Installed Emacs-snapshot-gtk. It's version 22.0.50.1. Font in buffers look a little weird. So :
Options -> Customize Emacs -> Faces Matching Regexp ...
Customize regexp: default
Height in 1/10 pt: 160

Hmm, good enough.

Installed Haskell-Mode-2.3. Added to .emacs: (windmove-default-keybindings)
now I can Shift+arrow between windows (or frames if you come from Windows like I do).

Now to salute the planet. Let's see:
C-x C-f
~/code/haskell/test.hs


And the code:
module Test where

main :: IO ()
main = putStrLn "Hello, World!"


Then:
C-c C-l
Shift+down
main

Hello World!

Perfect. This is the same setup I had back on WinXP and it was great.

I've yet to setup my C coding environment since I'm not satisfied with cc-mode in emacs. I wish that it worked as smoothly as the haskell-mode but alas... Maybe if knew enough elisp I could hack it to perfection but I'll defer my elisp education to some time further into the future. Right now I want to concentrate on Linux, C and Haskell. So it's time to come up with a study plan.

Hmm, I'll have to think about it and report back. Later.