Tag: Programming

Re-Infected by Smalltalk

I seem to be afflicted with a chronic, recurring condition, a sort of living nightmare in which I imagine myself a programmer. I’ve experienced this numerous times over the past several decades, but it appeared to be finally cured in my retirement as I focused my life more on spiritual matters.

But recently, I decided that I wanted to develop a couple of Web and mobile applications in support of my spiritual teaching as well as for the nonprofit Job One for Humanity volunteer work that I’m doing. Without much of a commitment to actually doing something, I started poking around in the world of mobile application and web development.

By a chain of circumstances I can only be described as being dragged down a dark rabbit hole, I encountered a language which I had explored previously as a possible development language and environment. I’m referring to the Smalltalk-inspired Amber language. In the three or so years I have been away from Amber, it appears to have undergone considerable growth and gained in popularity. More importantly, it appeared to have overcome most if not all of the packaging, delivery, and performance issues inherent in traditional Smalltalk.

Ever since I first discovered it something like 15 or 20 years ago, I have loved Smalltalk. It is my favorite, widely-used programming language by a lot. (If I omit the qualifier, “widely-used”, then that honor goes to LiveCode.)

So I was excited to encounter a vastly improved Amber product which is a tool that generates high-quality JavaScript code from working Amber applications. Even though I’m not a systems-level guy, I set out in an effort to install Amber on my Mac with complete confidence it would be a positive experience.

Man, was I wrong!

As it now stands, Amber does not apparently have any easy way to install on any platform. It involves so many dependencies and requires so much command console typing (which for me is far more painful than programming) that I was tempted several times to give up. But I persevered. However, I kept encountering roadblocks I could not decipher or understand, and when I sought help in the Amber community — or in one of the communities supporting one of the dependency modules — I got very little response and nothing definitive that actually worked.

As a result, after three days of mucking about with it, I gave up.

But that is not the end of the story. In the course of investigating Amber, I discovered that a newer dialect of Squeak Smalltalk — which, over recent years, has become the Gold Standard of free Smalltalk environments — was also capable of spitting out web applications using generated HTML, CSS, and JavaScript. This relative newcomer is called Pharo.

Not only does Pharo have a single-button install, its documentation is really outstanding. There are a number of free e-books available, several of them authored or co-authored by the original developers of the language, and they have a wonderful tutorial as well as an online video course spread over several weeks of in-depth training.

So now I’m off, once again infected by Smalltalk, learning this new dialect and the robust environment in which development takes place, for the moment at least happy as a clam. I truly hope the Amber team gets its act together on the installation side, because I’d love to explore it as well, but for now I’m sitting sale to master Pharo and make these new application ideas a reality.

P.S. to Laurence. You knew this would happen, didn’t you?


Hour of Code 2015 is Coming. Please Sign Up!

hour-of-code-logoThe 2015 Hour of Code (HOC) is scheduled for the week of Dec. 7, which coincides with National Computer Science Week. (Who knew, right?)

Last year, I volunteered to help with HOC at my granddaughter’s elementary school and although I probably bit off more than I could chew, it was a tremendously exciting and rewarding experience. We got some great local media coverage to raise awareness of the importance of programming in the world and, equally importantly, we exposed more than 125 kids to the actual art and process of coding.

This is one of the best thought-out and supported events of any kind I’ve ever become engaged with. The looks on the faces of those kids as they discovered how to approach and solve a problem, the shouts of joy and triumph when their little programs ran, and the look of confidence and gratitude on the faces of the teachers and the principal were among the greatest rewards I’ve ever experienced.

More than 100,000,000 kids in 40 countries have been exposed to the Joy of Programming during the time HOC has been operating. But it really is an all-volunteer effort.

I encourage and urge you to consider volunteering even a single hour to HOC this year. More than 7,000 teachers have already signed up asking for some support during the project and as we get closer to the date, more and more teachers will do so. There are HOC programs and projects for all levels of K-12 education and the pre-packaged materials are really, really excellent.

Please consider joining me to support HOC this year. Just click this link and look over the program. Decide where you can be of most help, where you can derive the greatest joy and happiness.

The kids will appreciate you. The teachers will be effusive in their thanks. And  you’ll know you’ve done a Good Thing!

I’m Going to do “Hour Of Code” This Year. How About You?

Hour of Code LogoLast year, some 15 million students around the world learned some basics of computer programming in a wildly successful “Hour of Code” experience. This is an amazing program assembled by an eclectic group of technology companies and philanthropists and educational institutions in which people are taught some basic ideas of programming in a single hour at no cost to anyone.

I checked out the program after the fact last  year and was fascinated. This year, I’ve  volunteered to coordinate the program at my granddaughter’s school in Monterey. So every day from Dec. 8-13, I’ll be spending my time in the computer lab at her school, helping students and a few teachers experience the joy of moving past passively using a computer to bossing it around.

This program is exciting, easy to implement, free to everyone, features a lot of celebrity names from technology and entertainment, and has the potential to spark serious interest in our profession. Plus last year, it resulted in more than 10 million girls being introduced to programming.

I hope you’ll consider volunteering to help out with your local school or district in 2014 as the sponsors hope to exceed last year’s enrollment and expose even more kids to the empowerment that is computer programming.


My Take on Best Programming Language for Beginners

An article appeared on the Popular Mechanics Web site in the last couple of days asking what I refer to as Silly Question #42: “What’s the best programming language for beginners?”

Tag cloud of programming languagesAfter a fairly interesting survey response, the author of the piece somehow got science fiction author David Brin (one of my favorites) into an interview and asked him what he thought. While I’m not sure what makes him an authority worth interviewing on this subject, his answer was so backward-looking and wrong-headed that I had to jump into the conversation.

Here’s what I posted to that article:

Brin reminds me of people who always think that what was going on in the “Good Old Days” is somehow better than whatever we have today.

The fact is, Python comes preinstalled on all Macintosh computers at least, and while it may take a few minutes for a complete novice to figure out how to get at it, it isn’t all that difficult. Furthermore, Java Script is immediately available from the URL box in every web browser. Again, it may take a few minutes to figure out how to use that region for programming, but it’s not all that hard.

Lamenting the loss of Basic in today’s computers is not only futile, it’s also very backward. Basic died for a lot of reasons, only one of which was its disappearance as a universal built-in language. Frankly, today’s youth would be wasting gobs of time and energy learning to program in a language that failed utterly to keep up with modern programming trends.

Finally, it’s pretty silly to ask the question posed by this article. There is not one programming language that is best for all beginners. There are too many factors to take into account in attempting to answer that question. Python is a great answer for many beginning coders, but so are Smalltalk, JavaScript, and LiveCode.

In the article, the writer cited a survey that showed the following languages are used in U.S. high schools to teach programming. I’m listing them here, as they did, in descending order of popularity:

  • Java (49%) – WTF? Worst possible beginning programming language with the sole exception of C++
  • Scratch (34%) – Both it and Alice are good choices in many respects but both seem a little immature not in terms of their underlying languages but in terms of the kinds of apps for which they are intended, for high school coders. Plus their names are a tad embarrassing for a high school kid to share with friends. “I’m gonna go Scratch some Alice.” Really?
  • Alice (30%)
  • MS Visual Basic (18%) – VB is actually a decent language and it does employ lots of people but it seems just a tad archaic compared to modern languages.
  • Python (14%) – Great choice, IMNSHO
  • App Inventor (13%) – I find this weird because it’s the only one of the bunch that is only useful as a skill if you program Android apps.

Before you can really answer Silly Question #42, you have to know a few things.

  • Why do you want to learn to program? For career purposes? To learn logical thinking processes? To understand how things work? To study the language as a form of communication?
  • How old are you?
  • What kinds of apps (projects) are you interested in building?
  • How much time and money do you have to spend on this learning task?
  • Does your company have a requirement or expectation? Do your clients or prospects?
  • Do you want to develop apps for the Web, for mobile devices, or the desktop?

That’s just a starter list.

An Upgrade Warning to Make You Feel All Warm and Fuzzy. NOT!

I was asked to upgrade GoToMyPC today. This is one of my cornerstone apps, so I immediately launched the upgrade.

In the dialog box appeared this warning:

If the upgrade fails, you must log in at www.gotomypc.com to install and register this computer again.

Seriously? You can’t design an upgrade process that can fail gracefully? Wow. That gives me all kinds of jitters.

Warnings like this always suggest to me lazy programming and support-as-an-afterthought.


My Approach to WordPress Development Has Been So Inefficient

During the past couple of weeks, I’ve been reassessing my commitment to WordPress as my main site-building platform and seriously considering returning to my roots as a Dreamweaver user. In the process, and after consulting with one of the most intense WP developers I know, I’ve discovered that the problem doesn’t lie with WordPress but with my inefficient and perhaps wrong-headed tool selection and usage.

wplogoAs a result, I’m recommitted to WordPress but I’m completely altering my workflow and methodology. I’m writing this long post in the hopes that some other developer may run across it and save a lot of frustration, anxiety and agonizing effort that comes from not stopping to re-think the best ways to approach WordPress development tasks.

The Problems

As a quick summary, I was having a number of issues dealing with WordPress and its associated themes that, on analysis, turned out to boil down to a few categories of problems:

  1. I was constantly frustrated trying to identify which specific CSS object or element to tweak when I wanted to make a change to a Theme’s defaults. I am comfortable enough with CSS that I can almost always make the change when I spot its position, but styles.css and other theme-supporting stylesheets refused to yield their secrets to me all too often. I’d spend valuable time trying to figure out what the Theme developer named the heading in that widget or div so that I could adjust its vertical spacing or change its font.
  2. Trying to avoid problems of file synchronization while maintaining URL sanity, I tended to do all my development work right in the WordPress Dashboard environment, augmented by a few plugins. As I learned the hard way, the built-in editor sucks. And the inability to do multi-file searches meant that, once again, I spent a lot of valuable time figuring out where and in which file a specific change needed to be made.
  3. I’d spend hours finding a theme that looked as close as I could come to the design I had in mind only to discover that the way the design was achieved was awkward (at least to my mind) and difficult to decode. So I’d have to disassemble the Theme and put it back together again, negating the value of the theme in the first place.

There were at least a dozen other, lesser issues, but the more I studied the problem, the clearer it became that these were the core concerns I had developed over three years of working with WordPress.

I won’t bore you with all of the perfectly understandable reasons I had these issues; that’s not relevant to this discussion.

HyperCard Turning 25, So I Have to Wax Nostalgic

HyperCard, perhaps the greatest technology Apple ever abandoned, will mark the 25th year of its birth soon. ArsTechnica published a nice reflection piece on it, which has led to hundreds of comments and spinoff columns.

I added my two cents' to the conversation a while ago and you can read it here

There was a lot about my involvement in, feelings about and love of HyperCard and HyperTalk that didn't make it into that piece. I'll share some of those in coming days and posts. You can subscribe to my tech blog's RSS feed to stay abreast of those posts.

REVisiting REVolution

A strange thing has happened to me in recent days. I've found myself becoming re-energized and re-excited about app and Web development using my once-and-future favorite programming tool. Runtime Revolution (aka RunRev) was my bread-and-butter for several years. It has undergone a significant upgrade in its capabilities, deliverable platforms, and even sports a new name: LiveCode. But it is still, at heart, a user-friendly and highly approachable scripting language.

Two things drew me back.

I originally left the fold reluctantly because I wanted to build Web apps and LiveCode (I'll get used to the new name I'm sure) wasn't ready to allow that in ways that I thought would be useful. Today, that situation hasn't changed much but I have decided I'm not likely at this late stage of life (never mind) to create any world-class, best-selling software for the Web that needs to be deliverable only as a Web app. If I do come up with something, I'll use my other favorite tool, NOLOH, and just put up with the nastiness of PHP to gain the elegance of the framework. But for Web work for clients — which describes two projects I'm about to begin work on — the fact that LiveCode requires a browser plugin is not an insurmountable obstacle.

The second thing that drew me back was the attractiveness of building for the mobile market. There, I think I actually do have ideas for a couple of programs that have serious income potential. While I believe that building such technology particularly for iOS and Android platforms is best handled with Web sites/apps and not with standalone apps, the marketing problems posed by the former are staggering if not insurmountable. With standalone apps, you have the app stores (with all of their downsides, almost all software for sale on those platforms goes through them). Using LiveCode, I can write these apps once and then deliver them on all major desktops and both major mobile platforms.

I'm amazed at how quickly I'm remembering how to do this scripting work. Some of it's a little rusty and my brain has a tad more fuzz than it once had but I'm feeling fairly comfortable already and I'm sure it'll start flooding back in as I begin to use it.

The more things seem to change, the more they stay the same. Even in technology. Who'd have thought?