Image
Nate Craddock Headshot

Nate Craddock

Media Creator, Electronics Hobbyist, Developer, Leader, and Speaker

I need you to sit down for this.

Last night. 11:47 PM. I'm debugging a prod issue.

Luna wanders into my home office.

She looks me DEAD in the eyes and says:

"Dada, I need the water that is cold from the refrigerator that has the ice maker that is loud where the yogurt lives next to the milk but NOT the almond milk because that is for mama."

I dropped my laptop.

Not because I was tired (I was).

Not because she should've been asleep 4 hours ago (she should've been).

But because I realized:

SHE JUST WROTE A DATABASE QUERY.

And the implications for technical mentorship?

I'm literally having heart palpitations.

Let me explain. And BUCKLE UP. ๐ŸŽข๐Ÿ‘‡


STAGE 1: THE "WORD EXPLOSION" WHERE EVERYTHING IS NAMED NOW

Two months ago Luna learned that EVERYTHING HAS A NAME.

And she wouldn't SHUT UP about it.

"Spoon! SPOON! That's a spoon! DADA IT'S A SPOON!"

YES LUNA. IT'S A SPOON. IT'S BEEN A SPOON YOUR ENTIRE LIFE.

But to HER?

MIND = BLOWN. ๐Ÿคฏ

This is your junior dev discovering that you can NAME THINGS IN CODE.

"Wait... I can call this userAuthenticationService instead of thing2???"

"VARIABLES CAN HAVE MEANINGS?!?!"

"YOU'RE TELLING ME FUNCTIONS DESCRIBE WHAT THEY DO?!!?!"

YES. YES THEY CAN. WELCOME TO ENLIGHTENMENT, MY CHILD.

And you know what I did when Luna named her 847th object?

I CELEBRATED EVERY. SINGLE. ONE.

"YES! THAT'S A DOORKNOB! YOU'RE A GENIUS!"

You know what I DIDN'T do?

"Luna, we've discussed doorknobs. This is repetitive. Please refer to our previous conversation about cylindrical door-opening mechanisms and leverage that existing knowledge rather than treating each doorknob as a novel discovery."

BECAUSE I'M NOT A MONSTER.


