Author Archives: Lou Franco

My Typing Teacher was a Genius

When I was in middle school, typing was a required subject. I don’t really know why.

In the early eighties it was not common for people to type at work. There were still specialists for that. Even in the late eighties when I worked in an accounting office and there were secretaries that took dictation and typed up memos. Computer spreadsheets existed, but the accountants there still used pencil and paper and secretaries typed them up if they needed look more formal.

This was the world my typing teacher, Mrs. Cohen, grew up in and probably worked in before becoming a teacher. I think, that deep down, she knew that we wouldn’t find typing relevant, and honestly, the class didn’t take it that seriously.

But one day, she read us an article from the local paper that said that kids needed to learn how to type because computers were going to be a big thing and soon everyone would need to know how to type. It had a huge impact on me—I still remember it very clearly.

I had already been exposed to programming and even had a computer at home. But, coding was just for fun. I didn’t think it would be a job, or that I would be typing every day at work. Mrs. Cohen was the first person that made me think that computers would be more than a toy.

Vision Pro Accessory Ideas

Since the failure mode of the Vision Pro is blindness, which can happen if the magnetic battery cable detaches or if you run out of power, it would have been nice if the headset had some onboard battery for a grace period.

There will be 3rd party batteries with more power. It would be good if they can also support swapping charged batteries in and out without losing power.

Here’s an idea for an accessory: A thin, disk-shaped battery that attaches to the headset magnetically (perhaps also with a strap) that you attach the included battery to. It has enough power for a 1 to 2 minute grace period, and keeps itself charged from the main battery. This is meant to help you swap batteries or just in case the cable detaches.

It’s important that it be light because it will be on the headset all the time. It should also look good.

The strap alone might be a good accessory. If there’s a way to make the magnetic cable more secure, I think I would want that.

The Failure Mode of the Vision Pro is Blindness

If the Vision Pro crashes, runs out of battery, or its magnetic battery cable detaches, you will be immediately plunged into darkness.

This means that the Vision Pro is really unsuited to be worn while moving. Walking around your house or job will probably be ok, but walking around outside isn’t. Luckily the headset looks too goofy to attempt that.

I had really hoped that this could work as a fitness device, but even anything above a jog on a treadmill seems dangerous. A slow walk would be fine. My initial reaction was that I would like to wear it on a rower. That would be ok too, because if it turns off, you aren’t going to fall down.

I am really afraid that someone will attempt to drive with this on. I hope that Apple adds a way to detect this and warn against it (or disable itself with a warning). It should certainly not approve apps that are meant to be used while driving.

If the Vision Pro is just a really good monitor, then this is not really a problem. But it does feel like pass-through displays that block your vision without power aren’t the future of AR (unless they can become transparent).

Is Vision Pro Just a Really Good Monitor?

I just read Ben Thompson’s take on the Vision Pro, which is admittedly a gushing, glowing, overly optimistic take. But …. he’s actually tried one, so I am taking it seriously. One worry I had was whether the displays actually matched the demo, and it does seem that they do.

His conclusion is that the Vision Pro might be in the same product category as a Mac and if that’s true, the $3499 price isn’t that bad. I absolutely could see a world where you use this instead of a laptop, but probably not on day one because it won’t have the apps I need as a developer.

Even so, compared to a laptop, the biggest downside is travel—I value how thin and light my MacBook Air is, and this is certainly not thin. I can’t easily stick it in a backpack. I also can’t see using this in a café or shared work space.

But, that had me thinking that maybe it’s not a laptop replacement, but an external monitor replacement. I have been eyeing the Studio Display at $1599 and also the new Dell 6K displays at $3200. If a Vision Pro is a better display than those, I don’t need it do much more.

It does make me think I should definitely not just upgrade my monitor yet.

WWDC 2023 Reaction

I watched the WWDC 2023 keynote, and here’s what I think as compared to my wishlist.

The new 15″ MacBook Air looks great, but it’s not for me. My main requirement is weight, and this is a half pound heavier. If I wanted to go up in size and weight, I’d consider the Pros. I skipped the M2 Air, and so I’ll just wait for the M3 and see how I feel about my M1 when that comes out. Right now, it seems fine.

There didn’t seem to be any more anti-theft help in iOS. I do appreciate the improvements to auto-correct.

I never even installed macOS Ventura. There’s nothing in Sonoma I care about, but I will probably install Ventura soon and consider upgrading in the Winter. My macOS upgrades are dictated by Xcode requirements. Surprisingly it hasn’t forced me to upgrade this year.

