Categories
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 raywenderlich.com 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:

Categories
Current Events Programming What I’m Up To

RW Community Care: Free community support for mobile developers (and aspiring mobile developers, too!)

One of the reasons I write for raywenderlich.com — the premier mobile developer tutorial site — is that they’re wonderful people to work with, because they’re such good people. And as good people, they’ve put together something to help developers during this time of pandemic and quarantine: RW Community Care. It’s a series of office hours, livestreams, bootcamps, and more, running until August 22 — and all events are 100% free!

Here’s what RW Community care offers…

Read iOS Apprentice for free!

Cover of “iOS Apprentice, 8th edition”I learned iOS programming back in 2012 by reading and doing the exercises in an earlier edition of iOS Apprentice, which was written by Matthijs Hollemans. While I’d done some mobile development as a Windows Phone Champ during my time as a developer evangelist at Microsoft, it was this book that set me on my path as a mobile developer.

I owe a lot to this book, which is why it was a big honor to co-author the eighth edition with Eli Ganim. For the summer, you can read it online for free at RW Community Care. Whether you’re completely new to programming or — like me, back in 2012, experienced at programming but new to iOS development — you should check out iOS Apprentice on RW Community Care!

RW Talks

RW Talks happen weekly, cover all sorts of topics that mobile developers will find interesting, ranging from the deeply technical to the inspiring. Upcoming talks include:

You can also see past talks:

RW Chat

Can’t attend some of the other live events, or prefer to collaborate on discussions as a community? Or maybe you’re more the type to hash out challenges or problems with a group of like-minded developers? There’s a Discord server that you can join!

Office Hours

Not everyone has easy access to a senior mobile developer, especially when everyone seems so busy these days and our teams are more physically separate then ever before.

Good news: Office Hours are the next best thing to having a senior developer right next to you!

Review My Stuff

Want a senior member of the development community to look over your current project, run a critical eye over your professional résumé, or review some code you’ve been struggling with? This program is designed to do just that.

If you need someone to help you with deeper questions on your particular project, or to lend a critical eye to your resume or job search, you need Review My Stuff!

 

Categories
Hardware Programming What I’m Up To

New life for old computers

The current coronavirus pandemic has given me a chance to do some spring cleaning at home, which in turn led me to revive some old computers that have been sitting idly in a closet. I figure I could put them to work doing interesting things.

Compaq 610 (2009-era 4GB Core 2 Duo)

Installing Peppermint on the Compaq 610.

I’ve given an old Compaq 610 a new lease on life with Peppermint OS, a lightweight Linux distro that runs really well on old machines (the Compaq is a 2009-era machine with a Core 2 Duo processor). I also installed VS Code, Node, Anaconda, and React on it, making it a lean, mean machine for that upcoming Python course I’m teaching.

My very erudite makeshift monitor stand.

In the process, I also gave some old Smalltalk-80 books a new purpose as well: propping up the monitor that goes with the Compaq.

ThinkPad T430 (2012-era 16GB Core i5)

Preparing class notes (using Jupyter notebooks) for my upcoming Python course on the ThinkPad.

I replaced the CMOS battery on my trusty ThinkPad T430 and its older version of Ubuntu with Linux Mint. Its own internal wifi card finally died, and I simply decided to simply replace it with a faster USB wifi adapter that would arrive the next day instead of getting the slower internal card that could take as long as 6 weeks to arrive.

As with the Compaq, I set up the ThinkPad with VS Code, Node, Anaconda, and React. Since it’s got the processor power and 16 GB RAM, I also put Android Studio 4 and Flutter on it. Between some mobile projects in my near future, and the need to have a machine for running servers and other automated tasks, it’s going to prove to be quite useful.

That leaves me with one last machine to update.

Raspberry Pi 3 B (2016-era 1GB ARM A53)

My Raspberry Pi, as it was back in 2016.

I got the Raspberry Pi 3 4 years ago as my one impulse purchase on Amazon Prime Day 2016 (in mid-July of that year), and made regular use of it until around early 2018, when I used it for a Sonic Pi programming demo. It was high time to bring it back to active duty.

The Raspberry Pi’s “hard drive” is actually a microSD card that fits into an easily-accessed slot near one of the edges of the board. The process of updating the Pi’s OS is pretty simple: You use the Raspberry Pi imager on another computer with an SD card slot (and a microSD-to-standard SD card adapter) to rewrite its contents.

The Raspberry Pi is a pretty good Python machine, and I may end up using it while teaching that Python course, if only to show what’s possible on a computer that’s smaller than a deck of cards (when it’s not in a case) that you can get for about $50.

Since it’s powered by an ARM chip, it offers an opportunity for a kind of programming that most other machines don’t offer: ARM assembly programming!

The actual code from the first assembly program I wrote on my newly-reformatted Raspberry Pi: A “Tiger King”-themed version of “Hello World”.

It looks like it’s going to become an ARM-based world:

  • ARM-based chips power IoT devices,
  • Smartphones are generally powered by ARM-based chips, and
  • Apple’s upcoming switch from Intel x86-based chips to their own ARM-based silicon is likely have wide-ranging impact across the PC industry.

With this upcoming sea change, it doesn’t hurt to have some familiarity with ARM assembly language. Even though smartphones have ARM chips, the Raspberry Pi is a much better platform on which to learn ARM assembly, as it allows you to do development and execution in the same place.

It may have been a while since I’ve done assembly language programming — first on the 6502 in high school on Apple ][s and Commodore PETs, and later in university on NS32000 boards connected to Digital Unix machines — but I found my return pretty simple. It didn’t take long for me to cobble together a “Hello World!”-style app on the Pi.

Watch this blog for ARM assembly tutorials!

Categories
Hardware What I’m Up To

The dirty little secret about the ThinkPad T430’s CMOS battery

I’ve hung onto an old Lenovo ThinkPad T430 that’s been performing yeoman’s service over the past few years as a trusty Linux development machine and server. Its CMOS battery finally ran out, which meant that it no longer kept proper time when removed from power, which meant that I always got this message on startup:

I’m going to be teaching a Python course in the evenings in a matter of days, and wanted to be have the ThinkPad loaded up with Linux Mint 19.3 and Anaconda Individual Edition for that purpose. Without much thought and some very quick Googling, I found that Amazon could get a replacement battery to me the next day for less than ten bucks. Sold!

As promised, it arrived the next day. Here’s the box it came in:

I’m not complaining. There are all sorts of economics-based reasons for shipping something so tiny in that size box, and I’m grateful for the huge “crumple zone” provided by that box.

I knew where the battery went, thanks to an earlier adventure in which I upgraded the T430’s RAM (which requires you to do so in two separate locations on the machine). It’s under the central panel on the underside of the machine:

Replacing the battery was a snap: Disconnect the old battery’s connector, and then attach the the new battery in the same way.

I got curious. What was under the yellow protective plastic cover?

I peeled it off the old battery and found this:

The yellow protector concealed a run-of-the-mill CR2032 3-volt “coin”-type battery, and nothing more. The remote for my BOSE speakers uses one, as does my hand-held luggage scale. They also power the light on proctoscopes, in case you were wondering what kind of batteries yours took:

You can buy them in 5-packs at your local drug store, and their unit price comes to about 50 cents each.

I have a bunch of them in my drawer, and could’ve simply taken the connector from my dead battery and taped it to a fresh one. The red lead goes to the battery’s + side, while the black lead goes to its – side:

The money doesn’t bug me as much as the missed DIY opportunity, even if it was an incredibly minor one. I’m posting this for the benefit of anyone who has to replace a CMOS battery soon: You can do it without shelling out for an “official” battery!

 

Categories
Current Events Tampa Bay

What’s happening in the Tampa Bay tech/entrepreneur/nerd scene (Week of Monday, June 29, 2020)

Hello, Tampa Bay techies, entrepreneurs, and nerds! Welcome to the Fourth of July edition of the list! Here’s the list of the week’s online-only events for techies, entrepreneurs, and nerds based in an around the Tampa Bay area.

The Fourth falls on a Saturday this year, and when combined with COVID-19, that means that Friday, Saturday, and Sunday don’t have much going on.

Keep an eye on this post; I update it when I hear about new events, it’s always changing. Stay safe, stay connected, and #MakeItTampaBay — and have a safe and happy Fourth of July!

When will this list include in-person events?

It could be a while. I’ll let this picture and video do all the explaining…

Monday, June 29

Tuesday, June 30

Wednesday, July 1

Thursday, July 2

Friday, July 3 / Saturday, July 4 / Sunday, July 5

At the time of writing there aren’t any online tech, entrepreneur, or nerd events in the Tampa Bay area for Friday, Saturday, and Sunday. Given that it’s the 4th of July weekend, that shouldn’t be too surprising. Enjoy the long weekend, and get your America on!

Do you have an upcoming event that you’d like to see on this list?

If you know of an upcoming event that you think should appear on this list, please let me know!

Join the mailing list!

If you’d like to get this list in your email inbox every week, enter your email address below. You’ll only be emailed once a week, and the email will contain this list, plus links to any interesting news, upcoming events, and tech articles.

Join the Tampa Bay Tech Events list and always be informed of what’s coming up in Tampa Bay!


Categories
Career

That time I did a children’s technology show for Microsoft

I had a lot of fun, surreal moments during my time as a developer evangelist at Microsoft, and among the most surreal and fun was the short-lived time when I had a technology show for kids called Developer Jr.

Hosted on Butterscotch.com, a technology education video site launched by Tucows (a prior employer) in 2008, Developer Jr. was an online video show for children ages 7 through 12. Our goal was to teach kids programming and other creative things they can do with computers and technology (particularly Microsoft technology). It starred me as the host and tutor, and “Junior”, an impish puppet played by Brian Hogg. It was sponsored by Microsoft Canada and produced at Butterscotch.com’s studios in Toronto’s Liberty Village neighborhood in early 2010.

The premiere episode showed how you could use the code-free game development system Kodu (which ran on Windows and the Xbox 360) to make your own videogames:

The follow-up episode covered making your own movies with Windows Live Movie Maker:

There was also this interview with Butterscotch.com’s Matt Harris in which we discussed the making of Developer Jr.:

Unfortunately, Developer Jr. was cancelled after two episodes for financial reasons. There wasn’t a department within Microsoft Canada who had a budget aimed at the 7 – 12 year-old set.

I’m still pretty pleased with the work that we did during that too-short season, and I’d like to thank Brian Hogg, video wizards Sean Carruthers and Matt Harris for making the magic happen, and Andy Walker for getting the whole thing started!

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