Gutenberg and Metadata

14 months after I last wrote about Gutenberg, I tried it again. I will admit, it’s a very polished page editing package. What it really lacks is a Metadata API. Sure existing PHP based metaboxes seem to carry over and seem to work but it’s impossible to tell because page refreshes just don’t happen with Gutenberg. Reliable old hooks like ‘save post’ don’t seem to do anything.

Never the less, I gave it a shot to port my metaboxes over to a plugin sidebar. HTML text input controls are fairly straight forward to set up. What doesn’t work is any existing AJAX based metadata entry or even worse, HTML controls like select where the options are dynamically created. Nightmare. I had a couple of metaboxes that would leverage a text input box with jQuery autocomplete with the source being delivered via AJAX. Again, nightmare.

Text area controls with TinyMCE editing capability was a head scratcher and even the solution proposed in my StackExchange post seemed oddly complicated for a task that took 4-5 lines of php code to complete in the “old days.”

Time to re-engage the Classic Editor plugin. I will miss the ease of creating tables in Gutenberg but I’ll be fine handcoding HTML. Sorry. Not ready for the future.

The challenge of Gutenberg

It’s been a long time since my last post here. In the meanwhile, I’ve sharpened my WordPress kung fu significantly. I consider myself a pro-bono developer for a not for profit website which uses WordPress as CMS.

I dove into the WordPress code and wrote a couple thousand lines of code that plug into WordPress making heavy use of post and comment metadata to do a number of automated tasks like email reminders, tweets/retweets, customized comment and post notification emails, blast emails, custom post types, front end ajax stuff, etc. I generally eschew plugins as I generally have the capability to construct the customized code I need except in the cases where it’s just dumb easy to use a plugin like backing up the database tables, controlling wp-crons, etc. So, just as I have everything just the way I want it, here comes Gutenberg and “progress.”

In full disclosure, I’m using Gutenberg to write this post. After all, it’s just text content. Back to my CMS, I decided to leaf through the excellent Gutenberg handbook. Took about 30 seconds to full expose my lack of JavaScript knowledge. While I consider myself a low level power user of the jQuery and jQuery UI libraries, that’s the extent of my JS capability. This isn’t going to cut it for moving my PHP based development into the Gutenberg environment. I put the handbook away for a while.

I go back to the Handbook periodically and hope this JS React stuff starts to stick with me somehow like PHP did. It will eventually but not yet.

What’s bothering me most is that a lot of the metadata input I had built into my posts and custom post types hooked into actions/filters that are now non-functional. I could live with deprecated actions but there’s a bunch of stuff that just doesn’t fire anymore with Gutenberg running.

I’m hoping all my development work isn’t completely lost when I move to Gutenberg. I’m not sure I’m ready to sink the time required to fully port my work to Gutenberg. I’m not a reactionary by any means, but it’s going to take me a long time, if ever, to move to Gutenberg. 

Replacing Airport Extreme

One of the “problems” I have with Apple products is that they last way too long. This was the case with my 2nd generation Airport Extreme which after many years of duty started to require reboots every couple of weeks. I remember the process I went through when it replaced my old AirPort (the one that looks like a space ship) but that’s of little use now. So before I went out an picked up a 6th generation Airport Extreme, I looked around the internet to see what I would have to do to swap out the routers. Didn’t find too much so I figured either the supporting documentation for replacing the equipment under Yosemite hadn’t been published or that the AirPort Utility would make it dead easy. The answer was mostly that the AirPort Utility took care of the heavy lifting but not quite all of it. Here’s my recommendation:


  1. Make sure you remember/write down all existing networks and passwords you’ve configured. You’ll need this in case you decide to manually configure the AE and want the least disruption to the clients you’ve set up on the existing networks.
  2. Take all the wired connections out of the old Airport Extreme (AE) and plug them into the corresponding ports on the new AE. Leave the old Airport Extreme plugged in. This isn’t documented anywhere but trust me on this. There’s no need to export your current AE configuration via the AirPort Utility.
  3. Plug the new Airport Extreme in.
  4. Open the AirPort Utility on any Mac/iPhone/iPad with wifi on.
  5. Find the new Airport Extreme and follow the prompts.
  6. When you get to the prompt asking you if you are replacing an Airport Extreme, click ‘Yes’. The Utility will find your old Airport Extreme (which you intelligently left plugged in) and ask you if you want to copy your configuration over. Click ‘Yes’ or ‘Ok’ and wait for the new AE to boot up. Your existing network and router configurations will be copied over to the new AE by the AirPort Utility.

