
Steve Jobs hired a career juggler to teach programming to developers - GoRudy
https://www.cake.co/conversations/w3j7jDp/that-time-steve-jobs-hired-a-career-juggler-to-teach-programming-to-developers
======
aerophilic
I particularly like the advice on how to hire:

> 1\. You want to find people with mastery, true depth.

> 2\. The problem is, that isn’t enough. You need people who had failed and
> recovered. The core skill of innovators is error recovery, not failure
> avoidance.

> 3\. Breadth, meaning curiosity about things beyond what you’re deep in.

> 4\. Collaboration. Not a synonym for cooperation, but the ability to magnify
> others.

As a separate aside, I didn’t realize Apple invested _that_ much in training.

~~~
buserror
I think I have 1, 2, 3 no problems after 35+ years of programming -- I still
love it, I still learn stuff, and I'm shockingly experienced in a rather large
amount of subfields.

The problems is #4. 1,2,3 are 'easy' given time and someone who's dedicated
and actually LOVES that job.

#4 requites _two_ (at least). In my 35y career I can count on the fingers of
one hands the time where I really, REALLY "clicked" with someone and we both
ran away with it. Needless to say, in all the cases, we still are on each
other xmas card list, regardless of time/space.

But that's the scary bit, to really, REALLY "collaborate" you need someone
who's already pretty much 'there' on the 1,2,3 listed there, and the chance of
meeting someone like that is low. I don't say it's 'rare', I say it's 'low'
and if you factor other things like personality, lifestyle and so on, it makes
it actually 'rare'...

I _treasure_ the people I can collaborate with, because it's magic. It's like,
as a musician, when you jam and the band just 'gels' and stuff starts
happening, it gives you a little shiver in the spine area that is unique.

But hell, it's rare.

~~~
Waterluvian
Maybe the true measure of having #4 is being someone who can magnify others
who don't already possess all these traits.

~~~
rhizome
I'm no master, but IME #4 involves a kind of "playing dumb" until the people
involved sync up. Kind of like tutoring, but for your working style, and in
the practice of bedside manner (which is already rare in general). #4 also
necessarily involves a sublimation of ego, the likelihood of which among
masters of #1,2,3 is left as an exercise for the reader.

~~~
busterarm
I think 1-4 are ordered the way they are by priority.

That makes me extremely uncomfortable because I feel like in my career I've
been a master in the reverse order, 4-1.

This could explain the unusual paths that I've taken, but I still feel like
I'm a long way from reaching my full potential while still in my mid-30s.

------
MrTonyD
Yeah, I remember Randy. After we got enough complaints about the classes he
was delivering we assigned technical people to sit in every class with him.
I'm sorry, but I've developed curriculum and taught technical classes - and
those were some of the worst classes I've ever seen. Everybody was confused,
and the instruction was really just a show from a juggler who had memorized a
bunch of facts from the doc. Yes, he got great reviews - but students had no
idea how much they didn't learn. I think I was the only technical staff there
with a real Training background - so nobody understood the obvious -
successful training involves skill transfer. Students left after hearing lots
and lots of facts about NeXTStep and OOP, but without any real teaching
happening. Sadly, this is a lot like most current training, since most
companies don't hire people who can actually decompose complex topics and make
them teachable and create sequenced labs which can develop real skills.
Companies equate presentations with Training.

But that was a long time ago. Hopefully he has worked with real Trainers since
then, and figured out how to get beyond the pure showmanship.

~~~
robertAngst
>how to get beyond the pure showmanship.

That was the lesson.

Put on a show, and people will spend money.

Real life example- Cousin got a Macbook Air for Christmas, was shocked to see
it had 0 USB ports.

She was uninformed and bought a product she didnt want. This is Apple's target
demographic.

~~~
noitsnot
There are two USB-C ports. If she returned it due to a pure hatred of dongles,
I would be surprised.

~~~
sodosopa
"What do you mean, I need to plug it in? It's portable, I don't want that
dongle sticking out."

This old joke still has it's place:

[https://www.boredpanda.com/car-computer-support-humor-jon-
pa...](https://www.boredpanda.com/car-computer-support-humor-jon-
parise/?utm_source=google&utm_medium=organic&utm_campaign=organic)

------
bb88
The lesson of juggling is this:

A juggler has to often fail thousands of times before he is capable of
learning a trick. While some people can pick up the three ball cascade easily,
it's rare to find one that can do a 9 ball cascade, because of the years of
practice it takes to build up to just being able to attempt it.

We don't want people to experience failure, but the sad fact is that we need
it to grow. 5 years ago I was a typical software engineer who was fired
because my boss didn't like me. Now I fly across the country and work with
companies helping them with their SaaS issues.

~~~
Reck
As a coincidence, today I was feeling down, looking over every major failure I
had experienced in my life. This comment cheered me up!

I'm glad that you have found independence, bosses who pick on employees over
personal traits aren't worth it :) Hoping I can do something similar one day.

~~~
bb88
Thanks for the comment. Failures are just really inflection points in your
life, and that's really all that they are. The key thing is to keep
perspective. Everyone fails, and at some point, and you have to pick yourself
up and dust yourself off.

The major benefit out of that debacle, is that I used to live in fear about
being fired. Now I don't. And there's a tremendous amount of freedom that
brings.

As my wife says, I have this uncanny ability to always land on my feet.

------
_robbywashere
Great! Now let’s add a juggling performance to whiteboard interviews.

~~~
DonHopkins
Plate Spinning is another excellent skill for software developers to be able
to demonstrate live at job interviews.

The trick to successfully managing a lot of projects at the same time, as well
as spinning plates, is to only try to spin one up at a time. Once it's up and
spinning, you can hop back and forth between spinning projects as needed to
give them a little more energy and balance. But it's much more difficult to
start several of them spinning at once!

Erich Brenn "Plate Spinning" on The Ed Sullivan Show:

