Wednesday, September 27, 2017

NTRBoot Cartridge Get

Recently I ordered a DSTT flash cartridge from nds-card.com, and it finally arrived on the 25th.  Of course, I ordered it for the express purpose of setting up NTRBoot on it.  DSTT cards are kind of a crapshoot, as there are many different chips that have been used to make them, and the NTRBoot flashing process has only been figured out for a certain subset of those chips.  Thankfully, though, the DSTT I received was compatible.

I decided to use my O2DS for the install and testing of said install since the O2DS doesn't actually need a magnet to trigger the lid switch.  It's got that nice handy switch just below the power button that puts the console into sleep mode, which replaces the lid switch from all the other 3DS-family consoles with clamshell designs.  I did eventually grab a magnet and try it out on my O3DS and N3DS, just to make sure I could do it on those, since the necessary button combination is a bit awkward depending on 3DS model.

Initially, though, I had a bit of a derp that caused me to think that my DSTT wasn't compatible.  I wanted to use a fork of boot9strap-ntr that looks for ntrboot.firm on the SD card instead of boot.firm, so I'd flashed it with that instead of the official boot9strap-ntr release.  With GodMode9 as my ntrboot.firm, my 2DS was powering on, and then off after about a second.

To troubleshoot, I decided to restore the backup of the DSTT's original contents that I'd made, and see if I could get the DSTT to be a normal flash cartridge.  I did that, obtained a copy of TWLoader, and booted freshly-dumped ROMs of Chrono Trigger DS and Mario Kart DS from it.  This told me that my card was actually compatible, since the NTRBoot flasher could actually write to it properly without bricking it.

Next, I actually flashed the official boot9strap-ntr to it, and was experiencing the same issue with GodMode9.  However, genius me then tried to boot into SafeB9SInstaller with it, which worked, and confirmed that my DSTT was indeed compatible.

I then realized a little fact I'd neglected: The version of GodMode9 I was using was old, and that there was a new version wherein one of the changes was "properly detect NTRBoot".  Updating to the new GodMode9 fixed the problem.  Re-flashed the fork of boot9strap-ntr, and all was well.

Why did I use a fork that just changes the name of the file that it looks for?  Well, The Guide™ has you remove the SD card and replace boot.firm with Luma partway through the process.  However, removing the SD card is a pain on New 3DSes, and if it boots from a different file, I can avoid having to swap out boot.firm partway through.  This one small change makes the process that much simpler.

Also, surprisingly, The Guide™ just has you boot straight into SafeB9SInstaller.  No NAND backup before installing B9S or anything.  Perhaps Plailect is unaware that GodMode9 can chainload other FIRM payloads...

I also took the opportunity to update my systems from B9S 1.2 to B9S 1.3.

While the primary use of NTRBoot is to install B9S on a stock system regardless of firmware version, I wanted to have this entry point accessible just in case I ever need it to restore a NAND backup.  It will come in handy, though, if I decide to buy one of those sexy New 2DS XLs, or if a friend wants their 3DS hacked.

I must say, though, the hacking process has gotten so simple these days that I question the necessity of The Guide™.  It stretches out every process into as many steps as possible, making every single mechanical action a step of its own.  It could say "put these files here, put those files there, boot 3DS, do the thing", but instead, it has steps entirely dedicated to telling you to press A.  Not only is this excessive, it makes the process look far more complicated than it really is.  Good technical writing doesn't misrepresent the complexity of a process.

I'd love to see the filename change incorporated into the official boot9strap-ntr, as well as the removal of boot9strap's boot9/boot11/OTP dumping feature.  Dumping the bootroms and the OTP can be done with GodMode9 quite easily, there's no reason to have a button combination to do it on boot. Especially one that causes said dump to happen every single time you use NTRBoot.

Overall, I'm quite happy with my purchase.

Monday, September 11, 2017

I don't get the point of smartphones

So, I've had a smartphone for over a year now.  I've gotten pretty darn used to it.  Thankfully, though, I haven't become one of those people that has their phone grafted to their hand.  You know the type; whenever they arrive somewhere and sit down, out comes the phone.  Whenever they get in the car and drive somewhere, out comes the phone.  Whenever they're in line to make a purchase at a store, out comes the phone.  While they're making the purchase, the phone stays out.  I could go on, but you get the point.

I've gotten a bunch of different applications installed for various purposes, whether they be games or things that do useful stuff like scanning QR codes and whatnot.  So, why don't I get the point of smartphones?

Well, the screens are tiny.  Yes, I know, they make larger smartphones.  Those screens are still tiny.  The small size of the screen combined with the large size of the pointing object (the human finger) means that the user interface design suffers as a result.

