Programming Reading Material What I’m Up To

JavaScript books that you can read online for FREE

My actual setup at my old office (February 3, 2020), where I coded in JavaScript all day.


  1. You’ve decided to learn JavaScript (or just need a refresher), and
  2. you’re short on cash due to the current economic situation

…you’re in luck! There are a couple of good books on JavaScript whose contents are available to read online, free of charge!

The first of these books is Eloquent JavaScript, Third Edition, written by Marijn Haverbeke and published by No Starch Press. It’s not just an introduction to JavaScript, but an introduction to programming in general. It’s beginner-friendly, which is one of the reasons why it’s the main book for the first part of the JavaScript/React course that I’m teaching.

You can Eloquent JavaScript, Third Edition online here.

The second book is JavaScript for Impatient Programmers, ECMAScript 2020 edition, written by Dr. Alex Rauschmeyer. Its coverage of JavaScript is more complete, but it’s a little less beginner-friendly, which is why it’s the backup book for my course. I’m going to incorporate some of its content into the course, and point students to the online edition if they’d like some additional reading material.

You can read JavaScript for Impatient Programmers, ECMAScript 2020 edition online here.

Current Events Deals Programming Reading Material

Happy Programmer’s Day! / Fanatical’s deal on FREE programming books

The origin of Programmer’s Day

The 256th day of the year (the 100th day in hexadecimal) is known as the Day of the Programmer. On most years, it’s September 13th, but on leap years — which includes this one — it’s September 12th.

The day was proposed by two Russian programmers, Valentin Balt and Michael Cherviakov, who petitioned their government to recognize this day. The recognition came on September 11, 2009 when Russian president Dmitry Medvedev signed the decree, making it official.

The deal

Whenever an “official unofficial” day like this happens, there’s always at least one vendor offering a deal. Day of the Programmer is no exception, and Fanatical are offering a bundle of three books from Packt for free in its honor!

Yes, I know that Packt is almost industry shorthand for “Not necessarily good, but not necessarily bad,” but at this price, you can’t say that these books aren’t worth every penny.

Here’s a video that goes a little deeper into deal, and a little deeper into poking a little fun at Packt:

Reading Material Security Tampa Bay

My list of links from class discussions during UC Baseline’s InfoSec week

Photo: The Undercroft sign, featuring the Undercroft’s “mascot” — a stag standing upright in a suit, leaning jauntily against an umbrella, walking stick-style.During the Information Security week of the UC Baseline cybersecurity program, the instructors asked us a lot of questions whose answers we had to look up. As a way to maximize participation, we were encouraged to share lots of links of the class’ Slack channel, which also functioned as a backchannel, as well as a way to chat with the students who were taking the course online.

The links that we shared in class were valuable material that I thought would be worth keeping for later reference. I’ve been spending an hour here and there, gathering them up and even organizing them a little. The end result is the list below.

Since these are all publicly-available links and don’t link to any super-secret UC Baseline instructional material, I’m posting them here on Global Nerdy. Think of this list as a useful set of security-related links, something to read if you’re bored, or a peek into what gets discussed during the InfoSec week of the UC Baseline course!

The links

  • U.S. Department of Health & Human Services: Cyber Security Guidance Material
    A collection of “educational materials specifically designed to give HIPAA covered entities and business associates insight into how to respond to a cyber-related security incidents.”
  • DFIR — Digital Forensics and Incident Response
    “Digital forensics and incident response is an important part of business and law enforcement operations. It is a philosophy supported by today’s advanced technology to offer a comprehensive solution for IT security professionals who seek to provide fully secure coverage of a corporation’s internal systems.”
  • Understanding RPO and RTO
    “Recovery Point Objective (RPO) and Recovery Time Objective (RTO) are two of the most important parameters of a disaster recovery or data protection plan. These are objectives which can guide enterprises to choose an optimal data backup plan.”

  • The 3-2-1 backup rule
    “For a one-computer user, the VMware backup strategy can be as simple as copying all important files to another device – or, ideally, several devices – and keeping them in a safe place. However, for multiple computer systems, things can be (and usually are) much more complicated, especially when it comes to virtual environments containing thousands of virtual machines. To protect physical machines, you would need to perform Windows Server backup or Linux Server backup, which might be difficult without effective backup tools. In these cases, a comprehensive data protection plan should include the 3-2-1 backup rule.”

  • Evaluating Risks Using Quantitative Risk Analysis
    “Project managers should be prepared to perform different types of risk analysis. For many projects, the quicker qualitative risk assessment is all you need. But there are occasions when you will benefit from a quantitative risk analysis.Let’s take a look at this type of analysis: What is it? Why should we perform it? When should it be performed? And how do we quantify risks?”

  • Buffer/stack overflows
  • Here are six basic human tendencies that are exploited in social engineering attacks:
    1. Authority: An attacker may call you pretending to be an executive in order to exploit your tendency to comply with authority figures.
    2. Liking: An attacker may try to build rapport with you by finding common interests, and then ask you for a “favor”.
    3. Reciprocation: An attacker may try to do something for you, or convince you that he or she has, before asking you for something in return.
    4. Consistency: An attacker might first get your verbal commitment to abide by a fake security policy, knowing that once you agree to do so, you will likely follow through with his next request in order to keep your word.
    5. Social Validation: An attacker may try to convince you to participate in a fake survey by telling you that others in your department already have. He or she may have even gotten some of their names and use them to gain your trust.
    6. Scarcity: An attacker may tell you that the first 10 people to complete a survey will automatically win a prize and that since some of your co-workers have already taken the survey, you might as well too.
  • Social Studies – A Lesson in Social Engineering Basics
    As we have become more and more vigilant against clicking on malicious links in suspicious emails, some social engineers have gone back to the classic person-to-person approach. Their basic strategy is to prey on vulnerabilities in human nature.
Programming Reading Material Tampa Bay What I’m Up To

Some parting wisdom to my Python students (or: Go read Julia “b0rk” Evans’ ’zines!)

Graohic: Computer Coach Training Center logoLast night was the final night of the Intro to Python Coding course that I’ve been teaching on behalf of Computer Coach for the past five weeks — Mondays and Wednesdays, 6:00 p.m. to 10:00 p.m..

I’d like to congratulate the students! It’s not easy to spend four hours an evening twice a week learning something completely new and unknown to you, but the students did just that. If you’ve ever been in any of my Tampa iOS Meetup sessions, you’ve seen my teaching technique — you’re not passively watching slides, but coding along with me, and even experimenting, just to see what happens. That’s I what I did with the Python class — we entered code and saw what happened, hopefully learning along the way.

As a farewell present to the students, I sent them a copy of So You Want to be a Wizard, a little “zine” written by Julia “b0rk” Evans for programmers who are starting out that’s full of good advice. I hope it helps them through those moments that every programmer has, when nothing seems to work and all you want to do is throw your computer out the window. I’ve posted it here as well, partly because it’s full of good advice that even experts need to remember, and partly because I want to make sure that everyone knows about Julia’s works.

Even the table of contents lets you that that you’re in for a fun read:

Julia has a whole set of zines, some of which are free…

…and some fancier ones, which come at a reasonable price, even for groups:

Once again, congratulations to the Intro to Python Coding students!

Current Events Players Programming Reading Material Tampa Bay

Local hero: Mike Dominick and his tech podcast, The Mike Dominick Show

Mike Dominick, who runs The Mad Botter — which develops automation/integration software — moved to the Tampa Bay area three years ago. It’s been my experience that Tampa Bay techies don’t do things halfway, so it shouldn’t be a surprise that in addition to the day job, he also has a technology- and open source-focused podcast named The Mike Dominick Show.

I had the privilege of being the guest for Episode 25 of the Mike Dominick Show, which we recorded yesterday afternoon (that’s its player above), and it was a fun conversation that covered:

  • The Toronto tech scene
  • Taking up the accordion
  • How I got into developer evangelism
  • Learning iOS programming via and then joining them
  • Remote work and the pandemic
  • WWDC 2020 and SwiftUI, Python and Burning Man
  • Windows Phone and my time as a Windows Phone Champ
  • What I’ve been doing while looking for work
  • The hidden opportunities that come with having to stay inside

Scrabble tiles in a tile holder spelling 'QUESTIONS'Mike ends each podcast with two questions — one tough and one easy. The tough question he asked me was “What question should I have asked you that I didn’t?” You’ll have to listen to hear how I answered that one.

Don’t just listen to my episode — be sure to check out previous ones, including these ones that I’ve enjoyed on my daily bike rides:

Programming Reading Material

My Smalltalk-80 literature and monitor stand

A couple of readers noticed my makeshift monitor stand pictured in the article Building a lean and mean (and frugal!) Python development machine with Peppermint OS:

