Deals Programming Reading Material

A quick and dirty guide to installing a COBOL compiler and IDE on macOS (and get a COBOL book at a discount)

OpenCobolIDE running on macOS, displaying the code for the “Chunky Bacon” version of “Hello, World!”.

OpenCobolIDE running on my MacBook Pro. Tap the screen shot to see it at full size.

In an earlier post, I played around with an online COBOL compiler. Seeing as I’m a COVID-19 unemployment statistic and there’s a call for COBOL developers to help shore up ancient programs that are supposed to be issuing relief checks, I’ve decided to devote a little more time next week (this week, I have to finish revising a book) to playing with the ancient programming language. I’ll write about my experiences here, and I’ll also post some videos on YouTube.

If you want to try your hand at COBOL on the Mac, you’re in luck: it’s a lot easier than I expected it would be!

Get the compiler: GnuCOBOL

COBOL isn’t used much outside enterprise environments, which means that COBOL compilers and IDEs are sold at enterprise prices. If you’re an individual programmer without the backing of a company with a budget to pay for developer tools, your only real option is GnuCOBOL.

On macOS, the simplest way to install GnuCOBOL is to use Homebrew.

If Homebrew isn’t already installed on your system (and seriously, you should have it if you’re using your Mac as a development machine), open a terminal window and enter this to install it:

If Homebrew is installed on your system, first make sure that it’s up to date by using this command in a terminal window:

Then install GnuCOBOL by entering the following:

Once that’s done, GnuCOBOL should be on your system under the name cobc. You can confirm that it’s on your system with the following command…

…which should result in a message like this:

cobc (GnuCOBOL) 2.2.0
Built Aug 20 2018 15:48:14 Packaged Sep 06 2017 18:48:43 UTC
C version "4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.43.1)"
loading standard configuration file 'default.conf'
cobc: error: no input files

Get the IDE: OpenCobolIDE

Unless you’ve got some way to configure your text editor to deal with the language’s quirks, you really want to use an IDE when coding in COBOL. Once again, an open source project comes to the rescue: OpenCobolIDE.

OpenCobolIDE relies on Python 3, so make sure you’ve installed Python 3 before installing OpenCobolIDE. I installed it on my computer by installing the Python 3 version of Anaconda Individual Edition.

If Python 3 is already on your system, you have a couple of options for installing OpenCobolIDE:

  1. Installing OpenCobolIDE using the Python 3 package installer, pip3, which gives you a program that you launch via the command line. This gives you OpenCobolIDE version 4.7.6.
  2. Downloading the .dmg disk image file, which gives you an app lives in the Applications folder and which you launch by clicking an icon. This gives you OpenCobolIDE version 4.7.4.

I strongly recommend going with option 1. OpenCobolIDE is no longer maintained, so you might as well go with the latest version, which you can only get by installing it using Homebrew. Version 4.7.6 has a couple of key additional features that you’ll find handy, including:

  • Support for all the COBOL keywords in GnuCOBOL 2.x. This is a big deal in COBOL, which has something in the area of 400 reserved words. For comparison, C and Python have fewer than 40 reserved words each.
  • Better indentation support (and you want that in COBOL, thanks to its ridiculous column rules from the 1960s).
  • Support for compiler flags like -W and -Wall — and hey, warning flags are useful!

To install OpenCobolIDE using the Python 3 package installer, pip3, enter the following in a terminal window:

To launch OpenCobolIDE, enter this:

You’ll be greeted with this window:

Tap New file. You’ll see this:

For Template, select Program, enter the name and location for your program file, and tap OK.

You should see this:

Tap the screen shot to see it at full size.

