Showing posts with label random thoughts. Show all posts
Showing posts with label random thoughts. Show all posts

Tuesday, November 10, 2020

Abusing C-Style Comment Syntaxes For Fun (and Profit)

C originally only had multi-line comments, which work like this:
/* no comment */
All characters between the /* and the */, including newlines, will be ignored by the compiler, and you're free to document your code as you see fit.  People eventually got tired of typing */ and thus the syntax // for a single-line comment was born.  Interestingly, we can abuse a combination of both comment syntaxes to easily toggle between two alternate blocks of code with the addition or removal of a single character.

Feast your eyes upon this abomination:
/* code block 1 /*/ code block 2 //*/
In that example, code block 1 is commented and code block 2 will run.  However, add a single slash at the beginning:
//* code block 1 /*/ code block 2 //*/
Now code block 2 is commented, and code block 1 will run instead.

This works because when the beginning is /*, it begins a multi-line comment.  The /*/ ends the multi-line comment, and //*/ is a single-line comment.  When the beginning is //*, it's a single-line comment.  The /*/ begins a multi-line comment, and the //*/ ends the multi-line comment.

Have a nice day!

Wednesday, August 7, 2019

Thoughts with XT: Unhealthy Breakfast Pastries

Am I the only one who never really enjoyed Toaster Strudels?

Toaster Strudels must be kept frozen until you want to eat them, at which point they must be heated, making them vastly less convenient.  Also, you have to apply the frosting/icing (is there a difference?) yourself, delaying breakfast even further.  Heating of anything from frozen yields inconsistent results, so much so that Toaster Strudels actually have a second set of directions for when you bite in and discover that it's still cold.  They also get crumbs everywhere while you eat them.

Pop-Tarts, on the other hand, can be stored at room temperature.  They can be eaten that way too, if you just don't feel like toasting them.  Underrated: eating a Pop-Tart straight out of the freezer, though this varies by variety.  The Cookies 'n Creme ones yield the best results, from my extensive testing over the years.  Pop-Tarts crumble way less while being eaten, and also come in way more varieties, from the sickeningly sweet Wildlicious and Gone Nutty ones that I wouldn't give to my worst enemy, to the clearly superior S'mores.

From an advertising standpoint, Pop-Tarts were always the very straightforward "Hey look, these are Pop-Tarts.  Enjoy!".  Toaster Strudel, on the other hand, were the far more edgy "We're better than Pop-Tarts.  Our commercial is going to show several reasons why we aren't, but don't worry, we're going to spin those as positives.  By the way, we're better than Pop-Tarts.  Look at how this kid has to get black market Toaster Strudels because his evil parents won't serve them to him.  Did you know we're better than Pop-Tarts?".

I'll take Pop-Tarts, kthx.

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.

Tuesday, August 15, 2017

Well, that was quick (and I expected it)

Some recent events around these parts have a lot of people up in arms.  A rally took place, expressing a rather disliked opinion, and people who disagree with that opinion held a protest in response.  In the USA, the First Amendment to our Constitution grants all citizens, among other things, something called Freedom of Speech.  This allows individuals and groups on all sides of any issue to express their opinion.

I don't generally voice my opinion on issues because I'd rather maintain fun and lighthearted relationships with friends and acquaintances, but I was getting swamped with tweets and retweets about it and expressed my opinion out of frustration.  I should also mention that I basically spent the past several months trying to phrase this opinion in a non-inflammatory manner, and that me expressing it was inevitable.

The following is a full explanation of what I've experienced, explained in the most generalized and least ambiguous way possible, complete with a glossary of terms for the one term it uses.  I like my technical writing principles.

Glossary:
SJW: (noun) Social Justice Warrior.  Typically younger people who are new to activism.  Their hearts are in the right place even though their minds aren't.

Now, here's the explanation.  Consider this scenario:

Person APerson BPerson C
SJW?YesNo???
Position on issueForForAgainst

In this scenario, even though Person A and Person B both disagree with Person C, Person A not only thinks Person C has no right to express their opinion, they also don't think Person B has the right to say that Person C has the right to express their opinion.  In fact, Person A will go as far as implying or even outright asserting that Person B wholly endorses Person C's opinion.

Who's who in this scenario?  Person A shall remain nameless, because I have the mental maturity to protect the identity of someone I no longer wish to associate with.  I find myself taking the role of Person B.  Person C represents the group conducting the rally.

Am I sad about the loss of acquaintance with Person A?  Not really.  Person A, as all SJWs do, lives a double life.  They just finally allowed their true self to show through the façade, that's all.  If anything, I'm relieved that I no longer have to deal with Person A.  In fact, in addition to blocking Person A (who has also blocked me), I blocked three other people who could have just as easily taken the place of Person A, and I'm just as relieved to no longer have to deal with them.

I did make a few more relevant tweets during and after the blocking process, which in retrospect may have been ill-advised, but I'm not going to delete them.  One was basically calling out Person A on their logical fallacy (I'm unsure of the specific type of logical fallacy, but I do believe their statements qualify as one), and the others were a series where I first bragged about having blocked people, then expressed a small amount of additional related frustration.  Person A may have already blocked me before I sent the tweet calling them out.