I feel like anything a smartphone can do, other than being a phone, a tablet or a laptop/desktop computer can do far better.  Tablets are basically just really big phones but without the ability to make calls, though with built-in microphones and VOIP applications one could communicate with others using their voice via a tablet anyway.  Having a bigger screen, there's more room for a user interface to exist.

I almost want to go back to a flip phone, but not quite.  Flip phones typically suck in terms of how customizable they are.  But man, are they ever built for purpose.  Smartphones, on the other hand, aren't really built for purpose.  The whole "phone" capability is just another application that gets lost in the sea of applications one typically installs shortly after obtaining a smartphone.

Case in point: in over a year of owning a smartphone, I have 17 minutes and 21 seconds of total call time.  My outgoing calls consume 13 minutes and 7 seconds of that, leaving the remaining 4 minutes and 14 seconds for incoming calls.  I have no clue why my outgoing calls last three times longer than my incoming calls, on average.

Moral of the story: I should just get a tablet and transfer 99% of the applications I use over to that.

Friday, September 8, 2017

Detecting Twitter's Night Mode

So the Night Mode option in the Twitter mobile application was added to the vastly superior website at some point recently, and I immediately switched over to using it as soon as I became aware of its availability.  However, I quickly noticed that it had a slight flaw I wanted to fix: the remaining character count that shows while you type your meaningless drivel doesn't contrast too well with the background at a certain point (between 20 and 11 characters remaining, inclusive).

Being a web site, this kind of thing should be relatively easy to fix with a user style, right?  Well, it turns out it's not quite that simple.  In their infinite wisdom, Twitter doesn't provide an easy way for CSS to detect that Night Mode is enabled.  Once I discovered that there was no easy way out, my focus shifted to investigating how they do the CSS change.  I arrived at a single line of JavaScript whose result would tell me whether or not Night Mode is enabled.
var isNightMode = ( document.querySelector( 'link[rel="stylesheet"][href*="nightmode"]' ) !== null );
All that remained was to write a user script containing this line of code, and wrap it up with some logic to add a CSS class to the page's body tag.  Along the way, I realized two things and took them into account:
  • The user can toggle Night Mode at any time after the page loads, and the toggle happens asynchronously.
  • The toggle actually happens in two steps behind the scenes, and the visual changes don't happen until the second step.
Basically, my code needed to detect when the user toggles Night Mode on or off, and add or remove the CSS class accordingly (and at the right time).  I've declared the resulting code to be release-worthy and chucked it up on my pastebin.  If you're making your own user style for Twitter, this script will add a CSS class (.night-mode) to the page's body tag, allowing you to easily detect Night Mode from your user style and apply whatever CSS suits your fancy.  If you distribute your user style, don't forget to tell people that they'll need this script for your Night Mode changes to be visible!

Thursday, September 7, 2017

Moving On

Since 2002 sometime, I've been going to the meetings of the comics and animation club at UVa (CAINE), despite not being a UVa student.  I've been fairly involved in one way or another pretty much every year since then.  But, as with all interest-based things such as this, there comes a time to say goodbye, and that's exactly what time it is.

There's a few reasons, but they're all pretty simple.

First: I turn 35 this fall.  I've already been feeling kind of creepy hanging out with people close to half my age, might as well stop now.  That age gap is only going to get bigger as time goes on.

Second: Despite what CAINE says in its promotional materials, Western comics and animation are rarely touched upon, in favor of anime and manga from glorious Nippon.  I've had significantly less interest in watching anime and reading manga over the past few years.  You may have noticed that the MyAnimeList signature image that's currently at the top of this blog hasn't been updated in forever, my lack of interest would be why.  For the record, I basically had no interest in Western comics and animation to begin with.  The only remaining interest I have that's aligned with CAINE is tangential, though related: video games.

Last but certainly not least: I need a job, and I need to move out of my parents' house for the second (and hopefully final) time.  While CAINE wasn't really holding me back in that regard, I feel like having my schedule clear of all obstructions is most conducive to getting a job, earning an income, and moving out For Real This Time™.

So to anyone in CAINE who's stumbled across this blog and was wondering why I've disappeared, the above reasons would be why.  If you wonder why I deleted my forum account, that's also related, and technically a fourth point.  Yay, post organization.

Point the fourth: I've had a hand in managing CAINE's website for a very long time, and my interest in doing that has also waned over the years.  People don't use it anyway, so really, what's the point?  Just to have yet another page on the internet for UVa to find, declare to be in their jurisdiction despite not being hosted on their servers, and forced to add text to every page saying UVa has no control over our actions, despite the fact that if we don't add said notice, they can get rid of our club status, thereby indicating that on some level, they have control over our actions?  Nope.  I wasn't the only admin, so since the other admin happens to own the domain, it's entirely under his control now.  I don't care anymore.

I might show up at a meeting if it's absolutely necessary for me to be there, but I can't fathom why my presence would be needed at this point.