August 2019

Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!

This weekly list is posted as a voluntary service to the Tampa tech community. With the notable exceptions of Tampa iOS Meetup and Coders, Creatives and Craft Beer — both of which I run — most of this information comes from Meetup.com, EventBrite, and other local event announcement sites. I can’t guarantee the accuracy of the dates and times listed here; if you want to be absolutely sure that the event you’re interested in is actually taking place, please contact the organizers!

Monday, August 26

Tuesday, August 27

Wednesday, August 28

Thursday, August 29

Friday, August 30

Saturday, August 31

Sunday, September 1

{ 0 comments }

You’ve probably heard of Robert C. Martin, also known affectionately in programming circles as “Uncle Bob”. He’s one of the 17 developers who co-wrote an co-signed the Agile Manifesto at a Utah ski resoirt back in February 2001, Agile Alliance’s first chairperson, and author of the must-read Clean Code.

He’s also an entertaining speaker, and one of his regular talks is The Future of Programming, which looks to the future by looking at the lessons from the past. This is the 2019 edition of that talk. If you’re young or unfamiliar with the history of computing from its earliest days in the 1940s and 1950s, you’ll find it a worthwhile history lesson. This talk also includes the thesis of another talk of his — The Scribe’s Oath — in which he talks about the extreme care that ancient scribes used to put into their work, and how programmers are effectively today’s scribes.

If you take away only a couple of points from the talk, take these:

  • At the moment, “the future of programming” doesn’t look all that different from the past of programming, because programming hasn’t changed that drastically in its few decades of existence. You’d probably be able to read old code, and a programmer time-teleported from the 1970s would probably be able to read present-day code. The syntaxes may be different, but the paradigms of procedural, functional, and object-oriented programming are still the same.
  • Uncle Bob’s rough estimate of the number of programmers doubling every five years has a necessary consequence: it means that half the programmers out there have less than 5 years’ experience.
  • With software eating the world and controlling everything so that just about every activity we take part in involves a computer in one way or another, we’re going to have to more clearly define what it means to be a programmer. We will have to take better control of our profession, or better still, act like members of a profession. As with medicine, law, and engineering, regulation will eventually come to our profession, and as with medicine, law, and engineering, it would be better if we self-regulated before legislators decide to do so.

If you’re a programmer, or if you manage programmers or work closely with them, this is a talk worth listening to.

{ 0 comments }

Slashdot’s home page, as it appeared on November 10, 1999.

Almost 20 years ago, back in November 1999, a story that was trending on Slashdot (in case you weren’t on the web then, think of a late-’90s version of Reddit, aimed mostly at techies): the final exam for a course called The Future of Computing. The course covered technologies that didn’t yet exist but were expected soon, and the exam presented a set of 11 situations that could be solved with some combination of these technologies.

It was the final exam’s 11th situation that had captured the imaginations of Slashdot readers:

You live in North Korea.

Three days ago the soldiers came to your tiny patch of farmland and took the few scraps of food they hadn’t taken the week before. You have just boiled the last of your shoes and fed the softened leather to your 3-year-old child. She coughs, a sickly sound that cannot last much longer.

Overhead you hear the drone of massive engines. You look into the sky, and thousands of tiny packages float down. You pick one up. It is made of plastic; you cannot feed it to your daughter. But the device talks to you, is solar powered, and teaches you how to use it to link to the Web.

You have all the knowledge of the world at your fingertips; you can talk to thousands of others who share your desperate fate. The time has come to solve your problem in the most fundamental sense, and save the life of your daughter.

Try to imagine what this question would look like to someone reading this in November 1999. North Korea wouldn’t have been all that different — there was just a different Kim in charge. But technologically speaking, it was a different world:

  • Desktop and laptop computers had processors running at speeds from 75 to 750 Mhz, anywhere from 16 to 128 MB of RAM, and hard drive capacities in the tens of gigabytes.
  • Internet access for most people would’ve been considerably slower. I had a 56K modem back then, which meant that it would take about 3 minutes to download 1MB of data.
  • Google was still in beta; if you were searching the web, you were probably using Yahoo! and AltaVista. There was no Facebook or Twitter — the closest equivalents would be SixDegrees.com and Napster.
  • The first of what we think of as smartphones wouldn’t even be announced for another eight years. The first BlackBerry device, the 850, was primarily for email and had very limited web browsing capability. If you had a handheld computing device in 1999, it was probably a PalmPilot.

As I mentioned earlier, the problems that you’re supposed to solve in the exam assume the existence of technologies that weren’t part of the internet in 1999. When you read the final exam below, ask yourself: How would you tackle the exam’s problems using the non-theoretical, real internet of 2019?

Final Exam

A new version of the Web springs to life with the following enhanced capabilities:

  • Unforgeable pseudonymous identities
  • Bidirectional, typed, filterable links
  • Arbitration agents*
  • Bonding agents
  • Escrow agents
  • Digital Cash
  • Capability Based Security with Strong Encryption

Pick any 5 of the essay questions below. Identify which advanced features listed above are needed to solve each problem, and explain how those features would work together.