For other unrelated reasons, this situation closes a chapter of my life.  The timing just paired well.

Sunday, July 23, 2017

Music Playlist Updated

After over a year of neglecting my YouTube music playlist, I've gone back to it and fixed it up.

What all needed changing?  Well, two videos were completely gone from the playlist.  Dunno where they went, but I found replacements.  The second one eluded me until the final sanity check.

Four more videos were either deleted or blocked by various copyright holders.  So I went and found replacements for them.

One had the end of the song cut off.  I'd known about this, but when I added that video to the playlist, it was basically the only option.  Now that some time has passed, there are other options for the complete song, so I did a little switcheroo.

And finally, the reason this bit of maintenance happened at all: I added a new video.

This kind of stuff is why I keep a master list of everything in the playlist.  It makes it dead simple to tell what got deleted or made private or whatever, so I can go find a replacement.

Anyway, link's over on the right just like always, enjoy.

Thursday, May 25, 2017

boot9strapped in!

With the 33c3 public disclosure of sighax (headphone warning: very loud audio) and the recent BootROM dumping efforts, the public implementation of sighax, known as boot9strap (hereafter, B9S), is finally a thing.  I've updated my 3DSes to it and am now going to proceed to an explanation of sorts.

What does it do?  Almost the exact same thing as arm9loaderhax (hereafter, A9LH).  It just does it earlier in the boot process and is unpatchable by Nintendo since it uses a vulnerability that's permanently baked into the console's BootROM.

Why bother updating to it if I already have A9LH on all three of my 3DS family consoles?  It's simple, really.  Luma3DS has already dropped support for A9LH, meaning I need to be on it to get updates to my CFW and ARM9 payloads in the future.  I also needed to update Luma as a part of updating to B9S, since older versions of Luma can't be booted with B9S and newer versions can't be booted with A9LH, and there is no version of Luma that works with both.

Also, this gives me the chance to get used to using GodMode9, having done The Guide™ on my systems before it was included (I used Decrypt9/Hourglass9, and am still a bit more comfortable with their simpler interface).  I have the B9S-compatible version of Hourglass9 on standby if I absolutely need it, but GodMode9 seems to be fairly intuitive, just a bit weird and different.  I'm going to try and get used to it now in an amicable manner instead of eventually being dragged kicking and screaming into getting used to it later on.

Thankfully, the update process from A9LH to B9S is very quick, easy, and smooth.  Moving the necessary files around (and making a compulsory NAND backup after the fact) takes longer than the update itself, which has several checks it does beforehand and an "OH SHIT" recovery mode that will kick in afterwards, in the very unlikely chance that something goes wrong.  It's a far cry from the old days when people used unstable exploits to downgrade their systems one system title at a time, which could randomly fail and leave you with either a partial downgrade or a brick.

But wait, what even is sighax, anyway?  Well, I'm by no means authoritative on the subject, but my understanding of it is that the 3DS' ARM9 BootROM has a flaw in its checking of the firmware signature that allows a specially crafted (but invalid) firmware signature to result in the BootROM comparing the calculated hash of the firmware to itself.  This means that with said specially crafted signature, the signature check will always succeed and we can load whatever code we want.  Which is pretty fuckin' cool.

In other news, my buttcheeks are clenched since there's a ban wave going around that seems to be targeted at users of hacked 3DSes.  No ban yet, but it ain't over yet.

Wednesday, March 1, 2017

Wegmans

Today, I did my usual "assist my mom with the weekly shopping" thing, but this time we thought we'd try doing so at the new Wegmans that opened here recently.  I was going to tweet my thoughts about The Whole Wegmans Experience™ from within the store, but I quickly realized that Twitter's pitiful 140-character maximum message length is not adequate to explain my thoughts.  So instead, I wrote this blog post that will get far less exposure, because even though I tweet links to my posts, millennials don't click links.  I can see all the engagement data, none of my traffic comes from Twitter.  It all comes from Google searches.

For the record, today's shopping trip was actually the third time I've been to this specific Wegmans, or any Wegmans, period.  The first two times I was there with my parents for geocaching events (essentially meet and greets) that they care about far more than I do.  On the second visit I perused their buffet and had a pretty nice dinner.  For the curious, it consisted of roasted red potatoes with various spices, something that basically amounted to jalapeño cornbread and was thankfully sugar-free, what was labelled as "garlicky greens" which was basically just kale and garlic, and cilantro lime chicken with salsa verde.

Today, while actually browsing the store and looking for things we needed, one thing became readily apparent.  Wegmans very heavily pushes their store brand products.  Their store brand products take up roughly half of all their shelf space, which is far more than in any other store I've ever been to.  The remaining shelf space contains a very small and specific selection of name-brand products.  This name-brand selection looks decent at first, but omits some surprising things such as Puffs facial tissues and Tai Pei frozen meals.

This wouldn't be a problem if Wegmans had an equivalent product for everything name-brand that they don't have on their shelves.  Except they don't, as previously suggested.  Or at least, not that we were able to find.  Which brings me to my next issue.

