Kenya, Day 4, Droidcon.ke Day 1

(More Kenya notes)

Wednesday November 16, 2022

Today was the first day of Droidcon, which was, of course, my actual excuse for coming to Kenya in the first place.

Uber picked me up at 7:30ish – my talk was to start at 9 – and it started raining on the way to the venue. Kenya has been in drought all year, and it’s been getting worse over the last few years, so rain is very welcome. But it rained HARD.

When I got to the venue – United States International University, on Thika road, the rain had abated a little. Frank called and said to just stay in the car and someone would come get me.

I should mention that everywhere in Nairobi has LOTS of security. High walls, high gates, and at least one askari (watchman) guarding the entrance, checking ID, looking under the car with mirrors. This is everywhere. And the driver didn’t want to go through the hassle of going through the gate, just to go back out again.

So, after a few minutes, Marvin came to get me and walk me to the auditorium, which was about a quarter mile walk into campus. But on the way there, it started raining in earnest. Zero visibility, and instant drenched to the skin raining. We took shelter in a student cafe, and got some chai to sit and wait.

African tea, which we always called chai growing up, is tea brewed with as much milk as sugar. It’s amazing, and fresh Kenya tea, in Kenya, is even better. I may have overdosed a little on the chai while I was there.

Marvin called for umbrellas, which never materialized, but eventually the rain slowed enough that we decided to make a run for it, and arrived at the auditorium soaked.

9 came and went, and there were very few attendees there yet. Around 10 the rain stopped, and people started trickling in, and at 11 Frank decided that it was sufficiently populated to start.

I gave my talk – an overview of how the Apache Software Foundation governs projects, and how you can run your project the Apache way as well, even if you don’t see the need for a foundation. It was, I think, well received, and I continued getting comments about it, and deeper conversations, all week long, so overall I’m pleased, even though the attendance was pretty paltry.

I attended sessions most of the day, and will write about each of those individually. See this post for the listing of those, once I get them written.

At the end of the day, Frank wanted to take me to dinner, and asked where I wanted to go. I said, I want to go where you would go if you were picking. This turned out to be very wise.

I caught a ride with one of the other speakers, and went to a little restaurant in the CBD (Central Business District) where they served food from Frank’s part of the country – Nakuru area. Grilled fish. Greens, Ugali. So, so, so good.

I got back to the hotel at 10ish, and once again crashed hard. Overall, an amazing day, and very satisfying. The content at the event was fantastic. The conversations with brilliant young African developers were even more fantastic.

I am so glad I came.

Kenya, Day 3

Tuesday, November 15, 2022

(More Kenya notes)

This morning I walked over to the “Maasai Mall”, which is a collection of little stores, all selling mostly the same stuff, for tourists. I presume the tour companies bring their foreigners here to buy stuff.

It’s set up as a dozen independent stores, but they are clearly all working together, and the rivalry between them is part of the show. But when it comes time to pay, they all defer to the boss man, who collects the money.

I got a couple of kikois, ad several shukas, and a few other things. They asked for 25,000ksh and I ended up paying 13,000, which I’m sure was still twice what a local would pay. But it’s all part of the experience, right? (The shilling is currently about 120 to the dollar.)

The history of the shuka is interesting, by the way. Worth doing a little reading about. These brightly colored woven cloths didn’t start to become part of Maasai dress until they were introduced as part of european trade, but have become inextricably connected with the Maasai now. Also, they’re great as a blanket, a table cloth, a dress, a skirt, whatever you need at the moment.

At lunch time, my highschool friend Sandeep picked me up for lunch, with her driver. I had a chance to talk with him – David – a little about the fascinating art of driving in Nairobi. More on that later.

We went to the Muthaiga club, which I always dreamed of going to, as a kid. It’s the pinnacle of ex-pat (specifically English) high society social gathering places in Kenya.

If you’ve seen Out Of Africa, and remember, there’s a moment where Karen Blixen is invited, finally, to have a whisky with The Men in the private bar. That bar is still there, and is still men-only, except one day a year when the women are allowed in. Yes. Still. In 2022. The English overseas are always far more English than the English.

I had the fried tilapia, and OH MY WORD it was good. I used to love tilapia. It is, by far, the best fish in the world. And then I moved to the US, where tilapia is sad tasteless frozen briquettes of sadness. But in Kenya, when it’s fresh out of the lake, and not from a farm thousands of miles away, it’s absolutely amazing.

