Sunday, December 22, 2013

Powershell: Namespacing your test variables

Note: Since this post, I've significantly improved upon this script.  You can find the new version here.

Powershell lets you run any command a script can run as a single line in the CLI.  However, scripts get their own scope, and the CLI just uses the global scope.  On plenty of occasions, I've wanted a way to namespace my test variables away from all the default global variables.  I initially arrived at a solution involving a function that wrapped new-variable and prefixed the variable name supplied with the name of the namespace.  It was crude, but it worked.

Just now though, I wrote a better solution using a psobject.  It has add, remove, and clear methods for managing the namespace, and no other members.  I placed the code that sets this up in my profile, and added a bit of extra code so that if I dot-source my profile it updates the methods without touching the properties I've added.

This post would be little more than a long-winded way of bragging if I didn't post any code, so here you go, code.  In this code, my namespace is $XT, you can of course rename that to whatever you want.  Don't forget to change the variable:XT on the third line as well!
# namespace for testing # powershell, y u no have psdrive provider for this if( test-path variable:XT ) { # if the object exists, update the methods but don't mess with the values $XT.psobject.members.remove( 'Add' ) $XT.psobject.members.remove( 'Remove' ) $XT.psobject.members.remove( 'Clear' ) } else { # if the object doesn't exist, create it $XT = new-object psobject } # we need a way to add variables to this namespace # I prefer exit status, even though EXCEPTIONS EVERYWHERE is the .NET way... $XT | add-member -type scriptmethod -name Add -value { param( [string]$name, $value ) # test to see if we already have a member with this name if( $this.psobject.members | where-object { $_.name -eq $name } ) { # we do return $false } else { # no member with this name exists, create and assign $this | add-member -type noteproperty -name $name -value $value return $true } } # we also need a way to remove variables from this namespace $XT | add-member -type scriptmethod -name Remove -value { param( [string]$name ) # make sure the member we're trying to remove exists if( $this.psobject.members | where-object { $_.name -eq $name } ) { # see if we're trying to remove either of the methods for managing the namespace if( @( 'add', 'remove', 'clear' ) -notcontains $name ) { # nope, go ahead and remove the member so long as it's a NoteProperty if( ( $this.psobject.members | where-object { $_.name -eq $name } ).membertype -eq 'NoteProperty' ) { $this.psobject.members.remove( $name ) return $true } else { # member was not a NoteProperty return $false } } else { # don't let the add(), remove(), and clear() methods be removed return $false } } else { # trying to remove that which does not exist? return $false } } # I know, I know, mass-deletion only leads to mass-sadness, but this is a namespace for test variables we're talking about here. $XT | add-member -type scriptmethod -name Clear -value { param() # delete everything from the namespace $this.psobject.members | where-object { $_.membertype -eq 'NoteProperty' } | foreach-object { $this.psobject.members.remove( $_.name ) } }
The above approach would be much better done as a full-on class that you could instantiate, which would involve writing it in C# and importing it with add-type.  Then you could make as many namespaces as you wanted.

I personally think the best solution would come in the form of a provider for a PSDrive.  It would essentially act like the Variable provider with a couple of exceptions: it wouldn't contain the default global variables and, and it wouldn't pollute the built-in Variable: PSDrive like what happens if you create a second PSDrive with the variable provider.  Yes, I've tried that before and was massively disappointed.  By using a provider, your management commands would be the regular Powershell cmdlets you get for navigating directory structures and working with files!

Edit (2014-01-07): I apparently derped when I added the clear() method and forgot to prevent it from being removed.  FIXED.

Edit (2015-03-22): I improved upon the script significantly enough to warrant a new post.  That new post is linked to at the very top of this post for convenience.

Saturday, November 23, 2013

Brainfuck

So a friend at work started IMing me with text "encoded" in a brainfuck program.  To be able to respond properly, I of course had to learn brainfuck.

Then I started tweeting out small brainfuck programs that output short strings.  I did this once per day, without making any kind of reference to them or giving any kind of clue as to what they were.  The goal was to see if anyone could figure it out and reply to me with what each one outputs.  The secondary goal was to learn how to optimize brainfuck for size so I could fit things into tweets.

For the uninitiated, brainfuck has eight operators. + and - add one and subtract one to the current memory "cell".  > and < move the memory pointer up one cell and down one cell.  [ begins a loop so long as the current cell is nonzero, and ] ends that loop (and causes flow to jump to the beginning of the loop).  Last but not least, . and , (period and comma) output the current cell as a character and take a single character as input to the current cell.  With these eight operations (and only one flow control structure!) you can do almost anything.

Here are all my brainfuck tweets.  I've stuck their output in spoiler tags.

November 12th: >++++[>++[<<++++++++>>-]<-]++[<+++++>-]<++.+++.---. LOL
November 13th: >++++++[<+++++++++++>-]>+++++++[<++++++++++++>-]<+>>+++++[<+++++++++>-]+++[<<<.>.>.>-]<<<.>.-..>>++[<----->-]<---.<<++.>--.+++.<+++.>--. BU-BU-BU-BUTT DRUGS
November 14th: >-[-------<+>]>-[---<+>]<----->>-[---<+>]>++++[-<++++++++>]<<<<.+>>>.<<<.-->>.--.+.->.<.++++++<<.+.---->..---<.-.-->>>.<<.>.>.<<<.+++.-. I JUST SHIPPED MY BED
November 15th: >+++++[>++[<<++++++++>>-]<-]<+++>>+++[>++[<<+++++>>-]<-]<++<.++.-----.>.<------.+++++.-. SUP JON
November 16th: >-[<->+++]<->>-[<->+++++++]<->>++++[<++++++++>-]<<<[.>.---.>.<---.+++.<-.+.>>.<+++<] Infinite loop of "THE BEST"
November 17th: >-[<->+++++++]>-[<->+++]<------->>-[<->+++]<->>++++[<++++++++>-]<<<<.>.>.<<----.>>--.<<++++.>+.>.>. INTERIOR
November 18th: >>----[<--->----]>-[<->+++]<--->>++++[<++++++++>-]<<<.>.---.<.>.<+.+++++.>---.<----.>>. CROCODILE
November 19th: >>----[<+>----]<++>>-[<->+++++++]<+++>>-[<->+++]<->++++++++++<<<.>..<++++++++.--.------.>>.<+++.>--.>. ALLIGATOR
November 20th: >>-[<->+++++++]>-[<->+++]<--->>++++[<++++++++>-]<<<.>>.<<-----.>.<+++++.>++++.<----.>>.<<----.>>. I DRIVE A
November 21st: >>----[<--->----]>-[<->+++]<------>>-[<->+++]<+>>++++[<++++++++>-]<<<<.+++++.---.>>.----.<.---.<.>>++.>. CHEVROLET
November 22nd: >>-[<->+++++++]>-[<->+++]<-------->>-[<->+++]<+>>++++[<++++++++>-]<<<.++.>.<<.----.>>>. MOVIE
November 23rd: >>-[<->+++++++]<->>-[<->+++]<->++++++++++<.<.---.----.>.<++++.>--.>.> THEATER

The seven starting on November 17th have a slight easter egg: they're small parts of a longer phrase, and I designed the programs such that you can join them all together to get the full phrase.  If you look at the memory dump of the full phrase you'll see that each day's program ends on the last cell it uses, and each day's memory is just appended to the previous day's.  In addition, the very last one is designed such that you can continually paste the whole thing over and over and have the phrase get generated over and over.

References explained:
November 13th: Rhett & Link's Butt Drugs commercial.
November 14th: K-Mart "Ship My Pants" commercial.
November 15th: the result of me having a vague discussion of these tweets with a friend who'd been trying to figure them out.
November 16th: well, just listen to the song "Best of You" by Foo Fighters and keep in mind that the internet likes to loop things that are repeated.
November 17th through 23rd: This freestyle rap that the internet once again decided to loop, just because it was funny.

The interpreter I used to make all of these is available at http://copy.sh/brainfuck/.  No download necessary, it runs within your browser.  It's a bit lacking in useful debugging features (such as breakpoints and step-by-step execution with live memory dump), but it works decently for writing and testing.

I did use calculation structures that I don't fully understand in my tweeted programs.  Basically, any of the later ones which all depend on cell value "wrapping".  This is because the cell values are unsigned, so 255+1 would be 0 and 0-1 would be 255.  I started having to use this method to calculate values in order to keep the programs small enough to fit in a single tweet.

Saturday, September 28, 2013

WataMote

I did a post like this for Boku wa Tomodachi ga Sukunai as well, so... here goes.  By the way, the actual real title of this series is way too fucking long, so I'm just going to call it "WataMote" like the rest of the internet does.

Once again, something in entertainment comes along that draws a parallel to my life.  In WataMote, the main character is quite visibly introverted and has social anxiety disorder.  My social anxiety is very much self-diagnosed, but it very simply explains a lot of things throughout my entire life, so the engineer in me likes that explanation.