The store layout is very confusing.  Now, of course, it was our first time shopping there, so it's reasonable to have some level of confusion since neither of us knew where everything was.  However, the decisions they make with how they distribute products around their store only serve to confuse and mislead customers about the products they carry.  For example, you can find slightly different selections of peanut butter in at least two different places.  The regular, non-organic, non-overpriced skim milk is down at foot level, while the organic overpriced skim milk is right in front of your face.  Also, the Kefir that my mom drinks was in two different places, but the specific variety she wanted was only in one of those places.  Their hummus selection is fairly limited and again exists in multiple places, and they apparently haven't heard of taboule, or nuts that aren't for snacking.

Their staff are friendly and will assist you with finding products, yes, but that step could be avoided entirely if the store wasn't intentionally laid out in the most confusing manner possible.  They also tout their smartphone application, which apparently can help you find things, but if I have to use my phone to find a product in your store instead of the signage you have posted within it, there's a problem.

Wegmans is certainly an interesting store, and will be handy to have around just by virtue of it being a different store with a different selection of products, but it will by no means replace Giant as our regular store of choice.  It also happens to be farther away from our house by a significant margin, which is also a factor to consider, even though the decision was made entirely in the product selection.  I did discover two more brands of unsalted chips while I was there (one was corn chips and the other was potato chips), but I'm still in the same unfortunate situation of "every store that carries unsalted chips would require me to drive specifically to that store to get unsalted chips, which means I won't be doing so very often".  Aggravatingly, both brands are stocked at Giant, but Giant just doesn't carry the product™.  Also aggravating: Garden Fresh Gourmet's salsa is available at basically every store in the area, but their chips are only available at Kroger.

If you do shop at Wegmans regularly, it appears as though you will be going there for the Wegmans store brand because it's the only brand in which you can find a decent selection of products.  I dunno about you, but personally I wouldn't want to look in my pantry or fridge and see forty or fifty of the exact same brand logo staring back at me.  I'm all for getting a store brand if it fills a need and the quality is there, but I don't want to be a paying shill for a company.

Tuesday, November 29, 2016

Doing My Part

It seems like spam is unavoidable and inescapable on the internet, and those who perpetuate just don't seem to understand that nobody likes them and that they'll die alone.  I've been receiving spam comments on this very blog from some SEO/whatnot company, who has taken the extra step to impersonate Blogger in the process of spamming.  I'm not going to link their shit because they don't deserve the attention, but I did investigate them, whois their domain, and submit an abuse report to their registrar.  I realize it's a total long shot with a minimal chance of success, but hey, I'll take what I can get.

"Why not just report them to Google?"  I've done exactly that.  Unfortunately, the report process for "impersonating a business" actually requires you to be a representative of said business.  I had to report them for some other reason and just mention in the comment box that Blogger itself was being impersonated.  Being that Google is a giant faceless corporation that doesn't pay any attention to anyone if they don't have bags of money to throw around, I don't expect anything to come of it.

The domain registrar, while being the long shot I've already admitted that it is, is still a much more likely avenue of success.  Below is the message I sent them via their abuse report page:
This company is spamming my blog on Google's Blogger service, and likely many other blogs as well.  Thankfully, I have comment moderation enabled and none of their spam comments are actually visible (because I've been manually marking all of them as spam).  They are impersonating Blogger in the process of doing this, and Google gives me no avenue to report them for it.  I realize this is a long shot, but I simply seek to strike back against them in any way I can.

Their profile on Blogger (the link "My Web Page" links to <domain redacted>, I used an internet whois service to find your site): <link redacted>

Even though the comments were never published, I get email notifications of comments on my blog that contain the full text of each comment, and can forward any number of them to you if necessary.  This has been going on since June 2016, basically since they registered their account on Blogger.
We'll see what happens.  If you're actually reading this and want a follow-up, I'll probably just edit this post.  There may not be a follow-up, though, it depends entirely upon the domain registrar's response, if I even get one.

Tuesday, October 11, 2016

Exercising During A Hurricane

Hurricane Matthew humped the East Coast for a while and dumped a bunch of rain on us.  Including at 2 AM when I'm normally out on my walk-that's-slowly-becoming-a-run.

A fun thing about the Fit Meter is that it calculates your relative altitude changes based on air pressure, which varies by altitude.  The lower the air pressure, the higher the altitude, essentially.  However, this is only good for relative measure since air pressure is completely weather-dependent.  High pressure generally means nicer weather while low pressure generally means a storm's a-brewin'.  Hurricanes are, of course, massive low pressure systems.

So, a couple nights ago, while Hurricane Matthew was busy humping the East Coast, I was out and about being awkward carrying an umbrella while doing my thing, and my Fit Meter was gathering air pressure data and trying to convert that into relative altitude.  Here's the result:

Fit Meter data showing really high altitude due to really low air pressure due to Hurricane Matthew

Yeah.  Normally it hovers around the zero line, as could be expected.  Fun times.  Also, obligatory song link.

Monday, September 5, 2016

RIP My Computer 2004-2016

So my old dinosaur of a computer started randomly rebooting a few days ago.  At first I thought it was something software-related, because it took 15 minutes or so to happen.  But then it started happening even from the BIOS setup menu, and now if I turn it on it just reboots continuously.  This means there's something fucked up in the hardware and there ain't shit I can do about it.

I guess solving my unemployment issue just got a bit more important.  Luckily, I won't actually lose any data since the hard drives are totally fine.  I just need to pull them out, put them in my 3.5" drive enclosure, and pull whatever I need off of them.

I'm posting from a laptop we acquired from my granddad a while back when getting old finally got severe enough that he couldn't really use a computer anymore.  I don't remember if I've mentioned this laptop on this blog before, but the sad thing is that it's better than my old desktop.  I mean, it still has the vast majority of the HP crapware on it, but I cleaned up the most severe offenders that were bogging the thing down and the only bits that remain are just installed programs that never get run.  I'm about this close to reformatting it and putting Ubuntu on it, to be honest.

So, why does Blogger in Chrome do double spaces as <space><non-breaking space>?  In Firefox it does <non-breaking space><space>, which is the correct way to do it so that blog posts won't end up with weird word wrapping issues.  I have to copy and paste every post I write into Notepad++ and do a find/replace to swap them, and it's super annoying.

Sunday, August 21, 2016

Oops.

So, Friday evening I went for my walk like usual.  However, partway through the walk I completely lost track of what lap I was on.  Naturally, being aware of when I left and the pace I usually walk at, I looked at my watch to figure it out.  Given the time, I determined I must be on the second lap, so I did another lap after that one and went back inside.

When I fired up Wii Fit U and transferred the Fit Meter data, I saw this:

Wii Fit U graph depicting accidental extra lap

Each lap of my walk has a very distinctive set of spikes and dips in altitude, given that my neighborhood is hilly as fuck.  It's very easy for me to tell where I was in the neighborhood at any point on the graph just by looking at the altitude and taking it into context.  But the pattern is repeated four times, not three.

I accidentally an extra lap.

So Saturday evening I did four laps again, purposefully this time.

I guess I'm doing four laps now.

Go me?

Wednesday, July 20, 2016

Weight Experimentation

So, as a natural part of having arrived at an amount of physical activity that burns a good portion of calories and a simple accompanying diet that helps me lose weight, it's rather interesting that I've now discovered the room to experiment with what I eat.

My goal with weight loss is really only that, weight loss; but by extension, a healthier lifestyle is necessary.  However, now that I know I can lose weight, my analytical mind wants to observe the effects of various foods on my weight, all other things being mostly equal.  Since, after all, ending up on some sort of asinine restrictive diet such as vegetarianism or veganism is not part of my plan.  It's everyone's goal to be able to lose weight and still be able to eat the things they enjoy, after all.

Moderation seems to be the key here.  I've noticed that a single spike in my weight from eating either more than usual, or something a bit less good for me than usual, comes off pretty quickly if I just stick to my routine.  Knowing that, it means I can treat myself to things that are absolutely terrible for me periodically, and still be perfectly fine in the long term.  However, all the weight I've lost is both motivation to continue the process, and room to experiment with what exactly I can eat.

To get to the point, suck it, vegetarians and vegans.  Meat is still a part of a healthy diet.  I'm completely happy to say I still consume it with every lunch and dinner, which was the norm for me before I started this weight loss journey.  Also, I feel like it's important to start this experimentation now and continue it throughout my journey, so I can see if anything changes.  I'm not expecting anything to change, but who knows, this is new territory for me.

Part of this experimentation will necessarily include getting fast food.  Personally, I'm expecting even the smallest fast food meal option to provide a significant weight spike, judging from the physique of the people you see eating at those places regularly.  There's a reason that the MAN THE HARPOONS meme existed back in the day, even if it's fallen out of use.  People who have absolutely no regard for their own well-being and just eat fast food all the time end up looking like whales.

The image I see every day, living at the north end of the American south, is what I thought of when I heard the word "obese", and "morbidly obese" was another step above that that I hadn't even thought I'd seen.  I really just considered myself to be overweight, because I looked nothing like these... to put it nicely... blobs.  That's why it was a surprise to me when Wii Fit U showed me that my BMI was at the top end of the "obese" range.  I just have a large gut, no rolls, no folds, and I don't buckle my abdomen into my pants.

I knew that America, primarily the American south, had a serious weight problem, but... really?  Wow.  Europeans like to be smug with their generalizations and stereotypes, saying "Americans r fatasses" and whatnot, which isn't really 100% true even on the worst day, but... damn.  It's close to accurate.  However, is the contrast really that severe?  Are there not overweight people in Europe and the rest of the world as well?  It's not just the US, it's just that we've got a really big problem with it.

I kinda drifted off-topic there, but whatever, I'm leaving it in.  My point is, my mental image of "obese" was wrong by about a degree of magnitude.  Everyone I'd been associating the "obese" label with is probably actually "morbidly obese" and really needs to lay off the donuts.  Heck, since I started this journey, I've had precisely one donut, and I gained a pound that day.  Nothing that can't be worked off, but it's an indication that people who can just sit there and inhale a dozen donuts are doing it wrong.

