Programming Blog - Most Recent Posts

Posts Below
7/1/2017 - Legacy code woes
11/26/2016 - The renovated Puppy Linux Setup Kit will probably require PHP and PHP-GTK
3/3/2016 - Link: Visual Programming Languages - Snapshots
11/16/2015 - gun.io - A Job Website for Freelance Software Developers (Freelancing)
11/10/2015 - Link: Programmer Competency Matrix (Link)
8/22/2015 - Apollia's JSON Prettifier v1.0 (Software Release)
8/15/2015 - Graph Databases - Neo4j and OrientDB

    Hide/Show:


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down
Legacy code woes
Saturday, July 1st, 2017
23:42:28 GMT


I've been feeling so overwhelmed lately by my Puppy Linux Setup Kit, my messy neglected websites, and Astroblahhh Desktop. Overwhelmed and stuck.

Actually, I've felt that way for years, which is probably part of why I've procrastinated so much about continuing to work on these projects at all.


But, recently, reading some articles about working on legacy code made me feel better and less worried that maybe I'm just not really cut out to be a programmer.

I hadn't realized that even much better, wiser, more experienced programmers than me can have immense trouble with this kind of project if they make the kinds of mistakes I've been making, such as trying to change too many things at once, not doing test-driven development (TDD), and overly optimistically attempting "big-bang rewrites".


Here are a couple of those articles:

The Legacy Code Lifecycle
April 25, 2012 from DanLimerick.wordpress.com

How to Improve a Legacy Codebase
May 30, 2017 from JacquesMattheij.com

Those articles and their advice look very wise to me, not that I would know. But I'm guessing that doing even just some of what is suggested might go far better for me than doing what I've been doing.


Even though (as far as I know) I'm the only person who ever worked on my Puppy Linux Setup Kit, Astroblahhh Desktop, and other languishing projects of mine, these projects have all been through the entire lifecycle mentioned in that first article, and have long been stuck in the last phase.

In many ways, I unintentionally designed things naively and poorly at the outset. I didn't document things well enough, and I took such long breaks from working on my own code that by the time I returned to it, I had forgotten a ton of details.

And for many years, I didn't even know what test-driven development (TDD) was. I finally tried it in 2015 or 2016 and liked it, but, quite unwisely, I still usually haven't gone to the trouble lately, and I probably ought to learn more about it so I can be more sure I'm doing it right.


I'm quite frustrated that I haven't gotten much more done by now, but, I probably shouldn't be too hard on myself. If I were really a hopelessly bad programmer:


So, I'm definitely not even close to totally giving up on programming forever (though I feel very intimidated by the idea of trying to make a serious career out of it). But I think I need to be a lot more cautious and less naively optimistic than I was in the past.

The idea of releasing more of my work more frequently definitely appeals to me a lot. I've felt so guilty about not creating and/or releasing way more useful (or otherwise beneficial) stuff into the world already. And many people think sharing in-progress work publicly and frequently can result in much better software.

Preparing things for publication definitely encourages me to do a better job than I tend to do with things I don't expect to release anytime soon (if ever). Not that I don't still make numerous dumb mistakes either way, but I think maybe I make fewer dumb mistakes when I create something with publication in mind.

I sure wish I could do a perfect job on everything all the time, but, I've learned that I better not insist too stubbornly on perfection or I'll never get anything done.


Fortunately, already, without even knowing it (at first), I seem to have been moving away from the "cathedral" model of free/libre software development, "in which source code is available with each software release, but code developed between releases is restricted to an exclusive group of software developers", toward the "bazaar" model, "in which the code is developed over the Internet in view of the public".

That happened because I finally learned more about how to use Git and GitHub, so I've been sharing my work more frequently by releasing it on GitHub. Currently, that's much easier than uploading files to my own websites.


So, currently, this is the place to look for my absolute newest updates to whatever software projects:

https://github.com/Apollia?tab=repositories