My only issue with this anime, and Haganai, is that the main character is totally inept, as the main group was in Haganai.  They want to find happiness, but they go about it the complete and total wrong way.  I know, there needs to be something for entertainment value, but for someone like me who finds that these things resonate fairly well with me, it's kind of disappointing.

I guess my main concern with WataMote is how nobody really notices that Tomoko is suffering and unable to figure out what to do.  Not even her mother.  This does correlate to everyday life where "if you're not an extrovert, fuck you" is an unwritten rule of society, but still.  The only person who takes any sort of notice is the student council's cultural festival chair, but that only happens with three episodes left and there isn't really time to expand on it.  The person that Tomoko is closest to being able to call a friend effectively doesn't get to do anything, except for an anonymous gesture that just confuses her more than anything else.

I'm not even talking about Yuu, who was Tomoko's middle school friend.  By the end of the anime Tomoko is referring to vast swaths of females as "bitches", including Yuu.  Yet she keeps her around to try and get the perspective of someone who she sees as "popular".

(by the way, those glasses look horrible on Yuu.  I know I'm not a fan of large-frame glasses, but still, they just look awkward.)

Honestly, one of the best things about WataMote is its opening song.  At first you're going "so metal", but then as you keep watching and see her breaking the chains and grabbing the sun you realize it's all a metaphor.

I know I'm discussing fiction here, but it does highlight a point that echoes real life for a large number of people: grade school life kinda sucks.  If you get instinctively seen as a "runt of society", you're stuck that way until college.  No joke.  You're effectively forced to mature faster as you constantly wish that everyone else around you would grow the fuck up and realize that all the things they're talking about are entirely trivial and don't matter.  You end up in "that group" that all the cool kids point and laugh at: the group of people that hang out with each other because nobody else will.

In this sense, WataMote and Haganai are kind of grafted at the hip.  Tomoko would probably have joined the Neighbors Club if she'd been a character in Haganai.  Hell, the series even references Haganai, among other things (I counted several Haruhi and K-On! references as well).

If you're going to watch this series, it does have plenty of entertaining moments.  Episode 8, however, was quite difficult for me to watch towards the end because of a scene that seemed to take forever that I knew would all end in tears.  Recalling the amazing opening song, episode 10 has the best transition to it by far.  Also, get yourself a copy of the OP single.  It has three versions of the opening song (karaoke versions don't count).  The first one is the one they used for the anime.  The second one is the opening song with just the female singer doing all the vocals.  The third one is the counterpart to that, with all male vocals.  They're pretty lulzy, especially the male version.

Anyway, I have to draw this post to a close somehow.  I'd give some inspirational words of "ignore the idiots that the grade school environment surrounds you with and make your real friends based on common interests in college" or something, but I hate inspirational speech.  It just sounds cheesy, even if it's true.

Also, WataMote is entertaining.  Hard to watch at points, but entertaining the rest of the time.

Friday, September 6, 2013

Comparator Clock in Minecraft, Explained

So with a very minimal amount of redstone it's possible to make a fast pulsing clock, just by using a comparator in subtract mode (third torch on).  We know it works, but why precisely does it work?  That's what I'm going to cover in this post.

Here is our example circuit.


Let's call the signal coming into the back of the comparator "Signal A", and the signal coming into the side of the comparator "Signal B".

When a comparator is in subtract mode, its output will be the strength of Signal A minus the strength of Signal B.

When the clock is off, Signal A, Signal B, and the comparator's output all have a strength of zero, so the result is plainly obvious: no redstone pulses.  The clock's output is stable.


When the clock is on, Signal A is the full signal strength of 15, and Signal B is zero.  The comparator subtracts zero from 15 and outputs the difference, which is 15.  Two blocks away from the output, Signal B becomes 13.


Signal B is now 13.  The comparator subtracts 13 from 15, and outputs a signal strength of 2.  Signal B once again becomes zero, so the cycle repeats.


This style of clock only works because the comparator has a built-in delay.  This delay is one redstone tick, or a tenth of a second.  The design actually uses this delay as a crucial component, because at any given step of the cycle the output of the comparator is dependent on the previous step's value of Signal B, so the previous value of Signal B needs to stay around just long enough for the comparator to notice.  If it had no delay it would pulse too fast for any other redstone component to even notice that the signal was changing.

When using one such clock, place a repeater somewhere adjacent to the redstone dust that provides Signal B, and then send the signal wherever you need it.

Edit: Notes:
  • In the creation of this post, I used the OptiFine mod and the Faithful 32x32 texture pack.
  • I'm actually flying high above my example redstone in creative mode, and holding the OptiFine Zoom button.  This combined with some cropping in Photoshop takes my obnoxiously large FOV setting out of the equation. (Quake Pro master race)
  • I did forget to turn off particles, which accounts for the bit of redstone that has zero signal having a particle above it.  The clock toggles faster than the particles disappear, the signal is indeed zero there.

Saturday, August 24, 2013

Traffic peeve #76

(Peeve number scientifically chosen by hammering my number keys)


So yes, there is a story behind this.  I was stuck in the shit-tastically designed parking lot of a shopping center that was built here a while back.  In the process of turning around and GTFOing, I ran across one such asshole as depicted in the comic.  Driving an SUV, of course.  He did leave enough room for me to get by, thankfully.  As I turned past him I honked, to which he replied "thank you!".  I instinctively responded "You're welcome!" and drove on.

Tuesday, August 20, 2013

PowerShell 2.0 Type Accelerators

So at work I've been using PowerShell for things, because it's a fairly easy to learn scripting language that's grafted to the hip of .NET.  Specifically, PowerShell 2.0.  Yes, I know PowerShell 3.0 is a thing, and that there's a beta for 4.0.  I don't care.

One of the things in PowerShell 2.0 you might have noticed and/or used are the type accelerators.  Normally when you want to make a new object, you have to do something like this (using a stopwatch as an example):
$sw = new-object System.Diagnostics.Stopwatch
If there existed a type accelerator for System.Diagnostics.Stopwatch, that could be as easy as this:
$sw = new-object stopwatch
Well, the good news is, you can add your own type accelerators.  The doubly good news is, a type accelerator is a type of its own, so you can use a type accelerator to make adding type accelerators easier as well.  Sup dawg, I heard you like type accelerators.

The following doesn't apply if you use the PowerShell Community Extensions, where this already exists.  This is just a way for you to get equivalent functionality in vanilla PowerShell 2.0.

So, as implied above, we want to make a type accelerator for type accelerators.  This task is actually pretty simple.  Just plop this in your PowerShell profile (do echo $profile and create the file that comes up):
if( !( [type]::gettype( 'System.Management.Automation.TypeAccelerators' )::get.containskey( 'accelerators' ) ) ) { $_accel_type = [type]::gettype( 'System.Management.Automation.TypeAccelerators' ) $_accel_type::add( 'accelerators', $_accel_type ) remove-item Variable:_accel_type }
I will now proceed to explain it line by line.  The first line checks to see if there's a type accelerator called 'accelerators' already.  If it already exists, nothing will happen.  The whole point of this is so you can add other stuff to your profile and rerun it in the same session without getting errors.  The second line grabs the System.Management.Automation.TypeAccelerators type and stores it in a temporary variable.  The third line uses that variable's add static method to make a type accelerator for, you guessed it, type accelerators.  The fourth line simply removes our temporary variable.

After this has run (either restart PowerShell, or just run . $profile), or if you're using the PowerShell Community Extensions, the following is now possible:
[accelerators]::get
Run that and PowerShell will poop out a list of all your available type accelerators.  Further type accelerators can be added using this type accelerator.  Returning to our example at the top:
[accelerators]::add( 'stopwatch', [System.Diagnostics.Stopwatch] )
Done.

Saturday, August 17, 2013

The Simpsons: Hit and Run

Yes, I finally started playing this game.  After moving out and not having internet for a bit I found time in my schedule for gaming, so here we go.

First impression: the game is good and makes a lot of references to a lot of the best episodes of the show, while at the same time having its own story.

As far as the gameplay goes, it's almost GTA but with The Simpsons.  You can run around and take any car you want, but it's more mission-focused than GTA.  There are fewer side things to do, and no weapons.  You can build up a meter by hitting people and cars and things, once it gets high enough the police chase you until either they bust you, which basically only takes 50 coins from the game's infinite supply of coins, or you get away.  Sometimes depending on where you are or what you're doing when they start chasing you it's easier to just get busted, since once they get their money, they neglect to take you to the police station.

In place of GTA's "hidden packages" are cards you can find, and wasp cameras to find and kill.  You can take side missions occasionally, as there are bonus missions you can find that unlock vehicles, and races that are fairly unforgiving in difficulty.

The game is severely missing a full map you can bring up.  The compass in the corner only shows so much, and it's all different shades of green, so it all blends together.  On this minimap are little icons indicating where various things like stores, races, and your current objective are, but it's kind of pointless because it has such a short range around your current location.  At least have a map I can buy at the Kwik-E-Mart or something...

Graphically the game is nice to look at, and handled the 2D->3D transition pretty well.  One thing I noticed relatively quickly was the tearing, which indicates that the game doesn't use VSync.

