Bought a PowerBook

I bought a PowerBook G4 12” on Monday. I’ve been meaning to buy a mac for a while. My old PC is a PIII (600MHz, overclocked to 800MHz) that dates back to the year 2000. It’s served me well, but I suspect that it will now turn into a test development server or a box where I throw in the Linux/BSD distribution du jour.

I like my notebooks portable – but no integrated graphics please. The 12” PowerBook is the smallest laptop that Apple makes that I can buy right now. I thought about waiting for one of the small MacBooks or small MacBook Pros when they become available, but I really need a new computer now. It could be anything from a few months to up to a year before Apple ships a small intel based notebook. I considered the 12” iBook, but the slow hard disk deterred me. I also anticipated that I would be plugging in a monitor both at work and at home to extend the desktop space. iBooks can mirror the notebook display, but not extend the workspace to both displays. Not without a hack anyway. The 12” iBook is also bigger.

I looked at the VAIOs for a while. The 13.3” S58GPB has better specs, a better screen, is lighter than the 12” PowerBook and does not compare too unfavorably in the looks department. However, the VAIO is also AU$1000 more expensive. Despite being more expensive, it does not feel as nice. The plastic used does not do justice to the notebook. Looking at the pictures I thought what a gorgeous machine. But actually using the VAIO was a hugely underwhelming experience. The PowerBook feels much more expensive despite being significantly cheaper. The PowerBook actually looks better in real life than in the pictures. The VAIO looks better in the Sony marketing material than in real life.

The Apple logo, like the VAIO logo, is upside down when you sit in front of the notebook with the lid closed. However, both logos stand upright when you open the lid, showing to the world that yes, damn right, this notebook is worthy of attention. Except that the Apple logo glows white when the machine is in use. This actually illustrates quite well the similarity and difference in philosophy. While Sony, like Apple, puts in a lot of design effort in its notebooks, the PowerBooks still go the extra yard in the direction of the wow factor.

There are small details everwhere. When the PowerBook is in sleep mode, a small white light glows on the lid release button. The light slowly glows stronger and weaker, almost as if the laptop is indeed asleep, breathing slowly. It is at this point that one stops comparing specs. Apple products tend to produce an emotional reaction in the user. Wonder why iPods outsell the competition by such a big margin? It’s certainly not because they have the best specs, nor because they offer the best value. Apple will go to the length of having a speaker in the iPod, just to generate the click sound when the user navigates the menus. iPod owners love their iPods because of the way the devices feel and behave.

However, any specs, or otherwise comparison was pretty much moot point in the end. The main reason for getting the PowerBook was of course OS X. I’m finding it faster to work on UNIX-like systems, but Linux and BSD systems tend to involve too much maintenance when used as workstations. OS X fits the bill perfectly. More on that, plus pictures, later.

Full Post + Comments

Thank You Bam Creative

Friday was my last day at Bam Creative. I am starting a new job tomorrow, as a developer at Moodle. It’s pretty exciting. I am an avid consumer of open source, and here’s my chance to contribute while getting paid to do that.

Thanks Miles, I am grateful for the opportunity that you gave me, and for believing in me when I was a rookie developer starting out. I have learned so much during my time at Bam; not just the technical stuff, but also how to be more confident and assertive, how to take on more responsibility, how to multi task and prioritise better, and yes, it has to be said, how to manage stress :P I have learned a lot just by looking at how you interact with clients and by being around everybody at Bam. I loved the high-energy atmosphere and all the fun.

Time really flies. It seems like it was only yesterday that I was about to finish university and was worrying about finding a job in a foreign country. I did have a part time job at Subway as a sandwich artist, but that was more to help me earn some pocket money while studying.

For those who are wondering, a sandwich artist is what Subway calls the person who (hopefully) smiles as you walk in and engages in chitchat while you stare blankly at the hundreds of possible combinations of ingredients that can go into any given sandwich. Luckily, help is at hand. First you get asked what kind of bread you would like, then what cheese, what main filling(s), whether you want everything from the salad bar, whether you would like salt and pepper, and finally what sauce(s) you would like. If you are lucky, the sandwich artist would be skilled enough to make all that fit into the roll. If you are not, everything just falls into your lap while you attempt to take that first bite. I got pretty good at filling sandwiches, mainly because we were each allowed a six inch during our work shift. When you are hungry, you learn pretty quickly how to pack enough ingredients for a foot long into a six inch! The sandwich artist also does everything from preparing the ingredients, to mopping up the floor and taking out the trash at the end of the day. Still sounds artistic and glamorous? Didn’t think so.

I discovered port80 through a lecturer at ECU and I had been reading the forums regularly. Then one day I saw that Bam Creative were looking for a web developer. I applied and was lucky enough to sign an employment contract two weeks later. I got a missed call from Perth Web during my last exam. I rang them back and they asked me whether I could go in for an interview for a regarding a position that I’d applied for a few weeks earlier. It was then that it actually sank in how lucky I was that I already had a job to go to after uni, that I didn’t have to keep looking up job advertisements on seek.

The first few months were basically sink or swim – learn how to interface with SMS gateways, credit card gateways, learn how develop applications of bigger and bigger scope. There was so much to learn, so many things that I had never done before. I will always remember the night that Adam dropped me home at 4:30 AM. He went back to the office, fell asleep on his keyboard, and woke up with a screenful of junk.

There is still so much to learn. The more I learn, the more I discover how little I actually know. For a while I thought that I was pretty good with OOP until I discovered OO design patterns. I’ve been looking at quite a lot of resumés lately, and every time I see a list of technologies and the applicant’s familiarity with each technology, I have to try and put myself in the shoes of the applicant. A fresh graduate’s idea of “expert knowledge of PHP” would be different to someone with 5 years of commercial experience with the same technology. These lists are mostly useful to gauge the applicant’s familiarity with a technology relative to another technology.

Bam Creative has been good to me. I hope that my contribution has benefited Bam as much as Bam has benefited me. I’ll miss you guys – Miles, Drew, Basil, Patima, Teresa, Johanna.

Full Post + Comments

Do Kids Still Play LEGO?

Do kids still play LEGO these days? This one (yours truly) still does. I don’t have a LEGO set over here in Perth, but I’ve found myself building stuff with my old sets every time I go back to Mauritius. I did that recently when I went back for two weeks. I find it relaxing to sit down, start digging into the big box of parts, shifting through the plastic to find the appropriate bits, and putting them together. My dad once bought me a LEGO set for Christmas, and I asked for a new one for every Christmas and birthdays for the following few years until I had a sizable collection of parts. I would follow the instructions to build whatever the new set was supposed to build – once. After I’ve satisfied my curiosity, I would never build it again. I prefer mixing parts from all the other sets to build original stuff. Back then the LEGO parts were pretty simple. You didn’t get all the weird and wonderful shapes that you do today. Building something from the simple primitives was more challenging and rewarding than it is today. And a LEGO set was more versatile as a result too. I tend to build vehicles rather than buildings – wheeled vehicles, ships, aircrafts, spacecrafts, bots. It’s always sad tearing down something you’ve spent a couple of hours building, but there are never enough parts, and the fun is in building new things. So the finished product must be dismantled so that the parts can be recycled into new creations.

Later on I got into drawing stuff on the family’s 286 PC. Unlike LEGO parts, there are plenty of pixels to go around and one never runs out of it. The software was pretty limited and I found myself building things pixel by pixel – a process not dissimilar to building something using LEGO. Except that I only had one primitive. I did have a huge amount of possible colours to choose from though – a whooping 256 different colours! These days they call this pixel art.

Eventually I discovered that QBASIC was also installed on the machine. I started playing around with code, but I confess that I must have written awful stuff. I didn’t know how to use functions. I guess reading help files is pretty limited if you haven’t been taught any programming concepts. I played around with fractals and started a simple battleship game which I never completed. Back then there was no internet, no WWW and no Google. These days I can’t imagine myself coding without Googling around for stuff every now and then.

