Category Archives: Geekery

Some random thoughts on naming conventions

Something recently made me think about product naming conventions. It seems to me you can start off with a really nifty naming convention, but after a while, it gets so cluttered with exceptions and new products that it doesn’t work anymore, and then you have to throw out the whole thing and start again.

Take, for instance, Epic Kayaks. Now I’m not 100% sure of the history, but I believe their first surf ski was the V10, and their second was the V10 Sport. Calling it “Sport” didn’t make a ton of sense because the V10 Sport is actually a less capable surf ski, but was wider and more stable to appeal to a less elite audience. To me, “Sport” usually implies a faster or more capable model, like the “Sport” model of many cars that maybe has more horsepower and gripper tires, or maybe just go-faster stripes and a manual gearbox. They also have a V10L which was at the time just a low-volume version of the V10. I believe they’ve redesigned it since then to be more of its own boat specifically for lighter paddlers.

But since that time, they’ve added the V12 and V14, each of which is narrower and less stable (and faster) than the previous, and then the V8, V7, and V5, which are increasingly more stable and slower as the number decreases. Then they made a boat that was sort of intermediate between the V8 and the V10 Sport (which was already intermediate between the V8 and the V10) and found themselves naming it the V8 Pro. Not as bad a decision as the use of “Sport” in the V10 Sport, because it does imply something faster than the V8, and it is. But still an obvious shoe-horn into a naming convention that was already under stress.

Then this year they demoed a boat that had the same width as a V12 but which was shorter (shorter even than the V10 Sport) to handle short period waves. When they were demoing it, they were calling it the V12M. And that wasn’t a horrible name because really I think it was designed to be “like a V12, but only for specific conditions”. But then they announced it officially as the V11. That to me implies something faster than the V10 and slower than the V12, and it probably actually is.

But I think their number system is getting crowded. It mostly works that the higher the number, the narrower, longer and faster the boat is. But there are exceptions. The space between the V8 and the V10 has two boats, neither of which is called the V9. There are three boats that are called “V10” (ignoring the V10 Double for a second), with pretty different characteristics. People confuse the V10 Sport and V10 a lot. There aren’t that many V10Ls around here, so I don’t know if they get confused for V10s a lot.

Epic is going to continue to design new boats. Some of them are going to be brought to market. I think sooner rather than later they’re going to have to throw out the whole “V number” system, and either just bring in new boats with a different designation or maybe even redesignate the whole fleet.

Naming conventions are tricky. I like that a person can broadly tell whether an Epic boat is more elite or less elite just by the name. I can’t tell anything about, say, the Fenn boats because they use proper nouns instead of numbers. But on the other hand, as long as Fenn designers can think names, they’re never going to have this problem.

At least they aren’t doing stuff like the computer hardware world, where you get horrendous long names with numbers and letters in riotous abandon. I’ve got an HP OfficeJet 6700 Premium printer. That name doesn’t tell me anything about its capabilities or how it stacks up against the OfficeJet J6000 or the OfficeJet L7000 or anything else in the HP printer line.

I’m reminded of the software world. Basically, most software uses monotonically increasing version numbers, usually with a minor and maybe a semi-minor version number as well, and you know that a change in major number probably means something significant and a change in semi-minor is probably invisible. So macOS 10.12.6 is obviously newer than macOS 10.12.5 and possibly just fixes some bugs, but it probably has some feature changes from macOS 10.11.1.

Windows started off with monotonically increasing numbers (Windows 1, 2, 3.11) and then switched to the last two digits of the year (being the only people I know stupid enough to set yourself up for a Y2K problem with only 5 years left to go) with Windows 95 and 98, broke the convention with Windows 98SE and Windows ME, then looked like they were going back to it with Windows 2000. But then they switched to names that meant nothing (XP) and then back to numbers for Windows 7 and 8, but due to problems caused by lazy programmers in 95 and 98, had to skip Windows 8 and go directly to Windows 10. Ugh, what a mess!