One thing that detracts from the gameplay is how much the game relies on timed missions.  This would be more acceptable if the time limits started out forgiving and got more and more strict as you progress through the game, but the time limits are strict from the start.  Throughout each area of Springfield you play in, there are shortcuts you can take, and to have any kind of ease with the timed missions you need to memorize their locations so you can drive through as fast as possible.  The "mission failed" screen even suggests that you do this.  While I like the addition of the hidden shortcuts, I don't think the time limits should have been set so strictly as to require their use.

Now, on to the game's overall progression.  Leaving the story out for the most part so if there's anyone else remaining who hasn't played this game and wants to, they can read this without spoiling themselves.  Anyway.

The game starts out with Marge ordering Homer around, and you do a set of missions as Homer.  These range from taking a science project to Lisa at Springfield Elementary to having to beat Smithers in an impromptu race from the power plant to Mr. Burns' mansion.

After you complete Homer's missions, you assume control of Bart for a completely different set of missions that culminate in you helping Professor Frink build Truckasaurus Rex and then take out a series of cell phone-using drivers so that Truckasaurus Rex can actually be controlled.  After Bart's missions, you assume control of Lisa.

Lisa's section is absolutely brutal with the timed missions.  They give you so very little leeway in the time limit that you have to know where all the shortcuts are AND not run into any traffic.  Or, you can do what I did and cheese the timer.  Essentially, it gives you some time to get somewhere, so get there and satisfy the first timer.  Once you get within a certain range of your objective, the timer goes away and it tells you to talk to the person.  Instead of talking to them, drive to (or at least, much closer to) your next objective, then get out and walk back.  Talk to the person, get what you need, and then walk allllllll~~~ the way back to your car.  Yes, this takes longer than driving, but you don't have to deal with the damn time limit, and it's what I found myself doing after failing the same mission about four or five times in a row because of said time limit.  The game really could have done without the time limits.  I come from the Vexian school of game balance, which carries the de facto motto of "If it's not fun, what's the point?".  You know what's not fun?  Failing the same mission over and over due to a strict time limit.  Also, to quote AVGN: "All it makes me do is have to do the same monotonous stuff over and over again, and it's not fun, it's boring."

After Lisa's section, you get Marge's.  It's more of the same shit with the time limits, except this time they're even stricter.  Basically, if you screw up at all, you'd better just restart the mission or you're wasting your time.  There was a nice time limit-less section of Marge's section, but for that it gives you one of those "follow the car" missions where if you get too far away you lose the car and fail the mission, and the leash they put you on is incredibly short.

Even though the game is divided up into missions by character, it's not the end of the world if you miss things, because you can go back to any mission and get what you missed.  The method of doing so is a little weird, but it works.  You have to go into the pause menu and select "Mission Select".  This also lets you easily re-play a section of the game that you may have taken a liking to, or try to legitimately get through a section you skipped.  "Skipped?" you say, perhaps raising an eyebrow.  Yes, in my rage-inducing attempts to finish some of Marge's missions, the game revealed a "skip" option on the failure screen.  According to the internet (and the internet is never wrong!) you can skip your way to the end of the game if you want to.

It's kind of a shame that the time limits ruin the gameplay so much, because without them, or if they were relaxed a bit, it'd be a really good game.  I really do see what they were going for, but I don't remember quite this many timed missions in GTA 3 when I played through it.  They weren't absent, but they also weren't EVERY. SINGLE. MISSION.

I haven't finished the game yet, but I feel confident sticking with the overall opinion I've established thus far.  If everything changes massively in the remaining gameplay, I'll do a follow-up post.

Wednesday, August 7, 2013

Switching to 24 hour time, Day 1

Well, Day 1 was yesterday.  But whatever.

I want to switch over because 24 hour time is less ambiguous than 12 hour time.  You don't have to read the time twice to tell what time it is, essentially.  Plus, I've been switching everything I possibly can over to ISO 8601 dates, and ISO 8601 uses 24 hour time.

(ISO 8601 organizes the date/time fields in the order of "changes the least often" to "changes the most often", from left to right.  Today would then be 2013-08-07 07:35.  This is less ambiguous for a human to read, and it can be sorted by computers very easily since strcmp will always report that a later date is "bigger" than an earlier date.)

However, I had a bit of a panic yesterday when I looked at my watch to see if it was about time to go to bed and there were numbers I didn't expect.  I had to do the old "subtract 12" thing to see that I still had another hour before I really needed to go to bed.

It seems like I can't configure my phone (an LG 420G) for it, and a Google search returned nothing useful.

I really just need to get myself used to using new numbers in the latter half of the day.  I get off work at 17 and go to bed at 22, not 5 and 10, respectively.

