Hacker News new | past | comments | ask | show | jobs | submit login
Steve Jobs hired a career juggler to teach programming to developers (cake.co)
380 points by GoRudy 6 months ago | hide | past | web | favorite | 100 comments



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.


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.


100% agree, #4 is where the magic happens. It isn’t something that “just happens” you need to be deliberate and intentional in making it happen.

In my experience, the right leadership, converging on the right vision makes it happen. But you absolutely need the shared vision.

I have been incredibly fortunate in my career to have either been a part of, or leading groups that truly jelled. In every case, it doesn’t last forever, But while it lasts it is incredible.

For those that never experienced it, there are two parts to achieve it: 1. Find people who put the “mission” first. The only way true collaboration happens is when the people collaborating stop thinking about “what is in it for them” 2. Find something “worthy” of you to work on. It can be as grandiose as the company mission, or it can be as pedestrian as improving your tiny bit of the world. But whatever it is, it has to resonate with you at a deep emotional level.

What I have found is that #4 of the article is almost a natural outcome of you can manage my two items (Assuming the team has 1-3).

But yes, it is not something that “just happens”.


#4 is definitely rare. I've had it three times in my 20 or so years working. Both times I still talk to those people weekly, even 10+ years later.

It was funny at the time, because other people in the office thought we hated each other in both cases. The arguments that came out from the whiteboard were known around the company, yet we hung out every weekend and knew almost everything about each other. The 'arguments' were really just us hashing out ideas and trying to find the best solution. Last I heard, some of the software we developed then is still in use today. For me at least, that feels like a success that we made some decent architectural decisions given the constraints at the time.

Luckily, one of the times for me the other person was 10 years older. He was able to give me perspective that the team dynamics we had were very rare and to cherish them. I knew he was right, but didn't expect them to be as rare as it turned out.


I'm about a decade behind you experience-wise, but I can tell you that I've seen #4 a few times.

What's interesting is that in each case I can say it didn't feel like #4 was happening until I looked at the experience in retrospect. It's almost like had we of been mindful or trying to achieve that, we would have been too self-conscious of ourselves to have actually succeeded. It was also a more broad cultural trait, it was a team that collaborated together well (sometimes kinda large teams, too). And most of the time there was a key leader or two that seemed to be key in bringing out that quality in the team.

I can also say that many of those teams still keep in touch, even if loosely, in some cases (now) decades later.


#4 starts happening almost magically when you reach a level of “maturity” where you are okay to cede control. You can visualize it as a Venn diagram where you have your bubble of what you think is the perfect system/product. Now every other person will have their own bubble and it will never overlap perfectly. #4 involves getting the best execution in the overlapping space and some bits of all the non-overlapping spaces. Suddenly you have an inclusive and almost always, better product which is more than your initial bubble. Everyone is vested in it. Everyone is fulfilled and magnified.


Ceding control is fine if you like the way your collaborator does things, but what if you can't trust them ? What if they have consistently done things the wrong way ?


I'd say two is more key. Most people seem to hold on to control as a way to avoid failure. Let people fail. Just make sure you have a safety net to keep things moving.

Having kids helps underscore this. Let your kids fall. Just don't take them to the Grand canyon right away.


what if your team can't afford those failures and you're responsible ?


Then you are on a death march, most likely. Failure happens. Any plan that requires avoiding failure is merely doomed.


Then hire better people


Then you or they don't have #1 covered.


Just my 2 cents after no more than 10y of career. The idea of letting other grow has nothing to do with resonating with them and form a bigger wave — you need to really want them to succeed and really fight for that to happen.

In my personal growth path I think I'm this close to reach that — but my ego is practically sabotaging it from the inside. I still can't let myself go in background-mode. And I'll pay for this sooner or later.

</personal-emotional-burst>


In JavaScript the problem is #2. People who develope in this technology want it easy right the fuck now. Failure avoidance is absolutely the name of the game. It is so prevalent there is even a name for it: invented here.

I can say this in all fairness as somebody who writes in that language fulltime for more than a decade.