So, what have I tried?  Well, across the board, I've been following the "serving size" recommendations on most things, except when they're silly or ridiculous, such as a serving of Campbell's Chunky Soup being half the non-resealable can.  I've vetted a serving at a time of Totino's Bold (haven't tried the regular pizza rolls yet), a serving of El Monterey Southwest Chicken Taquitos, and I'm currently on one of my favorites, Giant Brand Spicy Chicken Strips.

I haven't yet ventured back to fast food, but the local gem of a restaurant that I eat at every week, Bodo's, is fine.  I was having zero problems with my usual sandwich, which incorporates the rather fatty pastrami and a slice of provolone cheese, but I'm experimenting with other sandwiches there as well, so I can change things up every now and then.  Up until last Tuesday, I'd been getting the same sandwich there for probably two or three years in a row at the very least, so it's kind of time for a change anyway.  I don't really consider Bodo's to be fast food, even though you order over a counter and get your food pretty quickly, because "fast food" carries a connotation of "not nutritious", and Bodo's actually serves healthy food.

I suppose first up will be Cook Out.  At several points in the past I'd been going there regularly enough that the staff started recognizing me, and noticed a rather bloated feeling when I was done with my meal.  It'll be interesting to try it sometime and see what happens, both feeling-wise and weight-wise.  I'm definitely expecting a weight gain, so the real variable will be how much weight I gain.

A restaurant I forget about way too much because we only have one of it is Arby's.  They're definitely on the healthier side of fast food, but still most likely considered "fast food" given my criteria listed above.  I never really went there regularly, but I'll give it a shot eventually and see how it goes.

Five Guys is one I'll want to try.  I may end up going to the single bacon cheeseburger from the double, that seems reasonable.  My toppings as always are lettuce, tomato, and jalapeños.  I've always advocated getting the small fries there, simply because they give you so many fries it's ridiculous even when ordering the small size.  I never really went to Five Guys with any sort of regularity, it was always a midday spur of the moment thing.

Taco Bell will be another variable entirely, that I may or may not decide to subject myself to.  The last few times I went to Taco Bell, I was on the toilet within an hour.  I don't know precisely why that is, other than that my body is clearly reacting to something in the food and saying "ain't nobody got time for that, get that shit out of here".  In my case, the latter half of that statement is literal.  People like to stereotype Taco Bell as causing this sort of thing, or act like everyone who says this sort of thing is making it up, so I'm sure my problem and the associated complaints are simply just lost in the noise, but it really does affect me.  What I do tentatively want to see is what exactly causes it, which will probably either necessitate ordering multiple menu items over the course of a few weeks, or one very well-set-up combo.  I'm thinking that three taco combo, with one of each taco option (beef, steak, and chicken, if memory serves) might be an efficient way to test it.  Also, it'll give me a chance to get some Baja Blast, since they only ever toy with us by putting it in stores on a limited run periodically instead of making it the permanent fixture it ought to be.

Other than those, I'll probably swing by a McDonald's and get a McGangbang, maybe try Hardee's, Wendy's, etc.  There's a lot of fast food options out there, and I think I'll be able to get a good enough picture of how they affect my weight without having to exhaust every single option.

Tuesday, May 17, 2016

I have a smartphone now

Since TracFone uses the major networks instead of having its own, this means it has less control over certain things.  The major networks are phasing out 2G, which my LG 420G phone used.  Good riddance, I say, since 2G was pretty unreliable at best.  Anyway, it also meant that I needed to switch phones.  Being somewhat of a decent company, TracFone has a replacement program.  Enter some details about your phone and you get your options: a free replacement, or $20 off of select smartphones.

Well, if you read the title of this post, you know which one I opted for.  The "free replacement" just seemed so shady to me.  There was no indication of what the free replacement was actually going to be.  Clicking it just took me to a page where I could enter my shipping information.  Looking at the "$20 off a smartphone" option, I noticed that they were already inexpensive, and were 4G LTE phones.

I bit on that discount, which didn't include shipping or tax, so it ended up being about a $12 discount instead.  But still, an Android smartphone that's mine to own with a much better camera and other amenities by virtue of being a smartphone, for $53?  I'll take it, good sir.  Three days later I had my LG L33L. (also referred to as an LG Sunset LTE, and TracFone calls it the LG L33G.  Why all the different names?)

Getting used to Android has been interesting.  I have issues with finding certain settings on occasion, and some interface things aren't terribly intuitive.  For instance, when you swipe down from the top of the screen to bring up notifications and whatnot, there's all these quick toggles and whatnot.  Well, the quick toggles can scroll left and right, and there's more of them than the phone can display on the screen at once.  However, just by looking at it, you wouldn't even think it could scroll.  Once I figured this out, I found that you could edit the buttons that appeared and the order in which they appeared, which was actually what I was trying to do when I stumbled upon the fact that it could scroll.  Also, it's tough as shit to adjust a slider to a precise percentage value using only your finger.  I tried using a 3DS stylus for a more precise touchscreen experience, but it doesn't work.

One thing I enabled immediately was the Android developer mode.  It's simple enough, though depending on certain things the place you need to go might be slightly different.  You have to find the Android build number.  For me it was under Settings -> About Phone -> Software info.  Anyway, once you've located the build number, start tapping it.  After a couple of taps, a notice will come on screen which basically suggests that you keep tapping to "become a developer".  Keep tapping and you get the developer options enabled in Settings.  It's a lot of stuff that's mostly of use to, well, developers; but I did enable one thing: showing the location of my touches.  Given that I'm quite regularly not touching the thing I think I'm touching, I find it super handy to know how the phone is interpreting my actions.