(also, side note, I'm going to be leaving the timestamps alone on this blog)

Saturday, August 3, 2013

Moving On With Life

Yeah, I'm finally getting the hell out of my parents' house.  It's been long overdue.

Move-in day at the apartment is the 9th.  I'll have two of my friends as roommates.  I don't know how long it'll take to get myself moved in, I'm expecting the process to take the entire weekend, mostly for little fiddly organizational bits.

To be honest I'm kind of nervous, and this is entirely to be expected.  I mean, I did go off to college and live in a dorm for the one semester I was actually there, but this time I'll truly live independently of my parents.  It'll be a new adventure, I guess.

I mean, I'm so nervous that I haven't actually told my parents yet.  I just can't find a good way to bring it up.  Having the social anxiety I have, it's difficult for me to start a conversation about a topic as big as this just out of the blue, even though it's my parents I'll be talking to.

I was initially keeping it secret because I know that if I'd brought it up they'd try to get involved somehow and then question how independent I really am.  I was planning on bringing it up after I'd signed the lease and it was a done deal.  Then after signing the lease I realized another reason to maybe keep it hidden for a bit longer: my dad is an asshole when it comes to all things financial.  I can completely picture him going "you're moving out?  Okay, here's your car insurance bill, your health insurance bill, and by the way, buy the car from me".  I'm not saying I don't want to pay for my own shit, but I don't want all that dumped on me immediately.  I'm not entirely sure yet that I could handle a sudden spike in monthly expenses, and I'll already have ~$400/month of rent to pay.  Keeping it secret longer gives him less time to carefully plan out how much of an asshole he'll be.

You can also be sure that when I do mention it, it will be to my mom.

Saturday, July 20, 2013

José Olé Nacho Bites

Saw these in the freezer section with the typical "NEW!" label on the box, so I grabbed a box.  I got the chicken and cheese variety.  Because Giant is the way it is, I don't know if there are any other varieties.

The directions are incredibly straightforward and bullshit-free, which was a pleasant surprise.  No "flip halfway through cooking", no "ensure internal temperature is 165°F", nothing.  Just the oven temperature, cooking time, and recommended cooling time before digging in.  Perfect.

I was initially a little worried that they'd stick to the baking sheet.  The directions don't say to grease the baking sheet first.  I popped them in without greasing it, to find that they ejaculate probably as much oil as the chicken at Popeyes, and thus the lack of greasing instruction isn't an issue.

They taste pretty much like you'd expect, since they're just corn tortilla with cheese, chicken, and bits of jalapeño peppers.  The jalapeños add just the right level of kick and aren't overpowering at all.

Overall, they're a bit oily, but pretty good.  Just keep a napkin around to wipe the oil off your fingers, and you'll be fine.

Tuesday, June 11, 2013

Twitter Bullshit

Well, Twitter officially retired v1 of their API today.  What does this mean for me?

It means that the Twitter client I've been using since switching away from the aging Adobe Air version of TweetDeck, the ever-interesting python/libwebkit client Hotot, stopped working because there hasn't been a public Windows release since the version I downloaded initially, even though the project has development from earlier this year.  I really don't know what a good Windows Twitter client is, everything I find is either mobile-only or no longer in active development.  I've had thoughts of writing my own for a while now, but I tend to balk on large development projects.

It also means that the Twitter widget I've been using on this blog broke.  That's more easily fixable.  In fact, I've already fixed it.  It looks a bit different and is way less configurable, but it's what we're stuck with unless I want to write my own.  Which I don't.

Edit: Twitter F5 re-enable script (weighs in at 58 characters):
onkeyup=function(e){if(e.keyCode==116)location.reload();};
Edit 2: Like most things, this doesn't work in Opera.  Even with "Enable User Javascript on HTTPS" turned on, it still refuses to even load the script.  If you use Opera, you suck.

Monday, May 27, 2013

Day of Racing: DVR Edition

I watched precisely zero of these races live, though the closest I got was starting the Indy 500 38 minutes late.

The F1 race was pretty exciting.  I personally was hoping for Adrian Sutil to somehow work his way up to 3rd so we could have an all-German podium.  Perez was pretty crazy at times throughout the race and ultimately paid the price for it.

At the Indy 500, things were initially crazy, with three cautions right off the bat, then everyone collectively calmed down and got on with it until just before the end when there were two more cautions, one of which happened because Graham Rahal hadn't yet crashed out.  I have a list of drivers that I'd like to see win, and while the actual winner was indeed among them, most of the rest had a decent race.  Fortunately for everyone involved it wasn't Will Power who won.  Stupid smug Australian.  Anyway.

I have less interest in the NASCAR race than the others, but I watch it anyway.  Unfortunately, despite rumors I'd heard and things I thought I'd heard people say, nobody actually attempted the 1100 this year.  Everything seemed normal for a while until the drive cable for one of FOX's cameras broke and got caught in Kyle Busch's car, then proceeded to wreck shit with everyone it hit.  Good guy NASCAR red flagged the race and gave people 15 minutes to repair the damage, then set the field in the order before it happened and set everyone racing again.

At 10PM, the local FOX HD channel promptly shit itself.

After a bit of WTFing I found the Shit-Definition version and tuned into that.  Skipping about a half hour because I was watching from a recording and was forced into the live broadcast.  After a yellow, things went to shit and there was a big crash and for some reason NASCAR threw another red flag.  I guess that's their policy as the race winds down or something.

Anyway, all the races were good.  Even though I missed a half hour or so of the NASCAR race.

Saturday, May 4, 2013

Defeat Cheapness With Equal Cheapness

I sequence broke like I said I would.  Grabbed everything that was remaining and went back.  Hit the boss with the Magic Rod three times, battle over.

LOL.

Anyway.

The 8th dungeon is quite the maze, but once you figure it out you can get right to the boss without issue.  After beating it, the game isn't over.  After all, you're collecting the eight instruments to wake the Wind Fish.  So then you go to the Wind Fish's egg in the mountains and play the Ballad of the Wind Fish on your ocarina.  All the instruments appear and you get the extended version, then the egg opens up.

Now, a long time ago, I'd heard that if you never looked up the proper sequence to go through in the maze inside the egg, it would be the same as the maze at the end of Zelda 1, i.e. North-West-South-West.  However, I avoided the library for the entire game and it spit me back out to the entrance after going North-West-South.

Read the book, got my (apparently random) order, and got to the final fight, which has a few different forms.  Nothing too difficult, you just have to swap weapons around (and for one form, try different tactics) until you figure out what damages it.

Once that's done, you get the cutscene and end credits.  The cutscene all but flat-out tells you that this entire game is a dream sequence.  If you think back, it all makes sense.  All the bosses are called Nightmares.

Also, the opening cutscene should be a clue.  You know, the one you see every time you start up the game.  Link is trying to sail through a storm, lightning hits his ship, Marin finds him washed up on the beach, and...  Wind Fish's egg.  Even the game's name suggests he's asleep.

I know nothing of the Zelda timeline, but... all the talk in the closing cutscene of "waking" and the wind fish, and the fact that Link was on a huge ocean and continues to be on a huge ocean after waking up, leads me to think that Wind Waker comes after this game in the timeline?  I dunno.

All I know is, I've beaten a Legend of Zelda game now.  Next up, Final Fantasy 4.

Cheapest Boss Battle Ever

I'm basically done with the 7th dungeon in Link's Awakening.  All except for its boss.  He has an attack pattern that's easily handled for a while, until he decides to flap his wings to create wind and blow you clear off the top of the tower you're fighting him on, which of course resets the battle.  I've tried using the Pegasus Boots, they aren't helping.

The worst part is, when he comes in to do it, you can't distinguish the wind attack from his dive-bomb attack until it starts up.  Sometimes I've tried to anticipate it and ended up dashing off of the tower under my own power.

Regardless, I have the Mirror Shield now, so I think before I go back to that battle I'm going to slightly sequence break.  Go into the 8th dungeon, and grab the last Piece of Heart, which will complete my 12th heart container (of 14 total), and the Magic Rod.  With the Magic Rod I can get the 60 arrows upgrade for the bow/arrows.  Then everything will be fully upgraded and I'll just be missing the heart containers from the 7th and 8th dungeons.

Sunday, April 28, 2013

More Link's Awakening DX

So now I'm up to the sixth dungeon.  I have in my posession almost all the awesome stuff: The Master Sword, the Hookshot, and the Boomerang.  Also got the bow and arrow (paid the 980 rupees at the shop rather than stealing it), and upgraded my bomb capacity to 60.  Magic Powder capacity got upgraded from 20 to 40 a long time ago, and the bow and arrow capacity can't be upgraded just yet.

One thing I find kind of annoying is all the item juggling that you need to do.  Some things, like the power bracelet, should really just be a persistent upgrade, in that once you get it, it's always equipped and you don't have to constantly switch back to it whenever you need to do some heavy lifting.  The flippers are a persistent upgrade, thankfully...

Still, the game is quite good.  Especially the music.  Even with the Game Boy's limited sound capabilities, the music sounds amazing.  I kind of wish I could turn off the sound effects so that they wouldn't override parts of the music.

By the way, this is by no means a no-death run, nor am I really going for 100% completion.  I want all the heart containers, and in the process of completing the game I'm getting all the equipment, but... the photos, which were an addition in the DX version just like the Color Dungeon?  Fuck the photos.  I've gotten a few of them, but I don't really care.

My preferred setup tends to be Master Sword on A and Hookshot on B.  The Master Sword is quite powerful, especially when you're at full health and it shoots its beam.  The Hookshot is just awesome because I can stab people from across the screen with it.  I bring in the Boomerang every now and then (mostly if I need to throw it on a diagonal, which is something the Hookshot can't do), but its limited range keeps it as a "just when I need it" item.

Project 'Bout Fuckin' Time: Link's Awakening DX

Consider Project 'Bout Fuckin' Time officially started.  I started up The Legend of Zelda: Link's Awakening DX on my GameCube + GameBoy Player earlier today, and worked my way up to and partway through the third dungeon.  In addition, I beat the Color Dungeon and grabbed the blue tunic (the one that halves all damage Link takes).  Being that I accidentally run into enemies and take contact damage a lot, the blue tunic should help tremendously.

There's not really much I can say other than that I'm using a guide to make sure I'm getting everything.  There's actually a guide on GameFAQs written expressly for that purpose, and it's coming in quite handy.

I doubt I'm going to do session posts because honestly Link's Awakening DX is a fairly short game.  Instead there will just be small status updates, like the one you're currently reading.

After Link's Awakening DX, I expect I'll dive into Final Fantasy 4, which is of course the other half of Project 'Bout Fuckin' Time.

Sorry Jon, I'm not playing Hit and Run yet.

Friday, April 26, 2013

Initial D 5th Stage

Before I begin, I'd like to mention (and/or remind) that I'm watching Central-Anime's DVD releases, and thus have only seen the first eight episodes.

This season seems like they're trying to combine 4th Stage with 1st Stage.  1st Stage was understandably full of story in addition to the racing, since at that point nobody knew who Takumi was and were in a collective state of disbelief that he and his underpowered car were capable of defeating them.  As the seasons progressed, the story got pushed to the back more and more as the series was concentrating on the racing.  4th Stage was all racing and very little else.  And I liked it that way.

5th Stage begins with an entire episode of story.  A throwaway plot involving two impostors, just to set up Takumi meeting this girl, who plays golf and was driven to do so by her father (so, in a similar situation to Takumi, basically).  The first race is in the latter half of the second episode.  Then in the downhill portion of that race, there's a rather unnecessary cut from the race to the girl taking a bath and thinking about Takumi.

Don't get me wrong, Takumi probably needs a life outside of downhill drift racing, but... the subplot with this girl seems just kind of tacked on, almost to the point that that 5th Stage could do without it and not even care.  Maybe she'll matter later on down the line or something.

Later on another subplot develops with a "grim reaper", who drives a black Skyline.  Kind of similar to 1st Stage, where the Trueno was the "ghost car".  This grim reaper has a connection to Ryosuke, and his appearance is apparently enough to make Ryosuke modify his FC a bit and go race him.  Or so we think, because episode 8 ends with them standing in a parking lot.

5th Stage is by no means bad, but the phrase "get on with it" comes into my head a lot while watching.  The races feel much more drawn out, and the addition of subplots only further serves to draw things out.

Monday, April 22, 2013

Spring Anime Season

Watching:
  • Haiyore! Nyaruko-san W - The first season was a good mix of action, comedy, and ecchi harem.  This second season looks to be much of the same.  No complaints.  I especially loved the bit at the beginning of the first episode where they used the OP from the first season.
  • To aru Kagaku no Railgun S - Just like the first season of Railgun, it kicked off with an excellent first episode where Misaka fires her signature attack at the climactic moment.  Definitely looking forward to more (and of course any and all screen time for Saten is appreciated).
  • Namiuchigiwa no Muromi-san - I was drawn into this one by the description in the anime season charts, which has led me astray in the past, but seems to be pretty solid here.  It's a lighthearted comedy, and offsets the other things I'm watching quite well.  The episodes are also only 12 minutes long, including the OP, end credits, and preview.  Also, hopefully the existence of the anime adaptation for this will spur some interest in scanlations of the manga, because there are none.
