I decided to remove the photo gallery. Part of it was that I wasn’t really happy with the gallery application I was using, and partly because it stopped being updated by Debian. I could continue from the upstream version, but since I haven’t really been happy with it, I decided to remove it for now. I’m looking into alternatives (there are some photo management plugins for WordPress).
I’ve been using two new keyboards lately. One of the reason I got new keyboards were because after spending 10+ years in the US, I really can’t get used to the Norwegian layout. Also, programming languages seem to be optimized for the US layout.
Getting the keyboards were somewhat of an ordeal, though. You can’t get keyboards with an US layout in Norway. On the other hand, you can’t get keyboards shipped to Norway from the US (something about warranties, I think. Fortunately, I still have some friends in the US that can ship the keyboard, but it’s a pain.
The Microsoft Comfort Curve 2000 keyboard is a very comfortable keyboard. I was a little sceptical when I first got it because it seemed so flat, but it actually made it more comfortable. By being flat, I don’t bend my wrist that much, so I don’t feel any pain after a long day (although, to be fair, I’m spending most of my time in BEA Workshop/Eclipse waiting for the system to compile, so it’s not like I type much). Even though it looks like hitting the keys would be hard because of the curve, I got used to it pretty fast. The keys themselves are pretty soft, and I wish they could be a little harder so it would be easier to get tactile feedback. In general, I would say it’s a pretty good keyboard for programmers.
The Logitech Wave keyboard is my newest keyboard. I usually like Logitech keyboards and mices, so the hope was that this would be another winner. Like the Microsoft Curve, this keyboard is somewhat curved for increased comfort. Hitting the keys themselves give a pretty good feedback. Unlike the Microsoft keyboard, this keyboard is somewhat raised which makes it a little less comfortable than the Curve. They also changed the standard layout for the [Home/Del] row. I have hit the wrong key on several occasions already. I don’t know if I’ll ever get used to it (never actually noticed that I used those keys until I started hitting the wrong keys). It conclusion, good keyboard, somewhat less than the Curve. Would probably get a Curve if I had to buy a new one any time soon.
I’ve been looking for a good software to help with writing a journal/diary. Although I didn’t know exactly what i had in mind, there was a couple of features I thought I needed (and which I has discovered I needed as I tried out the different software packages that exists).
1. Ease of start writing. I don’t want to jump through hoops to just start the writing process.
2. Browsable/searchable. I need to be able to easily go back to previous entry, or at least be able to search for them.
3. Preferably text file format. In case the program stop working or I want to upgrade/change program, I rather the files that are created are in a common format. Making it hard to move away from a program means that developer don’t have faith that people will stay program voluntarily (yes, I know there are some efficiency reasons for going binary).
4. Simple. KISS principle
Wikis are interesting. They pretty much cover 1,2 and 3. The problem is, I don’t want to install a webserver on my home system just to be able to write to my journal. Also, the browser isn’t the best editor in the world. I do have WordPress installed on my public webserver, so I could in theory create a private section. But again, I don’t think a browser is the best editor.
Journal that comes with Kontact is pretty basic. Since I already use Kontact as my primary mail client, it wasn’t that much that difficult to use Journal.
The problem is that Journal is too basic. Once you write an entry, there is no way to find it again. There are no indication in the Calendar whether a given day has a journal attached to it. So you have to pretty much go to each day and check whether the journal entry you want is there or not. There is a very rudimentary search, but sometimes you want to just browse.
Now, Emacs being the all-in-one editor probably had something I could use.
journal-mode had everything I really needed. Problem was that it wasn’t maintained anymore. No support for Emacs 22 and beyond, which is a problem.
planner-mode forced too much structure. Programs should conform to me, not the other way around.
muse-mode made it easy to start writing. But it has the problem of structure. I wanted to be able to browse my journal by period and tags. I could set it up manually, but really… the program should take care of it.
org-mode. The perfect module, so far. It fills all four of my needs. It took my less than an hour to wrap my head around it to use. Org-mode also seems to be extendible enough for me to use in other parts of my life (like a day planner), which means that I can become more productive the more time I spend on it. So far, after 24 hours of use, I consider it a keeper.
Note: Sasha Chua has an blog entry about the topic. She also has lots of articles about using Emacs to its fullest potential.
One thing many of my non-developer friends ask me is why I would code at home when I do the same for work. For me, there is a world of difference between coding at home and coding at work.
Coding at work means that you are basically stuck with the technology and project that management decided. If you are lucky, you might be part of a project from the beginning and can influence some of the decisions. Still, once decided, there are probably not enough time to make changes later (as much as the agile paradigm promises otherwise).
Working at home means you set the speed. If you do something you are unhappy with, whether it works or not, you can always change it. Since you are basically the management team, you can choose the technology and tools. I also feel like I learn more coding at home, since there is more time for experimentation.
One thing that you need to be conscious of when coding without deadline is limiting the scope. It’s much easier to never be happy with the work, and therefore never finish. One of my favourite windows managers, Enlightenment, seems to be a example of this (DR17 has been in development since 2000).
Still, tinkering at home keeps me interested in coding, so that’s why I do it…
I’ve been working in Norway for six months now. It’s been an interesting experience, especially compared to my work experience in the US.
Salary in Norway and the US is about equal in monetary terms for software engineers. Now, it’s worth mentioning that as I write this, the USD is historical low compared to the NOK (although not as low as it was during the summer). Since most things are cheaper in the US (at least in CA), the actual purchasing power is better in CA than in Norway.
Benefits and bonuses
Healthcare is about the same in the US and Norway, the difference is who is paying for it. In the US, health insurance is paid for by the company you work for while in Norway it’s the State. Which means that in-between jobs, in Norway you would still be covered, while in the US you wouldn’t. The service is about the same (choose your own doctor etc).
As part of the package in Norway, I do get mobile phone and high-speed Internet access, even though I don’t work from home (the mobile has pretty much replaces the office phone for everybody in the company). These seems to be standard benefits in Norway these days. At least all the companies I interviewed with had it in their standard benefits package. I don’t believe high-speed Internet has become standard in the US, unless you work from home.
Vacation time is much better in Norway. In the US, I got 10 days of vacation each year. In Norway, I get 4 weeks (20 days) a year (plus 5 days if I have saved enough working hours). Meaning I can actually get away when I have a vacation (instead of a long weekend, which seems to be more normal in the US). Sick leave is not included in these four weeks of vacation. You also get the standard maternity/paternity leave in Norway (not existing in the US).
Working hours is a little saner in Norway than in the US, but I’m not sure it’s because I’m working for relatively big company, or because it’s just part of the working culture (not that many people work past 17:00)
There is a 3 months notice of leave in Norway (or at least at my Norwegian company). That’s somewhat weird coming from a State where employment is at-will. At the very most, I don’t think you have more than 2 weeks notice even at the most generous companies in the US. Not sure which is better yet.
Oslo is mostly a bank and telecom city. Along the coast, it’s mostly jobs in the oil industry. Silicon Valley is a lot more diverse when it comes to different industries.
The technology used is also much more diverse in Silicon Valley, where you can get work doing C++, Java, .Net, Perl, Python, what have you. Most of the jobs advertised in Norway was basically either Java or .Net (C#) jobs. Couple of companies, like finn.no, was Perl jobs. UNIX (Linux) and Windows are both present in Norwegian companies
The people and Work
The US, being the melting pot it is, is really diverse. At least in Silicon Valley, you basically get to know the world.
Norway is pretty diverse too, at least when dealing with technology. I work with Norwegians, English, Vietnamese, Bangladesh, Indians. Oslo might not be as diverse as San Francisco, but London and Paris is just a hop away.
English seems to have become the lingua franca when it comes to dealing with technology.
Engineers being engineers, there aren’t that much difference between an US nerd and an European nerd. Both are interested in technology and discuss it. Work culture itself (when thinking about the people/technology aspect) is not that different.
The company I work for seems to be really focused on the health of the workforce. When in the US, most tech companies have free soda and chips, the company i work for now is really encouraging us to eat healthy (free fruit basket once a week, free tea, coffee and water, but no soda), and have a balanced work life (discourage us from working too much overtime). In the US, it seems more companies are working people to death, mostly because there are other desperate people out there waiting for you job. It’s going to be interesting to see how the environment in Norway changes if there is a recession in the next few months.
Since public transport actually (more or less) work in Norway, I can take the train to work instead being stuck in traffic every morning and evening for hours. I love that part.
I do like working in Norway. I’m not as stressed as working in the US (mostly because of the visa issues I had when working there). There is some excitement in working in places like Silicon Valley, and stability in working in a country like Norway. I miss places like Fry’s Electronics or huge bookstores like Barnes & Noble or some of the more corner bookstores like the one in Mountain View. Working public transport really reduces the stress level.
Maybe it’s too early to make a definite conclusion, but so far so good…
I forgot my password.
I had this brilliant idea of protecting the documents on my laptop with encryption some time ago in-case it ever gets stolen. And of course, encryption is useless without a good password. And now I forgot the password. And the backup doesn’t cover the latest stuff…
At least I decided to cut down on the number of unique password I have to remember. If only I could figure out what the password was for this particular set…
I went to the JavaZone conference this week, my first conference in Norway.
The first thing that struck me was how small everything was. Now, I didn’t expect Comdex or JavaOne size, but still, I kinda expected something bigger. Especially since it billed itself as “the largest developer conference in Scandinavia”. If the smaller conferences in the US is probably twice if not three times as big as this one.
The second thing that struck me was how rubbish most of the speakers were. Not rubbish in the sense that the topic wasn’t interesting, but rubbish in the sense that the speakers weren’t any good at presenting their topic. The best speakers were those who came from the US and England. That was somewhat weird, considering some of the speakers billed themselves as “professional speakers”. Had a talk with someone at work about it, and he mentioned that the speakers in Norway probably hadn’t had formal training yet, and probably amateurs. Still, if you want to make a living as a speaker, hire a Speaking Coach, or take a class. I would think it would be worth it.
In any case, here are some of my favorite speakers from the conference
Jim Webber had a presentation entitled “Guerrilla SOA”. Basically put words to everything I have found weird about working with SOA the last couple of months.
Mary Poppendieck had a presentation on Lean Software Development, which I really found interesting. Lean software development seems to what all this agile programming people really are striving for. Got me thinking about what kind of decision you need to do right now…
Michael Feathers presentation on how to “see” good and bad code.
Robert C. Martins on writing good functions.
Not only are all these people really good presenters, but the topics were pretty interesting too. They are highly recommended if you ever get a chance to listen to them speak.
After finishing a particular software feature, I like to check in my work. The problem is, I get into a dilemma. Do I check in now, or wait until I’m sure the feature works as advertised. If I check in now, then I might discover that forgot to add something else to the checkin. If I don’t check in now, I might start on another feature, and then it gets messed up.
git has a wonderful feature that fixes this. git commit –amend. Basically, you commit your changes. Later on, you realize there were some other files that should have been committed alongside the first commit. So you just amend the previous commit with your new files. Really nice feature, and should make the history logs much nicer to look at.
I received a Nokia E-65 for work. These days, at least in Norway, people don’t get a desk phone. Rather, they get a mobile phone. It does make it easier if you have to move around according to which project you are in, since your phone number then always stay with you.
The initial impression is that’s it’s a really good phone. It feels nice, with the leather back, really light-weight, really clear screen.
Functionality wise, I don’t think there are any complains. It syncs with my Notes calendar, which make it much easier to remember all the meetings you have to go to. The email functionality has also been upgraded, compared to the Nokia N-70. That is, you can custom define the different ports you need to use to email. Wireless works great, and it’s a great way to save money on my the surfing habits. I installed Google Maps on it, and it seems to work pretty well.
E-65 comes with a mapping software, but you need to have GPS receiver, which kinda defeats the purpose, I think. If you have a GPS, you don’t really need the E-65 to show you the maps, do you?
The one thing I don’t really like about the phone is the camera. No, not because it has a “low” quality camera, but that there is a camera on it in the first place. It seems to me that a business phone like the E-series try to be, shouldn’t have a camera. There are places where you aren’t allowed to bring a camera into the office. And a camera doesn’t really fit in to the functionality of a business phone. Not that the camera is that good either. So, it seems Nokia put a camera there just to get past the reviewers that would complain about it, but not that good of a camera that would make it unusable in a business setting (no zoom, no flash etc).
Looking at the Nokia E-serie offerings, they have all cameras. I would love to get a phone with the functionality of E-65 without the camera. But other than that small thing, it’s a fine phone.
After months of procrastination, I decided to update my website. One of thing that had been bothering me was that it was getting too hard to update. Not the look. With css, updating the looks are somewhat easy. The problem was more that if I wanted to update, say the menu system, I had to edit a ton of pages. Small changes like updating the copyright just wasn’t happening unless it happened to be on page that I was editing a lot.
At first, I was considering installing a CMS or the very least, just let WordPress manage the site (which is quite capable of). But the software engineer in me doesn’t really like a solution that basically creates static pages dynamically. Waste of resources. Most CMS only forces your pages into their look and feel, and though I could work until I got my look ‘n’ feel, it would be too much work for too little gain.
But what is a CMS, anyways (at least web kind)? Well, it helps managing the files. You create templates, so that you can focus on the content and still get a consistent look’n’feel.
Managing files are easy. Being a software engineer, I’m used to source control systems, so that part was pretty much taken care of. The creating templates isn’t that hard either, if you are on an unix-like system. The scripting support on those systems are superb, so it wouldn’t really take much effort to write a template system to generate the static files.
Since I was going to make this change, I decided to do it in Perl while I was at it. Mostly because I haven’t worked much in Perl, and it would be an interesting challenge. It actually went really well. Took me a couple of hours, mostly because I needed to look up different functions in Perl, but in the end, I think I got the flexibility I wanted.