One piece of software I used way back in the day was a dBase III compiler called “Clipper”. I used to love the fact that their naming convention was actually the season and year of release, so Winter ’84 was followed by Summer ’85, etc. Good, because it was easy to tell if the version you found on the shelf was newer than the one you were using. But people evidently didn’t like it, because for their 6th release, they switched to calling it “Clipper 5.00” (yes, it was the 6th release – I guess that means they started from 0) and then “5.01”, then “5.01 Rev 129” because who needs consistency? Although looking at Wikipedia, it’s possible that people didn’t like the seasonal names because they lied a lot. “Summer ’87” was released on 21 December 1987.

So I guess what I’m saying is I’m glad I don’t have to name stuff because my OCD would want the names to tell you something, but I’d also want to leave room for fill in products without breaking the convention, but at the same time be memorable and not confusing.

Give it a REST

As you might know, I’m currently looking for a job. And one thing you see in job ads is a requirement for experience with “REST APIs” or “RESTful services”. And as far as I can tell, it’s nothing more than a naming convention for your basic CRUD (Create, Read, Update, Delete) web services. If you write four URL handlers for the URLs “/item/create”, “/item/{item id}/read”, “/item/{item id}/update” and “/item/{item id}/delete” then you’re a filthy normie and unemployable, but if instead you make one URL handler for “/item/{item id}” and check the request type and do the read, update and delete based on the request type being “GET”, “PUT”, or “DELETE” respectively, (creation being done with a POST to the URL “/items”) then you’re a “RESTful” guru and will be showered in money.

Can we just agree that being a naming convention, it takes approximately 5 minutes to train somebody how to do this? And if my former employer would give me back my login for an hour or so I could go back and change all my AJAX calls to fit this naming convention and join the ranks of the REST API experienced.

Thanks, Final Cut Pro

So my new computer has a 2TB “hybrid” drive instead of the 512GB SSD I had in my laptop, so I thought I’d see if doing my video editing on the main drive instead of an external drive would be faster. The last video I did, from last weekend’s Electric City race, worked fine, although I didn’t really see any speed improvements. So yesterday when I went to start a new project the first thing I did was move the Electric City event/project from the Final Cut Pro (FCP) library on the main drive to the one on the external drive, and then start importing clips and editing on the new project. I did some editing and left it in the “transcoding and analysis” state overnight – editing is a lot smoother if you let it just finish those “background” tasks overnight, I’ve found.

But I wake up this morning to dire warnings about how I’ve run out of room on my main drive! So I did a “du” in the Movies folder, and discover that when I told Final Cut Pro to move the project, it did but it left a copy of the full project, including all the transcoded “optimized” files, in ~/Movies/FCP_Library.fcpbundle/__Trash/Electric\ City\ 2017-9B3Flz/. There doesn’t appear to be a menu item to empty that pseudo-trash, so I just did an rm -rf on it and now I’m down to 70% used.

After I did that, I discovered that Final Cut Pro will automatically empty __Trash when it exits, but it seems to me that cleaning up your old projects is a natural thing to do when starting a new one, so that’s just bad UX. Especially since when you tell it to move the project it returns a success immediately, but then it’s in the background tasks queue. So it was actually still going on when I was importing my clips last night, and so if I’d said to move the project then exited FCP it wouldn’t have had any trash to empty because it wouldn’t have finished moving.

Possible breakthrough on the camera front

I went for a paddle today with my GoPro Hero 5 Black, and in spite of carefully attaching my Novabeam USB battery, I only got 95 minutes from it, just as if I hadn’t used the battery. Meanwhile, I had the GoPro Hero 5 Session at home doing an experiment where I’d hooked up another Novabeam USB battery, and when I came home I discovered it had recorded 4 hours and only stopped because it had filled up the SD card.

