Published a PostGrid Node Client

July 27th, 2021

TypeScript

On the heels of the Notarize Node Client, we took the time to create a Node Client for the PostGrid service - where they will use regular Postal Delivery for PDFs, and HTML pages, and we needed that at The Shop. It was easy enough to build on the previous client, and just update the different domain elements, and handle the data interfaces. Not bad at all.

One thing I did have a few issues with was the handling of the Form Data for the posts to the service. There were endpoints that could accept application/json data, and some that required multipart MIME data from a FormData element. Thankfully, I'd had to work with this for some additions we made to the HelloSign Node Client, but that was a lot easier because the basic client was written by the HelloSign engineers, and we just had to add the ability to post PDF documents provided as Buffer objects.

In all, it wasn't all that bad, and now I have a core TypeScript library for building almost any client for a restful service with either JSON or Form Data. That's a nice place to be. 🙂

Unexpected Crash of PDFpenPro 13.0.1

July 27th, 2021

PDFpenPro

Back in June, I wrote to the folks at Smile, about an issue I was having with PDFpenPro 13.0.1 on my laptop. It was annoying because I could copy and paste some Form Fields to a document, but then when I tried to save it, it'd lock-up, and go non-responsive to Finder as well as the "spinning beachball". It was very repeatable, but depended on the file. Some had this issue - some didn't.

They were able to reproduce this issue, and said they'd get on it. I was thrilled that it would soon be resolved, as it was a great PDF authoring tool for Forms and Text Tags - which I've been doing a lot for a project at The Shop.

Then I read that Smile was selling PDFpenPro and PDFpen for iOS/iPadOS to Nitro, and I got a little concerned that the bug report, and corresponding fix, might be falling through the cracks. So today I sent an email asking for a status on the issue, and we'll see what they happen to say. I really do hope they fix this crashing bug because other than that, PDFpenPro is an excellent tool.

UPDATE: they wrote back, and for the time being, support for PDFpen(Pro) is being handled by the Smile folks, and Jeff at Smile mentioned that it was still an open issue, and that he'd pass along my question about a status. We will see.

Getting Ready for Apple Silicon – CleanShot X

July 22nd, 2021

CleanShotX

This morning I was thinking about the move to the upcoming M1/M2 MacBook Pros that are supposed to be coming out later this year, and I decided it was time to move off my old screen capture and annotation tool, Annotate, and move to something that's: 1) Supported... 2) Going to be built for Apple Silicon. And when I read a review about CleanShot and SnagIt, I decided to look into both - SnagIt first.

The reviewer had it right - SnagIt has way more than what I need, and the increased feature set means complexity that I just don't need. Annotate was great... simple, easy, it did all I needed. SnagIt is just too much. But CleanShot is right what I was looking for!

I needed something to make nice screen shots - both area and window-based. I also wanted to be able to draw arrows from the head to the tail, as several of the screen annotations I've used had used that, and my arrows are so much more precise because of it. Also, I wanted to have the white-outlined text so that it was easy to read - regardless of the image below.

CleanShot does all of those. It's just exactly what I was looking for. So I got the basic app, with the 1GB of storage, and we'll see how it goes. If I want to get more updates in a year, then I'll renew then. But I didn't need the "Pro" features like unlimited storage, and I really don't want to pay a monthly fee for software like this - it's not critical to what I do.

So here we go... and we'll see how this works out. I have high hopes. 🙂

Sublime Text 4 Build 4113 is Out

July 14th, 2021

Sublime Text 2

This morning I saw a tweet that a new version of Sublime Text 4 is out - and given the few little issues I've seen, I was quick to upgrade and see what the release notes said. What I read was that there were significant speed improvements, along with improvements in the OpenGL rendering, and several fixes in the specifics of the UI rendering. There was only one Mac-specific issue, and that was related to the Dark/Light scheme, which is fine, but doesn't worry me.

When I started using it, I was pleased to see that I didn't see any of the problems I'd seen before, and the editor seemed zippy - so what's not to like? 🙂 I have a new TypeScript project I'm about to start, so we'll see how it handles that load as well.

Nice Updates to GitHub Codespaces

June 25th, 2021

GitHub Source Hosting

When last I looked at GitHub Codespaces, it had a few issues that meant I couldn't really do all the development I needed because it couldn't yet forward ports on the web-based UI. I found a way to run Postgres on a Codespace, so I'd have a built-in database, and it was persistent across restarts - which was marvelous. And I could customize the UI to be pretty much exactly what I needed to get work done.

But it was that nagging port forwarding that really meant I couldn't get real work done - not like I could on my laptop. And then I decided to give it another look... and they have not been sitting idly by. 🙂

The latest update to Codespaces has a much improved UI in the browser. It seems nearly native on my iPad Pro, and handles both the touch and trackpad gestures. Very nicely done. It also has a slight difference on the mounting of the work, so I had to update the cleanup() script in my .bashrc file:

  #
  # This is a simple function to cleanup the GitHub Codespace once it's been
  # created. Basically, I need to remove the left-overs of the dotfiles setup
  # and clean up the permissions on all the files.
  #
  function cleanup () {
    pushd $HOME
    echo "cleaning up the dotfiles..."
    rm -rf dotfiles install README.md
    echo "resetting the ownership of the /workspaces..."
    sudo chown -R drbob:drbob /workspaces
    echo "cleaning up the permissions on the /workspaces..."
    sudo chmod -R g-w /workspaces
    sudo chmod -R o-w /workspaces
    sudo setfacl -R -bn /workspaces
    echo "done"
    popd
  }

and with this, all my new Codespaces will have the right permissions, and the terminal will look and act like it should. Not too bad a change. But the real news is in the forwarded ports.

It appears that what GitHub has done is to open the port(s) on the running Docker image so that you can easily open a browser to the jetty port 8080 service that's running. It's really just as good as the port forwarding, and it completes the last needed capability to use Codespaces for real development.

If there was one more thing I'd wish for - it's that this would be included in the GitHub iPad app - so that the files are held locally, and edited locally, and the connection to the Docker instance is remote, but you can work locally.

Maybe soon. 🙂

GitHub Actions are Very Impressive

June 16th, 2021

GitHub Source Hosting

Several weeks ago, The Shop made the decision to implement CI/CD on the code repositories at GitHub using GitHub Actions. And it has been an amazing success. The ability to set up individual responses to GitHub actions like push, and so on. It's also very nice that it's all done in parallel, which is very nice for speed.

One of the things I have really enjoyed about the Actions is that GitHub gives each project quite a lot of free compute minutes for the execution of the Actions. This means that if you have a relatively static project, this is likely something you will be able to use for free. And if it's a business, you could prove out that this will work for you before having to invest in more tooling.

When you do run up against the limits of the free plan, the only thing that will happen is that the Actions will all fail. This is completely understandable, and a very reasonable fall-back position for projects. Add a billing source, and you're back in business. Very nicely done.

Enjoying play.js on the iPad Pro

June 16th, 2021

NodeJS

This morning I pulled up play.js on my iPad Pro to run a simple project I built to hit a MLB stats site and extracts some data, and format it into a simple JSON output. It's nothing, really... a simple Express/NodeJS site that I used in learning Express... but it is just an amazing tool for writing Node services - with front-ends, or not.

It's really pretty nice - includes a full git client, and complete dependency searching and incorporation... it's all you'd really need if you had a Node service back-end, and a static assets front-end. I know it can do even more on the front-end, but I'm quite happy with the ability to use HTML/CSS/JavaScript to build the front-end - I typically don't build elaborate front-ends to validate the back-end service.

The one wrinkle I've seen with some Node dependencies that include non-JavaScript components - like downloaded commands. These are not going to run in play.js's environment. It has to be 100% Node and JavaScript. So... there are some limitations on the projects it can handle... but not many.

First Trip Out of Town

June 13th, 2021

Microbe

Yesterday, I had my first trip out of town since the start of the pandemic. I went to Indy for a family get-together for birthdays, and I have to say, it was nice to travel out of town, get there... see folks... and enjoy a nice summer day.

I was still plenty surprised about the lack of mask-wearing by folks out-and-about, and while I know what the CDC guidelines state for mask wearing, and Illinois and Indiana rules for mask-wearing, it seems like such a harmless thing that we have been doing for months, to ensure that we really shut down this pandemic before we start taking chances.

I look at what's happened in India - they thought it was over, and within 2 weeks, they were completely overwhelmed. It could happen here... a new variant... unvaccinated folks getting sick, and all of a sudden we're in another surge that isn't so easily contained.

I'll be wearing my mask in public until the new case count is under 100 a day for the nation... at that point, we're out of the woods. But we aren't there yet.

Published Notarize Node Client

May 24th, 2021

TypeScript

Today I was able to publish my first Open Source TypeScript npm library for using the Notarize service. Their docs are good, but the only client they offer is really just the docs on the REST endpoints for the service, which are nice, but it's really nice to have a good client that makes accessing the functions of the service easy. So at The Shop, we decided to make a Client, and then give it to the Notarize folks so that they can give it to other clients looking for a simpler access interface.

This was a nice foray into TypeScript, because the interfaces are easy to define, the domain components of the service are nicely separable, and things generally worked out quite nicely. The tests didn't seem to fit into a simple CI/CD pipeline, but that's something that we can work on - if needed, and now that it's out in the wild, we will see how it's used, and if we get requests for additions.

All in all, it was fun to get this out. And it made working with the service much nicer. 🙂

Second Vaccine Shot Done!

May 16th, 2021

Microbe

I just got back from Walgreens, after my second COVID-19 vaccine shot. I was a little surprised that I had to fill out paperwork for the second time - after all... I had filled it all out before the first, and they had to have it on-hand. But it wasn't too bad, and I was able to fill out the form in a few minutes, and then a very short wait, and I got the second Moderna shot.

This is supposed to be the more significant, in terms of side-effects, of the two, so I'm going to take it easy today and tomorrow - just to be safe. But I know this is the right thing to do, and it may feel bad for a bit, but that's because it's doing it's job, and I know it'll be gone in a few days.

Now it's just waiting a few weeks to have the immunity built up, and I can feel much safer about my interactions with friends and family. 🙂