Beyond the Grunts and Clicks: An Exploration into Doing Things the Hard Way

I recently had the opportunity to listen to another amazing podcast from 99% Invisible, a program about “design, architecture and the 99% invisible activity that shapes our world.” It got me thinking about how my world is shaped by the way I engage with computers. The podcast is a story about a computer scientist named Doug Engelbart who was, in essence, a crazy brilliant genius. He thought of ways to change how we interacted with computers and, most famously, was the inventor of the computer mouse. He also invented a specialized companion device to the mouse that worked like the one-hand equivalent of a keyboard.

His mouse caught on when his idea was taken over by Steve Jobs and Jobs removed two of the three buttons on Engelbart’s prototype, making the one button mouse Mac users are familiar with to this day. The keyset device never caught on, but the idea of it is still among the more hackery of computer users. Essentially, Engelbart thought computers could be built in a way that would, as Engelbart’s daughter, Christina Engelbart explained “allow us to work with computers more fluently and efficiently,” and beyond what he called “grunt inputs.” On the other side of the tracks, Steve Jobs held the contrasting philosophy that computers should be easy to use for the lowest common denominator or the most simplistic level of engagement. To Job’s credit, his approach of ultimate simplicity has created accessible user interfaces for millions of people who would have otherwise shied away from the wonders of personal computers. However, Job’s philosophy largely falls short of opening up innovative strategies for users to engage with the art of computing.

For me, nose-diving into the world of computer science and more specifically web development was far from a graceful, easy experience. Many, many, mistakes were made and the uphill battle to proficiency has been a long and hard winding road. I could have picked other paths that were much more accessible, but programming intrigues me; it makes me feel good, and I get a lot of fulfillment around the projects I can complete with this ever-growing experiential knowledge. From a million false starts in every programming language under the sun, I finally found comfortability with Ruby in its ease of use and the extensive community of people basically saying “if that doesn’t work, here, try this out.” It was this close-knit collaborative milieu that drew me in and continues to keep me deeply engaged. I bring up this Podcast, and Engelbart specifically, because I am inspired by the idea that computers can change the way we process the world, and more so, computers can assist in alleviating oppressive societal systems, if we know how to use them right. The Steve Jobs cheerleaders of the world seek to keep the public content and entertained; yes, you’ll be able to text all your most complicated feelings with emojis, sure, you can watch netflix from bed and flirt with your sweetie halfway across the world, but does this make us more effective people? Does this make us more ingenuitive? Does this make us smarter?

Engelbart had an intriguing idea: let computers have a learning curve steep enough to give people a new way to work so they are faster and more efficient in the end. But how many people will be left behind from such a steep learning-curve? Things should be hard, but in the right ways. Input devices should be easy, drawing apps should be easy, programming languages should be easy. The basic elements should be simple to pick up and run with, but its the ideas that should be difficult. We should solve harder problems. We should attack the structures around us that try to trade ease of use for giving up our agency to create our own paradigms and ways of engaging with the world. Even more, we should be teaching our friends how to program, how to encrypt their hard drives, how to use Tor, and how to rise above in a world that would rather have us grunt and click our lives into oblivion.

In many respects, the cybernetic techno-dystopia is already asserting itself into the future we never wanted. So where does that put us? By and large, we are at a crossroad between those who know and those who don’t. And once we get better at teaching ourselves how to navigate through the rigid, deceptively simple structures that permeate our lives, we can in turn become the ones who do, the ones who imagine, and the ones who create meaningful, complicated, and beautiful worlds into existence.

A Repost of greggawatt’s guest post on the Whisper Systems blog


Leave a comment

Filed under Code

Stories i read ..

An elderly man was sitting alone on a dark path. He wasn’t sure of which direction to go, and he’d forgotten both where he was traveling to…and who he was. He remembered absolutely nothing. He suddenly looked up to see an elderly woman before him.

She grinned toothlessly and with a cackle, spoke: “Now your third wish. What will it be?”

“Third wish?” The man was baffled. “How can it be a third wish if I haven’t had a first and second wish?”