I had a great time catching up with Sandeep, and seeing where life has taken her.  34 years is, indeed, a lifetime.

On the way back to the Jacaranda, Sandeep dropped me off at the Village Market, which is a delightful little mall, where I bought some more overpriced gifts for family and friends. And yet, it was still far less than I would have paid for the same items imported to the US, so I’ll fool myself and say I got a deal.

In the afternoon I worked out on the courtyard for a few hours. Annoyingly, people don’t stop sending me email when I’m traveling.

Kenya trip, November 2022

I’ve written about my trip to Kenya in a bunch of individual blog post:

Daily travel log

Droidcon Sessions

Other notes

Kenya, Day 2

(More Kenya notes)

After two nights sleeping sitting up on planes, I slept like a rock, and woke up late. I had breakfast in the hotel restaurant. The chai, which apparently people now call African tea, rather than chai, was just amazing.

After breakfast I walked to the city market – just over 2 miles. I have been told, since, that this was probably not the smartest thing I ever did, due to the recent surge in crime, but I felt very safe. Nobody appeared at all sinister or threatening. Really the only even uncomfortable thing was all of the young kids begging, which is always so heartbreaking, no matter what country I encounter it in.

The new expressway (more on that in a later post) is very disruptive, and appears to have erased a lot of pedestrian paths, leaving wide swaths of mud and broken sidewalks, which was annoying. And the sidewalks that exist would suddenly disappear in a mud pit, or even a deep hole.

Downtown looks somewhat familiar, but a lot is new. The CBD – Central Business District – is fairly crowded, and there are kiosks everywhere selling everything.

I went to the city market, and it was much as I remembered it, although there were no tourists there at all, as far as I could tell. In fact, the entire time I was downtown, the only other foreigners (ie, white people) I saw were *inside* the Stanley Hotel.

I got a couple of kikois, and some bracelets, and I’m confident I paid about 3 times what I should have, even after bargaining a little. And I walked around the inside of the market for a bit.  I suspect that some of the tour companies bring tourists there to do their shopping, since almost everything was souvenirs, in that part of the market. The old food market was of course still there, smelling as strongly of fresh fish as ever.

I walked around downtown a bit more, seeing a few familiar places, and more unfamiliar ones. And I finally made it over to the Sarova Stanley (formerly the New Stanley, formerly the Stanley) and the Thorn Tree Cafe.

When I was a kid I used to go to the Thorn Tree in Saturday mornings for samosas and chai, which then cost about 5 shillings. It was much the same as I remembered it, although the tree died in 1998, and was replaced, and has been replaced again since then, so it’s still pretty small compared to the monster tree that was there when I was a kid.

The last week I was in Kenya, I went to the Thorn Tree, and ordered my usual, and thought about how it was the last time I would ever get to do that. So it was delightful to have chai and samosas again at the thorn tree, although so much has changed since then.

Another familiar site was the Trattoria, looking exactly as I remembered it. (That’s also one of only two Jeeps, in that photo, I have seen the entire time I’ve been here.)

I took a cab back to the hotel, since by that point I had walked about 6 or 7 miles, and was carrying all that stuff.

After resting a bit, I decided to go out to Karen, and visit some of the places I knew as a kid. There, too, I encountered everything completely different. I went to NEGST (now renamed to Africa International University) and saw my old house. That was much the same, although nobody was home. And the rest of campus was very different – all of the original buildings are still there, although they’re very run down. And there are many new buildings, several named after people I knew.

Next, I visited Nairobi Academy, although it was about 4:30 by the time I got there, and most of the staff had already left. Not that there would have been anyone left who knew me. I signed the visitors book and walked around a little. It was largely as I remembered it, although there are a few new buildings.

One more note, the guy that took me out to Karen, drove me for more than 3 hours, and waited for me 15 or 20 minutes at each place we went. For all of this, he charged me 4000 ksh, which comes to right around $32. It cost me twice that to go from DTW to my hotel in Detroit, which was maybe 15 miles. Meanwhile gas costs right around $6/gal. I’m not sure how he makes ends meet. He also provided some sightseeing pointers, and marveled at this being the first trip back in 34 years.

Nostalgia isn’t what it used to be, as the old saying goes. (If it’s not an old saying, it should be.) I don’t know what I expected, but it was somewhat disappointing, nevertheless. But I’m glad I got to see them.

Kenya, Day 1

(More Kenya notes)