They said that tvOS would be better at knowing which audio device you want to be connected to, which would be great. As I mentioned in the wishlist, this is shockingly bad right now considering that literally every piece of hardware I use with my TV comes from Apple. If this works, it will be the only thing I unequivocally got from my wishlist.

Both Apple and I seem to agree that watchOS doesn’t need any more work. Not sure how the new design language affects Sprint-o-Mat—I’ll have to see as I use it. My favorite new feature is putting a waypoint on a hiking map for the last place you had cell coverage—I have needed that.

Ok, the headset.

I was expecting goggles, but (even though I think it was heavily implied in the rumors), I really thought they would be see-through with a projection. Instead, they are displays that show how cameras see the outside world, and external displays that show your eyes. I had discounted this rumor because it sounded insane, but it actually looks pretty good.

The problem is that the failure mode for the Vision Pro is blindness. Even when it’s working, it looks like it would randomly obstruct vision. Apps are completely opaque rectangles from what I could see. I didn’t see any demo of an application annotating reality. 3D objects could be placed in your scene, and I assume that apps will be able to pass through the camera feed, but that’s for games, not as an always-on feature.

This makes it impossible to use as a fitness device. I would not feel safe running with these on (and just forget about biking). I had hopes that I could make Sprint-o-Mat into a racing simulator (with pace runners on the track with you), but that feels unsafe to me. Maybe for track use only.

Also, my ideas for AR Apps that make the world into a playable game are not going to work with this device, and I really think it will not be used to navigate the real world. This is a stay-at-home entertainment device. It’s a very good one, but I was hoping for something that would be ok to use in real life.

If it stays at home, it does help alleviate the problem of always on cameras being creepy. They did address some of the issue by not letting 3rd party apps get this always-on feed. They also don’t let 3rd party apps get the eye-tracking data, which is also great.

The price being higher than the rumor was a surprise. I would love to try one, but it’s hard to justify $3499 for basically an awesome 1-person TV. For me, the giant workspace, immersive video conferencing, and cinema experience are very compelling. I don’t play games, but I bet there are going to be fitness games that I would enjoy (like a rowing simulator). I would only buy one if I think I’d develop an app for it.

Don’t Let Content Dictate Size in Diagram Elements

A couple of days ago, I wrote about the visual variables in graphic design as applied to diagramming. I showed this UML diagram:

One thing to think about in diagrams is how the size of an element is determined. In many cases, a shape’s size is dictated by its content, which can mislead the viewer on the relative importance of boxes.

I created this diagram for a talk I gave on unit testing, which is why it includes the unit testing library classes. In the talk, the most important class was BowlingGameTest, so it’s ok that the class is the largest one.

But, that was not intentional. BowlingGameTest is the biggest box because it has the most methods.

In the real system, BowlingGame is a much more important class. If this diagram was meant to give an overview of the system, you would want to make sure that the BowlingGame box was the most prominent. If your tool didn’t let you set size independent of content, then it would be better to leave out test methods so that the test class box was smaller.

Write While True Episode 20: Extemporaneous Writing

When I was 13, my mom got me an electric typewriter for Christmas. She was a secretary, and she taught me how to touch type, and she wanted me to have something to practice on. But unfortunately, when I opened it up, it didn’t work.

Transcript

How to Use Visual Variables to Emphasize Elements in a Diagram

In graphic design, there’s the concept of visual variables. For each element of a design, you can set its: Position, Size, Orientation, Hue, Value / Brightness, Texture / Pattern, and Shape.

By varying these variables between elements, you impart information. For example:

  1. Elements of the same color should be related in some way.
  2. Elements of different colors, but the same hue, might have a more broad relation.
  3. Elements that are close together should have a relationship related to location. Ones that are further apart should be further in that location.

You can learn more about this in these two books:

These variables also apply to diagramming. Maybe even more so because the entire point of a diagram is to impart information, where in a graphic design piece, like a poster, you have other considerations.

For example, in this C4 Context Diagram

  • Blue hues are for things that are internal to the system
  • Gray hues are for external elements
  • Dark values are users, lighter values are for software
  • Figure shapes are used to indicate users

In this UML Class diagram:

  • Hue is being used to indicate library elements (yellow) vs. classes in our system (cyan)
  • Lighter colored boxes are tests and the darker one is a class in the product

So, if you want to make an element more prominent, you could use a subset of the variables to do that:

  1. Use position to set it in the center with other elements around it
  2. Use size to make it bigger and other elements smaller
  3. Use rotation (sparingly) to make an element stand out as compared to others
  4. Use a different hue for the most important element
  5. Set its brightness at the extreme (darkest or lightest)
  6. Give it a distinctive pattern
  7. Give it a distinctive shape

In standardized diagrams or in editors that impose a layout algorithm, you might have limited control of all of the variables, but since there are so many options, there is usually something you can do.

WWDC 2023 Wishlist

WWDC23 is next week, so I put together a wishlist. I last did this in 2021, where I broke it down to watchOS, iOS, and developer tools. Whenever I write these wishlists, they are very centered on the work I am doing in the moment and what I need to help me. This year, I am doing less Apple device development, but I use the devices a lot and here are the things I am thinking about.

Headset

There are a lot of rumors that Apple will release an AR/VR headset. It seems like it will cost about $3,000, have an external battery pack, and come with a new framework.

This rumor has been around a while. For the Fall 2021 Apple event (when we really thought a headset would be coming), I wrote:

So, the main thing I’d hope for is something in AR. I’ve written about how I think AR could make apps more like games, and I do think that there’s space for a workout AR device. I would love to extend Sprint-o-Mat to make it feel like you’re in a race against the pace-runner. It would also be a good addition to Fitness+, which could extend to outdoor activities.

So, while I do have development ideas for an AR headset and would love to try one while running, it’s not worth $3,000 for me. If it’s a gaming device, I am not interested.

If the headset could somehow help me in my work (make me a more productive software engineer), then I would be more interested. GitHub Copilot seems to do a good enough job just in VSCode’s interface, but I could imagine being immersed in a VR world with even more heads up information. It would be interesting if there is some kind of meeting space VR, but since I mostly work alone, it would not be worth it to me.

I continue to be worried about headsets that have cameras. I think that it’s inherently creepy out in the real world and dangerous if camera access is extended to apps. I wrote about some ideas for Socially acceptable cameras in AR that I hope are in this headset if they are meant to be worn in public.

New Mac Hardware

If they release new hardware, I am in the market for a new MacBook Air. I love mine, but it’s an M1, so it only has 16GB. I wouldn’t mind expanding on that. I am holding out for a better camera. This seems impossible in the razor thin lid of the MacBook Air. I would be ok with some kind of camera array and a notch, if that’s what it took.

watchOS

My watch needs are driven by my app, Sprint-o-Mat. Aside from the AR features I mentioned above, I am pretty happy with where it is right now and don’t think there’s anything more I need in watchOS for it.

iOS/iPadOS

I hope that Apple adds more safeguards against device theft. One thing they could do is autolock the device if it moves out of connection with the watch. And they obviously need to do something about the fact that the device password gives too much access to iCloud and the Apple ID.

As for a system-wide feature, the biggest thing I miss on iOS is a clipboard manager. Even if they just kept a clipboard history and exposed an API, so that apps could fill the gap, I would be satisfied.

tvOS

I have an Apple TV, HomePods, and my wife and I both have AirPods (all made by Apple). But for some reason, the Apple TV insists on being connected to the TV audio by default. There seems to be no way to get to stay on the HomePods.

Keep Track of Your Good Work

This advice is mostly for people starting out in their careers in software engineering.

On your first day at a new job, start a document called “Promotion Packet”. If you are working for a company with published level descriptions, put in the job description of the the next level and include the judgement criteria in your employer’s words.

Find the company’s annual goals, OKRs, KPIs, etc, and ask how they trickle down to your department (and ultimately you). Write this down in your promotion packet as well.

Then, as you are working, look out for opportunities that align with that judgement criteria and the goals.

Finally, critically, keep track of all of those accomplishments with links. Make a digital footprint. For a programmer, that might be:

  1. Code
  2. PR comments
  3. Documents (specifications)
  4. Times where you are mentoring
  5. Participation in decision making

You are specifically looking for places where you are driving outcomes that the company leadership thinks is important and makes the case that you are operating at the next level. In your promotion packet document, you would want to write a two-sentence summary of the accomplishment and then a link to the proof.

I wrote about the general requirements of higher engineering levels in How Senior Software Developers Think. In short, it’s ever expanding scope and leverage.

If a performance review comes up before your next chance at a promotion, then you can use the information in this packet for that.