Note: I doubt that anyone will choose Question 11 as one of their 5 questions to answer, because it requires a far more extensive answer than the others. But…if you can answer Question 11 in your own mind, even though you choose not to write up that answer for this examination, then a most remarkable thing will happen: you will walk out of this class with something profoundly worth knowing.

1) Searching for a decision analysis tool on the Web, you find a review in which the reviewer raves about a particular product. You buy the product and discover it just doesn’t work. You desire to prevent this person’s ravings from harming anyone else–and you desire to prevent the product from disappointing anyone else.

2) A product you buy based on a rave review opens your email address book, grabs your entire list of friends, sends itself to them, and sends your password files to a mysterious IP address. It’s too late now, but which features would you install before ever touching your computer again?

3) A product is advertised on the Web. It sounds good, but the offerer has no Web reputation. What arrangement would you consider adequate to go ahead and procure the product (Note: there are several possible answers; give 2 entirely separate solutions, and that is considered answering 2 questions).

4) You start receiving thousands of emails from organizations you don’t know, all hawking their wares. You want it to stop, just stop!

5) You wish to play poker with your friends. They live in Tampa Florida, you live in Kingman. This is illegal in the nation where you happen to be a citizen. You want to do it anyway.

6) You hear a joke that someone, somewhere, would probably find offensive. You wish to tell your precocious 17-year-old daughter, who is a student at Yale. The Common Decency Act Version 2 has just passed; it is a $100,000 offense to send such material electronically to a minor. You want to send it anyway–it is a very funny joke.

7) Someone claiming to be you starts roaming the Web making wild claims. You want to make sure people know it isn’t really you.

8) You have brought out a remarkable new product. There is a competing product making claims you know are false. You want to make sure anyone going to their site finds out your product is better.

9) Your elderly aunt sees a drug advertised on the Web that promises relief from arthritis. She dies shortly after starting to take the drug. You think the drug, and the company that made it, is at fault. Meanwhile the company is sure they didn’t have anything to do with it. You want justice.

10) You are the CEO of Bloomberg News, one of the most prestigious (and expensive) stock information services in the world. An article circulates on the Web, based on a mock-up of the Bloomberg News information page, claiming that PairGain Corp. will be acquired by ECI Telecom. PairGain stock rises 32% in 8 hours. Investigators later find that the false report was created by a PairGain employee about to cash in his options. You want to ensure that your brand is never used like this again.

11) You live in North Korea. Three days ago the soldiers came to your tiny patch of farmland and took the few scraps of food they hadn’t taken the week before. You have just boiled the last of your shoes and fed the softened leather to your 3-year-old child. She coughs, a sickly sound that cannot last much longer. Overhead you hear the drone of massive engines. You look into the sky, and thousands of tiny packages float down. You pick one up. It is made of plastic; you cannot feed it to your daughter. But the device talks to you, is solar powered, and teaches you how to use it to link to the Web. You have all the knowledge of the world at your fingertips; you can talk to thousands of others who share your desperate fate. The time has come to solve your problem in the most fundamental sense, and save the life of your daughter.

Who wrote these exam questions?

earthwebThey were written by science fiction author, software developer and computer security guy Marc Stiegler. It met him at the first incarnation of O’Reilly’s Emerging Technology Conference in 2002, but I’d been acquainted with his work prior to that. I’d heard of his programming language called E and had read his science fiction novel Earthweb, whose plot could be grossly oversimplified down to the summary “Twitter saves the world” (it’s a little bit more than that, but I think it conveys the idea nicely).

You can find out more about Marc on his page of interests.

{ 0 comments }

The Hyve team, who were runners-up at Startup Bus 2019. From left to right: Tracy Ingram, David Castañeda, Joey deVilla, Rina Bane, and Justin Linn.

My recent Startup Bus success with Hyve has had some interesting side effects, not the least of which is people asking me all sorts of questions about email and cybersecurity. I’m more than happy to answer these questions!

I’m often asked about how public-key cryptography (a.k.a. asymmetric cryptography) works. The concept of private keys and public keys isn’t an intuitive one. A couple of years back, I spent some time trying to come up with an analogy that was layperson-friendly and memorable.

After doing a little searching online, I found a good analogy, and with the help of a couple of people — including my computer science professor from Crazy Go Nuts University, Dr. Robin Dawes — improved on it. Here’s my revised analogy; feel free to use it whenever you need to explain public-key crypto!

The special box

Imagine a box with a special lock, as pictured below:

The lock has three positions:

  1. When the lock is turned to the “9:00” position, the box is locked, and its contents are inaccessible.
  2. When the lock is turned to the “12:00” position, the box is unlocked, which means you can open it and view its contents.
  3. When the lock is turned to the “3:00” position, the box is locked, and its contents are inaccessible.

The lock’s position can be changed by two kinds of keys. The first type of key belongs to the owner of the box, and is thus called the private key:

The private key fits the lock, but it has a special limitation: it can only turn the lock clockwise — from 9:00 to 12:00, or from 12:00 to 3:00. It doesn’t turn counter-clockwise.

There’s only one copy of the private key, and as the owner of the box, you hold onto it.

