New Look

I spent the evening knocking down the cobwebs and dusting off the baseboards, but started with something unrelated to this site. I had another WordPress site that I decided to take down, so I archived some of the content then deleted the WordPress installation.

Returning to this site, I saw a warning about the php version, so I updated that from 7.4 to 8.3. My hosting provider regularly updates WordPress, along with its plugins and themes, but not the PHP version. I made a backup first, but didn’t notice any issues after the update. I also made some other minor changes that were recommended, and deleted some old files. One recommendation was to remove unused themes, which got me to look at what I had installed and pick something new.

Next I turned to the blog contents, cleaning up some of the tags and categories. There is probably more work to do on that front, but it’s tidy enough that I can start to look forward.

Did you miss me?

I don’t exactly have the greatest track record for posting here, but I have had thoughts recently that need an outlet. When I looked for a place to share them I realized how neglected this place was. Let me see what I can do…

My New Online Home

Well, my web sites have a new home.  I haven’t purged all of my content from Dreamhost yet, but I moved my domain registrations and changed the name servers so everything is being served from StableHost.  For the WordPress content, instead of copying the files (along with themes, plugins, and images) I did a clean install.  I exported the posts and comments from the old sites before changing DNS, then imported them into the new installation.  I have re-added most of the images on this site, but there is still some cleanup to do.

Leaving Dreamhost

Since April 2002, I have had an online home at DreamHost.  I don’t want to leave, but in less than a month they are disabling catch-all email addresses, and that is a feature I can’t live without.

I have spent the past few days searching for a new place to host email and personal sites, but let me tell you – it is not a fun process.  When I started here 16 years ago, I don’t remember having so many choices.  GoDaddy was the cheap place to register domains, but if they offered hosting it was not attractive.  DreamHost was a relatively new company using open source software and a custom control panel.  I started with a package that cost $20/mo, but in 2005 I switched to a package and payment plan that worked out to $8/mo.  I think that’s about the time that I brought the family on board, hosting a family-name domain that I could share with my brothers.

Today, there are hundreds (or thousands?) of web hosting companies.  There is one company (Endurance International Group) that operates over 100 different hosting brands/companies.  There are sites that pose as review lists (like these) that promote only EIG brands, and sites that warn against hosting with EIG.  There are even (hopefully objective) review sites that give reliability and performance statistics for some prominent hosting providers. PC Mag and cnet have their own lists, but both of them get affiliate kickbacks that may affect their ratings.

But then I start poking around on IsItDownRightNow, and I find conflicting reports about reliability and I wonder if the Pingdom stats (like this one for DreamHost) are telling the whole story.  I need to do more research, but I’m running out of time.

Processing Demo

For Hour of Code, Orchard Park Elementary School asked if anyone wanted to talk to the students about programming. I volunteered, and decided to show them Processing.js. They gathered each grade in the library where I demonstrated what they could do.  The students then returned to their classrooms, and the group that had were in the computer classroom got the opportunity to tinker with the sketches to see how it would change.

Demonstrating processingjs on sketchpad to the 5th graders at OPES

Chess Visualization

While searching the archives of the Processing forums, I discovered Thinking Machine 4.  I especially like what it does when it is not thinking about a move, just showing the squares that are influenced by pieces on the board.

Several weeks ago, I started creating a similar visualization, but the complexity quickly became too much for me to deal with in my spare time.  This will inspire me to take a fresh look at the problem.

SharePoint Workflow Hack

Before I describe what I did, let me point out that this might not be the best way (or even a sane way) to solve this problem. Regardless, it worked for me and I wanted to record it for posterity.

I have a SharePoint list (named “MLD” for short) that has two lookup columns, as shown here. Each one has a supporting list that the users maintain.
ColumnDefs

ProjectLookup ReleaseLookup