[https://www.youtube.com/watch?v=Zhoos1oY404](https://www.youtube.com/watch?v=Zhoos1oY404)

It also helps to show how you can recover from errors gracefully:

Charlie Callas Spinning Plates:

[https://www.youtube.com/watch?v=FK4nh5I0jpE](https://www.youtube.com/watch?v=FK4nh5I0jpE)

------
skilled
All things aside, I found the concept of Cake to be really fitting for these
types of posts/conversations. Whomever made it and got traction for it -- good
job!

~~~
Geee
The author of this post (Chris MacAskill) is the co-founder and CEO of Cake. I
was kind of wondering how it's possible to have this kind of insightful post
on such a niche platform and figured out it was the founder himself feeding
it. He seems to post quite a lot if you look at his profile.

~~~
cmacaskill
Remember Victoria Taylor, Reddit famous for being in charge of AMAs? She
joined Cake a couple weeks ago to get conversations going with fascinating
people there.

------
g_b
> The core skill of innovators is error recovery, not failure avoidance.

Can anyone expand on this? So far my biggest failure has been unmaintainable
spaghetti code.)

~~~
taneq
You don't get from zero to one by making a perfect plan and then following it.
You get there by making a workable plan, starting on it, then re-evaluating
constantly and updating the plan as circumstances change and new information
becomes available. It's a constant process of error recovery and responding to
circumstance in order to keep the end goal attainable.

The code equivalent would be refactoring as you go to keep your code
maintainable at all times.

------
wespad
My daughter (13) is a juggler. I am not. I'll just leave this here.

[https://en.wikipedia.org/wiki/Juggling_notation](https://en.wikipedia.org/wiki/Juggling_notation)

[https://en.wikipedia.org/wiki/Siteswap](https://en.wikipedia.org/wiki/Siteswap)

------
trott
Should developers also teach juggling to professional jugglers?

------
brandonmenc
> Susan Kare, the first artist hired in the computer industry

Citation? This seems like an unbelievable claim. At the very least, PARC must
have had an artist on the payroll.

~~~
webwielder2
Why must they have? Part of what distinguished the Mac GUI from PARC’s is the
former’s refinement, elegance, and whimsy, contributed in large part by Kare.

~~~
icebraining
Yet they did, in the person of David Em:
[https://ohiostate.pressbooks.pub/graphicshistory/chapter/9-6...](https://ohiostate.pressbooks.pub/graphicshistory/chapter/9-6-david-
em/)

~~~
cmacaskill
Good find. I wonder if Andy Hertzfeld said one of the first and I misquoted
him.

------
orenjacob
I developed the curriculum for and then taught the first Pixar University
course for newly hired Technical Directors (10 weeks, full time, from day 1
when you started). That was probably around the Summer of 1996 as the studio
was growing rapidly to staff up for A Bugs Life. Randy joined some short time
after to help grow PU from the 2 new-hire courses (technical and animation)
into the much broader curriculum that it has grown into over the subsequent 20
years. I was a close friend of Randy’s then, and still consider him one. He is
an amazing person in many ways. And when my wife and I got married in 2001, he
was the master of ceremonies at our wedding. :-)

------
DonHopkins
Randy Nelson is awesome and brilliant! He deeply understands programming,
teaching, performance and entertainment, and is really great to work with and
learn from. I was very lucky that we worked together on ScriptX at Kaleida
Labs, where he was in charge of training developers to program ScriptX. Yes,
of course, he would actually juggle in class!

[https://en.wikipedia.org/wiki/Kaleida_Labs](https://en.wikipedia.org/wiki/Kaleida_Labs)

[https://en.wikipedia.org/wiki/ScriptX](https://en.wikipedia.org/wiki/ScriptX)

[https://www.donhopkins.com/home/catalog/lang/scriptx/scriptx...](https://www.donhopkins.com/home/catalog/lang/scriptx/scriptx.html)

This old poorly compressed ScriptX propaganda video is embarrassingly cheesy,
but it shows John Wainwright (who went on to wrote MaxScript for 3D Studio
Max) and Randy Nelson explaining dynamic composition by juggling objects, at
6:28! I love his lucid explanation and delightful motivation of object
oriented programming.

[https://www.youtube.com/watch?v=9fbWCHXl5W8&t=6m28s](https://www.youtube.com/watch?v=9fbWCHXl5W8&t=6m28s)

Here's an article "ScriptX and the World Wide Web" that I wrote around 1995
describing the possibilities of integrating ScriptX with the World Wide Web --
kinda like what kids these days call "AJAX":

>"Link Globally, Interact Locally"

[https://www.donhopkins.com/home/catalog/lang/scriptx/scriptx...](https://www.donhopkins.com/home/catalog/lang/scriptx/scriptx-
www.html)

My job was writing code, documentation and white papers to demonstrate ScriptX
programming and capabilities for developers, which Randy would explain in
class. Dynamic composition of interactive downloadable multimedia objects was
something that Java just couldn't do at the time, so I develop some demos to
illustrate what the point of all that was, and to prove the possibilities of
distributing interactive multimedia objects via the web in 1995.

One demo of dynamic plug-together composition of downloadable objects that I
developed was the "ScriptX Pizza Demo". It distributed separate pizza crusts
and topping objects in ScriptX Bento "title containers" that you could
download and plug together into an interactive pizza. To demonstrate
interactive behavior, you could drag the individual toppings around on the
crust, and it featured spinning "eyeball" pizza toppings (inspired by Jeremy
Huxtable's "NeWS Big Brother", which was also the inspiration of xeyes, of
course.)

>ScriptX Pizza Demo

>The ScriptX Pizza Demo, at
"[http://www.kaleida.com/official/pizza"](http://www.kaleida.com/official/pizza"),
lets you construct a pizza by plugging together ScriptX objects from several
title containers delivered via the World Wide Web. First you select a pizza
crust in one title container, then you can select any number of pizza toppings
in separate title containers. They're dynamically loaded into the KMP and
locally composed in a window, that you can interact with by dragging the
toppings around on the crust. There's even a "big brother" spinning eyeball
topping, that animates as you move your cursor around the screen!

>This demonstrates network distribution of cross platform code and media, with
local interactivity, direct manipulation, animation, dynamic binding, and
plugging together objects from different containers.

>There is an extension to ScriptX on the Mac that enables it to ask NetScape
to open any URL, so ScriptX can cause NetScape to display a web page, load
another title container, and even send messages to interactive web services
(like submitting an order for a pizza).

>ScriptX Web developers will go far beyond mere pizza toppings, publishing
innovative interactive experiences on the network, no longer limited to the
static text, graphics, and forms of HTML.

>Benefits of ScriptX to Web Developers

>As a general purpose object-oriented multimedia scripting language, ScriptX
has many uses for web developers. It can import and export various file
formats, index, search and manipulate multimedia databases, automatically
generate HTML from macros and templates, draw and composite images and produce
corresponding image maps, and serve as an open ended programmable hypermedia
synthesizer.

You could think of it as a simpler but network distributed componentized
version of PizzaTool, which I developed earlier at Sun:

[https://medium.com/@donhopkins/the-story-of-sun-
microsystems...](https://medium.com/@donhopkins/the-story-of-sun-microsystems-
pizzatool-2a7992b4c797)

Here's the documentation for the ScriptX web module, which let you use ScriptX
as a server-side scripting engine via WebStar, in conjunction with a client-
side scripting engine as a Netscape helper app, to dynamically (and pre-)
generate html and title containers for users to download, plug together, and
play with in the ScriptX Kaleida Media Player helper app.

Having the same scripting language on both the client and server (like
JavaScript in the browser + node on the server), and dynamically generating
and downloading interactive persistent objects and HTML, are all pretty common
and boring clichés now, but it was exciting and needed to be explained and
demonstrated with a working proof-of-concept in 1995:

[https://www.donhopkins.com/home/catalog/lang/scriptx/web.htm...](https://www.donhopkins.com/home/catalog/lang/scriptx/web.html)

>This is the documentation for the ScriptX Web module. The Web module is a
toolkit for integrating ScriptX with World Wide Web browsers, generating HTML,
and implementing interactive services and distributed multimedia authoring
tools.

Here's an illustrated transcript and video of a live improvisational ScriptX
demo that I gave at the 1995 Apple World Wide Developers Conference -- you can
see how Randy inspired me to improvise crazy live performance art by the seat
of my pants!

[https://medium.com/@donhopkins/1995-apple-world-wide-
develop...](https://medium.com/@donhopkins/1995-apple-world-wide-developers-
conference-kaleida-labs-scriptx-demo-64271dd65570)

>To make any sense of this, you should realize that it’s live improvisational
performance programming art. The graphical and audio artwork are just ugly
placeholder “programmer art”. The references to “great content” are laughably
ironic!

ScriptX may have failed in the market and lost out to Python, Java and
JavaScript, and Steve Jobs finally said "No" to it, but I sure learned a lot
and recovered from the mistakes, I continue applying the lessons to later
work, and I had great fun working with Randy Nelson!

[https://medium.com/@donhopkins/focusing-is-about-saying-
no-s...](https://medium.com/@donhopkins/focusing-is-about-saying-no-steve-
jobs-wwdc-97-ff0174c171d0)

>“Focusing is about saying no.” -Steve Jobs, WWDC ‘97. As sad as it was, Steve
Jobs was right to “put a bullet in OpenDoc’s head”. Jobs explained (and
performed) his side of the story in this fascinating and classic WWDC’97
video: “Focusing is about saying no.”

~~~
kragen
Oh hey, I'd forgotten you wrote pizzatool! Do you wish ScriptX had been free
software?

~~~
DonHopkins
Oh, of course I wish Apple and IBM had made it free!

But it included Apple's "crown jewels", the QuickTime player source code, and
they were't going to give that away in 1995. Apple were even trepidatious
about IBM having access to that source code.

Besides having proprietary decoders, it could also do some things you can't
even do well with the Flash player or html video component today: like
smoothly playing videos and music backwards!

Ever since the music industry switched from vinyl to CD, listening to demonic
backmasking in Devil Music like the Beatles and Led Zeppelin's promotion of
Satanism became much less convenient. ScriptX solved that important problem
elegantly with its synchronized clock system, but today's HTML video player
still hasn't, alas.

[https://en.wikipedia.org/wiki/Backmasking](https://en.wikipedia.org/wiki/Backmasking)

[https://www.youtube.com/watch?v=5BDh_j5qAJ4](https://www.youtube.com/watch?v=5BDh_j5qAJ4)

Here's a description of ScriptX's clock system:

[https://news.ycombinator.com/item?id=18350511](https://news.ycombinator.com/item?id=18350511)

>Kaleida Lab's ScriptX (a multimedia programing language kinda like Dylan with
classes) had built-in support for hierarchal clocks within the container (in
the sense of "window" not "vm") hierarchy. The same way every window or node
has a 2D or 3D transformation matrix, each clock has a time scale and offset
relative to its parent, so anything that consumes time (like a QuickTime
player, or a simulation) runs at the scaled and offset time that it inherits
from through its parent containers. And you can move and scale each container
around in time as necessary, to pause movies or simulations.) You could even
set the scale to a negative number, and it played QuickTime movies backwards!
(That was pretty cool in 1995 -- try playing a movie backwards in the web
browser today!)

Is it possible to play HTML5 video in reverse?

[https://stackoverflow.com/questions/5277293/is-it-
possible-t...](https://stackoverflow.com/questions/5277293/is-it-possible-to-
play-html5-video-in-reverse)

Kinda, but it's not smooth enough to sing along while dancing backwards and
worshiping Satan to:

[https://codepen.io/adrianparr/pen/qmCek](https://codepen.io/adrianparr/pen/qmCek)

~~~
kragen
Yeah, I remember het AVI porn in the early 1990s where time alternated between
forward and backward, thus providing an infinite video in only a few frames.
(Probably it would have been more realistic with a sinusoidal rather than
triangle-wave temporal waveform.)

I think there's a lot of space for experimentation here, generating video as
an arbitrary three-dimensional slice of a potentially higher-dimensional space
— like how horse-race photo-finish cameras map one vertical spatial dimension
and one temporal dimension into two spatial dimensions for the photo, or how
Julia-set animations map two of the dimensions of the four-dimensional
Julibrot onto screen space while mapping a smooth path through the other two
dimensions onto time. I've gotten some stunning still images by taking even
fixed horizontal or vertical slices through video, but you could also do
things like delay one side of the picture more than the other, or foreshadow
future action by curving part of the frame into a timelike angle through the
source material. It might be difficult to record a source video with more than
one temporal dimension _with a camera_ , but you can certainly do it with ray-
tracing or other rendering techniques.

Presumably if you want to play a video backward with a modern codec, you need
to buffer up decoded P-frames in memory from at least the previous I-frame —
much like iterating backwards over the lines in a file, except that each
"character" is a megabyte or two of YUV pixels. Should be totally feasible on
a modern cellphone, even for aggressive modern formats that only have I-frames
every few seconds… but it would be nothing short of a miracle in 1995! I guess
MPEG-2 didn't exist yet, so maybe MPEG-1 with N=18, M=2 was the worst case
you'd need to handle at that point? That should only require a 10-P-and-I-
frame buffer.

------
milhous
Here's Randy in action demoing OOP in NeXTSTEP Interface Builder (1:17 in):

[https://www.youtube.com/watch?v=fr82oJHUCzw](https://www.youtube.com/watch?v=fr82oJHUCzw)

~~~
waynecochran
Brings back memories.

------
DoreenMichele
I only looked because of my fondness for this video that uses juggling to good
effect to teach math in an entertaining way:

[https://youtu.be/GNKFSpJIBO0](https://youtu.be/GNKFSpJIBO0)

------
flowjuggle
Absolutely makes sense if it doesn't make sense to you you should look for
pictures of Claude Shannon juggling on the unicycle, if you want to learn to
juggle or ride a unicycle pee free to contact me to get your toys and your
lessons. www.flowjuggle.com

------
yipbub
I'm getting a 301 on cake.co

(Firefox 64 on Fedora from India)

~~~
rconti
[https://www.cake.co](https://www.cake.co)? http/https cake.co gives a 301 to
www from California but that's about it.

I assume you wouldn't post about it if the 301 didn't have a location, but you
don't mention it.

------
taneq
Steve Jobs also tried to cure his cancer with acupuncture and woo.

~~~
robertAngst
I don't see Apple as anything other than a successful marketing company.

Their software and hardware are not better than their competitors. At best,
they are on-par with the best.

Not surprising given the enormous cost. Easy-Cheap-Good. Pick 2. Easy and
Good.

Should anyone praise Apple for anything outside their marketing department?

~~~
landon32
It's hard to argue that they have not made some of the most important
inventions of the past 100 years: \- A personal computer that people could
afford (Apple II) \- Nice GUIs, window based operating system, etc for the
masses (Macintosh) \- Best designed MP3 player (iPod) \- the first smartphone
that people liked (iPhone)

Yes, a lot of these were inspired by prior work but iPhone still brought
critical (often 10x) advances to each one—lowering the cost of the Apple II,
designing a touch screen interface that worked, etc.

