Facebook… go away

I don’t think I’ve ever seen such a disingenuous paragraph in a full-page newspaper ad as this one from Facebook in their ongoing attack on Apple:

Apple’s change will limit their ability to run personalized ads. To make ends meet, many will have to start charging you subscription fees or adding more in-app purchases, making the internet much more expensive and reducing high-quality free content.

Let’s be clear here. For one… there is literally NO free content on Facebook. And very little of it is high-quality. That which is, does not come from Facebook. They are not a company of journalists and writers.

Newsflash for those who’ve been under a rock for the last 25 years… the Internet has always been expensive. The real issues here:

1) who’s profiting?

2) in what currency?

3) is the transaction clear and transparent?

There are many companies profiting from the existing model of ‘free’ Internet. But it’s not small businesses. It’s Google, Facebook and a trove of others (Apple included).

On the currency and transparency… Facebook is far and away the worst here. They despise transparency. Apple wants to expose their users to what Facebook is collecting from you, the product, and let you choose whether or not you’d like to participate. You can choose to opt in. Facebook is worried that many will opt out once they understand what Facebook is doing. Not an unjust fear, but it’s yet to be seen how it will play out.

Apple’s motivation is coming from its customers. They (and I’m one of them) want these options. They’re one of the reasons we choose to buy iOS devices instead of Android devices. I don’t want targeted advertising. In fact, at this point I’ve been using the Internet for 30 years and I’m essentially blind to all online advertising; my brain has a highly-trained ad-ignoring filter. I don’t want large corporations tracking my every move online. Especially without transparency. Heaven forbid that I be willing to pay Apple for a device that allows me to protect some of my privacy!

Facebook’s motivations are at least partly coming from their customers too. But you, the end user, are NOT their customer. The advertisers are their customers. You are their product. I don’t quite get why Facebook tries to deny this; without you (the end user) and all the data they collect on you… they have no product to sell to advertisers. They’d have to change their business model. Perhaps charge a subscription fee. And for most of us… Facebook is definitely not something we’d knowingly pay ‘real’ money to use. But if you’re a Facebook user, you ARE paying for it. With your privacy and your time. And possibly your mental health. And maybe even your data plan.

And Facebook knows this to be true.

Beyond hurting apps and websites, many in the small business community say this change will be devastating for them too, at a time when they face enormous challenges. They need to be able to effectively reach the people most interested in their products and services to grow.

LMAO. “Hurting apps and websites”. Could you be more ambiguous? Oh, I see… you mean facebook.com. Sorry, I forgot for a moment that Google and Facebook have _decimated_ many small businesses as well as some large ones (news broadcasters, journalists, ad agencies, large newspapers, local sign makers…).

Again… you, the end user, are not the customer. The advertisers are the customers.

Forty-four percent of small to medium businesses started or increased their usage of personalized ads on social media during the pandemic, according to a new Deloitte study. Without personalized ads, Facebook data shows that the average small business advertiser stands to see a cut of over 60% in their sales for every dollar they spend.

In other words… once users understand what Facebook is doing, most will opt out?

Update May 12, 2021: it looks like the answer is a resounding ‘yes’. In the first week of 14.5 rollout, 96% of users are choosing to opt out. Should I feign surprise?

AMZL US sucks, Amazon no longer my preferred online store

It appears that Amazon’s greed is continuing to degrade the customer experience.

Many areas of the US have had AMZL US become the primary logistics and delivery service for Amazon Prime shipments over the last couple of years. The problem is that for many of us, it has largely eliminated the incentive for Prime membership: fast, ‘free’ shipping. Of course it’s NOT free, since Prime membership is not free. But the bigger problem is that for many of us, AMZL US is dreadfully bad compared to USPS, UPS, FedEx or DHL.

I’d estimate that most of the Prime orders delivered to my home via AMZL US have not met the Prime promise. They’re often not on time, or even close to on time. 2 days becomes 4 to 7 days. On many occasions the final tracking record says “handed to resident” when in fact that was not true (no one was home, package was left in driveway). And recently, a package arrived with the outer box intact, and the product’s box (inside the outer box) intact but EMPTY. And all of my recent AMZL deliveries have been late by at least a day. Today’s notice is typical of what I’ve seen lately:

