Blog

Interview: Michael ‘Monty’ Widenius

2010-01-19, by Support Team

Recently we interviewed Michael ‘Monty’ Widenius who is the main creator of the MySQL open source database, which was acquired by Sun Microsystems in 2008. Nowadays Monty keeps busy on many fronts and is often in the headlines of newspapers and IT news portals.

MySQL

How did you start your programming career?

I bought one of the first available personal computers, a Swedish ABC80, when they where introduced in 1979; At that time there you did not get any programs for the computer, so you had to learn programming just to be able to use it.

My friends could not understand that one could do anything useful or fun with the computer, so to show them what could be done, I made more than 50 games (in Basic and assembler) for it so that they could use it.  That was the start of my programming career.
Which programming languages, tools and frameworks do you utilize?

When I moved in 1982 from personal computers to Unix computers, I switched to use C. When I started on MySQL in 1994, I started to program C++.

Apart from Basic, C and C++, I have worked on shell, perl, lisp and some own created languages (as part of UNIREG, the ancestor of MYSQL), and SQL.

Tools used are mostly unix basic tools like Xemacs, gcc, yacc, make.

The only build framework I have used is Visual Studio, when I built UNIREG and MySQL on windows.
What are the best parts of programming?

To solve hard problems is fun. It’s also fun to be able to create something that a lot of people can use to solve their problems.

What are the worst parts of programming?

It’s a lonely job and it takes up way too much time so you can easily forget the world around you (especially when you work from home).

Because of this, I have made a point to visit or invite friends most weekends. (Making food is another hobby of mine).

There are times programming feels overwhelming and you can?t get anything done ? how do you cope with it?

If the problem is to figure out something very hard, then I take a couple of hours off and lay in bed (completely alone and no sound anywhere) and just think about the problems until I found a working solution.  This has helped in most cases. In the few cases it has not
helped, then I do something else for a few days and after that I have always had a fresh solution for the problem.

What is the optimal environment and time of day to get the best results?

For me, it’s working from home and be able to work uninterrupted on a part problem until it’s solved (usually very late in the evening).

Then to go to bed and sleep until my body tells me it’s time to wake.

The end result is that my working hours are 11.00 – 02.00 and I am most productive in the evening.

I also noticed that I am much more productive in the winter than in Summer.  (Maybe because my brain works better when it’s cold and/or because on the winter evenings there is much less to do than in the summer).

How would you like to improve your programming skills?

Getting more time to program :)

Do you comment your code?

Yes;  When there is other people that is working on your code you have to add a lot of comments.

When I started with MySQL, I did not add that much comments as I then didn’t think that many others would have to work on the code;  I just added as much comments to make the code understandable for me.

Nowadays things are very different;  Part of our code review process is to ensure that any code that the reviewer doesn’t instantly understands has to be commented.

Your message to ViopeProgramming.com users and other beginning programmers?

You can’t get to be a top programmers by skills alone; You have to spend a LOT of times to do programming and you have to do that in many different areas.

You also learn more if you are working on a project with many other people!

I would like to encourage everyone to spend 1-2 months on either creating a useful open source project and get others to participate in it or be part of some project that you are using yourself!

When working with others, don’t fall into the trap to think that your code is better than others or that every code you see needs to be rewritten by you;  You need to work with others, not against them!

Thanks, Michael!

This post currently has no responses »

Interview: Jani Penttinen

2009-10-26, by Support Team

Welcome back! This time we talked with Jani Penttinen, Co-Founder and CTO of XIHA Life. XIHA Life is a social network for multilingual people around the world. XIHA Life connects people with blogs, homepages, music and other social media.XIHA Life

How did you start your programming career?

I started doing more serious programming during senior high. I was doing some demos at the time for Atari ST, until on day I decided to write a game. The game, Utopos, was released as shareware and it was reasonably successful, which gave me enough motivation to steer towards becoming a professional game developer.

Which programming languages, tools and frameworks do you utilize?

I started with assembly programming and then later on moved to C and C++. During my active career in game development I was using C++ and then some shader programmer languages (for 3D graphics) and occasionally optimizing in assembly. Back in those days I used Microsoft Visual Studio.

These days I do web development in PHP, using our in-house framework. I am not a full time programmer anymore, but in the CTO role I still participate in the programming efforts from time to time.

What are the best parts of programming?