that's the downside of javascript being the only game in town. to get away from it use typescript or coffeescript or some other alternative language that translates to javascript.

since choosing such a language requires extra learning, that pretty much leaves all "want it easy right now" people behind.


> that's the downside of javascript being the only game in town.

Why? I don't see the correlation between the technology and the rampant immaturity or unrealistic expectations of people developing in it. I have also experienced this immature temperance from people with a long history of developing in other languages coming into JavaScript and deliberately sacrificing common sense for insecurity resolution, which suggests the immaturity isn't simply due to a low barrier of entry.


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


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.


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.


I can't see how #4 is possible without #1


Would the chances of #4 happening comes with age, or I mean the chances of 1,2,3 happening, which is more like the prerequisite of #4?

I just wanted to mention #4 is exactly what makes Apple Apple. Or the old Apple. Steve made it so a group of people working together could have the results more than hundreds working in other company combined. Apple did it in a era when they had much lower resources compared to all of its competitor. The collaboration was real, or as Steve would put it, hey balanced each other, and the total was greater than the sum of the parts.

Today Apple seems more like cooperation under Tim Cook. They have 100x more resources, but bend gate on iPad Pro, XS Modem reception, MacBook Staingate, lots of horrid logic board design choices. Keyboard. The list goes on and on.


Ability to magnify and becomming deep lifelong friends should be two different things. The other person can teach you or offset your weaker points or bring out the best work put of you without being perfect himself and without relationship between the two people becoming marriage like.


the ability to magnify is one factor that enables friendships, so it makes sense that they are often seen together.


I don't see how is that. Friends and making me better at work are different. People who magnify me at work often have completely different hobbies, livestyles and incompatible woldview about personal lives. Sometimes the thing that makes them.less friends (assuming they are respectful etc) is what makes them magnifiers.

I suspect they are seen together when people make work their complete social circle so their emotional needs are not met unless collegues fill them too.


well, maybe we use different criteria for finding friends. for me friends are people that i can trust, and that support me.

it doesn't take more than one thing of common interest to become friends (and that trust and support)

sometimes that common thing is a hobby, a lifestyle or a worldview. but sometimes it is work.

having friends at work doesn't mean that i hang out with those friends in my free time.

we have multiple social circles. at work, family, different groups of friends (eg different hobbies, each is another social circle), and in each of those circles we may have friends. some closer than others.


It takes a true #2 to recognize a #2.

Otherwise, it's just crazy risky to put failures on your resume kind of thing.

Corporations are full of people competing on a political level, failure is just a stain, so risk taking is minimal. In a regular corporation you could get looked at very oddly for suggesting anything outside of normative.


I once interviewed a very impressive candidate for a product manager/owner role. This guy stood out from all the other candidates, he had a slick binder full of all his accomplishments and could talk about then at great length. I would have loved ro work with this guy. But, it became clear to me he’d never experienced failure, and so I asked about some of his professional set backs, and it was even clearer that he’d only ever worked on projects that were able to get a lot of support from management at companies with the resources to all but guarantee success. I ended up having to tell management he’d be a poor fit as a result. The position was one that was almost guaranteed failure at a company shrinking over 10% a year, that was unable to stop the old habits that were no longer working. We needed someone who could fail on an almost daily basis, yet still manage to salvage something from the position. I think we got lucky and found someone who did this, she was able to consistently interact with upper management, and understood that 1% improvements compounded to make a great product. Sadly, she eventually got beat down enough arguing with management to leave, but her presense was invaluable in creating the culture my team currently enjoys.


And sadly, she will not make the mistake of taking similar project on again. Because it was not rewarded altrough people under her and after her appreciate it, she likely had no benefit from it.


She got more confidence and experience. That makes her a better leader in her next job. She moved on and chances are that she got a better job because she could convince somebody that she can succeed in a difficult environment.


Quoting parent: "Sadly, she eventually got beat down enough arguing with management to leave"

That is not more confidence. And likely, she does not want "difficult environment" job either - could have stayed for that. What you learn in such environment is to spot red flags sooner.

Such positions are not rewarded, she did not enjoyed that, she will likely seek different position next.


I probably would have hired the guy anyhow. If you have a great candidate, I think it would be difficult not to hire them just because they are going to face some challenges they have not in the past because that's all of us. No challenge is the same.


It depends on how you define risk. I find it crazy risky to tailor your resume in a way that results in people who are not "#2s" end up being your boss. In my experience, the only thing worse than a bad employee is a bad boss. I recommend letting hiring managers see the good, bad, and ugly of your experience. Let someone who can see through it all to recognize your value be your boss. And let everyone else walk away.


I wonder what some good examples of people that have gone on to have a strong second or third act after failing.


Probably 40% of fortune 1000 c level executives. You can reach a point where you continually fail upward. Some companies are willing to accept someone who failed at a company twice their size if they think the executive can get them to double their current size before they reach their point of failure.


I respectfully disagree and would say c-level people of major companies are the most risk averse of almost all people. They run from failure like it's a stain. They want to always look good in the eyes of 'the big boss' and often have very little interaction with them and so are keen to always impress.

In business politics, perception is the only thing that matters, so it's really hard to spin failure as success.


Also, their first reaction to failure will be to find someone to take the blame.


Good luck finding people who are 2 of these, and it is not possible to judge people with existing limited interview processes. This list is impossible.


In the right environment a lot more people will have these. A good team lead can nurture them and given the right ingredients and conditions a whole team of these can emerge. On the other hand, just a few small things can completely prevent these people from blooming (overwork, bad morale, badly explained goals, constantly changing scope etc.).

Hire smart people with a spark. Give clear directions without micromanaging. Make sure people are getting enough sleep to think clearly, and enough time to do upfront planning so they don't write those bugs they would get demoralized on in the first place. Be an inspiration to others, then hand them the reins and let them inspire everyone else.


I don't think the list is simply a checklist in the sense that you decline candidates whenever there is a miss. I think it is rather a guideline to what to look for in candidates. You will have to make trade-offs with any candidate.


“True mastery, true depth” is impossible in our field. If anyone disagrees, find me someone with mastery of the 10 latest JavaScript frameworks, or whatever service Amazon put on AWS last week.

What you what is someone with a strong knowledge of fundamentals, everything else follows from that.


It's probably possible to have something approaching true mastery over compilers or physics simulation or distributed databases, or anything that's a field instead of a framework. Asking for mastery over React instead of over UI engineering is a little like asking for deep knowledge of Torx screwdrivers - there are high level concepts from internationalisation, accessibility, QA, automated testing, and UX design that will still apply in a decade or two, even if we write all our UI code in Rust and steam lightweight VDOM diffs to the server or whatever.


I think that's exactly what 'true mastery; true depth' would mean. People with incredibly strong fundamentals can look past the fancy facade of a new framework/tool and deduce its possibilities and limitations quickly enough.


In the video Randy addresses this very point. In his delivery #1 and #2 are actually part of the same point. He explains that true mastery of something, even unrelated, shows the mindset needed to dig in to a hard problem that's never been solved before. That leads into the discussion of failure and the persistence required to overcome failure and reach mastery.

Not too far away from your advice regarding fundamentals.


Balancing 3 and 1 is damn impossible for me. I do a ton of 3 and can't focus on point 1.

Though that literally seems to be the point of the article...


I think it's because point 1 has diminishing returns. You start having to invest more and more time to get deeper and deeper in one narrow thing. It's much more satisfying to develop breadth (imo) because you get about 80% deep and then stop before the diminishing returns kick in


so true, I've experienced this in things like learning the guitar / piano, playing poker, learning excel macros etc.


Number 2 reminds me of something my dad has told me a bunch, "it's not how you mess up, it's how you recover"


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.


I was one of the students in those classes and appreciated having someone with more technical depth in the class. I ended up making notes in every lecture of questions to ask the real experts during the breaks. I remember questions to Randy produced tangential stories rather than answers.


>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.


The MacBook Air does have USB ports; just not the old ones.


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


"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...


Sometimes you cannot learn the lessons you are taught.


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.


This is why things like working out and power lifting in particular are such good mental teachers (also any of the fight sports like BJJ). When I was on my quest for a #500+ deadlift it took _years_ of training. I would fail over and over, with it taking months to add 5 pounds to my single at the high end. What you learn is to love the grind. You realize there is no end goal, you just keep pushing forward.

Not everyday is rainbows and butterflies. Not everyday is a perfect flow day. You learn to say so what, and push forward. This is what experiencing failure does to people who get up and go again.


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.


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.


Yes the lesson of juggling is picking things up and starting again and again. Then as soon as you master n objects the jump in difficulty to n+1 objects is exponential and even when you get it perfect your audience will be bored of it after 15 seconds.


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


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

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

Charlie Callas Spinning Plates:

https://www.youtube.com/watch?v=FK4nh5I0jpE


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!


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.


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.


What do you like about it? To me it just seems like a blog post split into multiple pieces for no particular purpose.


Yeah, it's neat. It's sort of like Reddit + Twitter.


yea i'm a fan, I started using it in the past year or so. pretty promising signal to noise ratio and a lot of G+ refugees hanging out now.


I'm a programmer, but I can make a cake without a recipe. Don't ask me to juggle though.


> 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.)


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.


The easiest way to avoid failure is to attempt nothing. This has the unfortunate side-effect of never succeeding.


I guess the standard response here would be that means you’re not pushing yourself hard enough to try bigger and riskier things.


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/Siteswap


Should developers also teach juggling to professional jugglers?


> 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.


That's a good question. It's Andy Hertzfeld who told me she was the first true artist in the computer industry and I've heard him say it a lot. Somebody had to design the icons at Parc tho. https://blogs.plos.org/neurotribes/2011/11/22/the-sketchbook...


I think Alvy Ray Smith did a lot of those [1]. Dealers of Lightning has a bit more on the story. He then went on to join the NYIT graphics folks with Ed Catmull, and went out to California for the Lucasfilm (and later, Pixar) work.

Alvy Ray Smith never got a fine arts degree, but he's definitely done art for most of his career, including exhibitions. "True artist" almost sounds like a way to exclude these types :).

[1] https://en.m.wikipedia.org/wiki/Alvy_Ray_Smith


Susan Kare is not an artist but a graphic designer. She doesn't claim to be an artist herself.


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.


Yet they did, in the person of David Em: https://ohiostate.pressbooks.pub/graphicshistory/chapter/9-6...


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


> Why must they have?

Because PARC was an intentionally multi-disciplinary group working on the earliest incarnations of visual computing.

Also, no one is disputing that Susan Kare is highly accomplished and hugely influential.


Because any time you say some is "the first", you obviously looked at some sources to find who was the earliest one fitting some criteria. Relaxing the criteria and/or looking deeper is very likely to find someone else. But you can never win an argument either way, because the criteria are arbitrary. So many disputes boil down to definitions.


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. :-)


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/ScriptX

https://www.donhopkins.com/home/catalog/lang/scriptx/scriptx...

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

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...

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", 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...

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...

>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...

>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...

>“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.”


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


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://www.youtube.com/watch?v=5BDh_j5qAJ4

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

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...

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

https://codepen.io/adrianparr/pen/qmCek


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.


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

https://www.youtube.com/watch?v=fr82oJHUCzw


Brings back memories.


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


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


I'm getting a 301 on cake.co

(Firefox 64 on Fedora from India)


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 6 months ago [flagged]

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


Well, he is more noteworthy for being a successful businessman than an oncologist.

A more relavent criticism perhaps is that he recruited Scully. Also, did he hire other jugglers or similar individuals later in his career? I dont think the stunt should be praises without measuring its outcome.


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?


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.


If for marketing you mean product marketing and management then yeah. Apple is very good at figuring out what is the zeitgeist and package the perfect product for the market. It took them a while to figure out the formula and I argue Scully was actually a good mentor to Jobs in that sense (plus his multiple professional failures before coming back to Apple).


How do you define "better"?




Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: