Ottawa Computing Group

I’ve just founded a meetup group in Ottawa, ON for programmers and hackers to work together or alone on whatever projects they’re endavouring in.

From the meetup description:

“Writing the next hot Android App or making a mundane Web App? Bring your laptop and hack away at your next computing project. Everything is welcome whether is traditional software development or administrating your personal website server. If you can do it on a laptop, than you're welcome to join.

You can both hide in your corner quietly typing away or sit in a group with your portable rigs on table and discuss your next big computing adventure.

This group has no focus on the type of technology being worked on, whether it's a basic web project or artificial intelligence or machine learning. Bring your ideas with you and share them with the group.

Non-hackers are welcome to join if they want to be thought how to code, we're all open for learning opportunities. Just ask anyone if they're willing to teach you new skills. If you're stuck on some tricky part of your project, ask your peers for help.

We will be meeting weekly in various coffee shops in the downtown area. If we get big enough, we can have groups in the suburbias of Ottawa.

Feel free to be late to the party or come in a bit earlier. Leave whenever you're tired at staring at your screen or have a more important date coming up.”

Hoping to meet you exciting people and see projects beyond my comfort zone!

cdahmedeh - The History Behind my Username

My username dates far back, to approximately 2002, when I was still an early teenager. At the time, I spend most of my time playing on the Sega Genesis and the Sonic series were my favourite. One day, at Wal-Mart, I found a box for a PC Game called Sonic CD, I wanted it and made my father spent 30$ CAD on it.

Like everyone else, when I registered on forums, I wanted to have a pseudonym, though I preferred that my name would be in it somewhere.

At the time, Sonic CD was my favourite game of all time, as embarrassing as it was but don’t worry, it’s not the case anymore.

I was a bit inspired by my father’s pseudonym htarekh and I wanted my username to be cdahmedcd but I found it too repetitive, and substituted the second ‘cd’ to the prominent letters in my last name El-Hajjar, therefore ‘eh’. I ended up with cdahmedeh.

The username stuck with me for a long time and never really bothered to change it, even up to until today.

The proper pronunciation for the username is like this:

C D Ahmed E H

I don’t really make the effort in correcting people when trying to find the original meaning or pronouncing it, I think it’s interesting to see what people come up with.

What a boring reason!

Procedural Music in 256 bytes.

If there is one type of music that I have an incredibly strong taste for, it’s chiptune music, ones played by electronic circuits and chips rather than actual instruments. Classic games are a great source of these tracks and some of my most memorable melodies come from them.

During the Oldskool 4K Intro competition at Revision 2017, the Swedish hacker Linus Åkesson, manages destroy the 4K intro limit, with a tiny program in 256 bytes for the Commodore 64, a 1/128 factor reduction of the maximum. It is not a surprise that it won first place in the competition.

My day job involves me working with bloated runtimes and gigantic libraries that some span in the order of several gigabytes. Powerful machines with several cores and gigabytes of RAM are required to run these applications.

I am humbled by classic video game designers who had to work with tiny amounts of RAM and pathetic processors found in calculators like the Motorola 68000 and still manage to have colourful experiences with wonderful sound running at 60 frames per second.

The goal of these developers wasn’t some philosophy like maintainability or a certain idioms or design patterns, but rather extracting the most out of the hardware and provide the most impressive gaming experience.

When the Revision 2017 demo competition was over, I start looking at the winners, and nothing touched me more than the “A Mind is Born” demo. His technical description barely fits in my head and makes me feel like a novice programmer in my first programming course.

The actual executable is 256 bytes, and there was room to spare with the first instruction being a no-op (NOP). Ironically, the SID tune is larger at 325 bytes and encoding to MP3 would make a file larger than 2 MB. Encoding this blog post in UTF-8 is more than 256 bytes!

The music is generated by the program itself rather than having a score embedded in the program. The conductor isn’t the programmer, but the program. This is the procedural aspect of it. It sounds like a chaotic psytrance piece building up to a strong climax at 1:42 morphing into a real pseudo-orchestra.

This chilling piece of music shows what the mind of true geniuses can produce. If you don’t get goosebumps listening to this, you have no appreciation of true technical art. I recommend a listen with a good set of headphones to enjoy the incredibly deep bassline.

Celebrating a (little more than) year of blogging...