The best thing about programming is that you’re able to create things by yourself. Basically you can create something and see it running on screen, and realize that without your work this thing would never have been done. Programming gives you pretty much a total control in every aspect of what the computer is doing.

What are the worst parts of programming?

Programming is very time- and resource-intensive work. It’s hard to focus on other stuff when you’re in the middle of programming something, and the projects easily last much longer than you originally estimated. It’s fun when you’re doing it for fun sometimes, but it can be quite a stress when it becomes a part of your daily life for too long time.

There are times programming feels overwhelming and you can’t get anything done – how do you cope with it?

You just need to do something else. If you have a lot of things to program, it’s a good idea to take the easiest job from the list and do that if you’re stuck. Being able to finish something quickly will give a mental boost, while your brain will continue to process the previous problem in the background. It’s also a very good idea to talk to other programmers when you feel you’re stuck. Often just describing the problem you’re trying to solve will be helpful and you may figure out the solution by the time you finish the sentence.

What is the optimal environment and time of day to get the best results?

That depends on the person. I am at best in the morning, but if the task is fun and I am enjoying the work, I can keep programming through the night. The environment obviously needs to be free of distractions. Sometimes it’s good to unplug the internet, for example, to be sure there’s no communication from IM or social networks which might steal the focus.

How would you like to improve your programming skills?

I learn by doing, and that is how I have always learned. The best way is to just get to it, and not be afraid of things you have never done before.

Do you comment your code?

Yes, of course. I probably don’t do enough of it, but it is important to have a habit of at least basic commenting and very clear variable / function names.

Your message to ViopeProgramming.com users and other beginning programmers?

Programming is fun, and can be rewarding too. It doesn’t matter which language or tools you use, good programmers can switch between languages and tools at ease. The most important thing is to learn to design the code before writing it!

Thank you, Jani!

This post currently has no responses »

Interview: Linus Torvalds

2009-08-21, by Support Team

TuxOur second interview unveils the thoughts of Linus Torvalds, a man who created the Linux kernel. Linux is an operating system kernel used by many Unix-like operating systems (like Ubuntu, Fedora, openSUSE and Debian GNU/Linux) and it is an excellent example of free/open source software. Linus Torvalds initiated Linux in 1991 and now acts as the project’s coordinator. Torvalds’ work is sponsored by The Linux Foundation.

How did you start your programming career?

It didn’t start as much of a “career”, it started when I was something like eleven or twelve, and my grandfather (on my mothers side) bought a computer.

He used it for incomprehensible calculations – he was a professor of statistics at the University of Helsinki – and he would write his BASIC programs for doing calculations on paper, and I’d help him type them in without really understanding any of it. Not to say that he didn’t try to teach me: I still remember him teaching me to do simplification of rational algebraic expressions, but even later on when I did math as a minor at university I never got into statistics.

I played around with the computer, though, typing in programs from computer magazines and books of the time, and eventually moving on from typing other peoples programs to doing my own. And switching from BASIC to assembly language (or rather – machine code, since I ended up assembling things by hand and eventually just being pretty good at just writing out the numbers directly) for performance reasons when I started doing games.

My games were always pretty bad, but my interest was never in the end result as much as in just making the computer do what I wanted. So the games would not be designed around game-play, but around some clever routine I’d written to move things around on the screen or whatever.

I moved on from that original VIC-20 computer, and moved on from writing crappy games, but when everything else changed the one thing that stayed constant was the fact that I kept writing my own programs for whatever need I had. And that I kept enjoying doing it.

Which programming languages, tools and frameworks do you utilize?

I work almost exclusively in C, since everything I do is pretty low-level systems programming. Even when I don’t work on the Linux kernel, I’m still working on code where performance and low-level details matter more than almost anything else.

My tools are similarly fairly spartan – no fancy development environment, just text editors, “make” and a compiler. My “graphical environment” is having a lot of windows of text open at the same time. One of which is my email window, which is arguably how I do most of my work – it’s less about programming and more about communication these days.

What are the best parts of programming?

To me, it’s just the mental challenge of writing code, but also figuring out where things went wrong when we get a bug report (especially one that can’t be easily reproduced, so that you have to figure things out on some fairly limited information).

And the communication. I like working with people, and while I sit alone in my downstairs office (my “basement lair”), it’s actually very social, since most of the issues require people to communicate to resolve.

What are the worst parts of programming?

The worst part is probably the frustration when some bug report just doesn’t have enough information to really even know where to start. We end up having to ignore those, until enough of them come in that some pattern emerges and you get a handle on it. But it can be very frustrating to know that something is going badly wrong, but there’s no way to really figure out what.

And the most frustrating part of that tends to be the social side, when the person who reports the problem is obviously also going to be very annoyed at it not getting fixed. Or just the frustration when working with other developers doesn’t work well – the social part of the development process is the most enjoyable one, but perhaps exactly for that reason it’s then also the most furstrating when it doesn’t work well.

There are times programming feels overwhelming and you can’t get anything done – how do you cope with it?

Usually I just take a break. It doesn’t happen all that often, and quite often it’s a matter of “ok, I’ll go upstairs, make myself a latte, and come back down in five minutes and then just work on something else for a while”.

Sometimes the five minutes might be a couple of hours, when I take a break to go outside or (more commonly) just go away and read a book for a while. The most common reason for that isn’t really frustration, though: it’s seldom that I really get that frustrated. So more commonly it’s about there being a few outstanding issues, but all the people working on them are in different timezones, and so there are times when I often end up just waiting for either a test-result or on people fixing a problem, and I just take a break because there’s no point in me sitting around the computer.

What is the optimal environment and time of day to get the best results?

That seems to be very different for people. In fact, it’s been different for me. Long ago, I used to pull a lot of all-nighters when I would be really “in the zone” and get a lot of programming done, and then I’d crash at 4AM or something. That works well for very intense sessions.

But these days, little of what I do is “intense programming sessions”, and most is about reading and writing email, and that’s different: I seem to do that mostly in the morning. So these days I have my most effective time between 8AM-noon. Part of it is the different work, but part of it is probably simply that with everybody spread out over the world, a lot of my work email comes in during the night, so int he morning I have that piled up, and then in the afternoon it’s more of a trickle of new reports and new code.

As to the environment – I don’t need much. I want it to be quiet, though. I hate noisy computers with a passion. I like my computers fast, but at the same time, noisy fans or even noisy clicking from some harddisks will just make me very irritated.

Oh, and one important environmental details: a big nice screen with lots of pixels, so that I can have lots of sharp text in several windows open at the same time.

How would you like to improve your programming skills?

I’m a big believer in learning by doing, so I think the best thing to do is to “just do it” like the Nike slogan said. But one of the things I occasionally think about is to try to do a different kind of project, and perhaps work on a higher level, or perhaps just with a different model of programming. I’ve been occasionally thinking about learning to “write hardware” instead of software – ie working with FPGA’s.

But realistically, I’ve got enough on my plate, so I’ve kept to the kernel and the few other projects I work on.

Do you comment your code?

Yes, but not very much. I’m a big believer in trying to write readable code, and comments aren’t part of that. Rather than write comments, I prefer using good variable and function naming, and work very hard at making my functions do one thing, and do it obviously (and have a name that explains what that function is).

So comments for me are relegated to when something surprising is going on, not to explain normal code.

Your message to ViopeProgramming.com users and other beginning programmers?

I’m not very good at the whole “message” thing. I didn’t get into programming because I planned it or had a vision, it all just happened. It’s hard to take away a “message” from that.

One thing I like to caution people against, though, is to not aim too high. I realize that sounds odd – people are often taught to try to aim for the stars, and even if you don’t succeed, maybe you’ll have gotten close, and if you aimed high enough, that may still be better than somebody who didn’t even try.

But I think that’s not true. People who aim too high not only miss the mark, but they’ll be frustrated by all the small details. And those small details matter a _lot_. I’ve never started a big project, for example. I’ve only started small projects, and then they have grown larger than I expected them to. And I think that’s a good way to do things: concentrate on the details that matter rather than looking for some lofty goal.

Thank you, Linus!

This post currently has no responses »

Interview: Scred – Kristoffer Lawson

2009-07-24, by Support Team

ViopeProgramming.com is starting its programming related interview series with Scred, a service for groups to manage their money online. It is targeted at bands, event organisers, indie film crews, hobby groups, flat mates and friends with common activities. We had a chat with Kristoffer Lawson, the co-founder of Scred.

ScredHow did you start your programming career?

I can’t say it ever really started in the traditional sense. I got hooked on computers the first time I tried a friend’s Amstrad CPC, in the 80s when I was 7. I learnt to write my first simple programs for it and then went on to buy my first computer, a Sinclair Spectrum. I learnt to write games and useful little utilities, which was a skill I have developed ever since. My first real paid work started in the mid 90s, but to me programming is something I have pretty much always done.

Which programming languages, tools and frameworks do you utilize?

For Scred we use Python and Django, although my own personal favourite is Tcl.

What are the best parts of programming?

The feeling of imagination being the limit. The ability to create something from basically nothing. Plus the satisfaction when you finally work out a brilliant pattern for combining the components of a complex system together into a simple and powerful result.

What are the worst parts of programming?

It is hard and stressful work. A lot of it is just getting dirty and doing stuff. But often you have tight deadlines and limited rewards. Most people don’t realise how mentally challenging programming is.

There are times programming feels overwhelming and you can’t get anything done – how do you cope with it?

Sometimes you really do have to have a break from it. Otherwise you simply will not get anything done. However, at the end of the day you often just have to sit down and work at it. If you think of the big picture and all the complexity at once you will probably feel depressed or confused. So mostly you try to forget about that and just focus on one immediate problem.

What is the optimal environment and time of day to get the best results?

A decent chair, a decent table, a decent computer with hifi equipment of sufficient quality. Headphones aren’t the best as it’s tiresome to listen to music for hours that way. Night time is the best. For some reason then you feel anything is possible as you’ve slightly lost your natural inhibitions. Mentally that’s a bad time to think of the big picture or of all the challenges and intricacies ahead, so you can only focus on what you’re doing.

How would you like to improve your programming skills?

I’ve currently been coding some iPhone stuff so I guess that is one area I would like to develop.

Do you comment your code?

Yes, absolutely. It helps to think about the interfaces you are offering to others: if the text sounds complex, your solution is probably overly complex. It’s also a good reminder when after a year or two you come back to work on something and you’ve totally forgot everything.

Your message to ViopeProgramming.com users and other beginning programmers?

Don’t feel intimidated. Everyone has to start somewhere and the only way to learn programming is to practise it. Even with simple programs you can get very satisfying results. I also feel that programming is defining the future of humanity, and is a reflection of our thinking, but in a way that is concrete and creative. Some of the greatest mysteries of our world will be solved by programming.

Thank you, Scred and Kristoffer!

This post currently has no responses »

Welcome to ViopeProgramming.com!

2009-07-24, by Support Team

Hello and welcome to ViopeProgramming.com, the easy, fast and affordable solution for learning computer programming! We offer several programming courses covering multiple programming languages, all containing comprehensive theory, exercises, instant feedback and personal support, among other features. Currently we have courses available for Java, C and SQL languages. See the Courses page for more information and course contents.

ViopeProgramming.com is a web application so all you need is a web browser to get going – no need for heavy books or software installation of any kind, like compilers and development environments. You can access the service from anywhere you like and anytime. We have demo courses available for every course so you can get a good overview of courses before purchasing them. And if you decide to buy one, it’s easy: you can pay online with your credit card and courses are activated in seconds.

See Virtual Demonstration for screenshots!

A screenshot of a programming exercise being checkedIn the future ViopeProgramming.com will offer more courses to choose from. If you couldn’t find a course suitable for you right now, you can register to receive email updates about new courses. The ViopeProgramming.com blog will present you with interviews with programmers behind different types of applications. These interviews will show you how people have once started programming and are now earning their living doing it, just like you could do! We will also blog about the service, like updates and in-depth feature presentations.

So, to get started you need to:

  1. Register to the service
  2. Log in
  3. Choose the course you want
  4. Study!

Simple as that. If you need any help, please do not hesitate to leave a reply to this entry or contact us by email at info[AT]viopeprogramming[DOT]com. Also, feel free to send your thoughts and feedback to feedback[AT]viopeprogramming[DOT]com.

Have fun studying!

The ViopeProgramming.com Support Team

ViopeProgramming.com is administrated by Viope Solutions Ltd, a Finnish company specialising in e-learning. Viope was founded in 2001 and is the market leader in providing online computer programming courses in Finland. Viope’s customers include educational institutions, companies, organisations and consumers. The company has also started its global marketing. ViopeProgramming.com is the international version of Viope’s Ohjelmointikurssit.com service which is targeted for Finnish customers. Ohjelmointikurssit.com was released in September 2008. For more information on Viope Solutions Ltd visit http://www.viope.com/home.

Viope Solutions Ltd

This post currently has no responses »