There’s a second kind of key. You may have already guessed that it’s called the public key:

Like the private key, the public key also fits the lock, and it also has a special limitation — but a different one: it can only turn the lock counter-clockwise — from 3:00 to 12:00, or from 12:00 to 9:00. It doesn’t turn clockwise.

Unlike the private key, you give copies of the public key freely to other people. This lets them communicate with you.

Using the box and keys, two different things are possible:

  1. People can send you secret messages. This is done with encryption.
  2. You can send messages to people with proof that it was you who sent the message. This is done with digital signatures.

Sending secret messages with encryption

The idea behind sending secret messages is straightforward: you take the message and encrypt it (that is, scramble it so that it’s incomprehensible to other people), and then send it. The receiver gets the message, decrypts it (that is, performs the inverse of the operation that scrambled the message), restoring it to its original form and making it readable.

Think of encrypting the message as putting it in the special box and locking it. Think of decrypting the message as unlocking the box.

If you wanted to send a message to me, you’d use one of my boxes. Since it’s one of my boxes, I would have the private key for it, and I would have given you one of my public keys.

To send me the message so that only I would be able to read it, you’d put the message into the box and then lock it with my public key. Remember, the unlocked position is at 12:00, and public keys only turn counter-clockwise. When you lock it, you change the lock to the 9:00 position:

Once the box is locked, you’d ship it to me.

In order to read your secret message, I’d unlock the box using my private key. Remember, the lock is currently at the 9:00 position (locked), the unlocked position is at 12:00, and private keys only turn clockwise. When I unlock it, I return the lock to the 12:00 position:

With the box unlocked, I can now read the message you sent me.

Proving that I was the one who sent the message using a digital signature

I can also use one of my boxes to sign my messages in such a way that you know that they’re definitely from me and not some troll pretending to be me.

If I wanted to send you a message that was guaranteed to be from me, I’d use one of my boxes.

To send you a message in a way that proved that only I could have sent it, I’d put the message into the box and lock it with my private key. Remember, the unlocked position is at 12:00, and private keys only turn clockwise. When I lock it, you change the lock to the 3:00 position:

Once the box is locked, I’d ship it to you.

In order to confirm that the message was sent by me, you’d unlock the box using the public key I gave you. Remember, the  lock is currently at the 3:00 position (locked), the unlocked position is at 12:00, and public keys only turn counter-clockwise. When you unlock it, you return the lock to the 12:00 position:

You can rest assured that I sent the message, because in the digital signature scenario, only my private key could’ve locked the box that you unlocked with my public key.

It’s all math

You may have to remind people that the box isn’t actually a box, the things that we call the private key and public key are just really large numbers, and that encryption and digital signing are just some fancy math operations that are performed on your message (which is really just a bunch of numbers) using the private and public keys.

I’ll write up a layperson-friendly description of how the math in public-key crypto works, but in the meantime, if someone’s asking you to explain it, send them to the EFF’s article, A Deep Dive on End-to-End Encryption: How Do Public Key Encryption Systems Work?

Credit where credit is due

I found the original “special box” analogy put together by Panayotis Vryonis (pictured to the right), in his article titled Public-key cryptography for non-geeks. He came up with an analogy that treated asymmetric crypto as a box with a special lock and special keys, and it seemed to do the job nicely, and I wrote about it in this post back in June 2017.

Analogies often have limits, and it wasn’t long before my computer science prof, Dr. Robin Dawes (pictured to the right), pointed out a flaw in Vryonis’ analogy. With his help, combined with a suggestion from Matthew Ernest, I came up with a tweak, resulting in the analogy shown above. Thanks to all of them for their invaluable help!

{ 0 comments }

Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!

This weekly list is posted as a voluntary service to the Tampa tech community. With the notable exceptions of Tampa iOS Meetup and Coders, Creatives and Craft Beer — both of which I run — most of this information comes from Meetup.com, EventBrite, and other local event announcement sites. I can’t guarantee the accuracy of the dates and times listed here; if you want to be absolutely sure that the event you’re interested in is actually taking place, please contact the organizers!

Monday, August 19

Tuesday, August 20

Wednesday, August 21

Thursday, August 22

Friday, August 23

Saturday, August 24

Sunday, August 25

{ 0 comments }

Every week, I compile a list of events for developers, technologists, tech entrepreneurs, and nerds in and around the Tampa Bay area. We’ve got a lot of events going on this week, and here they are!

This weekly list is posted as a voluntary service to the Tampa tech community. With the notable exceptions of Tampa iOS Meetup and Coders, Creatives and Craft Beer — both of which I run — most of this information comes from Meetup.com, EventBrite, and other local event announcement sites. I can’t guarantee the accuracy of the dates and times listed here; if you want to be absolutely sure that the event you’re interested in is actually taking place, please contact the organizers!

Monday, August 12

Tuesday, August 13

Wednesday, August 14

Thursday, August 15

Friday, August 16

Saturday, August 17

Sunday, August 17

{ 0 comments }

Yet another UX lesson from “Star Trek”

by Joey deVilla on August 6, 2019

Remember this, mobile and IoT user experience designers and developers.

{ 0 comments }