Not much of what I've been adding lately has seemed notable enough (or easy to install or interesting or useful enough) for me to announce in new blog posts, so, I mostly haven't mentioned them here.

In retrospect, I maybe shouldn't have even announced Salty XML Transformer, because it's such a chore even for me to install, because I haven't made even my own not-yet-released Puppy Linux Setup Kit fully up to date yet.


By the way, I recently found out that ever since sometime in July 2016, the latest released version of the Puppy Linux Setup Kit (v1.1) was far less functional than I thought, because unfortunately, some of the files the old setup kit optionally tries to download are no longer available. Many went missing simply because I neglected to log into my Dropbox account for over a year, so my Dropbox account was automatically deleted in July 2016. Sorry for any inconvenience!

I probably shouldn't encourage people to use the old legacy versions of my setup kit. Certainly not yet. At some point I'm going to try to release many of my old-style setup kit scripts that I made since the last release in Feb. 2015 - but even I'm trying to get away from being stuck using any old-style version anymore, even my current best not-yet-released version.

I sure wish I could somehow gradually create a smooth transition from the old-style setup kit to the new-style setup kit I'm still trying to design and build. Or some kind of clever hybrid of the two.


Anyway, even though I'm quite tired of struggling with all these tedious legacy projects, I probably am not close to giving up yet. Or even if I do turn my attention to other things for a while, I'll probably return to them eventually.

In any case, please don't expect dazzling results soon, or maybe not for a very long time, and sorry I have been so incapable thus far of doing far more.

And I still don't feel up to trying to sift through whatever gigantic backlog of mostly spam (and perhaps some real emails) I might have gotten in the past several years, but, hopefully I'll get around to that someday. Sorry for being so unreachable.

And hopefully someday I'll figure out how to delete the literally hundreds of thousands of spam messages there are in the Non24.Com Forum without deleting any of the few non-spam messages, and also how to truly block new spam messages so the same thing doesn't happen again.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
The renovated Puppy Linux Setup Kit will probably require PHP and PHP-GTK
Saturday, November 26th, 2016
05:59:24 GMT


While trying to figure out the best way to do some new things with my Puppy Linux Setup Kit, I finally found out that various Unix-related systems (including GNU/Linux) are excessively flexible about what characters are allowed in file names.

Here's a detailed essay I found on that topic, from dwheeler.com:

Fixing Unix/Linux/POSIX Filenames:
Control Characters (such as Newline), Leading Dashes, and Other Problems


So, that means using shell commands like "find", "xargs", etc. is much trickier and more inconvenient than I thought.

Quite annoyingly, newline characters can be in file names. So, there's no guarantee that each line of output from "find" will contain a complete file path. I also had trouble with trying to make "xargs" deal with paths containing single quotes. And the above essay describes numerous even worse problems.

These problems make me less reluctant to make the Puppy Linux Setup Kit require PHP and PHP-GTK, partly just so I can hopefully avoid a lot of the quirks of Bash programming.


I still like Bash programming much more than I used to, and I like being able to make some simple GUIs (graphical user interfaces) using only stuff that's already included by default with Puppy Linux, such as GtkDialog, which can be used to make a nice variety of GUI elements.

And I still think it was worthwhile to spend a few months struggling with Bash programming, since I learned a lot from that.

But I still have such a tremendously easier time with PHP than Bash scripts that I doubt I'll ever be fully comfortable with the latter, at this rate.

I'll probably still use Bash for simple things, but will probably use PHP for more complicated things.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Link: Visual Programming Languages - Snapshots
Thursday, March 3rd, 2016
16:00:51 GMT


Today, I stumbled across the below blog post without even searching for stuff related to visual programming.

It's a big page with lots of pictures, so be careful if your web browser is prone to crashing.

Visual Programming Languages - Snapshots

Posted Feb. 20, 2014 to the blog of InterfaceVision.com


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
gun.io - A Job Website for Freelance Software Developers
Monday, November 16th, 2015
22:23:21 GMT


Freelancing