Note that ‘Wednesday’ is 5 days after I ordered. This is a small Prime item (would easily fit in my mailbox and hence USPS would be inexpensive), as was the item that didn’t arrive (the empty box shipment). And these are just a couple of the recent issues. Less than 20 percent of my AMZL shipments have been completely logistically correct. All of my recent shipments have found their way into the abyss above; delayed on the day they were supposed to arrive, at which point they can’t tell you when it will arrive or when they’ll even ATTEMPT to deliver it. This isn’t how FedEx, UPS or even the USPS do things. They have actual logistics, while AMZL apparently does not. AMZL can not reliably deliver packages on time, nor reliably track them. And of course, the day they expected to deliver it was a Sunday. Umm, I don’t need or even want Sunday deliveries. Especially if it triggers the “we no longer know when we’ll deliver your package” tracking status when that Sunday passes.

This is what happens when a company decides it would like to leverage its increasingly monopolistic position to make higher margins. As near as I can tell from stories from AMZL drivers, former AMZL logistics employees, other customers and my own experiences, AMZL is a logistics morass. And the last mile, arguably the most critical, is essentially slave labor. As the old adage goes, you get what you pay for. This isn’t open capitalist markets choosing the winner; as near as I can tell, there are almost no customers who prefer AMZL over USPS, UPS, FedEx, DHL, etc. And there are many stories of customers dropping their Prime membership because they can’t control who is used as a courier and get stuck with AMZL. This is Amazon deciding that they’d like to squeeze a few more pennies from their business by underpaying for courier services. Who suffers initially? Amazon Prime customers, and those who think they might build a profitable business delivering products sold by Amazon (good luck; the last time I ran the numbers, it was worse than trying to make a living as an Uber driver). Who suffers in the long run? Amazon and its shareholders. When Walmart and BestBuy start looking like significantly better options to your customers, you know you’re in the running in the race to the bottom.

This isn’t a bottom-up problem. While I’m sure there are some bad apples in the driver and contract courier company ranks, the real cause is much more likely the pricing demanded by Amazon. This is an Amazon initiative, and from my narrow view, very poorly implemented. I’m quickly becoming an alienated customer, and it’s been made clear that they don’t really give a rat’s ass about it since I can’t blacklist their AMZL service. Prime is now mostly a contract that’s regularly broken by one party (Amazon).

It’s unlikely that I’ll renew my Prime membership when it comes due. Nearly everything I buy from Amazon is available elsewhere, with free shipping from a RELIABLE courier service, and often at a lower price. Since 2005 I’ve been preferring Amazon because my Prime membership yielded fast, reliable delivery (via UPS or FedEx). That’s no longer true, and I have no recourse other than ditching my Prime membership and shopping elsewhere. Amazon doesn’t allow me to blacklist their lousy AMZL delivery service. The time alone that I’ve spent chasing down AMZL delivery issues costs more than the annual Prime subscription.

Today I spent $240 at my local BestBuy on an item I had intended to buy from Amazon (exact same price). And I generally hate BestBuy. But… walking out of a brick and mortar with product in hand is orders of magnitude better than waiting 5 to 7 days for something to POSSIBLY arrive and paying extra (Prime membership fee) for that ‘privilege’.

Who will get more of my business? For technology, the usual suspects: NewEgg, B&H, Adorama, Microcenter and BestBuy. For tools, Home Depot, Lowe’s, Menard’s, Performance Line Tool Center, Tooltopia and others.

To be clear, I’m not oblivious to the problems of scale with respect to Amazon delivery. And I’m _far_ from a luddite; I strongly believe in technological advancement and don’t need a human to hand me a package. But AMZL has been around since 2014 and it still sucks for many of us. I didn’t sign up for this experiment; I signed up (and paid for) 2-day delivery. If you ask me, a smarter move on Amazon’s part would have been to use AMZL as the free (as in Prime membership not required) delivery service, and kept the reliable courier services as the only ones used for Prime membership. And been willing to invest more in making AMZL viable before forcing it on customers who are paying extra for 2-day delivery service.

creating FreeBSD packages without ports: part 2

I believe I now have an effective FreeBSD package manifest creator. It will be included in the next release of libDwm.

I need this for the cases where I want to build a FreeBSD package for distribution without using ports. I have my own needs for this, but there are other cases where it makes sense to have this kind of functionality. For example, when you need to distribute data or configuration files. Heck, even packaging your shell initialization and other rc files from your home directory. Or in my case, packaging small things on a Raspberry Pi where I don’t have ports installed.