Don’t mistake those red vertical lines for glitches. They’re column guides. COBOL is from the days of punched cards, and is one of those programming languages that’s really fussy about columns:

  • The first 6 columns are reserved for sequence numbers.
  • Column 7 is reserved for a line continuation character, an asterisk (which denotes a comment) or another special character.
  • Columns 8 through 72 are for code, and are broken down into 2 zones:
    • Area A: Columns 8 through 11, which are used for DIVISIONS, SECTIONS, and PARAGRAPHS, as well as specifying levels 01 through 77 (COBOL is weird).
    • Area B: Columns 12 through 72, which is for the rest of the code.
  • Columns 73 through 80 make up the “identification” area and are ignored by the compiler. It’s useful for very short comments along the lines of “TODO” or “HACK”.

Get the book: Beginning Cobol for Programmers

There aren’t many current books on COBOL out there. Apress’ Beginning COBOL for Programmers is probably the best of the bunch, and unlike many old COBOL books, makes sense to developers with a solid grounding in modern programming languages.

The ebook is available for US$49.99, but if you use the coupon code SPRING20A by the end of Thursday, April 16, you can get a $20 discount, reducing the price to $29.99. If you want the book for this price, take action before it’s too late!

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 can pick up COBOL well enough to write useful articles about it on short notice? The first step in finding this person is to check out my LinkedIn profile.

Current Events Programming

Hold tight, New Jersey — I’m comin’ to save you!

Want to experience the clunkiness that is COBOL? CodingGround’s online compiler awaits!

Wondering what the title of this article is all about? Start here:

Current Events Programming Reading Material

Did I mention that I’m revising a book that I co-wrote last year?

Cover of “iOS Apprentice, 8th edition”

I may be out of a job, but from now until the end of next week, I do have work: finishing the revision of iOS Apprentice, Eighth Edition, a book that teaches you how to write iPhone and iPad apps, even if you have no prior programming experience.

In its 1200+ pages, the book walks you through building 4 apps:

  1. Bullseye, a simple game where you learn the basics of iOS programming,
  2. Checklists, a “to-do” lists app that teaches you how to make use of table views, one of the most common and useful interface elements,
  3. My Locations, which introduces maps and geolocation in apps,
  4. Store Search, a project that introduces iPad development and which uses networking to search the iTunes Store.

iOS Apprentice is a special book for me, because I learned iOS programming back in 2012 (when the iPhone 4S was the newest model) from an earlier edition. The book launched me into the world of iPhone development, and as a result of that, into the world of mobile and IoT development in general. Since then, I’ve always wanted to repay the book by writing a later edition. Last year, I got my chance when I interviewed to become one of its authors and was chosen.

For a taste of what iOS Apprentice is like, check out this video series below, which is based on the first 8 chapters of the book, which I wrote. It shows you how to get started as an iOS developer by walking you through the process of making Bullseye, a simple game:

You can get your hands on this book in a couple of ways. If you want the paperback edition, you can get it at…

Screen capture of the page for “iOS Apprentice 8th edition”

…and if you want the ebook edition (which comes with free updates, including the one I’m working on right now), you can get it at the site:

I’m also bringing back the Tampa iOS Meetup in the next couple of weeks, where I’ll use the programming exercises in iOS Apprentice as a starting point. If you’ve been meaning to learn iOS programming, keep an eye on Tampa iOS Meetup — it’s coming back!

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? The first step in finding this person is to check out my LinkedIn profile.

Career Editorial Programming

Here’s a bragging right that no other techie has

Now that I’m looking for my next gig (my last one was a victim of COVID-19), it’s time to revive this video that New Relic released a few years back to promote their application monitoring service.

Titled We Love Developers, it features some of the brightest lights in the industry:

  • Matz: Yukihiro Matsumoto, creator of the Ruby programming language
  • Guido van Rossum: Creator of the Python programming language
  • Linus Torvalds: Creator of the Linux operating system and the Git version control system
  • DHH: David Heinemeier Hansson, creator of the Ruby on Rails framework
  • Bill Joy: Co-founder of Sun Microsystems and creator of the vi text editor
  • James Gosling: Lead designer of the Java programming language
  • Sir Tim: Tim Berners-Lee, creator of the World Wide Web
  • Marc Andreesen: Co-creator of Mosaic, the first widely-used web browser, co-founder of Netscape, co-founder of Andreesen Horowitz
  • Woz: Steve Wozniak, creator of Apple
  • Rasmus Lerdorf: Creator of the PHP programming language
  • The Gu: Scott Guthrie, creator of ASP.NET, Executive VP of Microsoft’s Cloud and AI group
  • Sergey Brin: Co-founder of Google
  • Dries Buytaert: Creator of Drupal

At the end of the video, they wanted to use the image of a more “everyman” developer to represent you, their customer. Guessed who they picked:

My photographer friend Adam P. W. Smith (my old business partner; together, we were datapanik software systems and we worked on some pretty interesting projects back in the late ‘90s) took the picture back in August when I was visiting him in Vancouver. I’d arrived a day early for the HackVAN hackathon and was sitting in his kitchen getting some work done when he decided to get a couple of shots. He poured me a glass of scotch, set it on my accordion, which I’d set down on the chair beside me, and staring taking pictures.

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? The first step in finding this person is to check out my LinkedIn profile.

Programming Reading Material

Learn iPhone/iPad augmented reality app development with this free tutorial!

If you’re taking advantage of the stay-at-home order to boost your development skills, I have something for you: a FREE tutorial that shows you how to build augmented reality apps for the iPhone and iPad using Apple’s ARKit. This tutorial has a full set of materials: a 97-minute video of the tutorial, a written step-by-step guide for the tutorial, as well as starter and finished code for both tutorial projects.

In the tutorial, you’ll build two apps:

Happy AR Painter: A Bob Ross-themed AR painting app that lets the you use your iPhone or iPad to “paint” in 3D space using geometric shapes that can be animated. Think of it as a much less expensive version of Google’s Tilt Brush!

Raykea: IKEA Place was one of the hottest apps when ARKit first came out. It lets you see what IKEA furniture would look like in your home! Raykea is a similar app that you can build, and you’d be surprised how easy it is to put together (probably easier than putting IKEA furniture together).

Here’s the tutorial video, which was shot at RWDevCon 2018:

And here are the tutorial materials:

Give the tutorial a try, and if you have any questions, feel from to put the in the comments or contact me directly at!

Deals Programming Reading Material

Pluralsight’s courses are free for the month of April!

Pluralsight is making its 7,000+ video courses completely free for the month of April! If this is the first time you’ve heard this news, you still have 27-ish days to take advantage of this opportunity.

One of the nicest things about this deal is that you don’t have to provide a credit card number to sign up. They could’ve easily asked for it and counted on you to forget to cancel your account, allowing them to charge you on May 1st. Instead, they’re just letting you create an account with very little info and are hoping that you’ll like your course so much, you’ll choose to become a subscriber in May:

In case you’re curious, here’s a sampling of the Pluralsight courses I’m interested in:

Between the day job at Lilypad and finishing the next version of iOS Apprentice, there’s no way I’m going to be able to do all the courses I want over the month. I’m pretty sure that I’ll play sessions from the conferences in the background while working, and perhaps see what their Unity courses are like.

Be sure to sign up and see if there are any courses that you’d like to take for free!

Career Current Events Programming Tampa Bay

What skills and subjects are you betting your development career on? Let’s meet up about it!

Sure things, maybes, and longshots

Back in November, in an article promoting the Tampa Bay Full Stack Meetup, I wrote about the concept of balancing my skills in the same way some financial people balance their stock portfolio: 70 percent “sure thing” programming languages and technologies, and 30 percent gambles — 20% “maybes” and 10% “longshots”.

Here’s what I wrote about my portfolio:

  • I invest the majority — about 70% — in “sure thing” skills, such as mainstream platforms, programming languages, and technologies. In my case, this is…
    • C#,
    • JavaScript,
    • Kotlin,
    • Mobile operating systems, namely Android and iOS,
    • Python, and
    • Swift.
  • I spent about 20% on “maybe” technologies, and one of these is Flutter, which also involves the Dart programming language.
  • The remaining 10% of my time on sharpening my skills is spent on longshots. For me, this is blockchain technology.