This “easy” approach will do nicely in most cases. However, if you are in an apartment or area where there are a lot of wifi networks, I recommend manually selecting a channel for each frequency in your network. In Yosemite (and Mavericks) it’s very easy to do. Option-click the WiFi icon and pull down to ‘Open Wireless Diagnostics’. Ignore the dialog box that opens and go to Window->Scan. You’ll see all the wifi networks around as well as their channels. The Scanner will give you a recommended channel for all frequencies supported by your router. Go into the AirPort Utility and change the channel via pulldown from the default ‘automatic’ to the recommended channel. Save and your AE will reboot with the new configuration.

If everything is set up properly, go ahead and export the new AE configurations and save it in case you need to do a hard reset and want to restore existing conditions quickly.

Unfortunately for me, a couple of corrupted tables were ported over from my old AE. Client IP addresses were being double assigned by NAT and local server names were being numerically incremented. I did a factory settings (hard) reset (via AirPort Utility) and manual configuration for the new AE to eliminate this issue.

Cablevision (Optimum) and Not Getting Along

Something happened server side yesterday and Apple’s is no longer able to pass authentication with the outgoing SMTP server. What’s strange is that it only affects Sparrow and other mac email clients are unaffected by this.

The other odd part of this is that tech support at Cablevision admitted something went wonky on their end when they did some kind of server upgrade. Normally I’d expect, “change your password” or “reboot your modem” or other canned responses but tech support was forthcoming about the issue. No telling when it will be resolved though. Better be soon since Verizon FioS just came to terms with BeInSport.

If you’re having this problem, see the comment below. Forcing port 587 for outgoing mail does the trick.

Web Development Tools; Coda vs. Espresso 2

Several years ago, I moved from Dreamweaver to Panic’s Coda as my primary web coding editor. The only feature I really missed was Dreamweaver’s function to check the timestamp on the server file before uploading an edited version of the file and alert me if I was overwriting a file edited elsewhere. Since I work on multiple Macs, that feature came in handy so I didn’t overwrite something I did the week before on another Mac. I modified my workflow to open Transmit, sync that directory to my mac, open Coda and start to work. I know I could have used Coda to work directly on the server but I never got comfortable doing that. Since I’m the sole “developer”, this workflow was ok for me. I wasn’t interested in setting up Git or SVN. Anyway, Panic updated Coda to Coda 2 so I did some looking around to see if I wanted to move from Coda to Coda 2. If you look at the reviews of Coda 2 on the App Store, it’s getting some pretty poor reviews. I know developers can be a cranky bunch but when you see words like “unusable”, “unstable” and “crashes”, it does cause concern. Since they don’t have a demo of Coda 2, I decided to look at Espresso 2, which does have a 15 day, full featured demo.

Espresso 2

My main need for a development tool is to be able to find a file quickly, make my edits, validate the syntax and upload it as quickly as possible. Autocomplete and tag closing are nice to haves but not essential. The main frustration I’ve had with Espresso 2 is that the appearance of the publishing cloud next to the file name has been hit or miss, especially on a Mac running Snow Leopard. I can’t live with that. I was working on a file last evening and the publishing cloud icon didn’t appear. Nor did it appear for any file in that directory. This morning, it seems to be working fine.