Still checking out, but looking good enough to continue:
  • Hentai Ouji to Warawanai Neko - I grabbed the first episode just to check it out.  I was thinking "oh, the male protagonist will meet the female protagonist, something will happen regarding their circumstances, they'll end up in a mostly ecchi relationship, and it'll be a fanservice series".  That's quite pleasantly not what it is.  The male protagonist is still a massive pervert, but there's a weird supernatural power at work and there seems to be a decent storyline.  Now we just have to see if they squander it for the standard "first few episodes serious, last few episodes serious, and the middle is ecchi fanservice filler".

    Also, currently watching gg's subs for this.  I don't really care too much for them because they have a tendency to trollsub everything "because it's not a serious series so who cares about a serious translation?".  Well, I care.  Fuck you.  There's always HorribleSubs.
Intrigued me because I had a similar idea but I haven't actually been watching it:
  • Photo Kano - A while back I had an idea (that I am very sure is by no means original) involving something similar to the premise for this series.  I'm interested in it for that reason alone, just to see where this series takes the idea.  From screenshots I can deduce it's mostly fanservice (although I'm sure that's a fairly skewed representation of what goes on), which would be right in line with what I expect.

Sunday, April 21, 2013

Sakura Matsuri 2013

So, CAINE went yet again.  My budget was $40, half of which immediately went to gas.  This budget doesn't count the $5 admission fee.

On the way up I had two initially talkative passengers who both quickly ran out of things to say and were silent for most of the trip, which just made the journey feel longer.  Neither of them contributed anything towards gas.