Yup, it’s the holy trinity of books for Smalltalk-80, the definitive release of original recipe Smalltalk. You probably haven’t used Smalltalk, but you probably use a programming language influenced by it: Dart, Go, Java, Kotlin, Objective-C, PHP, Python, Ruby, Swift, and Scala, to name just a few.

They were a lucky find: they were in a banker’s box in a trash pile on the east side of downtown Toronto, sometime in late 1998. It’s probably my best dumpster-dive find, beating out even that still-functional cable modem or e-Machines starter Pentium machine that I would find a few months later. (Boom times make for great dumpster diving.)

The books are historically interesting. They’re written for readers who would spent all their computing time in the command line, and probably had never seen a GUI before, and they most definitely had never used an IDE. That’s why one of the books is devoted to Smalltalk’s interactive environment, and why one of the first illustrations in that book is this one:

A mid-1980s system capable of running the Smalltalk interactive environment, from page 6 of “Smalltalk-80: The Interactive Programming Environment”. Tap the photo to see it at full size.

Here’s a sample from the biggest of the books: Smalltalk-80: The Language and its Implementation. It’s the definition of a class named FinancialHistory:

The “FinancialHistory” class from pages 43 and 44 of “Smalltalk-80: The Language and its Implementation”. Tap the photo to see it at full size.

To a present-day programmer, the syntax may seem a little weird (it’ll be a little less weird to Objective-C and Swift programmers; now you know where that method-calling syntax comes from!), but they’d still find it familiar. To a programmer in 1984, the year the book was published, who probably subsisted on a steady diet of structured programming, this must’ve been positively mindblowing.

For the curious, here’s how you’d create an instance of FinancialHistory named HouseholdFinances with an initial balance of $350:

HouseholdFinances ← FinancialHistory new initialBalance: 350

Once created, we’d record household spending like so:

HouseholdFinances spend: 32.50 for: 'utilities'
HouseholdFinances spend: cost + tax for: 'food'
HouseholdFinances spend: 100 for: 'reasons'

(I just felt a disturbance in the Force, as if millions of Objective-C and Swift programmers cried out, saying “So it’s Smalltalk’s fault!”)

The smallest of the books, Smalltalk-80: Bits of History, Words of Advice, gets deep into the implementation details of Smalltalk-80. And I do mean deep: there’s a whole chapter devoted to an implementation of a Smalltalk garbage collector.

I’ll eventually return these books to their proper place on the bookshelf and replace them with a proper monitor stand, but in the meantime, they’re doing a pretty good job as the basis for my monitor, just as their content did a pretty good job as the basis for the programming languages I use.

do try to take care of these books, as their scarcity has made them a little more expensive than your standard textbook:

The current Amazon prices for the two hardcover Smalltalk-80 books.
Current Events Reading Material

I’ve finished revising the book!

I just put the last chapter of my revisions to iOS Apprentice, 8th edition to bed. It’s in the editors’ and layout’s hands now.

To me, this isn’t just any book. I learned iOS programming from an earlier edition, and from there, became a regular reader of the site that publishes the book, When the opportunity to write an article for them, I took it, and I gladly switched gears to Android, learned Google’s Face API, and the result was the highly rated Augmented Reality in Android with Google’s Face API.

From there, it led to all sorts of things, including not one, but two speaker sessions at their annual RWDevCon conference, where I did presentations on building iOS augmented reality apps — a two-hour intro session and a four-hour workshop. They were the highest-rated sessions of the entire conference. Here’s the two-hour version…

…and you can watch the four-hour version on

I also have a video series on developing ARKit apps. Here are some samples:

I was also a technical editor on the book ARKit by Tutorials, author of the Android articles Kotlin Cheat Sheet and Quick Reference and What’s New in Kotlin 1.3.

Now that I’ve finished writing the revision for the book, it’s time to look for my next gig. My last one — mobile developer at Lilypadevaporated in the COVID-19 economic downturn. In the meantime, I’ll be keeping busy as I continue to sharpen my development skills, write this blog, and do what I can for the Tampa tech community.

Are you looking for someone with both strong development and “soft” skills? Someone who’s comfortable either being in a team of developers or leading one? Someone who can handle code, coders, and customers? Someone who can clearly communicate with both humans and technology? Someone who literally wrote the book on iPhone development? The first step in finding this person is to check out my LinkedIn profile.