My first blog post was published on April 15, 2017 and was so popular that it generated a whopping 2 comments. I can’t say that my others posts have been as popular though.

I started my blog in order to learn writing and express my creativity. Writing is an outlet of stress for me and there’s no better way to talk about something on an open platform like this.

While I thought my blog would be solely focused on IT, my blog became a multifaceted place with discussions on technology, philosophy, science and automotive. I feel the subjects have been a bit dry but stay tuned for more exciting blog posts and new subjects such as gaming!

My goal for this blog isn’t popularity, I don’t even run ads on this website at all. I just want to vent and hope someone will benefit from my tirades.

Some statistics about this blog so far:

  • 537 days since the first post

  • 14 blog posts not including this one

  • 3 comments

  • 12 likes

  • 230 viewers per month on average

  • 4 RSS subscribers

  • 31000 words approximately

  • Most popular blog post: Automatic Transmission Simulation in Games

  • Least popular blog post: Many of them have not been read this month...

  • Longest blog post: Why I left…

  • Shortest blog post: Drifting a Bus

  • Most readers are from the US, Canada and UK. Some significant traffic from Europe.

  • Apparently, the most popular way to reach this website is directly (which I find hard to believe), it’s more likely to be through search engines or social websites.

  • 0 dollars made from page views

My writing is still very imperfect, and at times, very simplistic. I’m hoping with practise I will come up with clearer, more informative and have better researched posts. Maybe I’ll be taken more seriously then, for now, it’s just a hobby.

Creating this blog has made me realize that I don’t need to create something perfect from the start but rather, every endavour is a learning experience on it’s own. Your first projects might be cringe-worthy and embarrassing, but one day, you’ll do something you’re proud of. I’m not there yet.

If you feel the need to express yourself I highly recommend blogging though you can also start a YouTube channel or maybe a podcast. I personally use Squarespace to build my website. Even though I’m a software developer, I honestly don’t have time to maintain a website through some complicated JavaScript framework and host it on a VPS in my spare time. Some website builders are free like Wix and others are dedicated to blogging only like Blogger or WordPress (well, it can do a bit more). If you’re a web developer and are brave enough to roll your own, go ahead. If you’re a bit more lazy you can host Jekyll statically on github.io.

Your blog can be focused on a personal aspect of your life such as your travelling adventures or a place to discuss your favourite topics in astrophysics. The Internet is all about freedom (maybe not some countries) and this your chance to let yourself out!

If you’d like me to talk about a certain subject or my opinion on a topic, feel free to leave a comment below.

How to Drift a Bus

This is another satire...

I traveled to Japan last year and got a chance to meet the Drift King himself. I was doing a track day and drifting culture is hot in Tokyo. I got a chance to speak to Mr. Tsuchiya and he told me a funny story about drifting something you wouldn't expect:

Hi, my name is Keiichi Tsuchiya, and I am the Drift King. I call this maneuver the "Omenibussu Duriftu" and it cost me my job and sent me into abject poverty.

I started doing this on rainy days tired from my 8 hour shift of hauling passengers around, I needed to relax and have a bit of fun. I would move the bus side to side and then turn hard and the bus would drift. Passengers screamed and complained as I counter-steered the slide. The complaints lead to me being fired ending my career as a bus driver.

If you want to try this yourself and risk your losing your wage, just do the following mods and follow these instructions.

Make sure you inflate the rear tires of the bus as much as you can and deflate the front ones. This will make the bus prone to oversteer. I convinced the maintenance workers to install nitrous on the bus telling them that the bosses ordered us to test out this new ethanol reduction system. I even convinced them to weld the rear differential as it would help getting out of sticky situations in snow.

I recommend you do this with 40 footer bus as an accordion bus may lead to fish-tailing. Use a track with plenty of run of area to prevent accidents or the rapid-transit road if you're brave enough. You'll need a rear-engined, rear-wheel drive bus for this technique (a bit like the Porsche 911).

First, accelerate to 60 kph, and then swing the bus left and right until you reach the corner. While you swing, keep accelerating until 100 kph. Then once it reaches the turn, accelerate hard and let the bus slide without adding steering input. Half-way through the slide, counter steer and reduce throttle. It will work every time, at least for someone skilled like me.

The simulation was possible thanks to BeamNG.drive