Sadly, like most carrier-branded phones, it comes with bloatware.  Some memo application, an office application, and McAfee.  Of course, they don't let you uninstall that shit.  You have to root your phone to do that.  Which I plan on doing, after I do my research and figure out which rooting method is the most trustworthy (so basically, not the Chinese KingRoot, which has already been found to steal phone IMEIs, and aggressively prevents you from uninstalling it and moving to other privilege escalation tools).

Also sadly, I don't think Cyanogenmod is compatible with it.  Then again, I can't find the LG L33L (or LG Sunset LTE (or LG L33G)) on any compatibility list for anything.  It's like I have a phone that nobody knows about.  I know LG does a lot of versions of their phones for prepaid carriers, is there a "parent phone" that this one is based on or something?

Anyway, I've had a go at exploring the options, configuring everything, installing applications, and setting up my home screen.  It's all gone fairly smoothly so far.  My only complaint is about applications on the Google Play store requiring 5 million permissions in addition to the one or two they actually need to perform their stated task.  QR code/barcode readers are among the worst offenders.  All it should need is the camera, but no, you find them wanting location, identity, network access, and so much more.  In fact, why isn't the ability to read QR codes built into the stock Android camera application?

Moving onto the internet, I noticed right away that the LG keyboard kinda sucks.  I always get the wrong letter with it, and the layout for symbols is strange, which makes typing my passwords annoying since I have to search through pages of symbols and whatnot to find what I need.  I ended up installing Google keyboard, which actually makes the symbol situation worse, but offers me the ability to type by dragging my finger around the keyboard and just pausing on the letter I want.  Certain punctuation like apostrophes it does automatically, which is nice.

I also explored options for and installed a web browser with built-in ad blocking.  It's already kind of confusing, there's the stock Android browser and Chrome installed by default.  The one I installed is basically functionally similar to the stock Android browser, but with Adblock Plus integrated.

One really neat feature that I'm actually making use of as I type this: if you plug headphones into the headphone jack, it can use them as an antenna and let you listen to FM radio.  I plugged in my computer speakers that got obsoleted by my headset.  You get the option to route the sound either out the headphone jack or the phone's internal speaker, which is neat.  I'm routing it out the speakers so I get both stereo channels, because mono sound is so 1970s.

At some point I realized "hey, how do I view my remaining TracFone minutes, text messages, and data?"  After all, TracFone is still prepaid, even with a smartphone.  Well, they have an application for that.  It kinda sucks, you have to manually tap a button to make it update, but hey, it works.  I haven't really ever used any data since I haven't gone much of anywhere since getting it, so Wi-Fi has sufficed for me so far.  Even when I went out to Cook-Out last night, there happened to be an xfinitywifi close by that had enough signal that I was able to watch a YouTube video and actually download the Google keyboard from the Play store.

Being that I'm a gamer, naturally you might wonder if I installed any games.  Well, most mobile games are total shit and only exist to suck the money out of your wallet, but I did download 2048, which was free and doesn't have any ads.  I'll have to inspect my options for other games, but generally I don't see myself using it for much gaming-wise.  After all, I've got a computer, five home consoles, and a variety of portables to play games on.  I tend to value something being purpose-built, and the primary purpose of a phone, smart or dumb, is not gaming.  It's to be a damn phone.  Not that I don't care about amenities, but they're just that: amenities.  If the device doesn't perform its primary function well, any ancillary function it might have doesn't matter.

Speaking of phones, I had a bunch of contacts to transfer, and fortunately for me it was way easier than when I went from the Motorola w260g to the LG 420G.  This time, both phones have bluetooth, so I was able to just send all the contacts from the 420G to the L33L.  One at a time, annoyingly, but still, far easier than manually entering everything all over again.  Heck, I even sent over my notification noises and whatnot, so I still hear the item fanfare from Chrono Trigger whenever I get a tweet.  I still need to sort out the wallpaper situation, so we'll see how that goes.  I also need to go buy a microSD card to put in it, so perhaps I'll take care of the wallpaper after doing that.

I'm still not fully done setting things up, but I feel like I've at least partially adjusted to it.  Still got a way to go, I think, but it's a start.

Wednesday, April 27, 2016

Jimmy Kimmel, Let's Plays, and Video Game Streams

The less concise but more accurate title of this post is: Why would you want to watch someone else play video games? A Response to Jimmy Kimmel.

If you're unfamiliar with what I'm talking about, watch this video, in which he talks about the launch of YouTube Gaming.  He expresses his confusion over the matter very plainly.  I know, it's old, but I just now got my thoughts in gear.  For what it's worth, his spoof of YouTube Gaming is actually pretty hilarious.

Video games are fun, and lots of people like them.  This is the reason that the video game industry has grown into a multi-billion-dollar industry.  Back when arcades were popular, the machines weren't always designed to make viewing the game easy for anyone who wasn't playing.  The question he's asking has been around for decades, and the answers have as well.  It's just that it's gotten easier to watch others play video games through the internet.