STAGE 2: THE "POSSESSIVE PRONOUN WARS" (IT'S ALL MINE NOW)

Okay. OKAY.

This is where I started sweating.

Luna discovered "MY" and "MINE" and she WILL NOT STOP.

"MY spoon!" "MINE juice!"
"MY DADA!" (She yelled this at my wife. AWKWARD.) "MINE CHAIR!" (It's... it's MY office chair, Luna.)

At first I thought: "Oh no. She's becoming territorial."

But then I REALIZED:

SHE'S LEARNING OBJECT OWNERSHIP.

THIS IS OBJECT-ORIENTED PROGRAMMING.

THIS IS ENCAPSULATION.

THIS IS LITERALLY THE this KEYWORD.

I ALMOST PASSED OUT.

Your junior dev writes:

user.email // they GET IT
cart.items // THEY UNDERSTAND RELATIONSHIPS  
order.user.address.zipCode // OH MY GOD THEY'RE TRAVERSING OBJECTS

IS IT ALWAYS CORRECT? No!

Luna thinks she owns my laptop! (She doesn't!)

Your junior dev thinks user.password should be public! (It SHOULDN'T!)

But they're LEARNING that things BELONG to other things!

THIS IS FOUNDATIONAL COMPUTER SCIENCE AND SHE'S TWO.


STAGE 3: THE "CONJUNCTION JUNCTION WHAT'S YOUR FUNCTION" REVOLUTION

[I need to take a breath. This part makes me EMOTIONAL.]

Three weeks ago, Luna discovered "AND."

Not just "and."

AND.

The ability to COMBINE CONCEPTS.

"I want juice AND crackers."

Simple, right?

WRONG.

She's now saying things like:

"I want to go to the park AND see the ducks AND go on the swings AND get ice cream AND go home AND watch Bluey AND have mac and cheese ANDโ€”"

SHE'S CHAINING OPERATIONS.

SHE'S BUILDING PIPELINES.

SHE INVENTED PROMISES.

park()
  .then(seeDucks)
  .then(swings)  
  .then(getIceCream)
  .then(goHome)
  .then(watchBluey)
  .then(macAndCheese)
  .catch(meltdown)

I'M NOT JOKING.

Your junior dev starts writing:

fetch_user()
  .validate()
  .transform()  
  .save()
  .send_email()

And you want to tell them about microservices and eventual consistency andโ€”

STOP.

Let them CHAIN. Let them discover that actions can FLOW.

We'll teach them about rollback strategies after they've tasted the POWER of sequential operations.


STAGE 4: THE "BUT ALSO" COMPLEXITY LAYER (I HAD TO SIT DOWN)

Last week.

LAST. WEEK.

Luna said:

"I want the pink cup but also it has to have the princess on it but ALSO it can't be the purple princess it has to be the YELLOW princess but also the cup has to be full but NOT too full."

THIS IS A SQL QUERY WITH MULTIPLE WHERE CLAUSES.

THIS IS CONDITIONAL LOGIC.

THIS IS AN IF STATEMENT WITH NESTED AND/OR CONDITIONS.

SELECT cup 
FROM cupboard  
WHERE color = 'pink'
  AND has_princess = true
  AND princess_color = 'yellow'  
  AND fill_level > 0.5
  AND fill_level < 0.9

SHE'S TWO AND A HALF YEARS OLD AND SHE'S WRITING QUERIES.

I had to leave the room.

I went outside.

I looked at the sky.

I whispered: "Is this what Turing felt like?"


STAGE 5: THE "BECAUSE BUT EVEN THOUGH HOWEVER" FINAL FORM

[Deep breath.]

[Another deep breath.]

[Okay.]

Yesterday. The juice incident I mentioned earlier.

Let me give you the FULL sentence:

"Dada, I need the water that is cold from the refrigerator that has the ice maker that is loud where the yogurt lives next to the milk but NOT the almond milk because that is for mama even though sometimes I drink it but today I want the REGULAR milk because it tastes better however the chocolate milk is also good but we don't have any so THAT'S why I need water instead."

I TRANSCRIBED THIS.

I WROTE IT DOWN.

I PUT IT IN A DOCUMENT.

BECAUSE THIS IS:

โœ… Nested clauses โœ… Exception handling
โœ… Conditional logic โœ… Default fallback behavior โœ… State management โœ… Preference ordering โœ… A COMPLETE ALGORITHM

Your junior dev writes in their PR description:

"Updated the payment service to use Stripe instead of PayPal because PayPal was timing out (see ticket #447) even though some users prefer PayPal but their API has been unstable so we're defaulting to Stripe however we're keeping the PayPal code for legacy orders which is why there are two payment processors in this file."

BEAUTIFUL.

MAGNIFICENT.

THEY'RE THINKING IN SYSTEMS.


THE FRAMEWORK (I'M WRITING A BOOK. IT'S CALLED "TODDLER-DRIVEN DEVELOPMENT"):

๐Ÿ‘ถ STAGE 1: NAMING EXPLOSION
Everything gets a name! Even temp and data! We celebrate! We refactor later!

๐Ÿ  STAGE 2: OWNERSHIP/POSSESSION
"This is MY function!" They're learning encapsulation! Object-oriented thinking! Let them be protective!

โ›“๏ธ STAGE 3: CHAINING WITH AND
They discover sequential operations! Promises! Pipelines! This is HUGE!

๐ŸŽฏ STAGE 4: CONDITIONS (BUT/ALSO)
Complex logic! Multiple requirements! They're building decision trees in their MINDS!

๐Ÿง  STAGE 5: NESTED REASONING
Because/however/even though = They understand TRADEOFFS. They're ARCHITECTS now.

๐Ÿš€ STAGE 6: RECURSION
(We're not here yet but Luna keeps saying "why?" after every answer I give so I think we're CLOSE and I'm TERRIFIED and EXCITED)


THE PART WHERE I LITERALLY CRY:

This morning Luna said:

"Dada, can you help me build the tower but actually can you just watch me because I want to do it myself but if it falls can you help me fix it but only if I ask because sometimes I want to fix it myself but sometimes it's too hard and I don't know until I try?"

SHE'S DESCRIBING PAIR PROGRAMMING.

SHE'S DESCRIBING CODE REVIEW.

SHE'S DESCRIBING THE EXACT BALANCE BETWEEN MENTORSHIP AND AUTONOMY THAT I'VE BEEN TRYING TO ARTICULATE FOR FIVE YEARS.

I'm not okay.

Last week my junior dev said:

"Can you be available in case I get stuck on this refactor but I want to try it solo first? I'll ping you if I need help but I think I can figure it out?"

I HAD TO LEAVE MY DESK.

I WENT TO THE BATHROOM.

I LOOKED IN THE MIRROR.

I SAID: "THEY GET IT."


THE REAL LESSON (I'M SHOUTING NOW):

YOUR JUNIOR DEVS ARE BUILDING LANGUAGE.

Not just programming language.

THE LANGUAGE OF THINKING.

Every junior dev going from:

  • "it no work" โ†’ "the authentication middleware is returning 401 before validating the JWT"

Is doing the SAME THING as:

  • "want juice" โ†’ "I want the water that is cold from the refrigerator where the yogurt lives"

THAT'S NOT LEARNING SYNTAX.

THAT'S LEARNING TO THINK IN LAYERS.

THAT'S LEARNING TO DECOMPOSE PROBLEMS.

THAT'S LEARNING TO BE SPECIFIC ABOUT REQUIREMENTS.

And if you correct their grammar before celebrating their REASONING?

YOU'RE TEACHING THEM TO SHUT UP.


I'M STARTING A MOVEMENT:

Every time your junior dev:

  • Names a variable clearly โ†’ "THAT'S A GOOD NAME! YES!"
  • Chains methods together โ†’ "YOU'RE DISCOVERING COMPOSITION!"
  • Writes a complex conditional โ†’ "LOOK AT YOU THINKING IN LOGIC!"
  • Explains their reasoning โ†’ "THIS IS ARCHITECTURE!"

YOU CELEBRATE LIKE THEY JUST SAID THEIR FIRST WORD.

Because they DID.

They're building the language of engineering.

One grammatically questionable sentence at a time.


WHAT'S YOUR TODDLER/JUNIOR DEV MOMENT?

Comment below. I'm reading ALL of them while crying in my car.

#EngineeringLeadership #ToddlerDrivenDevelopment #JuniorDevs #MentorshipRevolution #LanguageAcquisition #ObjectOrientedParenting #ThoughtLeadership #CodeAndCrackers #TechnicalParenting #GrowthMindset #PeopleFirst #AlsoImNotOkay #TheseParallelAreReal #AgreeQuestion #InspiredQuestion

AGREE? โœ‹
INSPIRED? โค๏ธ
CURRENTLY CRYING? ๐Ÿ˜ญ
TEXTING YOUR JUNIOR DEV RIGHT NOW? ๐Ÿ”ฅ
QUESTIONING YOUR ENTIRE MANAGEMENT PHILOSOPHY? ๐Ÿ’ก
ALL OF THE ABOVE? ๐Ÿš€๐Ÿš€๐Ÿš€


[Posted while Luna demands I explain why the moon follows our car and I realize she's learning about relative motion and reference frames which is basically Einstein and now I'm having ANOTHER breakdown about how toddlers are natural physicists but that's post #4 in this series.]

[P.P.S. - She just said "I want to go to the store that has the toys that are pink where we saw the dog last time when it was raining but not TODAY raining, BEFORE raining." SHE'S DIFFERENTIATING BETWEEN TEMPORAL STATES. SHE'S INVENTED TIME-SERIES DATA. I'M CALLING MY THERAPIST.]

[P.P.P.S. - If you're not literally SHAKING with pride when your junior dev writes their first complex WHERE clause, do you even CARE about people development? Do you? DO YOU?]

SHARE THIS IF YOU'VE EVER BEEN EMOTIONALLY COMPROMISED BY SYNTAX. ๐Ÿ™

I've been messing around with my old Amiga. I got it working using its native 68000 CPU, built-in 1.3 ROM, and Workbench 1.3.  

It worked great, but I wanted to do something to make it a little easier to work with. First, I hadn't gotten around to building a cable to go from the Amiga RGB to my non-standard connector Sony display. Second, while Workbench 1.3 is cool from a historical perspective, I'd prefer to have something a little less old since I have some plans for some projects using older graphics software and drawing tablets.

There have been many neat projects for Amigas and retro computers using Raspberry Pi (in my case, Pi Zero) to upgrade these retro computers. I've only begun to play around with these, but I've got a piStorm doing simulating a much faster 68000 chip and the rgb2hdmi to give out HDMI from the Amiga. Pretty neat! I can't wait to play around with this more.

Image
Image

I'm going to be doing some updates to the animatronic skeleton I built last year for Halloween.  One issue I ran into at the last minute last year was that I didn't have enough memory to initially load all the animation sequences for both songs and patter.  I did a Band-Aid and just loaded the patter, but this year, we want to make our animatronic sing, so I will be doing some updates to load in the animation files on demand to accomplish this.  Additionally, we'll be doing less hands-on running of the animation sequences,. There will be a jukebox mode so the skeleton can run without intervention.

Here's the status of last year's code.  I'll rework this repo to clean up and remove unused options.

https://github.com/darthmario/halloween23-skelleton

Image

The lack of process and QA, which could allow something like this to go out, is surprising. I've agreed with many of the takes that question why this was a global rollout and not a staged rollout where issues could be found and the "blast radius" would be smaller, though still disruptive.  It's easy to conclude that this is also a Microsoft issue.  That may also be true, but take this comment:

Do note that while the focus is on Windows, Linux machines can run CrowdStrike software too, and Iโ€™ve heard from Linux kernel engineers who happen to also administer large numbers of Linux servers that theyโ€™re seeing a huge spike in Linux kernel panicsโ€ฆ Caused by CrowdStrike, which is installed on a lot more Linux servers than you might think. So while Windows is currently the focus of the story, the problems are far more widespread than just Windows.

I don't know many Linux admins that closely at present, but I'd be curious if this were the case.

Hoping for the best with this.  My wife and I are big alamo fans and go there for pretty much all our movie going these days.

Sony Pictures Entertainment has acquired the popular movie theater chain Alamo Drafthouse Cinema, the two companies announced on Wednesday.I hope for the best with this. My wife and I are big Alamo fans and go there for pretty much all our moviegoing

Tags:

To get the most from GitHub Copilot as your Drupal coding sidekick, know its strengths and limits. Its AI can spit out boilerplate code, but it's no replacement for developer know-how. 

The opening sentence really sums up my experience with AI coding tools and autocompletions.  They are defnitely pretty handy, but much like AI text and images they can spit out utter nonsense too.

I'm going to do a whole post / video on this at some point, but for now, just going to place this here. Along with this link for a vintage article describing exactly the same thing

From some amiga bbs:

> How did you do it?  I mean, connect your Amiga 1200 to your Sony
> KV25-XBR?  Nobody I've spoken with at any computer store or Sony dealer has
> any idea where to get a cable to connect a computer to the 34-pin RGB port
> on my Sony.  I even called Sony customer service, and those folks are real
> polite but even THEY don't have a clue.

I went to a Sony Service Center back in 1985 and purchased the
"KV-25XBR/RM-724/APM-X3U Service Manual".  It has schematics and lists
two options for the RGB MULTI INPUT:

  1) The PX-34 RGB multi connector plugs into the back of the TV.
     It has to be soldered on to the end of a cable that brings RGB
     data to the TV.

  2) The SMK-0001 cable has a PX-34 at one end and a "microcomputer
     connector" at the other.  (From the drawing, it is not obvious
     whether this is a DB-9 or some other style of connector.  The
     microcomputer in the diagram looks more like a TI-99 than an IBM-PC.)

The PX-34 was listed for more than $30, and there was no guarentee that the
SMK-0001 had the connectors I needed.  So I built my own.

I purchased a standard 34-pin connector with flat ribbon cable from a
computer store, and wired up a box that has an Amiga-compatible 9-pin
video connector, 6 RCA phono jacks (red green blue sync left right), and
2 switches.  One switch selects sync-on-green versus separate sync, the
other enables TV audio while in RGB mode.  The Amiga has a 23-pin video
connector, so I had to use either a DB-23 to DB-9 cable, or use a
genlock (which uses a 9-pin output connector).

9-pin Video connector (used by A2002 and A1084 monitors, AmiGen genlock):
  01 = Sync ground	06 = no connection
  02 = RGB ground	07 = combined Sync
  03 = Red		08 = no connection
  04 = Green		09 = no connection
  05 = Blue
	07+01 go to a black RCA jack labeled "Sync"
	03+02 go to a red   RCA jack labeled "Red"
	04+02 go to a green RCA jack labeled "Green"
	05+02 go to a blue  RCA jack labeled "Blue"

On a 23-pin Video connector, 03=Red, 04=Green, 05=Blue, 10=Csync, and
16-20 are all ground.  Do not use 11=Hsync or 12=Vsync in this case.
(On the 9-pin male to 9-pin female cable I was using, I took some wire
cutters to pins 06, 08 and 09, since their signals confused my A2002
monitor.)

I planned on adding a second DB-9 for CGA (TTL) monitor, but never got
around to it.  The original IBM PC used 1=GND, 2=unused, 3=RED, 4=GREEN,
5=BLUE, 6=INTENSITY, 7=unused, 8=H-SYNC, 9=V-SYNC.

34-pin RGB connector:
  01 = +5V		18 = no connection
  02 = +5V		19 = no connection
  03 = ground		20 = Audio, Right
  04 = ground		21 = Mode Switch (digital RGB vs analog RGB)
  05 = Remote Ctl gnd	22 = no connection
  06 = Composite gnd	23 = Video (composite)
  07 = Audio ground	24 = Audio, Left
  08 = Red ground	25 = Red
  09 = Green ground	26 = Green
  10 = Blue ground	27 = Blue
  11 = Ground		28 = no connection
  12 = Blank ground	29 = Blanking
  13 = Hsync ground	30 = H-sync
  14 = no connection	31 = V-sync
  15 = Vsync ground	32 = no connection
  16 = Ground		33 = RGB vs Normal
  17 = no connection	34 = Audio Select (+5v enables audio)

01+34 go to a SPST switch (to enable audio while in RGB mode)
20+03 go to a red RCA jack labeled "Right"
24+07 go to a white RCA jack labeled "Left"
25+08, 26+09, 27+10 go to the Red, Green, Blue jacks (and Amiga connector)
13 goes to the Sync jack ground, 30 goes to a SPDT switch, which connects
it to either the Sync jack (separate) or the Green jack (sync-on-green)

The phono jacks are useable by a "GIGI" (DEC VK100 terminal with BASIC).
The 9-pin connector is useable by an Amiga 23-pin to 9-pin cable, or
by the 9-pin output of an AmiGen genlock.

See also the "Sci.Electronics.Repair FAQ on Pinouts" 
http://www.repairfaq.org/REPAIR/F_Pinouts3.html#PINOUTS_015
for "Sony RGB Multi Input (found on KV-25XBR TV's).

Links to other documents:

 *) http://www.hut.fi/Misc/Electronics/circuits/vga2tv/ for details
	on converting VGA video (15 pin) to NTSC (CGA, 9 pin).

 *) http://home.att.net/~billhudson/rybyrgb.pdf has a component (YPrPb)
	to RGB converter.

 *) http://elm-chan.org/works/yuv2rgb/report.html - look for "Circuit Diagram
	3 (Simplified Lv.2) BG part is omitted (Sync on RGB)".

-- 
Joe Smith  <js-cgi@inwap.com>  CA license plate: "POPJ P,"  36-bits forever!
Humorous disclaimer: "My Amiga 3000 speaks for me."    http://www.inwap.com/

 

Really neat looking.  Some of these raspberry pi based personal projects are super cool!

The volumetric display is built using multiple panelsโ€”each sporting an array of LEDs. The panels are spun at high speed while the Pi tells each LED when to illuminate. The end result is a 3D effect that you can see no matter which direction you're looking at it from. The framerate and spin speed has to be just right for the effect to work successfully.

I've been wanting to play around with the esp32's for a while.  They're very popular in home automation / home assistant circles as they kind of allow all sorts of things to just run out of the box.  This might be the product that gets me to play around with them.

โ€œNano ESP32 brings MicroPython and IoT to the fingertips of Arduino userโ€ โ€“ this is how Arduino describes their software and hardware compatibility. They believe that their new Nano ESP32 module is the best platform to learn MicroPython.

Tags:

Another project that makes me go, "Wow!"  Basically this reads the luma signals coming off of old computers or video game systems and with the help of another board allows them to be converted into something that can be output to HDMI.

LumaCode is an interface standard for transfering digital video data from retro computers. Its main application is to be used for machines that do not already expose the video signal in a digitally usable form. Because of its simplicity, the necessary hardware to generate the LumaCode signal for a specific machine can be made quite cheaply. The main effort to translate this signal to something to be used for an actual monitor or TV can then be done by an external upscaler. This upscaler is probably more expensive but can be shared by multiple retro computers.