Once we were there, the metro station was crowded to all hell.  I distinctly remember it being less crowded the past few years.  Anyway, as we found out, the DC Metro jacked up the price of the single day pass to $14, meaning it was cheaper to actually figure out the fare for a round trip and buy a farecard for that much.  They have a stupid $1 per trip "tax" on using paper farecards (perhaps better known as a tax on people who don't live in the region and thus don't have SmarTrip cards), so with the fare in both directions (that's two trips) being $3.50/trip, a farecard for the day would be $9.  Also, (unchanged from ever) the farecard machines have a $5 maximum on the amount of change they will give you, so people who only had $20 bills had to double up.

So, with nearly 3/4 of my budget gone, I needed food.  This is a good time to mention that the festival was just as crowded as the Metro station was.  The only place that had okonomiyaki had a line that was at least an hour long.  I ended up going to a different place that had yakisoba and taiyaki.  For $10, I got cold yakisoba that was nowhere near as good as the stuff I've been making lately, and two lukewarm taiyaki an hour later when I could just walk up and buy.

With subpar food down, it was time to explore.  The festival is basically four blocks of one street, and a few of the side streets.  Walked from one end to the other, watching people play fighting games at the Nekocon booth, and looking at all kinds of merchandise that I couldn't afford, which included noting that one booth had dakimakura covers.

A couple blocks away from the J-pop stage, you can hear its subwoofer and only its subwoofer.  It's kind of weird, because you could see the singer-dressed-in-maid-costume singing on stage, but the bass so overpowered her voice that you couldn't hear it unless you were less than a block away.

Anyway, at the other end of the street was the stage where they do the real musictaiko drum performances and other more traditional forms of music.  That stuff is interesting to listen to for about 15 minutes or so.

After a while a whole group of us got tired of the festival and went to the Lincoln Memorial.  On our way back people started calling us, repeatedly, to ask where we were and to say that everyone was haphazardly leaving.  Since we hadn't set a defined time and place to meet before leaving, we went through the fun of figuring out who had left with who to make sure we weren't leaving people.  For the Nth year in a row, I had different passengers (well, different passenger, I only had one) on the way back.  We got thirsty partway back so we stopped at a gas station and got a couple of those 23oz cans of Arizona Green Tea for $1.01 each after tax.

Four miles later my car reached 130000 miles on its odometer.

So, tally up how much money I spent.  If you didn't get $40.01, you're wrong.  My wallet hurts, and for what?  Mediocre food, sunburn because I forgot my hat, and a festival where I had more fun when we left to walk elsewhere for a while.  Safe to say I'm probably not going back next year.  There's just nothing to do there that's really worth all the cost and time it takes to get there and back.

Advice to future CAINE trips to Sakura Matsuri:

Saturday, April 13, 2013

The Promised Guild Wars 2 Explanation

So, I've retreated from Guild Wars 2.  It's not a bad game, I just don't really have the drive to play it.

The first reason I stopped playing GW2 is simple: My computer is old and doesn't run it very well.  I'd like to actually be able to enjoy the game, and this includes being able to get more than one frame every few seconds when a lot of stuff is happening on screen.

The second reason is a group of reasons under the same header: Things it does that I disagree with.
  • GW2 was billed as a Guild Wars MMO.  But it plays more like an MMO set in the Guild Wars universe.  Basically, they put too much standard MMO stuff in GW2 for my tastes.
  • ArenaNet was trying to change the MMORPG for the better with GW2, and I respect that desire.  The most notable change is the lack of a dedicated healing profession.  That alone sets it apart from pretty much every role-playing game ever.  I have kind of a love-hate relationship with this, because I like that they were bold enough to try it, but the self-healing skills they gave all the classes can only mitigate your health loss, they can never result in net health gain during a battle.  There are skills that can be used to heal allies (Elementalist Water Magic, basically), but they're much of the same.
  • There is a lot of grind in the game, and this is unusual given how ArenaNet was specifically trying to reduce the amount of grind associated with MMORPGs.  Experience grinding they eliminated pretty well, simply by giving you experience for literally everything you do, even non-combat things like simply exploring the map.  But there are many other sources of grind in the game, and I can't overlook them.
  • The crafting professions.  They're unnecessary.  Get rid of them and go back to the GW1 method of crafting items: Get materials, give materials to crafting NPC along with some money, get crafted item.  It was a perfect system and never needed changing.  The crafting professions add a lot of grind to the game.
  • Related to the crafting professions, the method of gathering the materials required to progress them.  You have to buy not one, not two, but three separate tools to gather all the resources, and those tools have a limited number of uses.  Furthermore, some things require a tool to be made from a specific material in order to be gathered.  Also, the resource nodes move around periodically.
  • The level curve of a bunch of the lower-level areas never felt right.  I always found myself trying to fight things several levels higher than me just because I wanted to explore and was tired of fighting on the same few patches of land.  In the betas I noticed that the Charr 1-15 area was pretty good level curve-wise, and used that area for all of my characters thereafter, regardless of race.
  • The "sidekick" system, or perhaps better referred to as "the downlevelling system".  I have a love-hate relationship with this.  On one side, in GW1 it was always annoying to play with low level characters (perhaps your friends who have just gotten the game) because they never felt the full challenge since you were able to one-hit everything in the areas you were helping them go through with your max-level, max-armor, max-gear, awesome skill set character.  In that regard, automatically downlevelling the player to the area they're in allows all players around them to feel the proper level of challenge.  But in doing so, you forfeit any kind of noticeable strength gain or sense of achievement.  It's impossible to utilize your character's full potential because in the areas designed for your level, you'll have a lot of challenge, and if you go somewhere else to try to gain the satisfaction of killing something in fewer hits than you used to, surprise, you get downlevelled and it still takes the same number of hits as it always did.  Make the system check for other characters within a specific range of you and downlevel everyone in the area to the average level of all players in the area, rather than making hours upon hours of gameplay time useless.  I'm sorry, it's embarrassing to die in a level 1 area as a level 42 character.
  • Speaking of death, an armor breaking/repair system?  Really?  Get that shit off my waffle.  GW1 did just fine without it, there's no reason to add it here.  Especially when you said that, and I quote, "death is the penalty".  The repair system basically adds a monetary penalty to each death.
  • The dye system needs work.  I love the range of dye colors, and I understand that they wanted some dye colors to be harder to obtain than others.  That was in GW1.  But what wasn't in GW1: having the availability of dye colors be character-specific.  Why did someone think this was a good idea?
  • They got rid of the compass showing you enemies and your aggro radius.  Why?  It was so useful.  Coupled with names on anything being occluded by terrain features, and you'll constantly be accidentally running into more than you can handle, and then when retreating you'll get patrolled up on.
  • Underwater combat is incredibly lacking.  The handful of available underwater skills are awkward to use at best.  Also, when you decide to surface, the camera gets hung up on the surface of the water and won't go above it until you reach the surface.
  • I like what they did with having half your skill bar be dependent on the type of weapons you're using, but they could have taken it further.  Once you settle on a weapon combo that works for your play style, your first five skill slots will be the same old boring skills all throughout the game.  Why not let suitably rare weapons have different skills?  It would reward the player for going through the effort required to get the item and give them a sense of achievement.
  • Melee combat is awkward because the melee range skills don't move you into melee range of your target when you use them.
  • Three tiers of "max" items?  Really?  That's so WoW.  What was so wrong with the GW1 method of having max gear be simple and easy to obtain?
  • I love the sheer versatility of the GW2 Elementalist.  I think in all my posts about GW2 I've made this point blatantly clear.  So explain to me then, why do all of the Elementalist's traits force you onto just one or two elements?  And why can't I weapon swap between a staff and dual daggers without first having to leave combat?  I know the reason why Elementalists didn't get weapon swapping is because they have attunement swapping to change their first five skill slots, but the Elementalists' traits make players less likely to attunement swap.  Also, Engineers got shafted on the weapon swap front as well.  Do all the different kits and turrets and whatnot really warrant artificial removal of versatility?
  • Also, regarding traits: Severe monetary cost to re-spec your traits?  Seriously?  Bring back the ease of re-adjusting attribute levels when in town like in GW1.  Except, make that "when out of combat" instead.
  • Elite skills saw a huge change in GW2.  They're no longer the skill you lean on, use the most often, and no longer the keystone of your build.  Rather, they're the exact opposite now, they're the skill you keep as your "ace in the sleeve", to whip out when your normal approach is useless.  They work quite well for that purpose, but the recharge times.  Holy fuck, those recharge times.  They're ridiculous.  Trim them down a bit and Elite skills might become a bit more useful.  By the way, I've only seen a few of the Elementalist Elite skills, and of the ones I have, Summon Fiery Greatsword is by far my favorite.  Nothing keeps a group of enemies guessing like an Elementalist running into melee to beat their asses with a huge fucking greatsword that's on fire.  Well, I lied.  Nothing keeps a group of enemies guessing like an Elementalist and that Elementalist's buddy both running into melee to beat their asses with huge fucking greatswords that are on fire.  Since you get two when you use the skill, one for yourself and one on the ground for an ally to pick up.
Basically, what I'm trying to say here is that somewhere along the line of developing their Guild Wars MMO, ArenaNet let way too much of the MMO creep into Guild Wars.  Despite all of this, I still want to play the game, but now I know what I'm really playing.  In the meantime, you can find me in GW1.

Friday, April 12, 2013

Rogue Galaxy Post-Game Session 12

Started Insectron Rank C, and noticed that the curve for experience gains really starts to mount right after level 3.  I had to face several level 4 insectors, which I had some trouble hitting.  In the 5th round I also lost a Dark Emperor, but won with no other issues.

This indicates two things to me: that my "keep everyone in a line and advance it every turn" strategy for steamrolling Insectron only goes so far; and that I need to use Insectron Rank B to level up, forfeiting the 5th round so I can restart from the beginning.  It's only going to get harder from here, and I need my Dark Emperors to have relevant stats.

As it turns out, there is a "forfeit" option, but it's pretty well hidden.  You forfeit by selecting an empty space on your turn and selecting "Give Up" out of the menu.

I used Rank A for more levelling up, until I got them to ACE, then I beat it.  Between Rank A and Rank S I did a lot of stat maxing with food, probably too much to be honest.  I should have ground stats on the first four Rank S battles for a while, I'd have had less to feed them and would have ended up with max health on all of them.  Instead, I got max strength, defense, and resists on all of them, and varying degrees of high health for all.

Anyway, with my insectors no longer able to gain stat boosts, I stomped Rank S.  But I wasn't there just to beat it once.  Beating it a second time unlocks a costume for Lilika.  So I ran right back in, only to suffer a stupid loss on the fourth battle.  Basically, I got cocky and moved my king to the edge of the board, and the stupid idol girl sent her Dark Emperor in to use its attack with its inherent "flip backwards" property on poor PALPATINE, which of course 100 throw resist couldn't defend against and he got flipped out of the arena.

Second time through I didn't make that blunder.  I stomped all the way to the 5th round, against Dr. Pocacchio.  The thing that makes him difficult is that he has an insector you can't get anywhere in the game.  Just like the Dark Emperor it can use its special attack infinitely, and its special attack is much better, as it deals hefty damage to everything around it, and applies stun.  I ended up chasing it around the board with one of my two remaining Dark Emperors while my king was stunned, and eventually killed it.  Tough, but not the impossible insector most of the internet makes it out to be.

With that, I equipped the costume on Lilika and went to Galaxy Corporation to claim my reward for completing Insectron, which of course was sole remaining costume for Jupis.

Everything is now 100% complete, and I have all the costumes.  Rogue Galaxy officially done.

Thursday, April 11, 2013

Nothing posted in ages...

So, I got a job.  A real one this time.  It's sucking away all my free time.  Which means less time to play games and write blog posts.

Here's a quick rundown of what's happened recently:
  • Guitar Hero 5: FCed Deadbolt by Thrice
  • Rogue Galaxy: All my Dark Emperors are ACE and have all their stats except for health maxed.  Currently feeding them the item that boosts their health until they reach max health or stop gaining boosts from food, before entering Insectron S Rank.
  • The Simpsons: Hit and Run: Still haven't started playing it.
  • Project 'Bout Fuckin' Time: Still haven't started it.
  • Food: I've been making yakisobapan for my lunches for work recently.  Might eventually formulate a recipe post.  It's really not a complex thing to make.
  • Winter Anime Season: Finished Boku wa Tomodachi ga Sukunai NEXT and Minami-ke Tadaima.  Haganai NEXT had its moments but wasn't quite as good as the first season, and Minami-ke Tadaima was actually pretty decent.  Initial D 5th Stage on hold, basically watching Central-Anime's DVD version.
  • Spring Anime Season: Watching Haiyore! Nyaruko-san W, and To aru Kagaku no Railgun S.  Checking out Namiuchigiwa no Muromi-san and a couple others.
  • Guild Wars: Retreated from GW2, for a variety of reasons I'll probably dedicate a post to in the near future.  Playing GW1 sporadically.
  • Computer stuff: Learning XSLT and Windows PowerShell.
  • CAINE: CAINE is attending Sakura Matsuri this weekend.  We wrapped up our scheduled showings recently and by far the best thing we watched this semester was Steins;Gate.  It was up against Now and Then, Here and There, Kino no Tabi, and Megas XLR.  Also, for whatever reason, we had a showing that consisted of both Nanoha movies.  I'm not really into magical girl stuff.

Tuesday, March 12, 2013

Rogue Galaxy Post-Game Session 11

I know I said I wanted a balanced team for Insectron, but at the same time, I want to see how far I can get by just trying to overwhelm everything.  After much clearing of Ghost Ship Extreme that I didn't count as actual gameplay sessions, I assembled my team of 5 Dark Emperors and set forth.

As it turns out, Insectron is mostly similar to a turn-based strategy game.  Different insectors can move different amounts, and they have a special attack with its own, possibly different range.  Since it's turn-based and you can get stats on anything, even opponents' insectors, you can take your time if need be to plan out each insector's actions on your turn.  Also, when setting up your team before a match, you select a "king" insector, this one has limited movement, and if defeated ends the match.

Matches are basically a game of "advance towards the enemy, weaken their big damage dealers and other insectors that have special abilities you need to worry about, then kill the king".

With a team of 5 Dark Emperors, though, I pretty much steamrolled the first two levels of the tournament, being E rank and D rank.  Each tournament rank has five fights, but your insectors heal between fights, so it makes it really easy to just keep on going.  Also, if you want you can take a break between fights, and this lets you go elsewhere in the game, perhaps to catch another insector or feed your insectors to raise their stats and happiness.

After beating Insectron rank D, you unlock the Insectron mini-game on the main menu.  This is completely separate from the rest of the game and doesn't affect anything in-game, but you can load in teams from your memory card or from an excessively long 118-character case-sensitive alphanumeric password.  Also, when registering your team from your memory card, you can input a "victory code", which is basically a five-character string that anyone who inputs your team's password will see after they beat your team, as a "proof of victory" kind of thing.  In this mode, you can battle against the CPU, or against a second player, and if you're so inclined you can even load in two teams and let the CPU fight itself.  I inputted both passwords off of this page, and proceeded to stomp both teams with my Dark Emperors.  It's a shame that there doesn't appear to be a way to fight using a team you registered with a password, which means unless I catch a bunch of other insectors, I'll only ever get to use my Dark Emperors.

Anyway, at least until later ranks, it looks like Insectron will go by rather quickly.  I still plan to fully level up and stat max my Dark Emperors, but I want to get where the XP is good first.

Sunday, March 10, 2013

More Like, Main Screen Turn On

So, since I got a new phone, I've noticed something.

I get a lot better of a signal in my house.

Things are looking up.

Not quite sure why I get a much better signal on the same exact network I was on before, but hey, I'll take it.

Thursday, March 7, 2013

Pop-Tarts Oatmeal Delights

I always scan the Pop-Tarts section in the store for new flavors, and these popped up.  I've tried both available flavors, Strawberry and Mapley Brown Sugar.  So, how do they fare?

Well, first off, for something called "Oatmeal Delights", there certainly aren't a lot of oats in it.  Whole Grain Oat Flour is the last ingredient before the "Contains 2% or less of" section, and Whole Grain Oats follow shortly thereafter.  The first ingredient is Whole Wheat Flour.  So, it doesn't look like they really tried.

The oatmeal part isn't the pastry itself, but a rather crumbly coating on its surface, along with the frosting.

On the Strawberry ones, the frosting was always falling off.  It seems to be stuck on better on the Maple Brown Sugar ones.  That one Strawberry box may have been an anomaly, but since I haven't gotten more, it's hard to tell.

Both have fairly decent flavor, and it's nice to see them using some whole grains, but it's kind of pointless since they aren't 100% whole grain.

Overall: as far as the Strawberry flavor goes, I'd have to say stick to regular strawberry.  The Maple Brown Sugar flavor actually works well with what little oats are actually present.

Wednesday, March 6, 2013

BTTray.exe and Caps Lock/Num Lock/Scroll Lock Popups

So recently I installed the IOGEAR GBU521 USB bluetooth transceiver I got off of Newegg, which uses the Broadcom/WIDCOMM software.  Ever since, I've gotten a little popup whenever I press Caps Lock, Num Lock, or Scroll Lock, telling me whether it's now on or off.  It took me until a few minutes ago to investigate a fix for this, and being me, I'm here to post a howto with my results.

These are caused by the process that produces the bluetooth tray icon, BTTray.exe.  Killing the process in Task Manager makes the popups go away, and restarting it makes them come back.  You could disable it from the Startup folder of the Start Menu, but that gets rid of the tray icon.  "What if I want my tray icon and no popups?", you ask?

Be prepared for a little registry editing.  It's not too complex, but because we're editing the Windows Registry I'll put my standard warning here.

Warning: this process involves editing your Windows registry.  So long as you follow the instructions to the letter, there will not be any undesired changes to your system.  Don't just randomly change things without knowing what they do, and don't complain to me "your instructions don't work" if you didn't follow them to the letter, because I'll just laugh at you.  Also, don't follow these instructions if the above scenario isn't what's affecting you.

Now that that's out of the way...
  1. Press Windows + R to bring up the run dialog.
  2. Type regedit and press Enter.
  3. Expand HKEY_LOCAL_MACHINE, then SOFTWARE, then Widcomm, then BTConfig, then select General.
  4. Scroll down until you find the KeyIndication value.
  5. Double click it, and change it from one to zero.
  6. Now, open Windows Explorer and browse to C:\Program Files\WIDCOMM\Bluetooth Software.  On 64-bit systems, this might be C:\Program Files (x86)\WIDCOMM\Bluetooth Software instead.
  7. Open Task Manager, click the 'Image Name' column header to sort by process name, select BTTray.exe, and hit End Process.  Answer Yes at the "are you sure?" prompt.
  8. Now find BTTray.exe in the Windows Explorer window you opened and run it.
There.  You still get your tray icon, but no more popups.

Alternatively, instead of the first five steps, you can copy/paste this into Notepad and save as a .reg file (make sure you have that pesky "hide extensions for known file types" option turned off):
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Widcomm\BTConfig\General] "KeyIndication"=dword:00000000
After saving, double click the file and tell it you want to merge it into the registry.

