Vous êtes sur la page 1sur 7

May 6 – May 15, 2016

Part 1: Some notes on the Automated Data System(ADS)


Some people may find this information useful.

1. Over the past couple of days, I have been working on setting up a Continuous Integration (CI)
environment. I went on to create an Amazon Elastic Compute Cloud (EC2) Linux instance,
installed the Hudson/Jenkins and configured the server, an automated system that will poll the
SCM and relay notifications to my address on regular intervals. But here are two problems I
encountered with email notifications sent from Hudson server:
i. The emails end up in my junk (spam) folder. I could work on my email settings,
filtering the messages from the Hudson so that they come to my inbox. (In fact, I
did this.) But since I am interested in sending this update not only to myself, the
problem becomes an important one in that most recipients will not look into
their spam folders, nor will they carry out the settings as described.
ii. More so, the Hudson server only sends messages to registered Hudson account
holders- but I do not want to add the intended recipients as account holders.

2. Now, I had to write a google script to automatically forward the updated messages generated
and sent to my email inbox from the Hudson server. The script is here. A little bit about what the
code does:
i. The script sends the reminder emails about our knowledge repository
[MEMORABILIA] to members once in a week.
ii. However, since Google [Script] imposes some limits on the number of recipients per
message, among others, I have to do some tricks. One of the tricks is to partition the
email addresses in the email list into batches, and send the same message to each
batch at a time. And there is also a limit imposed on the number of messages sent
per second (and per day), so parallelization from the same account is not possible.
That means the batches of recipients will receive their emails in successions, with
some delay of say 30 seconds.
iii. For each email recipient batch, and for every message sent, the positions of the
individual email addresses in the list are randomly changed. This means no email
dominates any position, - first, middle or last- which is a desired feature for this kind
of forum!

You may think of the script as text-processor. In fact, some snippets of the code above were adapted
from the code we used earlier natural language processing.

That operation of that


Part 2: How do I know what technology to use under a given circumstance- e.g. why should I
use shell script instead C++, or Java, etc? Or when it comes to operating systems, should I use
Unix, or Windows…?

The simple answer is that it depends on several factors, e.g. the task at hand, whether or not the
technology (e.g. programming language) is supported by the (core) platforms- and in some cases,
continued (projected) support in the future, efficiency offered by the technology (e.g. speed of
execution as dictated by the nature of task, memory usage especially in embedded systems). In fact, the
reason for writing an automated integration test system that incorporates memory check (memcheck) –
see the shell script- was because memory usage, as a requirement, could not be compromised.

This is an issue that became of concern to me way back in early 2000’s when I was freshman in
Computer Science. Indeed, I remember quite well that when I was at Makerere University- and that was
in 2002/3, we had one of those rare moments when we had a colloquium, the first if its kind held in the
then newly constructed Computer Science Building where some of the local tech gurus in the industry
were invited to give mentorship talks to students. One of the common questions students asked, “what
programming language, operating system do I use ….? How do I choose from the many technologies,
some of which continue to evolve?” At that time, to the students, there was no better mentor who
could respond to this than one Bagyenda, who was said to have good industry and academic experience.
He [had] received his BS from Princeton and M.Phil. Cambridge, and he had a small software technology
company in town- called Digital Solutions. [He was also teaching BSc flat course C programming].
Indeed, his response was not any different from what I just above. Another guest speaker- who worked
with the then Uganda Electricity Board (UEB) – coming from Electrical Engineering background counsel
students not to have very high expectations on job placement upon graduations. “You often have to
start from the bottom. Like in my case, my first assignment at UEB was to dig a hole for an electric pole-
but over the years, I have been promoted to managerial position”.

Of course, one of the homework assignments I received recently as part of job (here in USA) was to do
with choosing technologies such as programming languages. [I can’t seem to find copy of the report- but
it is about the same thing above]. The choice of a technology to use in some cases, however, should not
be dictated by the learning curve of the technology!

And it is to be noted that “how to use” some of these technologies are not taught in formal Computer
Science classrooms. One has to learn them on one’s own! That’s why I get to share how I first learned
Linux on my own in early 2000’s.

I could claim that I created jobs!

In fact, it wasn’t Francis Otto alone whom I inspired to learn and use Linux. When I started using my
personal server, I had my classmates who soon picked interest but I had made considerable progress
already so none of them bothered so much to ask to sit and use my server, but they would occasionally
stop by – at the lab and find me busy – coding Java, HTML or shell scripts.
One of my undergrad classmates and close buddies then – also [pleasantly] surprised me the next
semester when, out of the blue, he told me he was offered a job at a new startup company called Linux
Solutions- across town – in Bugolobi! “Man, those guys are bad! They can compile kernels, etc! They are
giving me hard time!”, my classmate [Steven Kisira] would tell me.

Certifications vs. Computer Science

“You can collect 10 certifications/certificates in computer technology but while such programs are very
useful, it does not equate to a degree program”, undergraduate teacher for data structures and
algorithms- Fred Okwangale once said.

A couple of months earlier (still in 2002), I ran into one of my former classmates at Secondary School
(one Patel) at Makerere University Campus. She was a student at a Kampala-based Aptech- a company
that offers most of these certification courses (Microsoft, Oracle, Sun Java, …, but the module “Oracle”
was being taught at Makerere University Department for Women and Gender Studies. Patel- otherwise
a very modest lady challenged me, “ Why should you do Computer Science when you can learn these
things (Oracle, CISCO, Microsoft) in less than 2 years?”

It is one of such moments where even if you know a perfect answer- you would rather be modest – and
try to downplay the thinking behind your choice.

My undergraduate capstone

So during our final year (2004/2005) at Makerere University, we were expected to write proposals for
final year project. Josephine Nabukenya taught me the course “Systems Methodology” and she was the
Research Coordinator for both undergraduate and graduate programs. But I was assigned Florence
Tushabe – as the project advisor (or supervisor- as we called it). When Florence – who, two years earlier
had taught me the course “Solution methods in optimization” – came to class after reading through my
proposal, she said – before all the students in class, “Wow, Caesar- I enjoyed reading through your
proposal! I took first read it when I was in a salon! It is very good!” Of course, she must have enjoyed it
for I had written the proposal based on the “Optimization” course that she had taught me in my first
year, save for that I was proposing to implement “The shortest path algorithm” – and I claimed I was
taking Makerere University as a case study- so that students would know which “shortest routes” to
walk – as they move around the hilly campus! Florence gave me a go head!

But a couple of days later- I received a report that the topic I was proposing to address was already
being undertaken by another student – a math student (or “flat course” student). I was told to write
and submit another proposal. That surprised me, for I had sat for two days (in the large Botany Lab of
the Faculty of Science building- carefully crafting the proposal in from original imagination). I did not
quarrel. In fact, I do not remember which of the teachers told me to submit another proposal. Instead,
went back to the drawing board- and I modified the same proposal, thing time adding the “minimum
spanning tree” to the “shortest path algorithm” – a combination that became not only fuzzy but
significantly increased the difficulty of the problem as I had to create artificial datasets on my own!

Now, it was not Florence who provided me feedback. Josephine came in the classroom with feedback to
all the students’ proposals. We were only 29 students in class for the pioneering group of Computer
Science. [We were separate from the BSc Math- Flat Course, but some of the Math students, as I
indicated above would end up majoring in CS in their final year]. Josephine was known to be strict- and
non-compromising on standards that she had put in place, but she was overall a nice person – to me!
But when she came in, she was very tough. She asked me to give a verbal presentation of my revised
proposal, which I did.

After my 15-minute class presentation, she asked me if I had included a citation for the part which
verbally reiterated during the oral presentation: “… humans tend to think of objects as having
attributes… Philosopher Descartes takes credit for this…” . That section in my written proposal was
meant to justify my choice for object-oriented analysis- a part of the methodology- but I had not
included the name Descartes in the written proposal. I told her I had not included the citation (the name
Descartes). She advised me reference the source in my next revision of the proposal.

Now she turned to the rest of the students, and tasked them to ask questions if any. No one did. And for
some reason, she asked the rest of the entire class (except me) to tear their proposals to piece there and
then. That was really uncomfortable moment- not only for the rest of the class but also for me! I could
not make sense out of her reaction!

Florence was [still] assigned to supervise my work, but as I started the implementation stage (coding),
Florence was getting too busy with her PhD- on a “sandwiching” program – between Uganda and the
Netherlands. So Abowe Spear became my advisor at this stage. Abowe- coming from a Mechanical
Engineering background, had taught me an optional course “Computer Aided Design” a semester earlier.
One interesting thing that comes into my memory is that when I was making laboratory presentation for
“progress of implementation”- surrounded by Abowe and a group of six or so other classmates in Lab A
(or B) of the new building, I ran a live demo of the computer program and I went on to explain the
output that was visible on the Linux xterm . [My favorite Linux xterm color was the default light yellow].

The pertinent output was the adjacency matrix, but at that stage, I had opted to display only the upper
triangular part- that excluded the diagonal elements! Anyway, as I continued describing what was being
displayed on the computer screen, I went to explain that “These diagonal elements are still empty at this
stage because I have not yet put in the code to display them… but their values will be zeros since the
distance between a point and itself is zero…”

“You man, you are answering all these questions even before I ask you…”- as the rest of students
listening burst into laughter.

But here is one thing, … when I watched this video clip (of the Ugandan Quartet talk show in early Nov
2015), the first thing that came into my mind was Abowe. He was full of humor most of the time.

But here is another thing:

The triangle…. With ? – then nerbonne, then sax…


And Alex’s GPS
Patel on Oracle/Computer Science - Aptech 2002

Linux Solutions

On how to improve education

Vous aimerez peut-être aussi