I arrived at the airport around 5:30 am. First time in Kenya since 1988 – 34 years – but the airport was pretty much the way that I remembered it. I’m sure it’s larger.

Customs and immigration were painless, and my suitcase was out before I got to baggage claim. No complaints there.

After a little hassle trying to get some cash, I got a cab to the Jacaranda Hotel in Westlands.

Along the way I was just staggered by how everything has changed. Everything. The roads to the airport is very nice (which probably needs its own blog post!) and there are so many new buildings.

Granted, it has been 34 years. The driver was amazed that I had been gone so long. He was 5 when I left!

I didn’t take enough pictures – Maria says I never do – but here’s a picture of the Oracle building close to my hotel.

The hotel is beautiful. I am sure I have been here before, possibly to use the pool? Not certain. It’s showing its age, but it’s still an oasis in the middle of a very busy part of the city. I can, however, see the expressway out of my window.

This is my second room – they moved me to a nicer room the first day I was here. Larger, although the view isn’t quite as nice.

In my first room I had a view of the central pool and courtyard, which was quite lovely.

After a short nap, and breakfast, I summoned a car and went to Good Shepherd Church, which is where we went when I lived in Nairobi in the 80s.

It was nice to visit, although I didn’t know anyone, and after hanging around for a while feeling awkward, I walked the 2 or 3 miles back to the hotel.

Walking was a bit treacherous, with sidewalks alternated by mud paths and the occasional sudden gaping hole into the sewers. You have to stay alert.

And the traffic. Wow. That, also, probably needs a separate blog post.

I had lunch at the Artcafe restaurant one block over, but, alas, they were out of samosas, which is specifically what I went for.

In the afternoon I sat out on the central courtyard and read, which was delightful.

Later, I met with the people from SpaceYaTech, which I have already written about. And by that time it was dark, and I had dinner at the bar and restaurant there in the pool courtyard.

In all, a thoroughly lovely day.

It’s not home any more, but it’s home-ish, and it’s lovely to be back. 34 years is an entire lifetime, and everything here has changed, radically. Although some things are still the same. It’s a weird mix, and it would take longer than a week to unwrap all of it.

(More pictures on Flickr)

 

SpaceYaTech

(More Kenya notes)

On November 13th, I met with two representatives of SpaceYaTech at the Jacaranda, in Nairobi – Sharon Jebitok and Pamela Kendy – and one other, Hudson Obai, joined us online.

SpaceYaTech – A space for tech – started in April 2022 as a Twitter space for discussion and networking. It rapidly grew into a larger community, who has since moved to Slack and discord. They are largely focused on mentoring in software development, devops, and the open source community.

Out of this discussion has grown a number of projects on Github, which facilitate discussion and mentoring.

The projects include a content management system which will be used to build their website, a forum where the discussion can land, and a web application for coordinating mentors. They now have more than 300 developers working on these three projects. These specific projects were chosen, so that the people working on them were also using them, creating a feedback loop for quality, but also for the satisfaction of seeing one’s work in production.

Pamela was one of the students who received mentoring via SpaceYaTech, and from being a complete beginner at first, has now become an experienced UX designer.

One of the things we discussed was the fact that her formal education was in psychology, not computer science, but far from being hindering, this diversity of expertise enhances UX design, since it gives her insight into how people think, and also helps her work with users/customers to improve user experience, and build personas around the various user types.

Related to that, I’ve had several conversations here in Kenya about the fact that the Kenya government recently passed legislation that required anyone working in tech to have a computer science degree or certification. This has since been overturned, which I think is sensible, since what makes tech interesting is not the technology itself, but the diverse ways it is applied, and a diversity of backgrounds is what makes that possible. Furthermore, the majority of people I have ever worked with in technology have degrees in something else, and are self-taught in the actual technical aspects. (This includes me.)

As the group has grown over the past few months, from a small group of enthusiasts on Twitter to a more formal organization, they have encountered some growing pains. These challenges include, among other things, a lack of funds (they are all volunteers), a lack of mentors (they have had a huge influx of people looking for mentoring) and a lack of computing resources for CI, testing, and deployment of their projects. They also want broader visibility on social media so that more people can benefit from what they’re doing.

If you are interested in mentoring young, brilliant developers in East Africa, please do have a look, and reach out to Sharon or Hudson.

Open Source Glossary

When discussing open source with colleagues, I tend to assume that they already know the basics. But, as open source becomes a standard part of all software development, and the number of people working with open source grows, this has become less and less true.

What follows is a minimal viable vocabulary, which I’m posting here so that I can link to it elsewhere when having these conversations, and attempting to assume a lingua franca.

Open Source

Open source refers to software which is developed and released under an OSI (Open Source Initiative) approved license. Open source licenses are those that comply with the Open Source Definition, which sets forth ten tenets which are mandatory components of a compliant license.

Within these tenets, there is a lot of room for variation, and thus there are many licenses that qualify as open source licenses, ranging from extremely permissive (“Do whatever you want with this code.”) to much more restrictive (“You must do these things with the code.”)

While, strictly speaking, “open source” is a legal definition of the license under which software is released, it also implies a project which is run under the guidelines of the Four Opens – Open Source, Open Design, Open Development, and Open Community. In reality, most projects fall short of that ideal in some way, but it is an ideal to be striven for.

Fork

A fork is a copy of an open source project, for the purpose of making changes to the source code. Usually, this is done with the intention of offering those changes back to the original (“upstream”) project for inclusion in future versions (See “PR/MR/Patch”)

A private fork is when this copy is made privately, inside a particular company or organization, without visibility to the upstream.

A public fork, as the name indicates, is done in public where everyone on the project can see what changes are being proposed. This is always preferable, as it allows the project community to comment and participate in these changes, rather than them being a surprise.

A hostile fork is when a project is forked with no intention to ever contribute back, but, rather, to continue to run a competing project indefinitely. This should be considered only in the most extreme of situations.

PR/MR/Patch

A PR (Pull Request), MR (Merge Request) or Patch, are all terms for offering a change back to the originating project (“upstream”), for inclusion in future versions of that project. The terms indicate different ways that the change may be submitted, but all refer to essentially the same thing – a proposed change.

A PR is the desired end-game on any fork. Forks should be short-lived, and have a specific proposed change in mind, rather than being long-running or permanent artifacts.

Upstream

An upstream project refers to the open source project from which you are building. That implies the existence of a downstream – a project, product, or service which inherits some or all of its code from that upstream. For example, Apache Kafka is the upstream for Amazon Managed Streaming for Apache Kafka (MSK). (Which, of course, implies that MSK is the downstream from Apache Kafka.)

The upstream/downstream relationship is symbiotic. That is, a project relies on users, and a product or service relies on the upstream’s health and sustainability. As such, a downstream product or service should do everything in its power to support and sustain the project which it depends on. And project, in their turn, should listen to customers and users, and be responsive to them.

Maintainer

A maintainer is someone empowered to make changes to an open source project, and/or to make releases of that project. Ideally, a healthy project will have multiple maintainers, and there will be healthy discussion and debate around changes that go into a project.

Single-maintainer projects, or single-vendor projects (ie, where all maintainers come from the same vendor/company/organization) pose a risk to the sustainability of that project, since the change in direction from one source can result in the user community being suddenly disenfranchised or surprised. Thus, it is an ideal of open community that there be a diversity of inputs in the pool of maintainers, to ensure that all voices are equally heard when changes are made.

Making knives

I have been collecting knives for more than 40 years.

There was a brief moment in the middle of when I stopped because most of my collection was stolen, which was hard to get past.

A couple of months ago I decided that I wanted to start making knives. This was very sudden and I don’t think anything in particular led up to it.

But I guess I’ve been noticing over the last few years that I didn’t have any hobbies. I would work, come home, have dinner and watch tv, and go to bed. And I really had no interest outside of work anymore.

This is weird, because I’ve always had hobbies like running and geocaching and camping and so on, that would feel a lot of time outside of work. But somehow, over the last few years, this has faded.

Anyway, I decided to make knives.

And my first few attempts have been very rewarding, if not artistically amazing.

Week 1 @ AWS

Today is the last day of week 1 at AWS, and it has been fun, exciting, exhausting, overwhelming, intimidating, and all the other adjectives.

Here’s a few of the things I’ve learned:

The “Working Backward” approach to solving problems is like test-driven (or doc-driven) development. Documenting where you want to land, and then working backwards to figure out how to get there, is something that got me excited about test-driven development (TDD) when I was  Perl geek, and when I was a PHP developer. Using this same technique to plan everything else is an obvious (in retrospect) extension of this way of thinking, and just makes so much sense to me, once I figured out what people were talking about.

Amazon strives to be a “Day One” company, which means we’re always innovating, taking risks, and thinking about the long term, rather than settling into “Day Two”, which is where everything is decided, and we’re just turning the crank. I made the mistake of saying, on my first day, that I was looking forward to day two.

I was swiftly corrected by my new colleagues on my faux pas.

I am surrounded, at Amazon, by people I already know. This is, in part, because the tech industry is really incredibly small. It’s also because my path through tech has brought me into contact with the very best people in the industry. Some of those people were colleagues at Red Hat, of course, and some are here at Amazon. It’s been really cool, especially, to reconnect with some old friends from the Apache Software Foundation, who I did not know were here. And apparently there’s a lot more of them. I will, of course, miss my awesome colleagues at Red Hat, although I expect I’ll keep seeing many of them in the usual places, as I’ll still be going to many of the same events.

For the folks asking what I’ll be doing – I’m an “Open Source Evangelist”, which, while I’m not really fond of the word Evangelist in this context, means that I’ll be a cheerleader for open source. This is both inward-facing – helping AWS engineers know how to engage with open source projects, and be good citizens – and outward-facing – talking about the great stuff that AWS engineers are doing in those projects. These two aspects work together, of course. We have to be good citizens to build trust, and we have to have that trust in order to do our job effectively.

For folks asking what AWS is, well, it’s something you use every day and, likely, don’t think about it. When businesses want to host something on the Internet, but don’t want to build a data center, buy and manage computer servers, hire system administrators, and pay to power, cool, and feed all of the above, they use AWS to provide those services, and then they’re just responsible for the actual content that goes out onto the Internet. A huge percentage of the websites that you use on a daily basis are actually hosted on AWS, and you’re never aware of this because it Just Works.

For folks that are just happy for me, thanks. I have hugely appreciated all of the people who have reached out to me to congratulate me on this position, ask about the job, and just generally be happy for me.

Moaning Dolsnara

I had  a bizarre and elaborate dream.

In the dream, there is a movie called Moaning Dolsnara, which is an objectively terrible film that has become something of a fan favorite due to reasons that will become evident.

In the movie poster, there is the cliched murder scene tape outline, and a stack of books. The top book is named Moaning Dolsnara, the title of the movie.

The plot of the movie is that there have been a series of bizarre and brutal murders, and at the scene of each murder is left a murder mystery book, featuring the exact murder that has been enacted.

As the murders progress, and these books are found (each with a different author) a famous actress, played by a famous actress, becomes convinced that she is going to be the victim of one of these murders. Why she believes this is left very vague. She hires a private investigator to figure out the list of books, and, thus, who, where, and how the next murder will occur.

The PI is inept, and the murders continue. The PI has a sidekick, who, it turns out, is the actual brains behind the outfit, and keeps trying to convince him that things are not as they seem.

The murders continue.

The audience, of course, knows what the final book is – it’s this Moaning Dolsnara book, and there are many, many clues, overlooked by the PI, that lead the trail both to that book, and to the murderer.

However, in a last minute twist, the PI is murdered, brutally, in a way not foreshadowed by the titular book, and we discover that, in fact, the actress is the author of all of the books, under various pseudonyms, and this has all been an elaborate, if twisted, PR campaign for her upcoming book, which is, of course, found on the corpse of the PI in the final scene. She gets away with all of it.

This movie, which is, as I said, objectively awful, becomes an underground favorite, because of all of the fan theories about the list of books, what the final book actually was, and various other misleading clues throughout the movie. But, mainly, it becomes popular because the actor who played the PI is murdered in a bizarre and gruesome way shortly after the filming is finished.

Which is where I come in. In the dream, social media has just discovered me, because I look exactly like the actor who played the PI. The actress has contacted me to ask me to make an appearance on a book tour for her upcoming book. Meanwhile, the actor who played the brilliant sidekick has contacted me to warn me that all is not as it seems.

Being me, I have not seen, or even heard of, the movie, and I don’t know any of the actors who are in it.

In the dream, I am trying to explain all of this to my wife. However, we have guests. A family friend, and his kids, are at our house. My son is also there. There is general chaos and bedlam, and I cannot get a word in. And, to make it worse, my wife is angry at our friend, and keeps leaving the room every time I try to explain. Our son is angry because I won’t finish the story when she is out of the room, and he is the only person in the room who is actually interested in hearing the story.

This is the point at which I woke up.

I think this would make a great movie.

 

The Margin Is Too Narrow