gun.io is a job website for freelance software developers. gun.io has some emphasis on free (as in freedom), libre, open source software.

I still don't feel fully qualified to undertake any of the astonishingly high-paying gigs I've seen on there lately so far, most of them paying over $10,000.

So, I haven't done any gun.io gigs, and I also don't know exactly how the site works. So, it is not first-hand experience with doing work on there which inspires me to point them out.

The top reason I'm pointing them out is because I discovered while filling out my profile that they provide affiliate marketing links, and, since gun.io has some emphasis on free/libre/open source software, and I could use some money, I thought I might as well share my link.

Here's my affiliate marketing link:

https://gun.io/a/apollia

I'm fairly sure there's probably at least one brilliant, extremely talented software developer who sometimes reads my blog. Maybe more.

So, I hope this helps you, and thanks in advance if you use my affiliate marketing link to sign up with gun.io.

And I hope you'll work exclusively on free (as in freedom), libre, open source jobs, not non-libre, closed source jobs.


Click this link to display the blog comment thread hosted at the Eryss.Com Forum:

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Link: Programmer Competency Matrix
Tuesday, November 10th, 2015
18:25:36 GMT


Link

Zounds, I still have so much to learn!

Programmer Competency Matrix, a page from Starling-Software.com

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑
Apollia's JSON Prettifier v1.0
Saturday, August 22nd, 2015
20:06:13 GMT


Software Release

Today, in about a half hour (or really less than 10 minutes for the basic idea; the rest was just some slight user interface polishing), I made this really simple JavaScript thing:

Apollia's JSON Prettifier v1.0

I made it so I could make readable text out of JSON-format database exports generated by OrientDB.

But hopefully it will work with any JSON code, such as these examples from JSON.org.


In other news, Astroblahhh.Com continues to be a cluttered mess. But, I'm still really excited about graph databases, so, hopefully I'll be able to build something with them that will enable me to fix the mess around here at some point.

   ▲ Top  ▼ Bottom  △ TOC   ↓ Down   Up ↑


   ▲ Top  ▼ Bottom  △ TOC   Up ↑
Graph Databases - Neo4j and OrientDB
Saturday, August 15th, 2015
17:52:30 GMT


Lately, I've been feeling increasingly stifled by ordinary SQL databases, and have been wishing I had an easier, more natural and intuitive way to deal with very interconnected data.

So, I started reading about NoSQL and MongoDB, and soon stumbled across the concept of graph databases, which seem like a huge improvement on SQL in a lot of ways. (MongoDB isn't graph database software, but it might be useful too somehow - I'm still considering using it for something.)

Graph database maps look very similar to maps from the wonderful VUE concept mapping software, which I love. So, that gave me the idea that perhaps VUE could be modified to serve as a GUI for viewing and maybe even editing graph databases. I posted that idea here on the official VUE forum. I'm a Java newbie, as well as a graph database newbie, so I don't expect at all to be able to figure out how to build that myself in the near future - but, hopefully others will like the idea enough to do something with it.


The graph database software I've looked at most closely so far are Neo4j and OrientDB. Both are Java software, and free, libre, and open source (with a commercial version). Neo4j is just for graph databases, while OrientDB supports additional kinds of databases.

I've scarcely used either one for anything yet, but, they're both really cool, and I'm thinking maybe a graph database is exactly what I need for my imagined CMS (content management system, for lack of a better term), among other projects.

So, hopefully I'm now at least one step closer to having a satisfactory CMS and being able to give all my websites a much-needed renovation.


I found a CMS called Structr which uses Neo4j, but I haven't yet tried it.

It might be good, but, I'm terribly picky, so no matter how good it is, I probably will still want to write my own CMS.


The official Neo4j website currently is providing legally free (as in price) downloads of the book Graph Databases, 2nd edition, by Ian Robinson, Jim Webber, and Emil Eifrém, published by O'Reilly Media:

http://neo4j.com/books/graph-databases/

   ▲ Top  ▼ Bottom  △ TOC   Up ↑


    Hide/Show: