Translating documentation from human written formats to machine processable data and configuration files is a trivial thing for people to do. It is also rote and boring. With claims of being able to pass the bar exam, I would expect an LLM to excel at this trivial task and save me hours of time.
I tried multiple models and asked friends to tried their paid tiers, and only one LLM was able to somewhat successfully complete this task:
I still had to tweak and futz with the output of Claude 3, and it needs some work to get it to work with prefixed (bundle exec
) completions.
Generalized artificial intelligence tools and LLMs do not feel like they do a great job at the tasks I throw at them. For some things like getting ffmpeg flags or acting as a proxy to general search they are fine. However when you ask them to reason or “do the work” they struggle unless you have a good model and that model has the relevant training data. Because of the nature of the languages and libraries I use are a bit less common, LLMs tend to struggle with the tasks I throw at them. When AI companies claim their AI can do things like “pass the bar exam” more likely than not they have been trained on law and bar exam related questions. It does not mean the LLM is smart: it’s easy to pass a test when you have an answer key. However finding situations where there are patterns in translating to or from some sort of fuzzy input or output that generally follows a pattern, AI can do if you give it enough data.
]]>The most popular product is not always the best one. Managers, coders, and others often have an instinct to go with the technology that everyone else is using. There are some advantages to this: usually it is well supported, easier to find documentation, and lots of folks can help you when you have issues. However, there is no promise popular software packages are good quality.
Microsoft eventually fixed the 4K monitor flickering issue but I ended up going with VSCode. A “Mac assed Mac app” this editor from Panic software follows many of the familiar MacOS interface conventions I am used to, and is quite performant. It may not have quite the extension library of VSCode, and does not have the collaboration features, but it does everything else I need it to well. Although it is a paid product, I have learned that customer support is much more responsive when you pay for a product.
]]>Chris Mims chronicles the looming technical debt doomsday in the Wall Street Journal. However the real scrooge comes for ambitious product managers and optimistic engineers that think a task will be easy and turns into a several sprint odyssey. Accumulating technical debt will slow down productivity. Software development slows down and story point estimates become less accurate. Business deadlines are missed and suddenly nobody feels like they have control of their timelines or release roadmaps. Without visibility and understanding of technical debt, leadership is flying blind.
One of the larger challenges is identifying and categorizing debt. In your house you might not know you have knob and tube wiring until you go to replace a light. Similarly technical debt rarely is cataloged in an easy to review ledger. If you start by having engineers begin to write up tickets for debt and catalog them, you can begin to triage it.
If you are starting from square zero you can try to catalog the barriers to doing the following to find technical debt:
You can also use tools like RubyCritic to get a proxy analysis of the code base. These tools aren’t perfect but provide both a good general sense of the health of the app and a way to drill down and find specific issues.
Sometimes paying off debt early does not make sense. A valid although more expensive strategy to deal with technical debt is to simply wait for it to become a blocker. Instead of trying to further defer on the debt when it is due, now is the moment you pay it. This strategy fails if you find yourself constantly trying to come up with “creative” solutions or workarounds to avoid paying debt. These half-measures are often like taking out a new credit card or pay day loan to pay an old one. However if you’re simply fixing things as tickets come up, you will make progress on paying your debt off.
Media reports suggest that after the initial surge of interest the Vision Pro is not selling as aggressively as Apple’s other products. With its price point, this is not surprising. Even if Apple Vision Pro flops sales wise, I think Apple will continue to iterate on it. The future is here, even if it is in beta.
]]>In the name of convenience or developer experience folks will put effort into streamlining repetitive processes. Convenience wrappers and utilities can reduce effort and mental load, especially if frequently used. However trying to package these for other systems or use them long term introduces new commitments to support them that did not exist on your system. Save yourself and others the headache of fighting with your custom tooling by not abstracting the underlying tools.
The exception to this rule is standardized scripts that are included with applications like ./bin/setup
that should automatically setup a Rails application, or yarn start
that should start a JavaScript app. A self-contained shall script like do_stuff.sh
is going to be less painful than script_of_functions.sh
that is trying to map input to an existing CLI tool. After all, if I have to put in the effort to memorize or read your custom function list, why not just do so for the underlying tool?
As a leader you need to understand the trade offs and options when embarking on a software project. Especially one that is run by volunteers or a new group of consultants. How much trouble are you actually signing up for by having apps written in multiple languages? How big of a factor is this in short or long term success?
Technology, especially software, does not stagnate. Programmers will have their favorite tools the way George Harrison has a favorite guitar, but rare is the software engineer that has not had to code in an unfamiliar language or library. The ramp up time is going to be much higher to work in the unfamiliar, but many of the general principles are the same. It’s not insurmountable. In a large number of cases the cost of learning how to code or fix an existing program is going to be less than rewriting it in a familiar language. Do not let people convince you that programmers cannot learn more than one language or library.
Much of the pain of transitioning between languages and tools has been mitigated with the rise of DevOps, specifically tools like Docker. Docker lets you programmatically write and document what libraries and type of computer you need to run an application on a server or for development. Where apps previously require a lot of setup to work, Docker (when used properly) provides a shortcut to save you the research. When done well docker compose up
is all you might need to run something. Even when written in different languages your app probably communicates using HTTP, has a REST API, and stores data in a SQL database. Regardless of language, web applications should be deployable to the cloud and able to communicate with each other. Where other folks see a mess, I see a micro-services architecture.
I have not worked at a giant engineering firm like Google, Apple, etc. but I know folks who do, and they standardize and develop their own tooling and training. With a deep bench of talent in a specific language and library engineers at these firms can quickly find documentation or help when they encounter problems. In small to medium sized organizations this benefit is not as pronounced. An inscrutable problem in Ruby might be equally inscrutable in JavaScript. It is a good idea to have a main tech stack for greenfield tech projects to get some benefit, but if a consultancy or volunteer group rolls in and wants to do something only if it’s in R, just let them do it. It will not hurt you as much as the fear mongers claim.
]]>A few days ago a helpful consultant came to do a MassSave evaluation of my home. As a part of this he drilled a couple holes in the wall. A few years later and wiser I am able to patch my own holes, but in almost any other line of business you would expect your item to be in the same condition you left it in. The bummer continued as I learned that the company only did state subsidized insulation work, the interior wall I was thinking of dense packing would not qualify.
As a software engineer I spend most of my time in what we call the backend. I work on data pipelines, APIs, and tooling for processing and encoding video. I am not an expert in React but I know enough coding to read some of it. For the main application I worked on we adopted a user interface using the Hotwire tool set. Although my speciality is backend and video, I can and do frontend work. Like my home drywall repairs this frontend work isn’t perfect, but it is certainly good enough. That’s all I would want from a tradesperson: a good enough repair to my wall and consideration of the entire home, not just their narrow speciality.
In a massive failure of capitalism I have discovered that small to medium and even some tougher jobs around the house are more efficiently and quality wise done myself than by hired professionals. The market for generalists only seems to exist for property management companies or new construction projects. The “general contractor” or “handyman” has disappeared. Many tradespeople only want to stay in their lane. I think there is opportunity in filling this hole for the right business, but in the meantime I’ll just continue to do things myself.
]]>That said, Apple Vision Pro is different, not merely a small improvement on the existing technology. It passes through video of your surroundings so you do not feel trapped in virtual space. It uses AI and cameras to mimic your eye movements on an external screen. It tracks your eyes to serve as a cursor. Where other headsets are an escape from the real world, this headset remains a part of it.
Apple Vision Pro might also be the best headset. Sitting down in the Apple Store on Boylston Street I put it on and the first thing that strikes me is it is more three dimensional than any 3D thing I have tried. In it 3D movies looked better than their theater equivalents. Virtual objects did not seem as pixelated as other headsets. Screens stay dutifully anchored to the spots they are placed in the room. There are not adequate words to describe how much better the quality is than other headsets, you need to book a demo to experience it.
The three dimensional nature of the headset is underscored through demos like Encounter Dinosaurs. Here Apple Vision Pro uses its hand tracking to let you pet a virtual dinosaur. For a moment I felt as if I might be touching it. The accuracy was uncanny. Looking at 3D photos or movies is breathtaking. I feel like I am looking through a window in the moment that is recorded by the camera. The last time I saw technology like this and thought it had the gee whiz factor was when Nintendo’s Switch successfully changed from TV to handheld mode without crashing a game. There is something here, and it is clear why Apple chose to release this now.
Three dimensional videos and photos are amazingly good, but also limited. Shots taken on iPhone or Vision Pro lack the depth and quality of the professional shots used in movie content or virtual environments. It does not take away from this capability. A three dimensional photo is still magic compared to its two dimensional counterpart. It leaves you craving for something better.
Apple Vision Pro’s passthrough video is better than anything I have experienced before, but it is not the miracle heralded by other reviews. The best description of the technical limitations is featured in The Verge’s review. Colors are less vibrant, lighting is dimmed or sometimes blown out, and text can be fuzzy. I am able to read my keyboard keys or light text on a dark background, but looking at my computer monitor before I connect it to Vision Pro is a challenge. Moving my head creates motion blur. This all works best in moderately lit environments. Dark environments have lots of noise while a sunny room increases blurring and blowouts. It’s great in an indoor office, store, or home at night. Otherwise it is merely good enough to be functional.
The killer feature for me is looking at your laptop or going to control center allows you to turn Apple Vision Pro into a monitor for your Mac. Sitting at my kitchen table I have a 4K display that looks bigger than my 27” monitor in my office. I can type with my keyboard and mouse with little to no lag. This worked less great with my Intel MacBook Pro, the resolution was worse and the mouse lag was unusable. But on an M1 machine this is nearly perfect. I can place Vision Pro apps around this virtual monitor and seamlessly use my keyboard and trackpad from my laptop to control input to those. Apple hit a home run with this use case.
Last night I FaceTime’d my best man. A glitch left only audio coming from his side, but from my side he could see my jarring persona. Apple’s AI version of me looks airbrushed, more muscular, and more bald than I do in real life. It is functional, but beta and jarring for folks on the other side that are not ready for it. I was able to share the view I had from Apple Vision Pro to him through FaceTime and it was fun to make him a part of that experience. I was able to drop a full-size Formula 1 car in my living room, walk around and see the details of the car, and then kneel and sort of sit in the cockpit as if I was there. Although he only saw the 2D facsimile, it was enough to convey the idea and find it neat.
Apple Vision Pro has a limited selection of 3D games. This market is already well occupied by Sony and Meta. Playing Super Fruit Ninja was incredibly fun. The game reacted to my hand movements without issue. It felt like I was inside the game instead of watching it on a screen. I hope that games from other platforms will be ported or otherwise become available to complement what is here, otherwise Apple Vision Pro will lag as a gaming headset.
Apple Vision Pro begs to be pushed to the limit, but you quickly find those limits. Passthrough lets you do lots of things with the headset on but trying to drink anything larger than a can is a challenge. Cups collide with it. Folding laundry leads to accidental hand gesture clicking. This device wants to be used in the world but is meant to be used sitting at a couch or table.
The fit of Apple Vision Pro makes a huge difference. A wrongly sized light shield can ruin your experience. Improperly positioning it on your face leads to discomfort and blurriness. While Apple’s face scanning technology works well for most, it’s not perfect. Feedback from friends has affirmed the importance and value of doing an in store fit check and demo.
As a resident of the Apple ecosystem Apple Vision Pro feels like the first headset ready for me to do something more than play discrete games in. 1Password loads and pulls my passwords in. Emails, notes, reminders, all load in from iCloud. The purchases list in the App Store stands ready to bring in things I’ve bought for iPhone or iPad. My text messages and contacts sync. This device feels like it’s ready for me to get stuff done, not just play games.
On Friday afternoon I donned the headset and glimpsed the future. Apple Vision Pro leverages years of engineering effort to uncannily fill my world with as many screens as I want and interact with 3D objects using my hands. A screen that is superior to the movie theater projects 3D movies while spatial audio makes me feel like I am there. The passthrough video keeps me connected to the world and people around me, even if I do not look to be a part of it. After an hour I grow thirsty and simply removing the headset is all that is needed to turn it off, a very Apple touch. Nobody needs Apple Vision Pro but once you taste the future, you continue to crave it. Do not buy one unless you’re ready to leave the Apple Store with a heavier head and lighter wallet.
]]>On their earnings call yesterday Tim Cook boasted that the Apple Vision Pro has over 5000 patents of innovation. It’s no wonder that in Vanity Fair Nick Bilton proclaims the difference between the Vision Pro and other headsets is “as far from a VR headset as a kid’s Schwinn bicycle is from a Gulfstream G800 private jet.” The product might not be the idealized eyeglasses or contact lens with a display, but Apple has been driving in this direction for over seven years and thinks they have enough of something to hold a coming out party today.
The cynical take is that Apple is surrendering to the limits of engineering and is releasing a half-assed product to recoup its investment. This makes little sense. Any money Apple makes from Vision Pro would be lost by the repetitional harm it does to itself by selling an expensive product to its most loyal fans. They clearly think they have something different.
]]>If you cannot get an organization and its culture to change, then successful digital projects are merely demonstrations. Outliers that were only possible because of the skills and resources of the people there in the specific time and place they happened. Returning to old habits means an organization will fumble its chance to do well on future projects on its own. When they’re government projects, these often have wide reaching consequences.
When folks in an organization become believers in good software engineering or digital project management practices, they often develop a set of valuable skills. They are then faced with a dilemma: do I stay and try and transform the organization, or leave it for a more lucrative opportunity with other believers? As time progresses the decision becomes inevitable.
If you’re in management you simply need to offer the converted above market salaries to stay. They’re going to be working harder staying than if they leave. However if you cannot sell this to the folks upstairs, then they will probably leave for another organization.
Whether it is government or a large corporation, digital transformation efforts have a greater chance of success if they are top down efforts instead of bottom up. It is easier to let go of a resistant middle manager or junior software engineer than it is to keep filling empty job requisitions with believers that are willing to make below market.
]]>