Note 44: Letters from the app development front
Plus some recent X-Men thoughts.
Sometimes, I get the impression that companies like Google and Apple would rather third-party developers go away and leave them with an app monopoly in their respective stores. The capriciousness of the Apple review process is well documented, but Google’s probably worse given how hard it is to talk to someone other than a robot on their end.
My current frustration stems Google making a policy change regarding apps that might be able to update themselves outside the confines of the Play Store. This stems from the food fight between Epic, Apple, and Google where Epic wanted to start avoiding the stores’ 30% taxes on in-app purchases, and used sideloaded updates as a mechanism for avoiding the app store reviewers. This impacts me, because for the better part of a decade, I was the customer of a company called HockeyApp, a service that provided tools for capturing remote crash reports, managing app testers, and collecting app analytics. In 2014, Microsoft purchased HockeyApp and finally retired it in 2018 in favor of a new service called App Center. (App Center still has yet to be as useful as HockeyApp, but that’s not germane to this Note.) Since I’ve been developing Android apps since 2010, HockeyApp was a standard part of my development toolkit, and I included it in just about every app that I released.
Flash-forward to the early Twenty Twenties, and a neurotic Google sends out notices that the distribution portions of the HockeyApp framework violate its new side-updating policies, and apps that incorporate it need to update or face removal. Fair enough - the HockeyApp component hasn’t been doing anything for me for a couple of years now, and I’m not even using the parts in question. However, during the time when this all goes down, I’m busy as hell with client work and don’t have a lot of time/attention for in-house projects. I expect them to make the app unavailable as stated, but I’d be able to upload a new version without the offending code and get it back on the store post haste.
Over the past week, I did exactly that. I brushed off the Fresh Comics Android source code, updated it to match changes in dependencies, fixed a few bugs, and replaced HockeyApp with AppCenter. I generated a signed APK (install file) to upload to the Play Store and I’m met with a message that the app is suspended (fine - I expected that) and its statistics and reviews have been removed as well (not fine - that’s useful information). And the cherry on the top is that contrary to all common sense, ALL I can see is a message about the suspension, AND no way for me to upload an updated version to resolve the issue. My only recourse is to file an appeal with Google to see if I can get my app reinstated, so that I can take the corrective action THAT THEY WANT ME TO TAKE. So, I’ll be waiting for up to seven days to hear back from a minimum-wage, likely outsourced response from the lowest guy on the totem pole of Google workers, hoping that they read well enough to see that I’m trying to bring my app back into compliance and do my part to continue helping make their mobile app market worthwhile.
I place my odds of success at around 70%. I wish it were higher, but I had a similar experience with Google a few years ago where they yanked my app for copyright infringement, despite the documentation I provided to them that said “Yes Virginia, Chris does have permission to show Comic Book Covers to Comic Book Buyers to help Comic Book Publishers and Comic Book Shops sell Comic Books”. Success in that case wasn’t about convincing a reviewer that I was right - it was about waiting long enough to get a different reviewer who understood enough written English and didn’t have a gaping maw in place of the part of their brain that would actually be useful for their doing their job.
In the last decade, this has been par for the course for consumer-facing mobile software development. The platforms have steadily become more developer-hostile, there’s a lot more paperwork and approvals required to do interesting things that were fine five years ago, not to mention the ongoing war with cockeyed power management schemes. It’s really sapped a lot of the joy out of this particular line of work, and unfortunately, this model of doing business seems to be the path going forward. Gone are the days of Documented and Open Systems of yore, and say hello to Walled Gardens and Code Signing. And I do understand the various incidents and bad actors that have directed the development of mobile computing platforms in this direction, but the ham-handed ways that the bigger players (Apple & Google) have handled it have done quite a bit to squelch interest and innovation in this field. It’s no longer a field that I advise new developers to dive into. The investment you make in building the skills needed to participate in the market can be neutralized overnight should you find yourself on the wrong side of a bot or algorithm. (There’s a non-zero chance that this automated suspension ends up nuking the rest of the apps in my portfolio.)
And to bring this full circle, due to the tightening of the app store’s fists, I have been building infrastructure to distribute and update code outside the purview of the app stores. In one research project, we’re extracting linguistic features from people’s text messages to correlate that with mental health events. The system works in such a way that sensitive data never leaves the device. However, we tried and failed to get it listed on the Google Play Store (which makes life simpler for our research participants), so that led me back to grave of HockeyApp, where I dug up its corpse and extracted the external update features that served me so well in testing and development, and adapted that into a new framework. (Open Source in action, baby!)
Zamboni is now a core component in the work I do with researchers where the app isn’t distributed via the Play Store due to conflicts with our research goals and their policies. While I wish it were not necessary, but you develop with the tools you have, not the tools that you used to have.
(A few hours after writing this, news broke that 36 states are suing Google for antitrust behavior related to how they treat developers on the Play Store. Unfortunately, Illinois is not one of those states, so I’ll be reaching out to see if the state AG might join the suit as well. Might have more luck accomplishing that than getting my app back on the Play Store in a reasonable amount of time.)
Rocket stock update
(On to happier topics…)
Around the beginning of the year, I jumped onto some early-stage rocket company stocks via SPACs (details here). Toward the end of last week, I got see the SPAC process complete as HOLUU (Astra Space SPAC shares + warrants) transformed into ASTR and ASTRW. I initially “paid a premium” for the HOLUU shares after the Astra acquisition was announced, and have largely been underwater on that investment until last week. When the SPAC process completed and HOLUU turned into ASTR (regular common stock) and ASTRW (warrants to purchase more ASTR at $11.50 that expire in 2027), my investment was back in the green and I was making money again. It also gave a nice bump to the VACQ shares that I also purchased, a SPAC stock for Rocket Lab, an Astra competitor.
I was worried that I needed to do something (other than vote to complete the process), and there were some strange placeholders in my E*Trade account the day of the IPO. Interestingly enough, the financial news sites also were not updated, so I didn’t get to follow the trading on its first day as ASTR. However, by the next day everything had been straightened out. The only thing that didn’t happen was for the cost basis of the original SPAC shares to carry over, so I could track my lifetime profit and loss on the security. In the overall scheme of things, it’s not a big deal.
One fun benefit of “IPO week” was that the Astra folks were doing their promotional tour and getting some great press, such as this:
I’ve commented on other sites that despite a lot of the craziness in the world, I feel like now’s a great time to be alive and the next couple of decades will become very interesting as we start to stretch towards the stars.
Today’s book report is a bit of a cheat, but something I’ve allowed in past 100-books-read years, so I’ll allow it this year. Despite the regular books I read, I’m also an avid comic book reader (more on this below), and the individual issues that I read are collected into trade paperbacks or other volumes, and I’ll rate those as a whole. So, without further ado (and thanks to Marvel Unlimited’s smaller release delays)…
Dawn of X, Vols. 1 - 16 by Jonathan Hickman, et al. (★★★☆☆): Now, I’m not going to review each of the volumes, given those would be disjointed reviews. The reason is that unlike decades of previous comic collections, the Dawn of X volumes collect each month (or so) of the various X-Men titles published after Hickman’s House of X / Powers of X up until X of Swords, when the collections become Reign of X (to be reviewed at a later date, likely post-Inferno).
My main observation: From a plotting perspective, Hickman is a master at herding the cats in the X-Office from HoX/PoX to X of Swords. However, from a character perspective, this era of the X-Men does a grave disservice to some of the excellent work done by folks like Peter David, Kieron Gillen, Tom Taylor, and Matt Fraction in the last fifteen years. Instead of David’s Jamie Madrox, Gillen’s Cyclops, Taylor’s Jean Grey, and Fraction’s Emma Frost, we get “telephone” versions of the characters, by which I mean versions of the characters that seem like they were written by people relying on second-hand accounts of the characters told to them by others instead of reading the original issues themselves.
Cyclops goes from a tragic figure mourning the failure of his life’s work in Matthew Rosenberg’s Uncanny X-Men #11 (2019) to a happy general in Xavier’s Krakoa. Tom Taylor’s Jean Grey finally finds her own way independent of the men in her life in X-Men: Red to end up in the middle of a Cyclops/Wolverine throuple. Jamie Madrox, mutantdom’s greatest detective, ends up serving drinks and serving as dumb labor for the Krakoan drug cartel. Emma Frost is the one character that retains the most of what made her special pre-Hickman, but is still shunted off to the side as her partner for the better part of two decades makes a new life for himself and his various alternate universe children and formerly space-based siblings.
Now, I get that you hire Jonathan Hickman to do some big-picture, out-there, big sci-fi concepts, and he’s delivered on that front in spades. However, in between the significant set-pieces, most of the characters end up treading water until the next big crossover in the overall saga that constitutes current X-Men storytelling. Character work takes a back seat to plot, and those plots are mediocre. Of all the characters that have benefited from the Hickman era, the only one that ceased being a “telephone” archetype has been Apocalypse, who was shuffled off the board in X of Swords. This is the exact same problem that plagued Martin’s early entries in A Song of Ice and Fire. Cyclops has fallen in line to become an uncritical Ned Stark (completely shedding any hint of the revolutionary he has been for the past two decades), while he’s fundamentally a much more interesting character than Hickman’s plotting allows him to be. (And let’s not talk about the character black hole that is Kid Cable…)
In the handful of issues where the characters are given a chance to breathe and wax philosophical, such as X-Men #4’s visit to the Davos World Economic Forum, we start to get back into the characters’ heads, and understand what makes them tick. Unfortunately, these moments are few and far in-between as the writers are too busy playing with new plot toys like mutant pirates, mutant wizards, and mutant CIAs.
My hope is that the Marvel X-Office knows what they are doing with these books and that my complaints are borne from having over three decades of X-Men storylines embedded in my psyche, and me being the only one bothered by the current era not building upon what came before. In defense of Hickman and Marvel, deep continuity is often cast as a barrier for new readers, and that can be true when comics are so self-referential that someone can’t follow the story without knowing what happened a decade or more before. However, the problem with clean starts (such as this current era) is that every time you clear the board to accomodate new readers, you’re signaling to existing readers that Ultimately what they’re reading doesn’t really matter in the overall scope of things.
While Hickman’s X-Men really aren’t my X-Men (pretty much in the same way that Chris Chibnall’s Thirteenth Doctor hasn’t really hooked me and a lot of other fans), a part of me is holding out for a big twist as Hickman wraps up his run that restores the deep and complicated X-Men that I know and love, and that we find out that just like the Age of X-Man storyline that preceded it, the Krakoan era itself is just another misguided attempt to build a different kind of utopia, where the “real” X-Men have to take out the Krakoan cult for the good of everyone. That’s the kind of story that Hickman excels at and I’ve read enough of his work to doubt that we won’t get a suitable payoff when he departs for other books. (Another George R.R. Martin parallel - don’t let anything happen to him before he finishes his story!)
In terms of my overall reading goal, I am now five books ahead of schedule (56 of 101).
What Technology Could Reduce Heat Deaths? Trees. (New York Times)
Do Not Forget Afghanistan (The Bulwark)
The Resurrection of Bass Reeves (Texas Monthly)
The Internet Is Rotting (The Atlantic)
What We Lost When We Won the Cold War (The Bulwark)
On the space front, I spent a good part of the holiday weekend completing my journey to Colonia. I didn’t scan enough systems to hit Elite rank quite yet (9% away), and unfortunately, as soon as I arrived back in human-inhabited space, Odyssey’s well-known performance problems resurfaced, making it tricky to land a spacecraft in a spinning space station with a low an jittery frame rate. I’ll be taking a break from Elite Dangerous for a few weeks while I decide whether it’s worth my time to try and diagnose the issue, or to move on to another game that was competently programmed (as its Horizons expansion was).
Until next week, CMDRs, o7!