As with the plugin architecture of Coda, Espresso 2 uses ‘sugar’ additives to provide enhanced features. I’m not sure how robust the ‘sugar’ development community is for Espresso 2 but there’s stuff out there.


Espresso 2 and Coda (original) are not very different. Coda autocloses brackets and braces but in a rather annoying way which requires you to move the cursor between the braces before typing. Espresso 2 doesn’t autoclose braces nor does it highlight braces when you close them like Coda does. Coda doesn’t do the file checking I mentioned above and it doesn’t seem like Espresso 2 does either. Espresso 2 does PHP sytax checking but Coda requires a plugin for that. Espresso 2 is much superior when it comes to wrapping selected text with a tag. If I didn’t still have a bad taste about Espresso 2’s publishing, I would probably be using Espresso 2 as my sole development tool right now. I’m not sure if I could be efficient using both Coda and Espresso 2 right now and I’m certainly not plunking down the $$ for Coda 2 until I see some more favorably reviewed point releases that address stability.

Lion and Quicken Essentials

When Mac OS 10.7 (Lion) came out and Rosetta support was dumped, I had to make a decision about my financial software situation. Having used Quicken since 1996 and now Quicken 2007 (Rosetta required), I needed to either stay with OS 10.6 or move to a different financial application. My first move was to try Quicken Essentials which was not exactly a smooth transition. Disappointed with QE, I tried iBank which I wanted to love but couldn’t adapt to their workflow. So I kept using Quicken 2007 and stayed on OS 10.6.

Last week, I revisited the updated Quicken Essentials and tried to start fresh. Dragging over 15 years or so of data wasn’t really needed (I also have an old Mac Mini which is hardware constrained so it won’t run Lion, hence it’s stuck on Snow Leopard and my Quicken 2007 will have a safe archive). I typed my login information for my credit cards and bank and surprisingly, in came 12 months worth of transactions seamlessly. Sure the categories needed to be customized a bit but I was up and running pretty quickly. Playing around a bit more, I found QE will export a txf file and I can set up tax related categories. I find that downloading transactions every couple of days works well and tedious reconciliation of accounts is done painlessly and without intervention. 

Make no mistake, QE is really quite barebones. Still can’t set up a loan amortization schedule. What’s changed is that I decided that I didn’t need to have all my information at my desktop fingertips like I had to have years ago before broadband connections and online banking/bill pay. If I need to see where my Federal witholding is, I go online to my employer’s finance website and look at my last pay stub. If I need to see how much principal is left on an equity loan, I go to my bank’s website and look it up. If I want to see my investment portfolio, I log on to my broker’s web site and get a look. 

If you still need all the functionality of Quicken 2007 and want to move to Lion, the nice folks at Intuit have decided to make a Lion friendly version of Quicken 2007 sometime in the near future. 

Watch Manufacturer’s Boutiques

Yesterday, I stopped by the Chopard Boutique on Madison Ave. in Manhattan to pick up my LUC Sport 2000 which was in for an overhaul. As I walked through that neighborhood, I passed the Girard-Perregeaux boutique, the Omega boutique, the soon to be open Breguet boutique, a Mont Blanc boutique, the Franck Muller Watchland boutique, and the Audemars Piguet boutique. All these manufacturer boutiques were within walking distance from renowned dealers like Wempe, Tourneau and Cellini.

I don’t think I would ever buy a watch from a boutique. There’s something more traditional and familiar buying from a local dealer who you can develop a relationship with over time. Since I live in the New York metropolitan area, there’s certainly no shortage of fine dealers in the immediate area which isn’t the case in most parts of the country (and world). Perhaps someone coming to New York wanting to buy a Breguet or other fine watch not immediately available where they live and work would feel more comfortable going right to the boutique. Maybe with all the commerce done over the internet, going to a ‘brick and mortar’ shop to buy is a fading business model anyway.

While having a boutique probably expands the brand visibility, it also excesses the manufacturer’s traditional partner, the independent authorized dealer. Options are always better for the consumer but the boutique option isn’t a desireable option for me.