For the most part, with the notable exception of Flutter and Dart, my portfolio’s been pretty stable for the past few years. I’m probably due for a review.

A 70-30 technology skills map for Tampa Bay techies

Here’s a 70-30 tech skills map, which takes a bunch of technologies that Tampa Bay companies are currently hiring for, and divides them into two categories:

  • The 70% category, which consists of things for which local companies are generally hiring for at the moment, and
  • the 30% category, which comprises things for which local companies might hire for in the future, or which might qualify you for an interesting remote job.

Here are the languages and technologies represented by the logos in the 70% category, listed in alphabetical order…

  • Angular
  • AWS
  • Azure
  • Java
  • JavaScript/ECMAScript
  • .NET/.NET Core
  • Node.js
  • PHP
  • React / React Native
  • Ruby on Rails
  • SQL
  • Vue.js

…and here are the languages and technologies represented by the logos in the 30% category, listed in alphabetical order, with some notes for each:

  • Artificial intelligence / machine learning / whatever else you want to call it: The buzzwords of the moment, and the answer to the question “What if we made algorithms that came up with algorithms?”
  • Assembly language and C: Both appear to be making a comeback in the age of IoT devices, where you’re trying to squeeze big performance out of tiny systems.
  • Augmented reality / virtual reality / glasses: Once upon a time, “multimedia” was a specialized subject, now it’s just part of everyday computer interfaces. AR, VR, and glasses may eventually be like this.
  • Dart / Flutter: Dart is an object-oriented, class-based, garbage-collected language with C-style syntax, and Flutter is a cross-platform mobile app development framework.
  • Elixir / Phoenix: Elixir is a functional, concurrent, general-purpose programming language that run on the Erlang virtual machine, and Phoenix is an Elixir-based web development framework.
  • Fuschia: Google’s multi-platform operating system for computing devices of all sizes, from embedded systems, smartphones, tablets, and desktops/laptops.
  • Go: A C-like object-oriented language for systems-level programming
  • “Internet of Things”: Including small systems like the Arduino and Raspberry Pi.
  • Kotlin: An early paper on the language said “Don’t call it ‘Swift for Android’, but that’s pretty much what it is, and that’s not a bad thing. It’s Swift for Android.
  • Python: First eclipsed by Perl in the ’90s and then Ruby in the ’00s, it’s now coming into its own thanks to its math, scientific, and data science libraries and the rise of machine learning, I’m glad to see Python finally being recognized. Out of all the languages in this category, this is the only one I’ve ever been paid to code in.
  • R: A language and environment for statistics. Like Python, it’s become popular because of its applicability to data science and machine learning.
  • Rust: A multiple-paradigm programming language with an emphasis on concurrency. The consistent winner of Stack Overflow’s “Most Loved Programming Language” for the past four years.
  • Scala: The answer to the question “What if Java didn’t suck and had better support for functional programming?”
  • Serverless tech: A refinement of cloud computing that lets you run applications and services on the cloud without thinking about the servers they run on. Amazon’s AWS Lambda, Google’s Cloud Functions, and Microsoft’s Azure Functions are examples of serverless offerings.
  • Smart watches: These are a fantastic platform for what I can “nano-tasks”: little tasks that take ten seconds or less.
  • Swift: Objective-C was getting long in the tooth, so Apple created Swift. It’s a pretty nice language, and pretty much necessary if you’re developing for anything Apple.

This is by no means a complete list — think of it as a starter, and I’m writing it only from a developer point of view.

After viewing this list, you may be asking yourself “So which do I choose?” That’s what I’m doing right now.

Would you like to meet up to discuss your 70/30 plan?

Let me know if you’d like to talk about this at the next Coders, Creatives, and Craft Beer meetup, which I’m looking to schedule for near the end of the month. It’ll still follow the same informal “we’re just here to chat” format, but it might be something to discuss.