The program inside libDwm is called ‘mkfbsdmnfst’. It’s in libDwm because I intend to use it for packaging libDwm and the support classes are in libDwm.

It will read a template manifest file before reading files from a staging directory. This template file is in manifest format, though it also allows comments. Having the template allows the stuff that doesn’t change to be put in one place. Another benefit is that you can prepopulate parts of the ‘files:’ section. For example, when you have a binary that you want to be setuid root when the package is installed, you can use a line like this in the ‘files:’ section:


I check that all files in the manifest exist in the staging directory, so that you will receive an error message if you have a manifest with files that don’t exist.

More in a later post after I’ve written the manpage.

My personal repository migrated from CVS to Subversion

This was a long time coming, but I’ve finally migrated my personal source code repository from CVS to Subversion. I had to make many passes at it with cvs2svn to get it laid out reasonably well, but it’s done.

The new subversion repository is in one of my ZFS pools (mirrored), hence I feel a little more secure about its longevity. And it’s not as if I don’t have backups. I wrote a new script to snapshot and send/receive the repository nightly using an incremental scheme. A full snapshot is sent every 4 weeks, an incremental versus the full is sent every week, and an incremental versus the weekly is sent every night. These are received in a ZFS pool on another host. I’ll likely svnadmin dump the repository monthly as well to send off-site.

Why did it take me so long to do this migration? Well, there are things I still like about CVS. One of them is $Name:$ substitution for tags, which has no equivalent in Subversion. Yes, there’s svnversion, but that’s not the same thing nor is it even close to the same thing. And when you’ve long been using this feature (my CvsTag class, for example), it’s painful to give it up. Fortunately I now have an SvnTag class in libDwm that provides at least some of the functionality I need. Namely being able to emit a tag or branch name from within a program by parsing the HeadURL substitution with a user-provided regular expression at compile time.

Another reason was simply the amount of work required. I have about 1.1 million lines of C, C++ and java code in my repository, spread across projects going back 25 years.

I won’t write about all of the upsides of using Subversion versus CVS. It’s a topic that’s been beaten to death, and if there were no upsides, I would not have migrated. Obviously, the constant-time and space remote copy mechanism (used for branches and tags) is a huge boon for frequent branches and tags of large projects. As is the ability to delete branches that are no longer active. These things alone were enough motivation for me to switch.

A friend asked me, “Why not switch to GIT?”. The simple answer is that I don’t have enough experience with it yet. I’ve used it, but I’m a novice. And my needs don’t match GITs primary features. I don’t need a full history of my projects on the machine on which I’m working, and my personal repository is for personal use. Since my Subversion repository is on my local gigabit ethernet, I don’t suffer much for speed. And since I own and administer the machine hosting the repository, I’m free to have the backup scheme I need.

C++11/C++14 books now on my shelf

Over the last year or two, I’ve been using more of the features introduced in C++11 and C++14. I’m a bit behind the curve only due to not being able to live on the bleeding edge with my compilers. Having an OS X desktop and laptop, I can use a non-Apple version of clang++ but it’s quirky and doesn’t always get along with what’s included in Xcode. The situation on my FreeBSD servers is similar but not as troublesome.

Back on topic… I wanted a book or two covering some of the details of C++11/C++14 features that I’ve either not used or have only touched upon without fully knowing the consequences. Things like auto, override and range-based for loops are fairly straightforward to use with few hidden consequences (though they have a few constraints that can feel a little odd at first). Lambdas are a little tricky but mostly only in the constraints with the capture list (until you’ve read about them). But some topics can be tricky to completely absorb. Move semantics, rvalue references and perfect forwarding would be typical examples for most of us. For those who’ve not done any concurrency programming, consider yourself lucky that C++14 is here; standardized facilities means you’ll be able to avoid the headaches that many of us have had to deal with over the last 15 years when needing threads on various platforms. And while I’ve been writing multithreaded code for a very long time, I appreciate the cleanliness of the new C++ facilities.

For the areas where I’m still hazy or worse, I chose Scott Meyers’ Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. In general you can’t go wrong with a C++ book from Scott Meyer, and this one appears to be no exception. While I just received it yesterday and hence haven’t had time to dig in, an initial skimming leads me to believe this may be his best book to date.

I also bought Bjarne Stroustrop’s A Tour of C++. Eventually I’ll update my copy of his The C++ Programming Language, but it’s pricey and the reviews of the printing/binding aren’t great. I still cherish my Special Edition version despite it being obsolete, in no small part because it’s a well-bound hardcover. At any rate, A Tour of C++ looks like a nice brief tour of C++, including C++11 features.

Unicomp mechanical keyboards: still king after 20 years

I’ve recently been looking at some of the heavily marketed mechanical keyboards on the market. Take your pick of companies… Razer, Das, CoolerMaster, Ducky, Matias, others.

I actually own a das Model S Professional for Mac that I bought less than 6 months ago but have already retired. I was using it on my hackintosh. For some reason its KRO is poor. I don’t know if it’s a Mac issue or a keyboard issue, but I regularly had problems with missed keys even though I am certain the keys were struck. I know because it’s repeatable. So even though there are many who regard the das Model S Professional as a very good keyboard, I think it’s not worth anywhere near its price. Cherry MX blue switches are nice, but the das is doing something between the switches and USB that renders the whole experience rather suboptimal.

And of course the keycaps on the das for Mac are low quality. The printing wears off very quickly, and isn’t very readable even when new. For someone that switches keyboards and operating systems multiple times per day by necessity, poor keycap printing is a problem. I replaced the keycaps with a custom set I designed myself and bought from wasdkeyboards.com. I used black on white and had no signs of the keycap printing wearing off after many months of every day use. If you insist on buying a das keyboard for your Mac, I highly recommend replacing the keycaps with ones that are actually useful. You can find my design here.

My conclusion: the Unicomp buckling-spring keyboards are still king of mechanical keyboards, being based on the venerable IBM Model M. For the Mac, you want the Spacesaver M, in black or white.

I’ll give the Matias Tactile Pro the runner-up spot. Note that I have not yet tried their Quiet Pro, which has modified Alps white switches and is quieter than the old Tactile Pro.

What am I using right now? A moshi luna backlit keyboard. Yes, it has scissor switches, which most mechanical keyboard lovers despise. However, the moshi luna is the closest thing I’ve found to my Macbook Pro’s keyboard, so it’s at least familiar to me. And I do like the backlighting, though I could live without the silly bling of the lighted acrylic surrounding the keyboard. In fact I might paint it or cover it with very thin aluminum.

An Apple TV with a big screen? Nonsense, I hope

I’m so tired of the arguments from pundits saying that Apple needs to make a television.

There is little to no profit in television sets; they’re commodities. Let’s take some of the Japanese companies as examples. Sharp, Panasonic and Sony lost a combined $20 billion dollars in 2012. If Sony hadn’t sold off a chemical unit and didn’t have the PlayStation and content, it might be dead. Sharp is unlikely to survive much longer without a merger/acquisition. Panasonic… dunno.

I won’t go into the details, but I’ll be the first to admit that these 3 companies have made many missteps in the last several years that made them bleed a lot more than they should have. Panasonic made some major losing bets like building new plasma panel factories starting in 2003 and dumping a lot of cash into their purchase of Sanyo for what are now struggling businesses (solar panels and batteries). Sharp completely missed out on smartphones (their phone sales have been halved from 2007 to 2012) and outsourcing, and like Panasonic made missteps in solar. Sony’s television business has been losing money for 8 years running.

The problems here are many. For starters, the competition from China and Korea is difficult to overcome. Large LCD panels (regardless of backlighting technology) are now a commodity. LG and Samsung will continue to make TVs with near-slave labor. And despite what some would like you to believe, people are not starting to change their TV sets every 2 to 3 years. Or even every 4 years. The reality is that the recent trend has been to replace aging non-HD sets with HD sets. I hate to break it to the idiots masquerading as experts, but HD has been with us for more than 10 years. It has taken that long for the average consumer to adopt a single HD set. Once the swing is over, the buying will stop again. Sure, they’ll eventually replace each set in the home. But they’ll then stop for a long time, unless the sets fail. And it would never have happened in the first place if the prices hadn’t dropped dramatically in the last 5 years.

Look at the trend for PCs. It’s not significantly different than televisions. Apple is a publically traded company and they’re making their money in mobile (phones and tablets, plus their content stores). The money they’re making from iMac, Mac Mini and the nearly-dead Mac Pro is a very small piece of their profits today.

The fools who equate the HD screen buying to people buying smartphones every 2 to 3 years should be fired from their writing positions. Tip for the ignoranti: phones are an order of magnitude less costly than 55″ HD televisions. They’re also with us 24 hours a day, and your average smartphone is an order of magnitude more useful than a 55″ television simply due to the fact that it fits in your pocket. They’re also an order of magnitude easier to recycle. But more importantly… most people aren’t buying phones every 2 years just to get a new display. They’re buying a new phone to get new features, often only software features or software features supported by a small bit of updated hardware (say LTE or accelerometer or GPS). And of course to replace the phone they’ve beat up by dropping it, spilling their McDonalds on it, and using it. And to get a new battery.

I should also point out that for many of us, the television is no longer our main consumption device. We’re consuming much or most of our content on tablets and our phones. In part, this is just due to convenience. It’s also in no small part due to being busier than ever. And nearly all of us are using our televisions as simple HDMI targets (often only HDMI video with the audio going to a home theater receiver). What makes the big difference in our experience is the HDMI source, not the HDMI target. Most, if not all of us don’t want to replace a $1000 to $3000 device every few years just to get a decent bump in the source and maybe a small bump in the display. The people who think we’d like to do this are probably the same people that thought refrigerators with built-in smart displays would be a game-changer in the kitchen. Why would I want a smart refrigerator if I can’t put it in my pocket to take it with me to the grocery store? How was that ever a better idea than putting Grocery iQ and Red Laser on my iPhone?

And of course Apple understands these issues. It’s part of the reason that the MacBook Pro has no ethernet port and no built-in CD/DVD player, but instead has USB 3.0 ports and a Thunderbolt port. All the smarts inside, but none of the non-essential parts that would take up space and weight. Of course, I consider an ethernet port essential, but not a built-in CD/DVD player. It’s part of the reason Apple has AirPlay… I don’t need or even want my TV to manage content; I want the device that’s in my hands or pocket or bag all day to be the device that manages my content. Even better if it can hold a lot of it too. I don’t care to have to use my TV to manage content. I want to be able to do it anywhere, anytime.

The difficult battle for a game-changing event in the TV world isn’t over the TV. It’s over the content and the delivery and the contracts that bind the two together. The same reason that the game-changing event in the music world wasn’t the iPod or any other mp3 player, it was content in the iTunes store and other stores like Amazon.

The cable companies are not going to hand over their bandwidth to any company that directly competes with their offerings. And most of the content delivery companies, who also own nearly all of the last mile and then some for residential Internet service, move like snails. And make much of their money with bundled content packages. Anything that disrupts their cash flow is going to be met with loads of resistance. They’re already using caps in many places, and if it weren’t for the net neutrality laws, they’d be blocking all streaming and downloads that they viewed as competing with their offerings.
In fact they’ve done that before (Comcast P2P fiasco, for example) and would still be doing it if there had not been an uproar with some legal footing.

I don’t need or want a TV with a lot of built-in obsolescence. Maybe some people do, but those people represent a tiny piece of the market (those with tons of disposable income for home electronics). What I want is a better content management device and a screen that’s about as dumb as possible that will last 10 years. Keep the screen for a long time, and update the content management device frequently at a much lower cost. The existing Apple TV is a pretty good device at $99. Replace it with something about halfway to a Mac Mini, and you’d have a device more than capable of receiving, storing, managing and delivering content in just about any form. But it’s a problem that doesn’t exist until that content is readily available in a form that such a device could use. In real time as it’s broadcasted, not a week later. And Apple isn’t currently in a position to fix the entire problem. Even if they spent tons of money to acquire the rights to the content, they won’t be able to deliver it if it competes with the last mile provider’s services. And there isn’t a snowball’s chance in hell that they themselves can deliver a significant live event, say the Superbowl. Even if they could, it would never fly past the last-mile providers who’ve paid big money to be the providers of such content.

I’m all for a better home entertainment experience. But an Apple TV with a screen, in and of itself, isn’t going to change the game. And it’s unlikely to make money. It also won’t be significantly better than sets from the established television set producers. 4K display? Who cares at this point given that there’s essentially no 4K content to consume and 4K sets start above $10,000 at this point? 4K will get here eventually, but its audience will be limited for a long time. Most of us don’t need an 84″ or 110″ screen, and many of us would never get it past a significant other even if it was cheap. Well, there’s an argument in Apple’s favor… if you’re going to have a 110″ screen, it’d be easier to get spousal approval if it looked like a piece of art. The problem is that it’ll cost more than $20,000 at this point, and it’ll likely depreciate to $1000 in 5 to 10 years.

In my opinion, anyone that argues that we’ll all be replacing our big screens in our family rooms every few years is a shill or just clueless.

If Apple really wants to change the TV game within the next 5 to 10 years… make a set-top box that has all the capabilities of the Apple TV and more, plus the ability to replace the DVR or cable box that we’re using now (including handling encrypted channels, not just clear QCAM). I know they’ve explored this arena, but haven’t broken the barriers yet. Maybe they will, maybe they won’t. I think our best hope is that the cable companies eventually provide all content over IP (presumably IPv6) and back out of the set-top box business. Don’t hold your breath; those rentals are a source of income for them. One could argue that they could just increase the price of their service and ditch the set top box rentals, but… today they do both (price increases on their service and continued reliance on set-top box rentals).

New sunglasses ordered: Serengeti Trapani

I admit to being somewhat of a sunglasses snob. It’s not the fashion that I care about… it’s all about the lenses.

I have almost always had a pair of Serengeti’s in my collection. Why? If you ask me, they make the highest quality lenses available for driving, boating and flying. My one complaint about my most recent pair… I went with the Cielo with PhD lenses, frameless, for incredibly lightweight sunglasses. They’re fantastic to wear, but eventually crack around the nosepiece because without frames, the lenses themselves provide all of the structure.

I was down to just my cracked Serengeti Cielo and a pair of Ray Bans. Both broke recently, and now I have only a cheap pair of Oakleys that I don’t like. So today I ordered a new pair of Serengeti Trapani with the polarized drivers lenses. I look forward to receiving them. The lenses are glass and the frames are a titanium and acetate mix; strong and durable, but with some give.

In my experience, a good pair of sunglasses will typically last 5 years or more. That’s with daily use (I never drive in daylight without them). So while $200 seems like a large sum of money for non-prescription sunglasses, I value my eyes. $40/year for something I wear every day is very reasonable. And the key to the longevity… I use straps so I never drop my sunglasses. Fashion faux pas, but I like having quality sunglasses and making them last as long as possible. It’s also the environmentally friendly thing to do versus tossing a cheap pair of sunglasses in the trash once a year.

I like to have more than one pair of quality sunglasses. I find two pairs a necessity and three pairs is better. My eyes are very light sensitive, and hence I always need to wear sunglasses when outdoors; they’re not optional for me. And different lenses serve different purposes. For example, I like the Serengeti Driver’s Polarized lens (glass or PhD, both are exceptional) for summer driving. But I like the CPG lens in harsher light conditions, for example on or near the water and when there’s snow on the ground. That means I prefer the CPG lens during the winter months in Michigan. I like the sportier PhD-lensed models for active wear, but prefer the rimmed glass lens models when socializing or wearing to the office where I’m taking them off frequently and possibly not being very careful with them. For long road trips, I prefer the PhD lenses; the light weight means I can wear them for many hours on end without leaving painful imprints on the bridge of my nose. For longevity I’ve had better luck with the models that have framed glass lenses.

I put two pairs of Maestrale on my birthday wish list, and they are partially-framed PhD lenses. If someone buys them for me, they could easily turn out to be my favorites. They have the benefit of the light weight of the PhD lenses and not a lot of frame, but probably enough frame to prevent me from cracking the lenses at the bridge for a good while. They’re also a larger fit than the Cielo were, which should help with respect to stress on the lenses. I put both the CPG lens and the Driver’s lens on my wish list. I’d love to have both, and will buy them myself if no one buys them for my birthday.

The Trapani are likely too heavy for me to wear for an entire day due to having glass lenses. Hence they’re unlikely to be worn when I’m doing a full day of yard work, on a road trip, or on weekends. In all likelihood they’ll mostly just be used for my work commute. I might just leave them in my car most of the time, which is what I used to do with my metal-framed, glass-lensed Ray-Bans to be sure I always had a pair of sunglasses in the car. The Trapani don’t have the peripheral coverage of the Maestrale, which means they don’t offer as much protection. Even though they cost more than the Maestrale, I’m going to call them my beaters since they’re probably a little more durable.

Site Calendar work done, for now

I’m done tweaking the functional aspects of the Site Content Calendar for now. It functions in webkit browsers (Safari, et. al.), Mozilla browsers (Firefox and friends) and Opera.

I like it, it’s useful to me. It will probably be largely useless to visitors, but I enjoyed creating it.

is not completely unlike Qt, and that’s a good thing. It’s nice to be able to write sane C++ code for web development.