The last three steps basically prevent you from having to log out/log back in or reboot your computer to apply the change.  If you'd rather do that instead, be my guest.

For what it's worth, there look to be a few other settings in that registry key that are useful but have no GUI method to change them.  They're outside the scope of this post, though.

Sunday, March 3, 2013

Done.

I won't bore anyone with specifics, but basically the idea I had in my non-ragequit-mode retrospect worked.  I had several attempts that failed for various reasons, and even after fixing what needed fixing I still had trouble.  Until I brought along experience scrolls.  The boosted experience gain helped my heroes work off their death penalty and it made all the difference.  I'd also brought a couple "reset buttons", or Powerstones of Courage, but I didn't need to use them.

There were two spots where I had trouble regardless of anything.  The wave with the Pefected Armor, and the wave with the Perfected Aegis.  The Perfected Armor, who is itself a Jade construct, brings along several Jade construct buddies as well as a group of White Mantle that includes a healer.  Perhaps the most annoying among them is the Jade Cloak, which is an elementalist that can really dish out a lot of damage if left unchecked.

The Perfected Aegis is a Jade Cloak boss.  Who brings five more Jade Cloaks with him.  In a wave that's entirely Jade constructs.  Yeah.  Overkill much, ArenaNet?

Once I made it to the last wave, I beat it no problem.  The hardest wave by far is most definitely the Perfected Aegis wave.

All Kryta zones reverted back to their original spawns, forfuckingfinally.

However, there's still a related quest line.  That also shows rather horrible design.  You're supposed to track down one of the Ebon Vanguard who went missing during the "omg everyone get to Lion's Arch NOW' quest, perhaps better known as the last part of Mustering A Response.  Except you're only given very vague hints on how or where to search for him.  Even once you manage to figure it out (I had to look it up...), the following mini-mission suffers from the same lack of direction.  Other than having an assassin NPC that you're assisting, you really don't know where you're headed.  You have an objective, but it's not marked on your map so you really have no clue where to go.

I want to complete this because you get a hero out of it and this would be the only hero my ranger doesn't have.  Even if I never use the hero I'd still like to have him available.

Re: previous post - Retrospect

First off, that post used a lot of terminology and didn't explain any of it.  I'd basically just ragequit the quest when I wrote it, and didn't feel like explaining anything.  The thing is, though, even though I could explain things here, it's really better to just look up all the terminology on any of the wikis related to GW1.  In order of my personal preference, they are guildwiki.org and wiki.guildwars.com.  You can also waste a lot of time browsing builds on gwpvx.com.

I'll try to explain stuff in this retrospect post a little better, since I'm not in ragequit mode currently.  I'm actually in "I only got 3 hours of sleep, why the fuck am I typing this instead of going to bed" mode currently.

The main subject of the previous post was my complete and utter failure at the final quest in the War In Kryta quest line, The Battle For Lion's Arch.  In this quest, you decide to open the gates of Lion's Arch and lure in the White Mantle (the bad guys!) so you can use the various chokepoints in the town to your advantage in completely erasing their existence.  To further this end, there are a metric fuckton of NPCs positioned in various useful places, and some barricades have been built specifically to funnel the enemies through the main chokepoint that you'll be fighting at.

My strategy was to take myself, as a ranger, with my usual Burning Poison build I'd used up until this point, alongside five heroes: a warrior, running a pure adrenaline build with the elite stance Battle Rage to fuel it, two fire elementalists loaded with area of effect spells, including Meteor and Meteor Shower, a necromancer minion master, to make use of the plethora of corpses this quest provides, and a lone healing monk.

That strategy failed in a number of ways.  First, my Burning Poison build, which revolves around the skills Apply Poison and Burning Arrow, to cause a lot of degen on enemies, only truly works well on fleshy enemies.  The enemy group composition gradually shifts to contain more and more of the Mursaat's Jade constructs, which, being constructs, are not fleshy, and therefore not subject to the Poison condition.  Also, for the high armor enemies where armor-ignoring sources of health reduction are more helpful, my only source of that was the Burning condition, which doesn't stack with itself.  So basically, I shot myself in the foot from the start.