But then I tried just unplugging and re-plugging the Novabeam on the Hero 5 Black, and it happily started recording. I suddenly realized that a light comes on in the Novabeam when you first plug it in. And it struck me that one significant difference between my “bench tests” on my desk and my tests on the water is that in both cases I plug the USB battery in and arrange the silicon putty here at my desk in both cases, but in the “bench test” I hit the Record button almost immediately, while for the water tests I first drive 20 minutes. I bet the battery is turning itself off in that time.

So next time I go paddling I’m going to have to try plugging the battery in and waterproofing it just before I hit record. If I can get 4+ hours of the battery, I can do that early in the pre-paddle preparation and still get the whole paddle or race. I’m so happy that I have probably figured this out before my first race.

I’m baffled by action cameras

One of the things that really bugs me about actions cameras is that almost every single one of them has about a 80 to 90 minute battery life. The sole exception I’ve found is the Contour Roam 3 which has nearly a 3 hour battery life. Unfortunately it’s limited to 1080p/30fps, and even at that I didn’t think the picture was as bright and vibrant as, say, my old Polaroid XS100.

After multiple camera failures mostly due to water, I decided this year to treat myself to a GoPro Hero 5 Black and a GoPro Hero 5 Session. They are both intrinsically waterproof and have good picture quality as well as higher resolutions like 4K/30fps and 1080p/60fps. But again, they’ve got that 80-90 minute battery life.

I did “bench tests” on my desk using external USB batteries and discovered that with an external battery, I could easily get 3 hours out of either camera. So using some zip-ties and silicon putty, I arranged these external batteries and waterproofed the cable connections and yesterday I went out to use them on the water. It was coolish and overcast, so overheating would not be a problem – it was certainly cooler than when I’d been testing at my desk, anyway. But I was extremely disappointed when the Session only gave me 88 minutes of video, almost as if I hadn’t had the external battery at all, and the Black gave me 115 minutes of video.

I’m trying to figure out why both cameras stop getting charge from the batteries out in the field, but work fine at my desk. Working hypotheses:

  1. The cameras are overheating and shutting down
  2. Recording a moving scene in the real world is more taxing on the cameras than recording a mostly static scene in my office, and so they’re trying to suck more power than the battery can provide
  3. The image stabilization is sucking down lots of power in the moving environment that it’s not on my desk
  4. The cables aren’t as secure as I think they are and they’re coming lose somehow

I consider the first one unlikely, because the field test was done in cool and overcast weather. When I got home, I tried both cameras again and they both started recording and lasted for the remaining time on the external batteries. To see if it was just the lack of motion in the office scene, I pointed both cameras at my computer screen and started a continuous play list of YouTube videos, and that didn’t seem to make any difference. That would tend to argue against the second hypothesis. I also discovered that I’d only had image stabilization turned on in the Session and not the Black, which argues against the third hypothesis. I can’t find any signs of looseness in the cable connections. Oh, and one other thing I discovered while doing my bench test – the front of the Session, especially the screws holding on the front lens cover glass, were almost uncomfortably hot to the touch. I should see if they get that hot on the water.

I have one other test I can try – I have a much bigger battery that has a 2.1A port for iPads. I don’t know if GoPros do the magic handshake that allows them to take higher amperage from 2.1A ports, but that would be a good test to see if they’re just using too much juice in the field. But this battery is way heavier, and also is going to be a bitch to waterproof, so I don’t think it’s a race-ready solution.

But one of the possibilities I didn’t include in the above list is that the target market for action cams are people who stop and start their cameras to capture short bursts of activities like sky dives and downhill ski runs, so nobody is actually designing or testing their cameras to see if they’re capable of doing multiple hour long videos.

One of the reasons I went for GoPro rather than some other brand is that the third party add-on infrastructure is there for GoPro in a way that isn’t there for Sony or Contour or other brands. Some of the older GoPro models had third party battery extenders, and I have hope that somebody else will eventually solve my problem for me. I asked Ray Maker (of DC Rainmaker) and he agrees with me that third party solutions may be imminent.