After nearly 6 years with a Motorola Photon Q (XT897/"Asanti") I finally decided it's time for a new phone, and spent the outrageous sum of just-under-$130-including-shipping for a Moto C Plus, screenglass, and rubber body armor.
Motorola, now a subsidiary of Lenovo, is known for most of its phones being fairly amenable to rooting and unlocking. This particular one also happens to be GSM-enabled and support dual SIMs, on the off chance I ever leave the US and want a data plan. Its specs are, by today's standards, unimpressive: quad-core MT6737M CPU (4x ARMv8 A53 @ 28nm, somewhat slower than a Snapdragon 425 for reference), 2 GB of memory, 16GB of eMMC flash, and 5" 1280x720 screen. The body is all plastic, though it's not bad plastic, and the battery is a surprising 4,000 mAh that weighs more than the phone itself does.
Now, it turns out the C Plus is *not* as easily unlockable as, say, the G4 is. In particular, the usual fastboot commands such as get_unlock_data simply fail with "unknown remote command" errors. The stock ROM is also kind of pants, though it's at least a fairly vanilla Android 7.0 rather than Madokami-forgive-us-all MIUI or TouchWiz.
However, there is a program called SP Flash Tool that is able to write directly to MediaTek devices' internal flash over a USB port. This is not for the faint of heart, as it requires carefully-crafted scatter files with the exact starting addresses and lengths corresponding to each and every piece of the stock firmware, and if you mess up by even one byte, you will very likely hard-brick your phone. For even more heart-pounding excitement, the way to get a custom ROM on here is not to use this tool, but to pop into an advanced mode and specify where to start writing (if you're curious, it's 0x2d80000 and no, that's not a typo) and with what file.
The purpose here is to flash a custom build of TeamWin recovery, known by its uncomplimentary acronym TWRP. And *this* involves dissecting the machine, removing its battery, holding VolDown, and hooking it up to a PC via USB cable, *in that order.* Somehow, Flash Tool is able to write to the device even though it's powered off and battery-less.
From here, disconnect from the PC, hold VolUp and Power, and select Recovery boot. After about 30s, TWRP will load, and you can pull up ADB in your shell, place the device in sideload mode, and "adb sideload /path/to/lineageos-14.1.zip," which goes a hell of a lot faster than you'd expect it to. But there's a catch: if you reboot now, you'll go into an endless bootloop, where the phone won't go past the Motorola logo. If you don't have a stock ROM or, preferably, a Nandroid backup, this is game over.
Turns out you *also* need to install SuperSU, and you need to do it in a special way: while in TWRP, pop a terminal, and do "echo SYSTEMLESS=true>/data/.supersu" before adb-sideloading a known-good SuperSU .zip onto the phone. The output will be quite verbose, and it will warn you that 1) on reboot, the device will likely restart at least once and 2) first boot will take "several minutes."
They're not kidding. I lost count of the exact amount of time, but I believe LineageOS sat there blowing bubbles to itself for a good 15 or 20 minutes, and I was literally seconds away from forcing a power-down and starting the entire process again with a stock ROM. It also takes well over a minute to boot; I counted 33 sets of right-to-left bubbles at the LineageOS loading screen per bootup, and that's after a good 30 seconds of the phone sitting at the Motorola logo with a nice fat warning about how the device can't be verified and might not work properly.
Yeah, that's the point: from Google's PoV, it's *not* working properly, because LineageOS seems not to have all that spying junk on it. I didn't even flash a GApps zip; instead, first thing I did was to sideload an FDroid archive, which is something like an open source version of the Play Store. Everything I need is on there and more.
So far, I am loving this thing. I've been zipping all over downtown Milwaukee looking for a new place to lease the last couple of days, and there is nothing like having a portable MP3 player for those long rides. And get this: after using it to play music for a good 3 hours, *the battery was still at 95% from a full charge this morning.* That is *nuts.* The Moto C Plus punches way, way above its weight with the proper love and attention paid to it.
So if anyone wants a good budget phone to run LineageOS, Resurrection Remix, etc on and doesn't mind doing some nailbitingly-scary stuff with direct flashing, I can heartily recommend the C Plus (NOT the C, that thing is junk). Happy flashing, everyone :)
Crazed girls flood Parkland school shooter Nikolas Cruz with fan mail
Mass murderer Nikolas Cruz is getting stacks of fan mail and love letters sent to the Broward County jail, along with hundreds of dollars in contributions to his commissary account.
Teenage girls, women and even older men are writing to the Parkland school shooter and sending photographs — some suggestive — tucked inside cute greeting cards and attached to notebook paper with offers of friendship and encouragement. Groupies also are joining Facebook communities to talk about how to help the killer.
The South Florida Sun Sentinel obtained copies of some of the letters showing that Cruz, who had few friends in the outside world, is now being showered with attention.
Tresorit Launches Campaign To Build An End-To-End Encrypted Social Network
The new technology that aspires to #DeleteFacebook for good (Mastodon)
At the end of these charts, you can see a small spike in Diaspora users.
It might all be in the name. People/"dumb fucks" will sign up for a "Facebook", but "Prevaat"?
I have been at the C++ again. After a few years I have been slowly managing to persuade people that directly testing (using TDD) the C++ code is a good idea.
Also, I have tried to put my C smugness and arrogance away in the spirit of doing things "the right way" i.e. in C++ and the way the earnest and eternally vigilant members of the C++ Inquisition would recommend.
A couple of weekends ago I was on a fairly long train journey so for entertainment I reacquainted myself with the C++ Frequently Questioned Answers and laughed out loud a couple of times much to the bemusement of Mrs Turgid.
I had been asked to supervise a much younger and inexperienced member of the team. He had too much to do and so I was asked to pick up some work he had started. Young people today... So I extracted some of his code into independent methods and put them under test with CPPUNIT which involved hacking on some nasty ANT build scripts (don't get me started...) just to add a few .so files to the linker command line. The build scripts are so bad that it takes upwards of 45 seconds to compile, link and run the unit tests (200 lines of code).
Now to the fun, std::map. Why oh why oh why? Well, because the STL and these are "algorithms" and they've been developed by people much cleverer than you and so they won't have bugs like the ones you would write yourself and they have performance criteria and they use templates so you get type checking at compile time and blah blah blah...
Yes, well, nobody expects the C++ Inquisition. Their main weapon is type safety and code reuse. OK, their two main weapons are type safety, code reuse and generics. Hang on, that's three. I'll come in again. Nobody expects the C++ Inquisition. Amongst their weapons are type safety, code reuse, generics, multiple inheritance, virtual methods, references, the STL... You get the idea.
And what was std::map being used for? To store pairs of strings and integers (hex) read out of an ASCII configuration file. How was the file parsed? sscanf()? No, some fancy stream object with operator<<. And what were the ASCII strings? Names of parameters. And there was a third column in the file that specified a width and was summarily ignored by the parser. And what about the names of the parameters? Well, they were looked up in the map at run time, hard-coded, to pull the values out of the map and put into internal variables with all kinds of shifts and shuffles on byte order. And what if the user changed the names of any of the parameters in the file? Yes, what indeed. The user will be editing this file.
Now I do need to use some sort of dynamic data structure myself in this project. I need to map strings to integers, but with integers as the keys this time. My table needs to be populated with the names of files read from a directory and the files sorted in order. If I were doing this in a sane language like C it would be relatively straight forward. Anyway, we're in C++ land now and the C++ Inquisition are in attendance. So I thought I'd take a leaf out of their book and use std::map<uint32_t, std::string> table or something (note the code is infected with stds all over the place, another cool feature) so I decided I'd better read the documentation. I thought I might use the insert() method and check for duplicate keys in the map. Nope, template error. It seems one must use operator[] but that doesn't check for existing keys, it just overwrites them. The suggested remedy? Ah, scan the entire map from the beginning each time to make sure the key isn't already there. Doesn't it throw one of these pesky exception things? I thought they were the Modern Way(TM)?
::iterator is fun. Try to iterate over an empty map, or to an entry that isn't there. How do you detect it? Well, ::iterator is some kind of pointer (you get at the data with ->first or ->second) so you might compare with NULL (sorry, 0 nowadays) but no way because operator== is not defined. The best advice is not to try to iterate over an empty map or to dereference an iterator that doesn't point to anything.
I could have read my file names into a (sorted) linked list checking for duplicates along the way. It would have been less than 50 lines of C, and I could have written it and tested it in the time it took me to get angry about C++ all over again.
The word is chagrin. I have wasted very precious time and haven't even got any working code.
Edited 20180328 to use proper escape codes for angle brackets.
Stormy Daniels, Donald Trump, and Shark Week: ‘He made me sit and watch’ (archive)
Clickbait? Sure. But reading about the history of "Shark Week" in that context really makes something click.
Stormy Daniels describes her alleged affair with Donald Trump (w/ transcript)
"Wow, you-- you are special. You remind me of my daughter."
Reversing his veto threat, Trump signs the $1.3 Trillion dollar spending bill.
National Review says it's the Biggest Spending Increase Since 2009.
Trump briefly threatened to veto it. Mostly because it didn't spend enough: “... the BORDER WALL, which is desperately needed for our National Defense, is not fully funded,”
Spending wouldn't be such a problem except for the fact they also cut revenue by a over a $trillion with the tax bill.
I'm no mathematician but that seems to put a bit of crimp in his promise to eliminate the national debt in eight years.
Yet Another American Football League: The Alliance of American Football
Another New Football League Says It Will Start Play in 2019
The N.F.L. is under pressure from falling television ratings, lawsuits over its handling of concussions, and fan opposition to player protests during the national anthem.
Yet investors keep lining up to help start new football leagues. On Tuesday, the longtime N.F.L. executive Bill Polian and the television and movie producer Charlie Ebersol became the latest entrepreneurs to join the fray when they unveiled plans for the Alliance of American Football.
There have been several short-lived football leagues before, including the United Football League, United States Football League and XFL. Like others before them, Polian and Ebersol say they have a formula for success. They have acquired investments from Silicon Valley firms that will allow their eight-team league to start playing a week after the Super Bowl in February 2019. Their partners include CBS, which will show a few games on its main channel and some on its cable network. They will also launch a smartphone app on which fans will be able to stream games and play fantasy football.
The league will also aim for two-and-a-half hour games (N.F.L. games generally last at least three hours). To achieve that, there will be no kickoffs or extra points — only 2-point plays — and a 30-second play clock, as opposed to the N.F.L.'s 45-second clock. There will also be no television timeouts, which will lead to about 60 percent fewer commercials.
Also at Variety.
Previously: As National Football League Ratings Fall, Could the "XFL" Make a Return?
So, I want to engrave some things. Most of these things are going to be iron, steel, or aluminum tools, but I'd also like to engrave some less durable items, such as plastics. I've done a couple searches, and I'm looking at engravers ranging from about $80 (US$) all the way up to about $180,000. I suppose that if I searched, I could find some cheaper, and almost certainly more expensive.
So, I'm looking - and all that I can really see, is how ignorant I am. I have almost zero idea what it is that will make a long-lasting engraver. Will one of those ultra-cheap engravers from China last for ten years of light-to-moderate use? Probably not - but what do I know? Is it necessary to spend thousands of dollars for the same thing? Newegg has a variety of engravers, for less than $400, but the biggest, most powerful among them has a disclaimer:
Engraving Material Note:
1.can engraving materials:wood,bamboo,plastic,paper,leather,bank card,rubber
2.can not engraving material:metal,stone,ceramic,shell,light-reflecting material,transparent material
Seems pretty obvious that I need something bigger, and more expensive, than a $400 engraver. Can engraving metal, dammit!
Does anyone here have experience with non-industrial laser engravers? (Industrial? Quarter million dollars entry level?) Power ratings, sizes, brands, whatever - any information is welcome!
NASA to Discuss Upcoming Launch of Next Planet Hunter
Join NASA at 1 p.m. EDT Wednesday, March 28, as astrophysics experts discuss the upcoming launch of NASA’s next planet hunter, the Transiting Exoplanet Survey Satellite (TESS). Reporters can attend the event in person at the James Webb Auditorium at NASA Headquarters in Washington or participate by phone.
The briefing will be broadcast live on NASA Television and the agency’s website.
Scheduled to launch April 16, TESS is expected to find thousands of planets outside our solar system, known as exoplanets, orbiting the nearest and brightest stars in our cosmic neighborhood. Powerful telescopes like NASA’s upcoming James Webb Space Telescope can then further study these exoplanets to search for important characteristics, like their atmospheric composition and whether they could support life.