Functional Programming
Finally there is the chance to dive into another paradigm of programming, namely functional programming. Somehow a little bit neglected at the JKU, it is standard practice over here at the Edinburgh University. Maybe the reason for this is that Philip Wadler, the inventor of the Haskell functional programming language is a Professor at UoE.
But I think that the true reason for this is the beauty of functional programming languages. Surely not every problem can be easily solved with functional programming but for the areas I have seen so far, it seems to be a very elegant and succinct approach!
So far I was able to stick my nose into Haskell and OCaml. The nice thing about functional languages is that once you have understood the underlying concepts, it is very easy to learn a “new” functional programming language. Much easier than it is to learn a new imperative language.
Finally there is this funny quizz where you are asked to distinguish between a programming language inventor and a serial killer. Try it out, it is really funny!
TLP - Thread Level Parallelism: UltraSPARC-T1

In my last post I have written a little bit about Thread Level Parallelism and since SUN has officially released its first processor based on TLP I thought this is a good opportunity to write a little something about this nice processor.
Instead of increasing the size of the pipeline by dividing pipeline stages up into smaller units in order to be able to increase the processor tact rate and then fail to keep the pipeline full (as Intel has done it with the P4), SUN did something different. They concentrated on throughput and went away from the classical ILP paradigm.
Their new processor consists of up to 8 cores processing 4 threads per core. So this means that 32 threads can be processed “simultaneously”. Each core can process one instruction every cycle. There is a L1 cache per core and a shared L2 cache. In order to provide the high memory bandwidth necessary to “feed” 32 threads, a crossbar interconnects scheme routes memory references to a banked on-chip level-2 cache that all threads share. All this means more throughput, less energy consumption and more efficient usage of resources.
Are you still reading this post and still interested? Then you should check out this description of the niagara architecture.
Prof. John Hennesy on the Future of Microprocessor Architecture 3
Prof. John Hennessy, erstwhile Director of the Computer System Laboratory, now President of Stanford University, visited the University of Edinburgh to receive a Honorary Degree and give a public lecture on the Future of Microprocessor Architecture.
The lecture was very well structured and thrilling, especially the part about Thread Level Parallelism and a preview of SUNs upcoming Niagara Architecture. After having spent quite some time with a famous book written by Prof. Hennesy, namely Computer Architecture: A quantitative approach, I was really anxious to see this talk.
Prof. Hennessy led the RISC (Reduced Instruction Set Computer) team at Stanford in the early 1980s and was a cofounder, in 1984, of MIPS Computer Systems, now MIPS Technologies. He is a recipient of the 2000 John Von Neumann Medal, the 2000 ASEE R. Lamme Medal, the 2001 Eckert Mauchly Award and the 2001 Seymour Cray Award. He is a member of the National Academy of Engineering and the National Academy of Sciences, and he is a fellow of the American Academy of Arts and Sciences, the Association for Computing Machinery, and the Institute of Electrical and Electronics Engineers.
So all in all this guy has done quite some stuff for computer science!
Computational Thinking Seminar Series
Professor Alan Bundy has initiated a series of seminars on Computational Thinking. Thus every first Wednesday of each month at 4pm, one can attend some very interesting seminars from various fields of computational thinking. Today Prof. Vicki Bruce gave her talk ‘About Face’ and how our understanding of face perception has been influenced quite profoundly by computational developments. It was very interesting and I’m already looking forward to the next presentation which will talk about the area of ‘Computational Linguistics’.
OpenBSD 3.8 is out!
My favourite OS ‘vendor’ released a new version of their superb operating system OpenBSD with many new features. This has also been announced on undeadly. Hopefully I will soon find some time to upgrade my laptop.
Ruby On Rails and Typo 1
Here at the Uni of Edinburgh I started to learn Python because it is the defacto language used in many courses. Python is really nice and easy to learn but to my suprise I stumbled over Ruby again and a lot of things happened since I heard of the language some years ago. First of all there is really good documentation out there speeding up the learning curve and emphasizing Ruby’s features. There is a very powerful open-source web framework in Ruby for writing real-world applications with less code than most frameworks spend doing XML sit-ups. Just take a look at this :)
- The administrative interface is much better and easier to use
- PostgreSQL is supported as DB backend
- Ajax support eliminates all those nasty manual reloads, enabling “almost realtime” previews etc.
- ...
Sendmail and Majordomo
Finally I got around setting up Majordomo with Sendmail. Yeah, I know, you are thinking: “Why the hell doesn’t he use Postfix and ...put your favourite mailing list software in here… to do the job?”
Well, the reasons for that are pretty simple. Sendmail is in the base install of OpenBSD and thus very well maintained and secure. Majordomo is just simple to set up and get going and all it needs is Perl which is also included in the base OpenBSD install. Basically all there is to it is to follow the install procedures which are pointed out after a successful:
$ cd /usr/ports && SUBDIR=mail/majordomo make install
In order to make everything work together with sendmail though, it is necessary to reconfigure sendmail a little bit. Basically the following line will do the trick:
define(`confDONT_BLAME_SENDMAIL',`GroupWritableIncludeFile,
GroupWritableIncludeFileSafe')
Detailed information about what this setting does can be found right here.