“You’ve had two wishes already,” the hag said, “but your second wish was for you to forget everything you know.” She cackled at the poor man. “So it is that you have one wish left.”

“All right,” he said hesitantly, “I don’t believe this, but there’s no harm in trying. I wish to know who I truly am.”

“Funny,” said the old woman as she granted his wish and disappeared forever. “That was your first wish…”

Gathered from the nether regions of the internet….

Leave a comment

Filed under Uncategorized

Reset the Counter

“Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.”

― Rob Siltanen

Leave a comment

Filed under Life

The Great Divide

This is an exciting time for technology, but then again that statement is true for every period of humanity since we found fire. We have a thing for moving forward, that said since the 1900’s some really awesome things have been happening. Almost all of it fueled by war or the rumour of war but it legitimately is an awesome time to be a techy.

It’s even considered sexy now.

In the midst of all this sexy is a sad reality. This progress is not enjoyed the same across the globe. The nature of the technological landscape is such that devices, applications and content created in the developed world, trickle their way downward to the rest of us, lesser mortals. Sure this is down to structural limitations that exist in our countries that stop us from being up to speed but beyond that, those creating the awesome stuff, have a specific customer demographic in mind. Hint, hint, it’s not us.

This trend is clear in just about every major sector of technology, like phones for instance. Majority of the applications created seek to deliver content or services over a data connection, this makes sense because if you look at the United States, data is cheap and fast(3G is just about standard now for telecom companies). So much so that applications have come up that deliver over a data connection, services which were formerly the bread and butter of Telecom companies such as voice and instant messaging. Applications like Viber and Whatsapp allow for text messaging and calling as long as you have a solid internet connection, with both services delivered at a cheaper rate than normal voice calls or SMS.

Other popular applications like Instagram, snapchat and facebook are designed with a specific way of life in mind making them insignificant to consumers from other parts of the world.

Trends in computing and the development of personal computers as well goes to show an industry that assumes it’s consumers only come from the North America, Europe and Asia. The latest laptops feature touch enabled screens and Microsoft’s latest operating system is designed with a vision that seems to believe the future is touch and applications will be delivered over the internet. This might be true but the nature of these advances clearly doesn’t take into account other environments where maintaining a touch screen device might or be a pain or the costs of running an operating system entirely reliant on the internet for operation.

In industry as well, while analysts wax lyrical about a fully computerised production system, these systems are modeled on the assumption that a fully computerised support ecosystem exists, one that includes customers and suppliers.

The assumption of the existence of this ecosystem, a world where everything and everyone is online, has also led to a trend where almost all average everyday activities from shopping to public transport, are getting more and more reliant on computer systems.

Currently online payment systems based on credit cards are necessary for just about any transaction online. Even with the implementation of VISA enabled debit cards by majority of Uganda’s banks, most of them cannot be used for online transactions, and those that can carry a hefty charge.

Are we to bury our heads in the sand then? And weep while the rest of the world proceeds at break neck speeds technologically?. Far from it.

Firstly, these companies are not wrong to focus on consumers in the developed world because they account for the bulk of their profits, it’s true, we’re not a big deal when it comes to technology. And while majority of these applications and devices were not developed with the African consumer in mind, this has not stopped us from taking them and making them our own.

Facebook is now thinking of going mobile, we knew facebook needed to go mobile years ago, sure it was because we had no laptops but we called dibs on the idea. Sticking with facebook, while the developed world was posting pictures of kittens, north africa unfriended their old governments through facebook.

Google recently rolled out offline mode as a default feature for all applications hosted on the Google Apps Engine. Offline mode allows you to continue using your application like normal when your internet connection goes down(it goes without saying, this does not include communication apps). They were probably inundated by complaints from users with spotty internet connections, most of those users were probably from the third world.

Google Africa is also continuing work on technology that will allow sms integration into GMail.

And while online payments using VISA enabled cards is far from a convenient reality in sub-saharan Africa, online payments using mobile money is already happening. Through mobile money, sub-saharan africa has the chance to create a viable alternative to the credit card system which has been a hindrance to online trade for a long time in the region.