Originally, there was no connection between Release Lookup and Project Lookup, but I realized that Projects are tied to a Release (i.e. Everything in Project X will be in the same release).  To support that, I added a Release column to the Projects list.  I now had Release being set in two places, and maintaining the same information in two places is just asking for trouble. However, I didn’t want to remove Release from my MLD list, because I still want the ability to sort & filter by Release. What I needed was a workflow that would set the Release on MLD list items based on the Project that was chosen for that item.

I fired up SharePoint Designer (version 2007, which is the latest version compatible with my SharePoint site), and created a new workflow that would run any time an MLD item was created or updated. First, I created a variable to hold the ID of the selected project:

DefineVariable

The next step was to store the Project ID from the current item in that variable, then look up the Release for that project in the Project Lookup list and assign that Release to the current MLD item.

DesignWorkflow DefineWorkflowLookup

Java hosting

Most of my sites are running on dreamhost. They’re pretty good for sites running Python, Ruby, or PHP, but they don’t support server-side Java.

Over the years, I have searched for Java application hosting to fill that void. I was mostly looking for a place to explore and try new things, so I wasn’t willing to pay much. The inexpensive ones I found usually had very low RAM, and sometimes shared JVMs between users. To get a private JVM capable of running a decent app server usually cost more per month than I was willing to spend, and often required a dedicated server or VPS, which was more of a time commitment than I wanted. Eventually, I stopped looking.

At some point Google came along with their App Engine. It allowed part of what I was seeking, but came with its own limitations.

Today I discovered OpenShift, though it appears to have been started two years ago (May 2011). In additioon to Java, it supports a handful of other languages, as well as an assortment of frameworks and databases. It has a free version that is limited, but even the free version appears to support JBoss and MySQL!

Thinking about PowerShell

I am looking for a way to migrate documents from one SharePoint site to another, and create items in a separate SharePoint list. I found a blog post that looked promising, so I fired up PowerShell to poke around.

I quickly found that my version of PowerShell (v1.0 on Windows XP) didn’t have the Get-SPWeb cmdlet that seemed to be the first step toward my goal, so I went in search of a newer version. I found another blog post that provided a link to the 2.0 download, but it also recommended articles by the Scripting Wife that I want to check out.

I installed 2.0, but I still don’t see the Get-SPWeb cmdlet I need…

Mobile Wiki Skin

The next step in reviving my wiki was to make it accesible on my iPhone.  A quick trip through Google, and I found an answer on Stack Overflow. I installed the extension and the skin, and it worked – for the most part.  It did format the content nicely, but I saw the following error at the top of the page.

I haven’t done much with MediaWiki skins, but was hoping it wouldn’t be too hard to fix. So I searched my MediaWiki skins directory for the problematic function, and the following lines stood out:

$ grep -ir initPage skins
skins/Vector.php: public function initPage( OutputPage $out ) {
skins/Vector.php: parent::initPage( $out );
skins/WPtouch.php: function initPage( &$out ) {
skins/WPtouch.php: SkinTemplate::initPage( $out );

I changed WPtouch.php to make it consistent with Vector.php, and the error went away. Following is a diff of the before (top) & after:

21,22c21,22
< function initPage( &$out ) {
< SkinTemplate::initPage( $out );
---
> public function initPage( OutputPage $out ) {
> parent::initPage( $out );

I also changed the Display_Actions flag, to enable mobile edits (among other things).  It worked, but the Portrait mode needs a little tweaking:

Portrait:

Landscape:

It’s not pretty, but it seems to work fine in landscape mode, so I’ll leave it alone for now.  If you’re on a mobile device, you can see it here: datguy.net/wiki

EDIT: I thought that there might be a newer version of the skin.  The Stack Overflow answer links to a 2010 page, but the mediawiki gallery links to a 2012 update.  I examined the download links and they seem to be the same.

Also, after posting my solution I got a reply from someone that had the same problem, and his solution to the “Actions” problem in portrait mode was to change the “Personal tools” text.  I changed mine to “My tools” (in ./languages/messages/MessagesEn.php), and that was enough to prevent Actions from wrapping onto the second line.

EDIT: In the years since I posted this, I have reinstalled MediaWiki without reapplying the changes above.