Title photo
frugal technology, simple living and guerrilla large-appliance repair

Regular blog here, 'microblog' there

Many of my traditional blog post live on this site, but a great majority of my social-style posts can be found on my much-busier microbloging site at updates.passthejoe.net. It's busier because my BlogPoster "microblogging" script generates short, Twitter-style posts from the Linux or Windows (or anywhere you can run Ruby with too many Gems) command line, uploads them to the web server and send them out on my Twitter and Mastodon feeds.

I used to post to this blog via scripts and Unix/Linux utilities (curl and Unison) that helped me mirror the files locally and on the server. Since this site recently moved hosts, none of that is set up. I'm just using SFTP and SSH to write posts and manage the site.

Disqus comments are not live just yet because I'm not sure about what I'm going to do for the domain on this site. I'll probably restore the old domain at first just to have some continuity, but for now I like using the "free" domain from this site's new host, NearlyFreeSpeech.net.

Sun, 15 Feb 2015

What is 8th? A cross-platform development environment/language ... but there's a $199 catch

I'm coming into this blind. I saw a link to the 8th site and found out that 8th is a while new programming language and development environment that allows you to code once and run on:

  • Windows
  • OS X
  • Linux
  • Android
  • iOS

Really?

As the 8th site says:

Program code is only written once, in 8th™, regardless of how many platforms are targeted. The code is then packaged to run on the target operating system, which may be any combination of Windows, OS X, Linux, Android or iOS. Differences between operating systems are handled by 8th™, letting the developer leverage existing knowledge across all platforms.

And it looks like simplicity is important to 8th. Here is the "Hello, World" program in 8th:

"Hello, world!\n" . bye

That's easy, all right.

I don't know enought about 8th, or about what exactly you can code with it, but the idea that these applications are so vigorously cross-platform really gets me thinking. Even just in the mobile space, the ability to code once for both Android and iOS is huge. And add to that all the major desktop OSes (Windows, OS X, Linux), and this could potentially be something.

There IS a catch (and truthfully, I didn't see it coming)

To produce "packaged applications" with 8th, you have to pay per year.

I'm not sure this is good, let alone -per-year good.

What do you think?

Wed, 03 Dec 2014

Unhappy Node.js users fork the Joyent-run project, creating community-driven io.js

The Node.js server-side Javascript runtime is today’s hot thing. You might say it’s the Ruby on Rails of the ’10s. Where developers used to code in Perl and PHP, then Ruby/Rails, today’s startup-fueled web-development world is all about Javascript on the server, and Node is the grease that makes it all go.

And sitting atop the Node.js heap is Joyent, the company where Node creator Ryan Dahl was working when he came up with the idea and the code to make it run.

So even though Node.js is an open-source project, its direction is largely guided by the for-profit Joyent. And that doesn’t sit so well with some Node users/developers.

As reported in InfoWorld and elsewhere, a group of them just started a fork of Node.js called io.js, which is now living on GitHub and prepared to take the Node code in a community-driven direction.

As the io.js project’s “Read Me” text states:

"This repository began as a GitHub fork of joyent/node where contributions, releases, and contributorship are under an open governance model.

"We intend to release, with increasing regularity, releases which are compatible with the npm ecosystem that has been built to date for node.js."

As InfoWorld previously reported the Node forking threat has been floating around for awhile, and in response Joyent created an advisory board to get more community input into what has become one of the most-used open-source projects in the world of web-delivered application development.

Fighting, infighting, forking and just plain grumbling is nothing new to open-source projects. Friction over the transition from Python 2 to Python 3, the never-ending gestation of Perl 6, everything about Linux distribution Ubuntu and its SABDFL (self-appointed benevolent dictator for life) Mark Shuttleworth since he moved the buttons from right to left, Debian and the now-raging debate over the systemd init system that’s so much more than an init system … and the beat goes on.

The question is, does Joyent have enough developer (and major corporate) juice to keep Node as the glue holding together today’s Javascript-driven web stack?

The short-term bettor says yes, since Javascript on the server is so “now,” and corporate IT has wrapped its arms firmly around Node. But since Javascript on the server has gone from curiosity to total domination in a few short years, and there’s always something new on the hot-development-tool horizon, it’s anybody’s game.

If the many-horse race over “best Javascript web framework” is any indication, another player in Node’s space is nothing more than the familiar brand of healthy competition that keeps the technology world on its code-slinging toes.

Most forks come to nothing. Just like ex-Microsoft CEO Steve Ballmer once said in all his sweat-drenched glory, it usually comes down to “developers, developers developers.”

Thu, 11 Sep 2014

Ruby's 'insert' method is something I'm definitely going to use

It's not a secret that I'm starting to look into the Ruby programming language. I've got a mess of second-hand books, plus there are plenty of helpful web sites.

I was looking into the gsub method of search/replacing in Ruby when I stumbled across something very useful: the insert method.

I'm sure there are plenty of better ways to do this, but the fact that I can do this and understand it ... that's something.

Here is what I'm talking about. I did it all in the interactive Ruby shell (aka irb) and have revised it because it's even easier to type out than I thought:

irb(main):017:0> phrase = "The quick brown fox jumped over the lazy dog's back"
=> "The quick brown fox jumped over the lazy dog's back"

irb(main):020:0> phrase.insert 0, "<bold>"
=> "<bold>The quick brown fox jumped over the lazy dog's back"

irb(main):024:0> phrase.insert -1, "</bold>"
=> "<bold>The quick brown fox jumped over the lazy dog's back</bold>"
Mon, 23 Jun 2014

Using Perl modules to parse an XML feed

I'm looking to figure out all the elements I need to convert my election-results Bash script to Perl, and one of the tasks involved is dealing with XML.

In the Bash script, I'm just treating the XML as text that needs to be hacked at with sed.

But in Perl, as in many languages I presume, there are modules to help with this.

XML::Simple takes a file in XML format and converts it to a "Perl representation," one of those "representations" being a Perl array. Here are some other links on parsing XML in Perl.

Perl Begin recommends avoiding XML::Simple and instead using XML::LibXML.

Now I'll have to figure out what to do with the data after Perl deals with the XML so I can turn it into the HTML I'll need later in the program.

I won't lie by saying that it is a lot easier to find recently written XML-parsing strategies for Python than it is for Perl.

With that in mind, before I close out this entry, here are some links on parsing XML in Python.

Wed, 18 Jun 2014

The Programming Project, Part 2: More from 'Learning Perl'

I'm continuing my reading of "Learning Perl."

The book is a bit dog-eared. Some of that is from carrying it around. But some of the wear is from actually reading the book.

I'm up to Page 74. I have been taking notes in the book and underlining things that seem important.

I meant to read this book with the Learning Perl Book Club, a reading group made up of Ode users.

That didn't work for me. The stopper was the "you need to do the exercises" part of the enterprise. While I had the time to do the reading, I had a lot of mental resistance to trying to hack at the exercises at the end of each chapter.

I know that doing the exercises in these books helps you "get" the concepts, but I just wasn't there yet.

Now that I'm a few chapters in, I want to start typing the book's programs into my local system, running them and playing around with them a bit. While that's less than going all in on the exercises, it's more than not touching the computer or using Perl at all.