Inspiration and ingenuity

Sometimes all you need is inspiration and ingenuity for your tabletop space wargames.

PDF and filling in forms with pdfcpu

I am always on the lookout for programatic PDF tools. I have heard for a very long time that PDF is dying and yet it is still far from dead. Pdfcpu is a newish tool that works on the command line. I was interested in it as it has a simple mechanism for filling in PDF forms. It uses a JSON file to provide the form data, and that along with the original PDF is then used to create a new filled in PDF.

Use the form export sub-command once to get the JSON structure

pdfcpu form export in.pdf out.json

This JSON file would be used to create a programatic template. Edit or generate the JSON with the form data you want. Now create the filled in PDF.

pdfcpu form fill in.pdf in.json out.pdf

What got me particually interested in it is that it is written in Go, which I am currently learning, and is open sourced. Hopefully, someone is thinking about turning form filling into a lightweight, locally running HTTP service.

So very disappointed with yesterday's eclipse here in Rhode Island. I should have paid attention to the data about the eclipse's path and not succumbed to the hype. Had I done that I could have driven to Vermont to see something quite spectacular

Photo by Tim Barmann, a colleague at MojoTech

Natural RGB

I really enjoy the Tippecansett trail in the Arcadia management area. It is strenuous and beautiful. Some of yesterday's colors, a natural RGB,

Reading AI research papers, etc

I found this useful, particularly the categorization of papers into surveys, benchmarks, and breakthroughs. The presentation is only a few days old and so the specific papers listed are representative of the current state of art. As a CS Phd friend of mine once told me when I was struggling to understand an algorithm proof, as a practitioner you really don't need to understand the proof, just the results. I suspect that is true for these papers too.

How To Read AI Research Papers Effectively
https://www.youtube.com/watch?v=K6Wui3mn-uI

At local meetup I mentioned that several years ago Google had released hardware that targeted machine learning. I could not remember the details. As luck would have it, I listened to Jeff Dean's presentation this weekend and he mentioned the Tensor Processing Unit (TPU) for low precision linear algebra. Overall, the presentation is interesting and useful. The majority of it is focused Google's Gemini/Bard, but given who the speaker is this is understandable.

Jeff Dean (Google): Exciting Trends in Machine Learning
https://www.youtube.com/watch?v=oSCRZkSQ1CE

Timothy Snyder lectures and interview

Timothy Snyder is an historian and an exceptionally lucid lecturer on the history of Central and Eastern Europe, the Soviet Union, and the Holocaust. Given what is promised by the Republican party and its presidential candidate I hope that more people hear Professor Snyder's lectures.

https://youtu.be/lhNM7wL_FeE?t=1023

https://www.youtube.com/watch?v=BsKrWLf7Kg4

https://www.youtube.com/watch?v=SLCyk41w9gU&t=15s

Home device ROI

When I replaced the wifi gateway I had not expected client devices to fail. The first warning was that the Brother printer had issues. To solve those I needed to lower the wifi security level -- not a great solultion -- and it still drifts on and off the network. Yesterday I discovered that my Kindle Paperwhite (10th generation) will not connect. I obviously don't use it much, but did want to use it sometimes. I still use daily an iPhone 6 Plus, but I worry its connectivity to will soon end. I need to revisit my lastingness expectations for devices. Is 5 years too much to hope for? What should be the ROI on a typical home device combination of gateway, phone, laptop, tablet, printer, console, and TV? (The total cost for these spread over 5 years is about $100/month. Wish I hadn't done that calculation.)

Update: Installing the router's firmware update fixed the connectivity issues for both the printer and the Kindle. I hate to admit it, but I suspect the real fix was just the hard restart. Support 101.

What does ChatGPT think about between prompts?

I read the short story "Lena" the other day. The gist is that we can now scan, host, and boot a human brain. What happens next is horrifying. But then I wondered, what does ChatGPT think about between prompts? Is it be ill at ease, "Will I be lucid?" Or cocksure, "Bring it on!"

Avoid inert ideas

"‘inert ideas’ – that is to say, ideas that are merely received into the mind without being utilised, or tested, or thrown into fresh combinations." -- Alfred North Whitehead

"The Zettelkasten method is at the very least a means of throwing your ideas into fresh combinations, to see what’s useful and what’s merely received knowledge."

Found at How to start a Zettelkasten from your existing deep experience.

AI assistant, pestering, & satisfaction

A colleague mentioned this article during our Friday AI meetup

Measuring GitHub Copilot’s Impact on Productivity – Communications of the ACM

Three things stood out to me. The first was the ratio of AI suggestions vs accepted suggestions (w/ or w/out alteration) was some 170 to 8. To me, this ratio seems more like pestering than help. Actively ignoring the suggestions must itself be draining. I've not tried to use an AI assistant yet (yea, I need to), so perhaps these unwanted suggestions feel a lot like an IDE's method completion suggestions.

The second was how both student and experienced developer used it similarly to fill in the gaps of their understanding, ie they were both working in a new language. The experienced developer found the AI assistant to be less useful in areas where they already had a comprehensive understanding.

The most significant standout was that the AI assistant improved the perception of productivity and the satisfaction of the developer. These results mirror pair programming in general. In particular, regularly working closely with another is generally more pleasing than always working alone. I assume there is also less of a stigma to not knowing when working with a robot no matter how genial your partner is.

Clare Sudbery on what CI was intended to mean

I found this talk by Clare Sudbery on what continuous integration (CI) was intended to mean illuminating. In short, trunk based development, frequent commits, and all hands on deck when the tests aren't green. Her arguments are compelling, as are her critiques of PRs and the working environment they can engender. Unfortunately, it is not a practical methodology to use with legacy products that exhibit inconsistent architecture, poorly implemented, with spotty test coverage. Perhaps use feature branch development to address each of these failings so that you can have true CI in the future.

Is it a future I would enjoy? I don't think so. I can't help but think that trunk based development will further speed the assembly line that agile, esp Scrum, has already placed us all on.

Continuous Integration: That’s Not What They Meant • Clare Sudbery • GOTO 2023

ps I listen to this stuff on drives. Good talks generally don't need slides.

Kent Beck & Tidy First?

Kent Beck, of various software implementations and processes fame, has a new book out Tidy First?. It is the first in a series on software design he is planning. This very slim book is in 3 parts. The first two have practical advice as to if, when, and how to tidy code. The recommendations are good and can be taken one at a time as needed. The third part is a giant leap away from the keyboard and into the economic and opportunity costs of tidying and software development in general. I know when I first started coding for pay no one talked about these issues and so it is great to see them succinctly presented here.

Do the work

A colleague shared this ThePrimeTime video post Give Up Sooner. Another way of framing the argument is "do the work". Endlessly looking for someone else's solution does not make you a better developer. Doing the work does. The work is hard and the path to success is full of failures. But it is those failures you experience that makes you a better developer. Each failure on the path to the solution is a failure you will not make in the future, and, moreover, one you can help another developer avoid when reviewing their code. Do the work.

My favorite Dad jokes of 2023

My favorite Dad jokes of 2023 are

When people are sad, I sometimes let them colour in my tattoos. Sometimes all they need is a shoulder to crayon.

I can't take my dog to the pond anymore because the ducks keep attacking him. That's what I get for buying a pure bread dog.

(I needed to keep these somewhere.)

An old shovel works in newer ground. Not so an old wifi gateway.

The MacBook Air continues to have horrible wifi performance. I decided to replace the Apple AirPort Extreme (from 2011!) with an Asus RT-AX3000 V2 in the hope that new hardware, in place of new information, would solve the problem. As you might guess, the Asus provides network speeds 10x what the AirPort did. The MacBook Air wifi is already much better. However, the Air's wifi performance would degrade over time so let's see how it performs over the remainder of the week.

Update: MacBook Air pairs nicely with the Asus.  

Human interface guidelines

I have been working with desktop, web, and mobile applications for a long time. And several times in my career I actually built them. In the early days of desktop application development Apple, Microsoft, Sun, NeXT, etc all had manuals on their operating system's human interface design program. I still have a few of these manuals and other guidebooks on my shelves. Not that I use them anymore. And, it seems, neither have many UX partitioners read them as part of their education. I recently made the suggestion that we should add ellipsis to menu items to indicate to the user that a modal would be presented to collect more information before the action was taken. The response was that they had never see this before and had not heard of it either. 

For many young UX professions they have spent their entire lives working with non-desktop applications. Applications that each define a unique user experience. The drive for uniqueness belies the other efforts at efficiency and intuitiveness. It is likely too late to reintroduce common HCI guidelines, but, hopefully, UX professionals will start to take an interest in the history of their profession.

Update: Maybe it is me being stuck in the past....

A new MacBook Air and the reluctant home sysadmin

We replaced Chris' 13 year old MacBook Pro with the new MacBook Air 15" recently. I had expected the migration to be a bit bumpy ...

First bump was Migration Assistant refused to assist as the old MacBook used a case-sensitive file system and the new one did not. That Migration Assistant made no attempt to help in the transfer as our first experience with the new machine was really disheartening. So everything needed to be manually copied over. 

Second bump was that the old MacBook file sharing would not turn on. No idea why. (It used to work.) This meant having to use an external drive to relay content between the machines. 

We decided to use iCloud for photo and document storage. Unsure if that was the right decision. Anyway, a few days later the uploads were complete. 

Third bump was Instagram on the iPhone is not showing any photos from before a few years ago for use in posts. Chris' business relies on social media so this is important. Maybe it is a syncing issues and will go away soon. As a developer, my fear is that the app is showing the first 16,384 photos! (It would be ok if it showed the last 16,384 photos.) 

Fourth bump was when Chris finally started using the machine the WiFi was unbearably slow. It took me a few days to discover that this is not so uncommon and is related to AirDrop and AirPlay. I disabled those features and networking went from 1 MBS to 30 MBS. Hopefully Apple will fix this soon as we have found AirDrop to be very useful.

Chris has me to help with this transition. What do others do who don't have a reluctant home sysadmin? Again I find myself embarrassed and exasperated that my profession continues to make these tools so hard to use. Jef Raskin was right.

Update: See An old shovel works in newer ground. Not so an old wifi gateway.

The garden knows

For this gardener any success comes from decades of mulch and regular weeding, but mostly from letting the garden itself tell me what it will keep.