Reintroducing Joël Franusic

Joël Franusic standing in front of two IBM 729 reel-to-reel tape machines for the IBM 1401

Hi, my name is Joël Franusic and I’m happy to announce that I am, once again, a developer advocate at Okta, focusing on the Python and Go communities.

(Why do I say “once again”? Because six years ago, I started my Okta career as a developer advocate but over the course of time I worked in a series of other roles including: “Software Engineer”, “Technical Marketing Manager”, and “Product Marketing Manager”)

This blog post has two parts:

  1. An introduction to myself and my personal mission statement
  2. An example of how to run Python from inside of a web browser - which is an example of how I’m putting my personal mission statement into action

Introducing myself

The best way that I can think of to introduce myself is by sharing my “personal mission statement”. Before I do that, though, I want to give some background on why I have one in the first place.

It’s common for corporations to have a “mission statement” — a short statement on what they view as their goals.

People often mock corporate mission statements, and for good reason. Mission statements are frequently long, vague, and uninspiring. But not always! Sometimes a company will create a mission statement that is truly great: short, inspiring and so lofty it almost seems unachievable.

For example. Microsoft’s statement once was: “A computer on every desk and in every home.” This mission statement probably seemed unachievable when it was first announced by Bill Gates in 1980. Forty years later, it’s clear that this mission statement wasn’t grand enough!

One day, as I was reflecting on mission statements that sound impossible, I started brainstorming joke statements to share with a friend. In the process, I stumbled across a statement that I couldn’t stop thinking about:

“Make all software, from all time, instantly available for use by any programmer” — this is now what I consider my personal mission statement to be.

My personal mission statement:

There are a lot of ways to interpret this mission statement-which I like. I want this mission statement to be flexible and able to grow and change over time. That said, let me break down how I’m thinking about it right now:

Let’s start with the first part of the mission statement: “Make all software, from all time”. My thinking here is that, given enough time, software can be refined to the point that it’s nearly perfect, or at least its inadequacies are well understood. When software reaches this level of perfection, it doesn’t really make sense to re-write it. So, why should we have to? It should be easy to use code from any programming language in any other programming language. Most programming languages have limited support for this type of functionality, though it usually involves bindings into code written in C. Why should it end there? I want to be able to use, Haskell code from Python, Java from Lua, or Fortran from Go, and so on.

Now, for the next part of the mission statement: “instantly available”. I believe that a programmer’s code should go into production as soon as they lift their finger off the keyboard. They shouldn’t have to wait for a compile to finish, for tests to pass, or for an interpreter to reload their code. All of those things, especially testing, are important, but they should happen automatically and finish within milliseconds.

Now for the last part of the mission statement: “for use by any programmer”. My opinion is that any programmer should be able to leverage code written by another programmer, no matter what the skill level or programming language either programmer has. This distinction is important to me because nearly everything I’ve described above is already possible, but only for very experienced programmers. As William Gibson famously said, “The future is already here — it’s just not very evenly distributed.”

That all sounds great, but what are you going to do about it?

Even if you agree that the things I want to do are worthwhile, it’s still fair to ask what that means in concrete terms.

One of things that I’m passionate about is making software development more “instantly available”. There are many problems that need solving in this area. For example, much of software development today involves unnecessary waiting. As programmers, we spend a lot of time waiting for software to install, tests to pass, a deploy to finish-the list goes on and on.

It doesn’t have to be this way, though. We can and should make better tools for ourselves and each other.

One example of something I’ve made is a page that lets you edit the code of the Okta Sign-In Widget with instant feedback, from inside your web browser. However, it uses JavaScript and, since I’m focusing on Python and Go, I wanted to make an example of running Python from inside of the browser. So, I wrote a game for you to play which I have included below:

Running Python in a Web Browser

This is a simple game where the goal is to write a Python function (answer()) that takes three numbers of a sequence as input (we label these a, b, and c) and returns the next number in that sequence.

For example, let’s imagine that the answer(a, b, c) function is given part of this integer sequence as input:

In this case, answer() would be called with the first three numbers of the sequence, like so: answer(9, 9, 9). In this case, the correct answer would be 9 and the code to “solve” this sequence might look something like this:

def answer(a, b, c):
    return 9

To win this game, you have to write a function that will be able to give the correct answer for all of the sequences that show up on the checklist below. The checklist will update as you solve for each sequence. Update the Python code below to start playing!

Sequence checklist:

    You did it! Reward yourself by learning more about The On-Line Encyclopedia of Integer Sequences ® and why Donald Knuth says you can use it to "compute your way into the literature".

    Edit the code above to play. No need to press a “save” button or anything. Your code will run once you’ve stopped typing for a bit.

    “That’s interesting, I guess. Why should I care?”

    Perhaps you played the game, perhaps you didn’t. But in either case, the reason I included this game in this blog post might not be apparent. I did so to show that, not only is it fairly easy to run a non-JavaScript interpreter in the browser, it can be a lot of fun when you do.

    I wanted to make something that:

    • Involves writing some mildly-complex code, something just a little bit more complicated than “hello world”.
    • Runs as soon as you stop typing.
    • Teaches the player something new.
    • Shows that it’s fairly easy, and fun, to run Python directly from a browser.

    If you want to see how all of this works, just use the “View Source” functionality of your browser. The entire game is written in Python and I plan on writing an in-depth explanation of the code behind this game in a subsequent post.

    That’s all for now

    In closing, I hope you found my “personal mission statement” to be as thought provoking as I do and I hope that you had as much fun playing my little game as I did making it.

    I’d love to hear from you in the comments below, or on Twitter.