So, why watch others play games when you could just play them yourself?  I can think of five reasons.  I can also think of a lot of knee-jerk reactions, but in the interests of having this be an intellectually-sound post, I'll avoid them.

One: There are a lot of games coming out.  Every month sees a batch of new releases, for every platform, and there are several platforms.  Not everybody has all the money and time in the world to buy and play everything.  So instead, we buy and play what we can.  Our interest doesn't wane for the sacrifices we make, though, and the internet allows us to experience those games as well.

Two: With all the games coming out, and the diverse range of interests that they cover, it's inevitable that you're going to find yourself on the fence regarding buying one or another game.  Watching others play video games lets us see more than just the conflict-of-interest-laden, carefully crafted marketing material that the developers and publishers release.  It can help a person realize they really need the game now, or alternatively, realize that it's not worth their time and money.

Three: With the number of people recording their gameplay footage and commentary, editing the two together, and putting the result on the internet, there are a lot of commentators out there.  Each has a different style, as well as a different set of tastes for games.  You might initially find one person's channel because of a common genre or game interest, and then find yourself staying on and watching their playthroughs of games you never intended to purchase, just because you know their commentary will make the viewing experience enjoyable.

Four: This is the other side's perspective to reason two.  Watching others play games also has incredible marketing power, because it can and will influence people to buy games that they might not have otherwise found out about, or would not have considered buying.  Video game developers and publishers small and large, far and wide, and not named Nintendo, have embraced this and typically make getting permission to upload and monetize footage a very simple process, or even grant blanket permission to do so; often just requiring a link to the game's website or its page on the Steam store, which is easy to comply with.

Five: Sometimes, you either get stuck at a certain part of a game, or just want to see someone else's experience playing a game that you're playing.  There are a number of games that have large "open worlds" where the player is encouraged to go off the beaten path and find things on their own, and thus one player may experience things that another player might not.

I doubt he'll actually find out about this post, much less read it and not try to make fun of it in some way.  But his confusion over the subject has always been sitting there in the back of my mind, churning around until I realized that I had these three answers.  Now that I've posted them, hopefully I can get the matter off my mind, and maybe help anyone else who's confused about it realize what the appeal is.

Tuesday, March 22, 2016

Fixing Things: Stouffer's FitKitchen Steak Fajita

Stouffer's makes a variety of awesome frozen food products.  Their FitKitchen line is aimed at providing semi-healthy frozen meals.  One item in that line is the Steak Fajita.  It's got a delicious mix of steak, rice, beans, and vegetables with a sauce that brings everything together.

However, it's missing something.  Something crucial to the definition of a fajita.  What could it possibly be missing?

Tortillas.

If you're planning on picking up this product, grab some tortillas as well.  I personally go for 100% whole grain tortillas, but get whatever floats your goat.  The ones I get are about 8 inches in diameter, but smaller ones will work just as well.  Once you're actually deciding to heat it up, modify the directions as such:
  1. Preheat oven to 350°F.  Make sure your oven rack is in the middle.
  2. While the oven is preheating, wrap three tortillas in aluminum foil.  Use more tortillas if yours are significantly smaller.
  3. When the oven finishes preheating, put the meal in your microwave and start it warming up according to the directions.
  4. Put the tortillas in the oven.
  5. Continue following the directions to heat up the meal.
  6. When the meal is done, according to its directions, pull the tortillas out of the oven.
Now, you have nice warm tortillas to put your fajita filling into, and the meal is complete.  Feel free to follow the last word of their directions, which is, of course, "enjoy!".

Sunday, March 20, 2016

HomePass Nuance

Last Tuesday, Nintendo released a new panel for Puzzle Swap, and so naturally I used HomePass to get it just like always.  Lately I've taken to dumping my homebrew-fueled infinite supply of play coins into getting all the blue pieces before going on HomePass, so I can share out the blue pieces while getting the pink pieces.  For whatever reason it now seems to take closer to a week to complete each new puzzle, instead of the less-than-a-day I experienced when I first got going with HomePass.

Something I'd been doing in the past but kinda stopped doing more recently, was adding the SSID my HomePass setup was using to the connection list in System Settings.  After all, that SSID is already in a list on the 3DS that it checks and auto-connects to if possible, so I figured adding it to the connection list wasn't really necessary and stopped adding it.  HomePass still works without it there, so... must be redundant, right?

Then, I began noticing some things.

First, it was taking my 3DS upwards of 30 seconds to a minute, sometimes more, to connect to my HomePass setup, whereas it had been much quicker in the past.  Also, it wasn't getting groups of people while I had the system open, which it had also been doing in the past (contrary to popular belief, StreetPass does indeed work with the system open).

Adding the SSID I was using to the connection list solved both of these issues.

I guess what I'm trying to say here is, if you're setting up HomePass and noticing some unreliability, try adding the SSID your setup is using to your connection list.  Preferably in Connection 1, or barring that, above your normal internet connection.  The 3DS tries the connections in order from Connection 1 to Connection 3, so priority is inherently given to the first slot.