I also used to enjoy technical drawing at school and at one point wanted to be an architect. Then I found out that it usually takes 7 years of tertiary schooling before one can become an architect. So I forgot about that. I decided that I would become a programmer. Aiming to work for LEGO seemed to be too much of a gamble. What if they didn’t want me? I would be stuck with no skills other than putting plastic bits together!

While on my way to become a programmer, I discovered web design and was hooked. I still liked creating graphics, but I confess that I was never much of a drawer. I can draw pretty good renderings of vehicles and buildings, but I totally suck at drawing organic shapes. Eventually I studied Multimedia (that’s so a 90′s term) and Computer Science.

Today I’m a developer. I do some web design now and then, but I see myself primarily as a developer. This is where I want to go. Until LEGO offer me a job :D

Full Post + Comments

Mauritius, here I come

Woohoo, dad managed to score tickets to Mauritius for me today. I’m looking forward to being on the beach soon. I think I’ve taken a total of 3 days annual leave – one for my graduation and two after the last big project. It’s been a busy year and I’m glad to get a relaxing break from work and from thinking about work. I am also looking forward to seeing my family. I wish I could stay longer in Mauritius, but circumstances don’t really allow for that.

Full Post + Comments

Have your Cake

I am currently evaluating CakePHP, a Rails-like framework for PHP. In the words of the developers:

Cake is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.

The framework started as a port of Rails to PHP, but as the developers point out in an interview in this article, they are able to think by themselves. They do not intend to mimic Rails as it evolves, but rather, they will evolve Cake independently.

At this point, some of you may be wondering “why don’t you just use Rails – the original?” I have poked around a little with Rails, but I confess that I am still pretty much a beginner when it comes to Ruby. Unfortunately, the reality is that we can’t switch to Ruby and Rails in the forseable future. All of our clients are on PHP or .NET and Bam is predominantly a PHP shop. Heck, we are finding it hard to switch from PHP4 to PHP5, much as we would like to. Most web hosting shops still only offer PHP4. At this point, it would also be pretty hard to get people who know Rails (We know one – Myles, but so far he’s resisted our attempts to bring him in. Hi Myles :P).

I’ll reserve my judgement on CakePHP until I’ve played with it more. It looks promising so far.

Full Post + Comments

Webalizer

I have just installed webalizer on node.mu. I was waiting for google analytics to start accepting signups again, but I imagine that the waiting list might be very long. Webalizer is simple to install and suits my needs well enough. I’ll test-drive analytics in due time.

Just shoot me an email if you have an account on node.mu and want to have webstats.

Full Post + Comments

Meebo

Site of the day: meebo.

We’re three folks working to bring IM to Web 2.0

Meebo supports the following protocols:

  • AIM or ICQ
  • Yahoo! Messenger
  • Jabber or GTalk
  • MSN

It seems that people are finding cool things to do in AJAX everyday.

Full Post + Comments

Example PF Rules

Here’s a working set of PF rules that I’ve used before on my FreeBSD gateway. I posted this before on port80.

Hopefully it will help someone out there. It is sometimes easier to take a working set of rules, understand how it works, and modify to suit your own environment. Anyway, here goes.

ex_if is the external interface.

int_if is the internal interface.

pvt_net is your LAN.

dns_server would usually be your isp’s dns server.

ext_tcp_services are the tcp services that you want to allow the big bad world to access on your FreeBSD box. You can specify port numbers instead of the names, but I find the names to be more readable. For a list of services and (usually) associated ports, “more /etc/services”.

int_tcp_services are same, but for your internal LAN only.

port_rdr is the port you want to redirect. You can specify a port range as well, e.g 6500:6510.

client_rdr is the box to which you want the port redirected to.

## MACROS

ext_if = "rl1"
int_if = "rl0"
pvt_net = "192.168.0.0/24"
dns_server = "203.0.178.191"
ext_tcp_services = "{ ftp, ssh, auth }"
int_tcp_services = "{ ftp, ssh, http, 3306 }"   # 3306 is for MySQL.
allowed_icmp_types = "echoreq"
netbios = "{ 137, 138, 139, 445 }"
port_rdr = "<port YOU WANT TO REDIRECT>"
client_rdr = "<ip TO WHICH YOU WANT THE PORT REDIRECTED TO>"


