Pedro's HomePage at FreeBSD

FreeBSD Advert

Who am I

My name is Pedro Giffuni. I was born in Bogota, Colombia and in addition to the Colombian citizenship I am also proud to be Italian.

I am a practicing Catholic: I truly believe in the Father, the Son, and the Holy Spirit, and I obey the Pope. This is not simply an article of faith for me, but rather the only possible conclusion after rationalizing the consistency of the teachings from the Church and it consequences over my life. Being Catholic actually helps me be a better person and it also involves respecting other people that may believe differently. Life is hugely valuable just by the fact that we were created by the same God.

I am a Mechanical Engineer from the Universidad Nacional de Colombia and I have a M. Sc. in Industrial Engineering from the University of Pittsburgh, but I love to spend my copious spare time with technology. In particular I love to spend time on the wonderful FreeBSD Operating System. Within the FreeBSD Project I am a src committer with multiple interests.

I am always looking for new challenges, you can check a rough version of my CV in Spanish, English or Italian.

Getting Started with Computers

The initial game consoles were a great way to get in touch with basic computers at the time. My brother owned an Intellivision((TM), We were both pretty good in Sea Battle, and while he had the ownership advantage and practiced sufficiently to pretty much beat me at that, I would take revenge in hockey.

On the early 80's having a computer was somewhat of a dream but some early machines appeared that could be hooked to a TV set.

The Tandy Color Computer (also known as a CoCo) was one of those machines. I had one and while I never got to enjoy the wonders of Motorola's 6809 Assembly, I did get to use Microware's OS-9. Later in early University I would even write a driver for the "Sound and Speech Synthesizer" using OS-9's Pascal variant records. Quite crazy now that I think about it.

Meeting the Daemon

While I got admitted to the school that I wanted to study electronics, I eventually found that things were not as they looked like and I switched to a better school abandoning electronics altogether.

It just so happened that the new school had BITNET access and later it was among the first to offer Intenet access and I was really lucky to end up involved in those early days of the Internet in Colombia Machines from SUN and SGI were in vogue but it was not easy to get access to them and eventually I went hunting for software alternatives to Windows 3.1. It was 1986 and I met FreeBSD, a somewhat rough console based OS would fit in a floppy and would let you access the rest of the network while it was installing. It was obviously more powerful than it seemed.

The thing about FreeBSD was magical in a dark sense: early computer uses, like me, used to thing that to write and OS one had to know the deeper secrets on how the internals worked. Like how do you draw a character, pixel by pixel. One day CS student, that was starting to use FreeBSD asked me about a sound driver, and I quickly answered ... Oh you need to recompile the kernel for that, He stared at me and said Oh, wait ... I have to grok the concept. I then understood my friend gave the same step I gave some months before: suddenly the components of the system and those mysterious hidden bits became public. It was exactly like, when you learned about that thing called electricity that lets the bulb turn on when you turn the switch.

We also had an SCO UNIX based machine somewhere in Computer Center but you needed extra licenses to the compiler and the graphical system. Guess what ... it was trivially easy to install the graphical environment on FreeBSD and get a huge bunch of additional software running. I quickly abandoned SCO and became a FreeBSD fan. I also never felt motivated to use Linux; it either looked about the same or had issues, like panicking when your user ran out of quota.

Fun with ports

During my last year in University, I became the administrator of an AIX machine in the library. There, I would get the chance to test all the software on FreeBSD before setting things up in a server. Eventually, things seemed to be running faster on FreeBSD than they did on the much more expensive server. I was never really tempted to replace the server with FreeBSD but I did get to set up a PC as a backup server, and under my suggestion the University cancelled an expensive support contract with IBM.

FreeBSD is not just about the Internet: it certainly shines there and at the time Yahoo! and hotmail depended on it, but there is so much more. I decided one day it was a good idea to have all my engineering related stuff, much of which could be downloaded from the Internet, working on FreeBSD. So I met FreeBSD ports.

Hitting the source tree

Innocence wouldn't last forever and eventually I started making changes in the source tree. Long story short: I was punished with a commit bit in 2012 after submitting a bunch of cleanups to the ext2 file system implementation. I will openly admit it was an unexpected honor: while I knew some basic programming I didn't really study CS and I never planned to develop an Operating System or any piece of software as complex as FreeBSD.

Becoming a source committer has been and continues to be a learning experience. I am so very lucky to be surrounded by such a great professional community.

Interestingly FreeBSD became a huge source of innovation in the Industry, the development of jails was the precursor of containers, and many of the technologies initially developed in FreeBSD became part of commercial operating systems. FreeBSD made a huge difference for companies like Yahoo!, WhatsApp, Netflix and both Apple's macOS and the SONY PlayStation.

Backend vs Frontend vs FullStack

Nerds won. In the world of software programming you can actually have fun and live of developing your own Operating System and the software around it. This said, if you choose it to be your career, and given that the major operating systems are either closed-commercial, or copy-left free, it is a good idea to know more about the surrounding code.

If you happen to like the server part and dealing with Databases and the obscure but powerful details that most users tend to be unaware about, chances are sooner or later someone will put a backend tag on you. A backend developer usually knowns very well SQL, the secrets of powering web servers (Apache or nginx, usually), and some language like C++ or PHP, but nowadays Python or Java may do as well.. If you like eye-candy and you tend to worry about how the end user sees your product there is a good chance you may end up becoming a frontend developer. For this you will be a real expert in HTML, CSS and JavaScript.

In my case, I didn't really want to specialize on either of them but I was having lots of fun with the backend and never found someone that would catch up on making the interfaces work well enough so I ended up becoming what people call a FullStack developer.

I started doing things in PHP, but eventually with Ruby on Rails, you end up moving to some framework like Laravel. NodeJS is also taking over and there is little excuse not to learn JavaScripy anyways so you may end up with Angular or React.

Learning C is, of course, the basis for learning any of the above languages, and UNIX is the right place to practice.

WIP

As with most web pages, this is Work in Progress.