Monday, February 29, 2016

YouTube Subscription Box Grid View

YouTube decided to give us back our beloved grid view a while back, after having revoked it from us and subjected us all to the cancer that was the list view.  During that time myself and many others used one of various solutions that turned the list view back into the grid view that we knew and loved, but after having gotten the grid view back, all was good, right?

Well, wrong.

Their idea of a grid view is now this horrendous thing that's segregated by various arbitrary time periods, resulting in a lot of wasted screen space.  In addition, even after you've watched and hidden a video, it eventually comes back in an un-hideable form courtesy of a special section titled "Older", or sometimes "Most recent uploads", or sometimes "More recent uploads".  Fortunately for us, though, the HTML DOM is easily manipulated via JavaScript, so we can move all this stuff around and clean it up to present the grid view of old, while not actually harming any critical page functionality.

I have done precisely that.  Technically I did it a long time ago, but there was a silly bug in the script and it didn't work and I got all dejected and forgot about it until recently, when I tracked down that silly bug, squashed it, and polished it up for release.

Feature-wise, it collapses all of the arbitrary time period sections into the topmost section, maintaining chronological order, and removes the sections it emptied.  It then applies an Expand/Collapse button to the section(s) of un-hideable videos, and collapses them by default.  If any more of these sections are added to the page, they automatically get collapsed and have the Expand/Collapse button applied.  Essentially, you can see the content of those sections whenever you want, but they're hidden and out of the way by default.

Continuing my new habit of posting scripts like this on Pastebin, here's a Pastebin link.  That way you can see the entire source code before downloading it and installing it.  Also, I have tested it in both Firefox + GreaseMonkey, and Chrome + TamperMonkey, and it works as-is in both.  Just putting that out there.

Anyway, if you need me, I'll be over here working on a Twitter megascript.  It's almost done, to be honest, I just need to add one more feature and make it do a couple things in a way less stupid manner.

Edit (2016-03-01): Of course, I tweaked it.  The Expand/Collapse buttons now have some of YouTube's CSS classes applied, which makes them look like the rest of the buttons found on the site.

Double edit (same day): Also, in terms of scripts I'm working on, I have an updated version of the Chrono Trigger XP/TP grinding run calculation script.  The updated version uses an XML file, both to store and retrieve grinding run details, and to store the per-character XP/TP values you pass to it.  The practical upshot: custom grinding locations are a lot easier to add as you no longer need to edit the script directly.  I have a couple things I want to add before releasing the update, so no link just yet.

Edit (2016-03-14): Version 1.2 is out now.  It fixes an issue and does a few things more intelligently.  1.3 is coming down the pike as well, so prepare for impact.

Tuesday, January 5, 2016

I'm Free!

So, the past few months, there was something I had to do nearly every day that took a good portion of my time.  As of a couple days ago, I no longer need to do this thing, and as a result I have a lot more free time.  Maybe I can use this free time to get a job and end my society-perceived uselessness?  Dunno.

Anyway, the thing I had to do was take care of the dog.  She had bladder cancer and had to be let outside on a very regular basis or she'd end up going in the house.  My days were basically: get up, take care of dog until mom gets home, small bit of free time until dinner, eat dinner, free time until I go to sleep around 2-4AM.  It wasn't the majority of the time it took, but it was significant, and it kinda drained on me.

Now that the dog had to be put down (mom never said what led to them taking the dog to have her put down, I never asked, it happened while I was asleep), I have these hours of free time back again.

I mean, sure, it's sad the dog's gone.  I'll accept that.  However, thinking logically, which is what I do, taking care of her was a burden and now that burden is gone.

So basically, fuck you, I'm going out for lunch now that I can.  This Visa gift card isn't going to spend itself.

Monday, January 4, 2016

The AGDQ Problem

For whatever reason, I've never been terribly interested in most of AGDQ.  Last year, I watched some of it, but when SGDQ came around, it was absolutely full of speedruns that I wanted to watch, to the point that I had to sacrifice watching some of them so that I could get sleep to watch others.

I don't understand why this is, but I'm not here to debate on the subject.  What I'm here to do is, illustrate what I intend to watch.  Hopefully when SGDQ 2016 rolls around, I'll remember to do the same, and we can compare.

Sunday
  • None.  Will probably watch Kirby 64 once the runs are chopped up and posted on YouTube.
Monday
  • Ori and the Blind Forest
Tuesday
  • The Simpsons arcade game
  • Half-Life 2
  • Portal 2 co-op
  • Alien Swarm co-op
Wednesday
  • The entire 2D Mario Block
  • The entire Awful Games Done Quick block, which extends into Thursday
Thursday
  • The entire Awful Games Done Quick block, continued
Friday
  • Secret of Mana
Saturday
  • The entire TAS Block
  • Super Metroid
Sunday
  • None.  Currently just the finale is scheduled to take place on Sunday, which doesn't contain any actual gameplay.  SGDQ's was a quick "thank you to everyone who ran games and everyone who donated, it's over now, bye" and then they stopped streaming, so that's about what I expect this finale to be.
That still includes a lot of good entertainment and leaves me plenty of time for sleep, but...  a certain title I like a lot is decidedly missing...