Also, my minion master could be a lot better.  I had a traditional minion master, with Shambling Horrors (essentially have to be killed twice as the first time they're killed they turn into Jagged Horrors that inflict Bleeding on hit), and the Flesh Golem, of which you can only have one but it's super tanky and dishes out damage like crazy.  This build works, but relies on summoning minions one by one, which means if your minion master dies and loses all their minions they have to start over from scratch.  Game balance changes quite a long time ago changed the elite spell Aura of the Lich to basically summon an instant minion army given enough corpses, and this mission provides more than enough corpses for a single minion master.

So basically, I need more diversity in my damage.  Which has generally been my goal all along, after I realized that such team builds (generally referred to as "pressure" builds because they have more damage sources than an enemy healer can possibly be prepared to handle) completely wreck the AI.  In all honesty, I should get rid of the elementalists.  One should be replaced with a blood magic necromancer, using life stealing spells and health degeneration hexes.  The other should be replaced with an illusion mesmer, with various forms of direct damage, and an interrupt or two (most definitely Panic, which has been stapled to my mesmer hero's bar since I capped it).

In addition, I'll probably swap the adrenaline warrior for an energy warrior (utilizing the elite skill Warrior's Endurance to fuel the build, given the warrior's meager energy supply), so I can use the skill "I Will Avenge You!", which gives health regeneration and an attack speed boost for a duration that increases with each dead ally, of whom there will be a lot.  It only takes 5 dead allies to get 100% uptime with the skill, so basically I'll have an unstoppable powerhouse warrior once things really get started.

Then, there comes my build.  I want to stick with a bow build, so I can camp out on the hill with the ranger NPCs and plink away at things from a mile away with my flatbow, but all the builds I like depend on degen and conditions that only work on fleshy enemies.  The old "sniper" build I used to run would work, I guess, which basically just revolves around putting as many skills on my bar as possible that increase the nice juicy armor-ignoring bonus damage per shot.  Failing that, I can load up spirit spam (which, despite consisting solely of ritualist skills, I like more on a primary ranger) and have an instant decent support build.

I think my last "sniper" build I ran used the elite preparation Glass Arrows (which technically can deal a fleshy-only condition, but only against foes that are blocking), as well as Sloth Hunter's Shot (deals decent bonus damage, and deals even more bonus damage if you hit an enemy that's currently not using a skill) and a couple other high bonus damage skills, plus Favorable Winds to double my arrow speed (which also buffs the NPC rangers you get for the quest, and is a given because it's generally stapled to my skill bar).  I can afford to forgo my "fuck you, War In Kryta" button, aka the resurrection skill-preventing spirit Frozen Soil, because this seems to be the one part of War In Kryta that has a manageable amount of enemy resurrection capability.  I should probably also include Needling Shot, which deals a low amount of armor-ignoring damage, but recharges instantly if the target is under 50% health, just to help finish off high armor targets.  Using it with a Zealous bow to get energy back on every hit helps mitigate what little cost it has after my typical high amount of Expertise (which reduces the energy cost of ranger skills and a few other varieties of skills from other classes).

It would still really help to be able to have eight party members instead of just six (because despite necromancers and mesmers being more useful, elementalists are still useful, and an extra healer would help), but all these changes I'm conceptualizing here seem like they'll make the quest a bit more manageable.

Now, if you'll excuse me, I'm going to go get that sleep I mentioned way up there.

Thursday, February 28, 2013

Yet Another War In Kryta Rant

Yeah, I've been playing GW1 lately.  GW2 just doesn't feel the way I wanted it to.  It should have been a Guild Wars MMO, but it ended up being an MMO in the Guild Wars universe.  Crafting professions were unnecessary, and the auto-debuff system basically means you'll never actually feel like your character has gained any strength at all.

Anyway.

So I finally decided to take another shot at doing the very last part of the second-to-last War in Kryta quest, Mustering A Response, where you escort Livia, Zinn, Blimm, and a bunch of Ascalonian settlers from the Ascalonian settlement to Lion's Arch.  Being a War in Kryta quest, it throws ridiculous numbers of overpowered enemies at you and calls it challenge.  All you can really do is run.  If you stop to fight, you're dead.  In fact, even the wiki article for the quest recommends flagging a sacrificial hero or two behind the party to divert the horde's attention ever so briefly.

After failing it because Blimm died when I was almost there, I got an idea.  All we're doing is running, right?  Let's go with that.  Warriors have an elite skill called "Charge!" that makes all allies within earshot move 33% faster for a while.  It lasts around half its recharge time, but I have a party of six available, all of whom could be configured to have "Charge!" on their skill bar with enough attribute points in Tactics to matter.

Entered the quest with a party of six, all with 12 Tactics and only "Charge!" on their bar.

Blimm died when I was almost there.  Ugh.

A second try would be much more successful, and I was finally, after all these years, able to move on to the final quest in the most horribly designed quest line ever: The Battle For Lion's Arch.

On the tin it looks like a standard "defend the area from waves of enemies" quest.  Which is exactly what it is.  Except for one thing: it's a War in Kryta quest.  Which means every wave is 20-30 enemies.  As it goes further, more and more of the Mursaat's Jade constructs get mixed in, with their frustratingly high armor levels.

I lost count of how many attempts I made.  The furthest I ever got was the wave just after the one with Oizys the Miserable.  When Zinn activates the Spectral Infusion buff way too fucking late to be of any use whatsoever because all the NPCs it's supposed to protect are dead by this point, and the enemies rushing the town are so far out of the remaining NPCs' league that they don't last very long anyway.

I've ranted about War in Kryta before, so I'll summarize what I've previously said:

Up until this point, two enemies with the same name had the same build, guaranteed.  Not so here.  The primary profession is usually the same, but the secondary can and will differ, and the skills they bring will of course vary.

Up until this point, if enemies carried resurrection skills at all, they were rarely used or semi-easy to deal with.  Sole exception going to post-skill-rework "We Shall Return!" in Nightfall.  They never did rebalance Awakened Cavaliers after making that change.  Even then, you can deal with their newfound spammable insta-res, because you're riding giant undead wurms that can siege the fuck out of them.  The War in Kryta pretty much requires your party to contain a Ranger with Frozen Soil to prevent the enemies from using their resurrect skills.

So, what have we learned from this?
  1. First, whoever designed the difficulty brick wall for the War in Kryta content needs to be shot.  Repeatedly.  Until they die.  I would say this to that person's face.
  2. Second, the Winds of Change content in Factions is probably much of the same.  Probably even the same person in charge.  I haven't yet started it because of the foul smell, taste, and experience of War in Kryta.  Plus I hate Factions PvE anyway.  It was thrown in as an afterthought.
  3. Third, this whole quest line showcases horrible design decision after horrible design decision.  It's not just a little bit different, it's completely different from the entire rest of Guild Wars 1.
  4. Fourth, I don't know if this is ArenaNet's definition of "fun and challenging", but I assure you it's neither.  It's tedious and frustrating.
Now, let's try to be constructive.  How would I take this War in Kryta mess and produce a balanced quest line out of it?
  1. Make sure that entry into the content was willing on the part of the player, and provide a means to pause or disable it without having to complete it, while remembering where the player was if they decide to pick it back up.
  2. Tone down the enemy group size.  It reeks of Factions PvE.
  3. All enemies with the same name would have the same exact build.
  4. No more than two enemies with a resurrect skill per group.
  5. Tone down the armor on the Jade constructs.  It takes several minutes to kill one of them, and you get four or five thrown at you at once...
  6. Longer pauses between waves.  Give the player a bit longer to recover, and maybe actually let them go pick up some of the items that dropped.
  7. Allow the player to put together an 8-person party for the entire quest line, regardless of where they start from, since all War in Kryta content appears to be designed for parties of at least 8 players, which is a bit of a punch in the babymaker since the maximum party size for anywhere other than elite missions is 8.
  8. When taking henchmen into War in Kryta, automatically buff them up to level 20 with appropriate armor and skills.
  9. Have the auto-resurrection timer be shorter than 10 seconds on The Battle For Lion's Arch when the player has been pushed back to Lion's Arch Keep itself and is resurrecting while still under fire from the spells that killed them in the first place.
  10. Make the NPCs who are defending Lion's Arch with you actually have decent armor and skill sets.
  11. Do the auto-res thing for all the defending NPCs, not just only certain named ones.
  12. A mission effect similar to the bounties received from people at res shrines in Eye of the North, so that death penalty can be gotten rid of without using consumables.  Basically, a bonus every 25 kills.

Sunday, February 24, 2013

Azure Tusk

...or, you know, Bluetooth.

With my new phone's ability to use Bluetooth, I naturally wanted to be able to use that.  Especially considering how the network completely mangles the images and audio I send to it via MMS.  I began my quest by poking around various TracFone-related resources for the phone, since TracFone likes to be a little bitch and disable or overly restrict all the useful features on their phones.  There I found conflicting information, both suggesting that TracFone had disabled the ability to transfer files via Bluetooth, and that a good number of people had been using it on a regular basis.

I found way more of the "file transfer via Bluetooth works" sentiment than the "no, it doesn't work" sentiment.  So, I hopped over to Newegg and ordered myself a USB Bluetooth adapter.  Specifically, the IOGEAR GBU521 Bluetooth 4.0 USB adapter.  $8 shipped, with promo code that despite being openly advertised on their website I had to subscribe to and then later unsubscribe from their email newsletter to actually use it.  It arrived yesterday, and so my adventure in getting it installed and set up began.

The instructions that came with it gave conflicting directions for Windows XP.  First, they said "oh, the driver disc has a driver for Windows XP on it".  Next, they said "If you're using Windows XP, go to our website to get the latest driver".  Lastly, they said "or you can just plug it in if you're using Windows XP SP2 or later and use Microsoft's Bluetooth stack, limited though it may be".  Care to take a guess as to which one was the correct thing to do?

Well, I tried the driver they told me to download.  Even though it's for the GBU421 and their site makes no mention of the GBU521.  After installing that and plugging in the device, I got greeted with a Windows Found New Hardware wizard that never produced any results.  So, that wouldn't work.  I tried rebooting, just on the off-chance that it was actually required, and nope, still the same thing.  So, I popped in the disc and installed from that.  Wham, it worked.

So anyway.  Pairing my phone with my computer was rather simple, and I got the non-ass-quality PNG version of my wallpaper transferred.  I then tried to transfer the text message noise I'd made in FamiTracker, basically recreating my old text message noise (the Power Rangers communicator beep) in NES.  It transferred, but didn't go into the ringtones folder because the phone doesn't recognize WAV files for some stupid reason.  So I encoded it to MP3 and it took that.

Then it started acting up and not letting me transfer anything from the phone at all, saying I'd need to reboot, so I did.  Then it worked properly.

Anyway.  The things you should get from this are:
  • Install the IOGEAR GBU521 Bluetooth adapter's driver from the disc on Windows XP, not from the internet, and don't just plug it in and try to use it with Microsoft's shit, because it's, well, shit.
  • TracFone-branded  LG 420G phones can indeed transfer files via Bluetooth, and therefore not have to suffer through faggoty automatic-by-cell-network transcoding/lossy compression, and for free.  If any later software version happens to change this, my phone's software version is LG420GHL_V10f.
  • People always think that the Power Rangers communicator beep is something from Kim Possible.