Technology, applications and hardware are created to meet a specific need, consumer technology more so. The African story is one of adaptation and innovation. We are hacking together solutions with the parts from technologies that do not suit our situation, and sometimes creating new solutions altogether. With users and developers who, often with little resources have found new uses for technology they should ideally have no use for.

Much of the technology(and business) world is now paying attention to Africa and the emerging markets because this is in a sense the final frontier, the last possible source of real growth as a large affluent middle class emerges. But what they are finding is not a virgin market in it’s true sense, instead it is a continent writing a new set of rules. Tired of waiting and watching, we have evolved.

On the surface, Africa is playing catch up, but if you take a deeper look, this is a continent actively and aggressively creating it’s own identity on the global technology scene. TIA

Leave a comment

Filed under Life

Installing cx_Oracle on Debian 7.1.0

Written while working on a 64bit Debian 7.1.0 Installation with 64bit Python for an Oracle 11g database 


This is by far one of the most annoying things i have had to do in the past few months, but like all programming related problems, once you crack it, it doesn’t seem so hard anymore. Though i do wish Oracle tried just a bit to make the process easier for developers.

Anyhow here’s my Step by Step on installing cx_Oracle


  • Install Python if not installed taking note of whether it is 32bit or 64bit.

NOTE: To find out if your Python installation is 32bit or 64bit, in the shell, enter the command python -c ‘import struct; print(8 * struct.calcsize(“P”))

  • Install package python-dev
  • Install package unzip
  • Install package libaio1
  • Download the Python driver for cx_Oracle from here taking care to select the appropriate package matching your system installation of Python(32bit or 63bit) and version of your Oracle database(11g).
  • Download  zip of Instant Client PackageBasic and Instant Client Package – SDK from here. Be sure to select the version that matches your system installation of Python and your Oracle Database version e.g Python 32bit and Oracle 11g.

Stepsdownload (1) 

  • Move and extract the zips Instant Client Package – Basic and Instant Client Package – SDK in the location /usr/local/bin
  • Enter the following commands directly into your linux shell
    • export ORACLE_HOME=/usr/local/bin/instantclient_11_2 
    • export LD_LIBRARY_PATH=/usr/local/bin/instantclient_11_2 
  • Inside the directory /usr/local/bin/instantclient_11_2 create symbolic links to the library files by typing:
    • ln -s
    • ln -s 
    • ln -s 
    • ln -s 
  • Go to directory cx_Oracle was downloaded into and extract it.
  • Enter the cx_Oracle directory and directly in the linux shell run the commands
    • python build
    • python install 
  • In linux shell type python -c ‘import cx_Oracle 
  • If no error message is seen the Install is successful
  • Jubilation \o/ download

Happy Hunting.


Leave a comment

Filed under Code

PhoneGap Error Handlebars Template is not rendered

Been spending the last couple of days exploring the wonderfull world of HTML5 which inevitably led to HTML5 mobile applications.

What’s cool about them is that they provide multiplatform support. Yup, one app to rule them all.

Any how a few days in following this tutorial i get the error

Handlears Template is not defined in main.js

Spent a couple of other frustrating days trying all sorts solutions until i found this on the StackOverflow

Basically all i needed to do was move the Handlears js script tag above the main js script tg in my index.html file.
So simple after months of frustrating back and forth. That’s just how it goes i guess

Leave a comment

Filed under Code

Django OperationalError: no such table

For the past few weeks i have been working with RapidSMS on an application and dealing with a particularly frustrating error in early set up
django.db.utils.OperationalError: no such table: django_digest_partialdigest
Searched and read the documentation till i found it all came down to how the apps were ordered in the INSTALLED_APPS setting of the file. Tables for those apps are generated in the order they are listed so if you list App2 above App1 when App2 tables require the existance of App1 tables, you will encounter the error above.
All i did was move django_digest up the list in the INSTALLED_APPS setting in the file and the problem was fixed.

1 Comment

Filed under Code