## TABLES

table <firewall> const { self }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }



## GLOBAL OPTIONS

set block-policy drop
#set state-policy if-bound
#set loginterface $ext_if



## TRAFFIC NORMALIZATION

scrub in on $ext_if all no-df
#scrub all reassemble tcp fragment reassemble



## NETWORK ADDRESS TRANSLATION AND REDIRECTS

nat on $ext_if from $pvt_net to any -> ($ext_if)

# Port redirection:
rdr on $ex_if proto tcp from any to ($ex_if) port $port_rdr -> $client_rdr port $port_rdr



## FILTER RULES


# Setup a default deny policy. Remember that in PF the last matching rule wins.
# Therefore, this rule is the catch-all rule. Anything not specifically allowed
# will be matched by this rule, and dropped.
block drop log all


# Prevent spoofing
block in log quick on $ext_if from </rfc1918><rfc1918> to any
antispoof log quick for $int_if inet

# Prevent netbios leakage (from Windows systems on our LAN)
block in log quick on { $int_if, $ext_if } proto { tcp, udp } from any to any port $netbios

# Allow loopback interface
pass quick on lo0 all


# Outgoing from firewall
pass out quick on $ext_if inet proto tcp from ($ext_if) to any flags S/SA modulate state
pass out quick on $ext_if inet proto { udp, icmp } from ($ext_if) to any keep state

# Allow internal network send traffic to the internet
pass in quick on $int_if inet proto tcp from $pvt_net to !<firewall> flags S/SA modulate state
pass in quick on $int_if inet proto { udp, icmp } from $pvt_net to !</firewall><firewall> keep state

# Allow dns traffic out
pass out quick on $ext_if inet proto udp from ($ext_if) to $dns_server port domain keep state


# Incoming to the firewall box, allow some services

# Allow hosts from the Internet to access some services
pass in quick on $ext_if inet proto tcp from any to ($ext_if) port $ext_tcp_services flags S/SA keep state

# Allow hosts from our private LAN to access some services
pass in quick on $int_if inet proto tcp from $pvt_net to ($int_if) port $int_tcp_services flags S/SA keep state

# Allow bootp service to function on the firewall
pass in quick on $int_if proto udp from any port bootpc to any port bootps
pass out quick on $int_if proto udp from any port bootps to any port bootpc

# Allow icmp
pass in log quick inet proto icmp all icmp-type $allowed_icmp_types keep state

# Incoming active ftp-data (tcp port 20). This is required for active ftp to work.
pass in quick on $int_if inet proto tcp from any port ftp-data to ($int_if) port >= 1024 flags S/SA keep state
pass in quick on $ext_if inet proto tcp from any port ftp-data to ($ext_if) port >= 1024 flags S/SA keep state

# Allow passive ftp in
pass in on $int_if proto tcp from $pvt_net to any port > 49151 keep state
pass in on $ext_if proto tcp from any to any port > 49151 keep state

Full Post + Comments

Honours Degree

I am playing with the idea of pursuing a honours degree in Computer Science. I visited my ex-university lecturer and project supervisor during the lunch break today and she floated the idea to me. I was actually offered the posibility to do honours in Multimedia when I graduated last year, but I already had a job lined up and wanted to get out there and work. It’s funny how things can change in one year.

So here I am, thinking of doing postgrad studies. It will have to be part time. I will be insanely busy with both work and studies, but the more I think about it the more I’m attracted to the idea. But there’s much to think about. I am weighing my commitment. One does not do a honours degree, part time, for anything less than a first class honours. And I will have to get a loan for the tuition fees. On the plus side, I now have permanent residency in Australia and I won’t have to pay the exhorbitant international student rates.

Full Post + Comments

New Blog

Brand new domain, brand new box, brand new blog. Welcome to node.mu, a Mauritian flavored node on the internet.

Full Post + Comments