I was never any good at thinking outside the box, but that didn’t bother me because there is so much stuff inside the box that I find interesting and that plenty of other people can’t be bothered with. That said, I think it’s time I changed the shape of the box.
I wasn’t always a moaner. I wasn’t always cynical and angry.
I loved to read. I loved to play football. I loved being the best at English and maths and reading and spelling and I loved being top of the class.
I didn’t know anything about arrogance. I didn’t know anything about hatred or revenge or “us” and “them”. I didn’t know about hurtful smackdowns, then of course, nobody knew the word “smackdown” in the early 1970s. Or at least I didn’t. I didn’t know anything about fear, or terror or being beaten up for being brown. I didn’t know anything about foul language and using it to hurt others as to my shame, I did.
I learned all these things. I learned all these things because I was taught them. I used them myself as a defence mechanism and sometimes, as a survival mechanism. My life did not improve. I did not find any joy. I found others like me, but I also found others who saw potential in me way beyond, no, above my station. After decades, I listened to those better, calmer voices that wanted to lift me above the filth of sordid battle where nobody knows who the pigs are anymore because we’re all covered in shit.
So I got better. I stopped moaning (as much). I looked for the good in myself and in others. I gave. I gave. I gave. I forgave. I grew.
There is already too much division. There is already too much polarisation. There is way too much hatred and misunderstanding and knee-jerk self-righteous indignation.
There is already too much finger-pointing and justification and calls for retribution, but like scratching an itch, it feels better for an instant; and then you scratch and scratch and scratch and suddenly it’s not about the itch anymore, but your bleeding, scabby skin that’s infected and threatening to take your arm or leg to the morgue to be buried with all the other victims of hate, all of whom, under the skin of whatever colour, bled the same red.
The only responses worthy of our consideration are those responses human beings of all races, of all backgrounds, of all religions — and none — have already spilled their blood for. This is not a time for hypocrisy, this is a time for our highest values. For justice. For peace. For inclusion. For balance. For harmony. For understanding. For fairness. For gentleness. For kindness. For healing. For love.
And not just this time, but every time. No matter what. Always return. Always seek out the light. It is always there. If we see only darkness, then let’s open our eyes because my God! There is so much more than darkness.
I jog past a colleague outside the office, pausing for a moment only to apologise for not being able to stop to chat, because I have a train to catch. I always played things by ear and even as recently as autumn, I would have stopped. There was always another bus.
I stand patiently in line at Oxford Circus to buy a ticket to the suburbs, just outside London. I don’t have a pass because my last weekly one expired as I continue to optimise my commuting expenditure. I note that I’m trading a non-renewable resource, my time, to save a bit of renewable resource, my cash.
Skipping down the escalator I keep repeating my mantra, “stay patient”. Arriving at the crowded platform, I read my book for a minute and when the tube arrives, I continue for another few minutes, standing, of course, being jostled, forcing myself to smile because the alternative would just be miserable.
At the inter city rail station, I scan the departure board for the train times. I missed my preferred train by one minute. I don’t curse as I used to. Jogging to the holding area, well, not quite jogging, more a fast shuffle, like the undead on uppers, I find the optimum position for scanning the TV monitor for the platform announcement. Like sprinters, poised, we hope to catch the ‘b’ of the bang as the frame with the platform number appears. It appears. I’m on the move.
Speed-shuffling to the train, I suppress the joy of the small victory of a double seat that will remain singly occupied for the duration of my journey.
I read my book. It was a gift from a man who I respect, admire and like an awful lot.
As I meditate on my status as a commuter, taking small pleasure in trivial trip optimisations and feeling the merest twinge of grief at the most minor inconveniences, I feel also a prick of cognitive dissonance when I look at the title of the book, which is “Punk Rock – An Oral History”
I was once that teenager into punk, who swore he’d never become a commuter.
I just closed a tab in Safari on my MacBook and just out of idle curiosity tried ⌘-Z (the default Mac keystroke for “undo”). To my complete surprise and delight, Safari reopened the tab I just closed. Even better, history is preserved when you undo.
I’ve just started mucking around with Unity too, and there are a couple of keyboard shortcuts you should be aware of in the Mac version that I find time-saving. The first is ⌘-P to play the current scene. The other is ⌘-Backspace to delete an object.
Finally, if the cursor keys are a bit of a reach for you, then I discovered this useful list of emacs-based keyboard shortcuts that can be used in any Mac OS X text field. I find Ctrl-A and Ctrl-E particularly useful.
When I connect an Ethernet cable to my MacBook, WiFi is automatically disabled. When I disconnect the Ethernet cable, WiFi is enabled again. This not standard behaviour. It seems like magic. so how did I do it?
Brett Terpstra recently posted a tip on how to turn a Mac’s WiFi on and off from the shell. I remembered that Keyboard Maestro recently added functionality to allow the triggering of a script when a volume was mounted or unmounted.
Well, what does a volume mount have to do with an ethernet cable connection? I only “dock” my MacBook to a USB extender, power and Ethernet. Whenever I plug in the USB extender, my media and backup drives become available. Sometimes I might disconnect my backup drive, but whenever I’m “docked”, my media drive entitled amazingly enough, “Media” is always connected.
So I set up a Volume mounted trigger on “Media” and this executed the following shell script, taken straight from Terpstra’s article:
networksetup -setairportpower en0 off
And I set up a corresponding shell script trigger for when “Media” is unmounted as follows:
networksetup -setairportpower en0 on
Voilà! I no longer have to manually turn WiFi off to take advantage of lightning fast Ethernet speeds when I’m plugged into my BT Infinity 2 router over the Gigabit Ethernet, and I no longer have to remember to enable WiFi when I unplug.
Finally then, here is the PC build of Reach for the Sky, my toy, soon to be I think, the world’s first Rocket RPG. Yes, that’s grandiose. Yes, that’s tongue in cheek. Oh and there is a Mac version too. Of course. And the Mac version has that lovely rocket sound.
Get the PC build here.
Get the Mac build here.
Remember, it’s just a toy, so muck around with it. I’ll be building a game on top of it.
You can fiddle with the JSON files in the assets folder and see what happens. The good news is that you can fiddle with them without restarting the game. After you’ve fiddled, just hit the Backspace (delete on Mac) key and all the changes will be reloaded.
You can change the sky gradients, the engine power, the atmospheric density at ground and at the top of the sky, the drag on the ship, and lots more. Please give me comments here, or on Twitter @shahidkamal with the hashtag #RFTS
Thanks to everyone for your help so far!
I’ve done a weekend of work on this, but almost none of it is visible.
Internally, this is not just a toy now. I can play with the environment, background, rocket attributes, physics, engines and so on very easily. Instead of a single big file, I have classes for Ship, Engine, World, View, Particle, Emitter, RocketEmitter and so on.
This is the latest Mac build, watch out, this rocket is a lot more powerful. The gradient sky came about as a result of a nice tip from Paul Pridham (@madgarden on Twitter) – thanks Paul! I will experiment with this in later builds. The gradients are important because the object of the game will be to ensure that you reach the “sky” (the dark bit) and of course, the sky will become a narrower band as the levels progress.
Next week, there will be levels and more than one rocket to control. Eventually, you’ll be able to level up your rockets with multiple staged engines, but it will become like playing the keyboard, so later levels won’t be easy. You might need a friend when it gets up to 8 rockets on the screen with each of them having different attributes!
Sorry I haven’t got a PC build ready. I’ve not had time to build the Cinder environment for my PC laptop yet.