Building A Cross Platform App with Xamarin

So, I made an app.  A for real, runs on things app.  More accurately, I followed a little tutorial to make an app, as part of the Xamarin Challenge over at Thurrott.com.  The app itself is a little weather app, it even includes location based weather and forecasting.  I know this isn’t particularly impressive but I think it’s pretty neat.

Part of the point of the exercise is that it show off the cross platform ability of Xamarin as a development plaform.  The end app uses the same code and runs on Windows 10, iOS and Android.  Unfortunately, I don’t own a MAC or an iOS device to test the iOS code but I was able to run both the Android and Windows 10 versions of the App.  I even ran the Android APK on my Fire Tablet.

I can’t say I learned a ton about how to actually make apps using Xamarin, though I plan to poke through the code provided more later.  What I learned more of was how to trouble shoot Visual Studio, which seems to be a bit more than buggy.  There is a forum set up for people looking for assistance on this contest and there are a lot of issues that all seem unrelated to each other but all related to issues with Visual Studio.

For example, I had issues getting the location based weather to work, until I went through and updated the Android Emulator files and build an emulator that ran on Android 7.  In a later step I found several of the NuGet packages weren’t installing properly, I never really figured out why but I ended up having to add them individually to each of the app platforms rather than the blanket “Install this on all platforms” system.

In the end, I did manage to get through and the app says everything was submitted and accepted.

 

Change Agent by Daniel Suarez

NOTE: This book was provided by the publisher for free to the reviewer in advance of release. This review also originally appeared on Lameazoid.com

I should probably start off by mentioning that I am a huge fan of Daniel Suarez.  I have read all of his previous books, a few of them more than once.  He definitely has a great “not too distant” future sort of style that comes off as very plausible in his Sci-Fi Techno-Thriller novels.  While I wouldn’t rate Change Agent as his be best work yet, I still give that to Daemon, it’s certainly not on the bottom of my list.  They all rank pretty high in my opinion.

The general plot follows Kenneth Durand, who has been genetically altered via a Change Agent, sort of a DNA virus, to have the form of the wanted criminal Marcus Wyckes.  A large proportion of the story follows Durand as he travels through Singapore and Thailand to try to find a way to return to his former self.  He meets a variety of folks along the way good and bad, and must deal with some inner turmoil in the concepts of what truly makes a person who they are.  Much of the near future aspects of this revolve around the concept of genomic manipulation primarily, but other more familiar concepts such as the mass use of drones and AR/VR style interfaces for technology.

The core story is well done and there is a nice sense of urgency along the way to Durand’s mission, mostly from the constant pursuit by the authorities.  The main areas where it falls apart is the periphery.  Some of Durand’s colleagues are involved in the pursuit of Durand/Wyckes but they don’t really seem to every question the possibility of Durand being anyone except who he appears to be, despite the world around them.  There also isn’t a much done with Durand’s family, which is his entire motivation, beyond surface level exposure.  Meanwhile many of the people Durand meets later feel like they don’t really have any good reason to trust him yet they often do explicitly.  The subplot involving (the real) Wyckes’ henchman never feels quite fully explored either.

These sub plots could have been fleshed out a bit further and could have helped the story feel more complete.  The core plot works regardless, though there are some parts that felt like they dragged a bit early on and around the three quarters mark.  The real fun, like all of Daniel Suarez’s books, comes from the “what if” world that is presented.  Daemon and Freedom looked at the web and AI, Kill Decision was AI and drones, Change Agent looks at genetics and technology overexposure.

If you enjoy the writing style of Daniel Suarez or similar authors such as Neal Stephenson, John Scalzi, or William Gibson, you’ll probably enjoy Change Agent.

Back in my Day…

I’ve been using computers and technology for a long time.  The vast majority of my life in fact.  I have early memories of playing games on our Commodore 64, back when I was like 4 or 5 years old.  Eventually we had a DOS based system, though it didn’t have a hard drive in it.  In fact it needed a floppy disk to even boot up.

I came across some of my old disk boxes while visiting my parent’s house not too long ago.  I have no idea if these disks are even any good anymore, I may have a 5.25 disk drive floating around somewhere but I’m not sure it’s even compatible with any modern computer, at least not without some sort of cable conversion system.  Not to mention most of this stuff can be found on abandon ware websites online, that gray area of legality for software that’s no longer particularly useful or in demand.  Each of these disks contains around 500kb of data.  Half of a megabyte.  This image of these floppy disks, likely couldn’t fit on one of these floppy disks.

There’s a lot of fun classics in here.  I always really loved the games where you could create your own content.  Earl Weaver baseball, let you make your own teams, I made many based on other video games, though the Mega Man Team with it’s perfect stats (because robots) always ended up winning.  Ancient Art of War was an early RTS sort of game where you could create custom campaigns.  The old Gold Box Dragon Lance games were classic RPG titles where you would make custom parties and characters.  My friends and I figured out a bug where you could duplicate characters and weapons so we would create unstoppable characters all equipped with the best gear.

Another favorite was NewsMaster.  A simple program designed for making newsletters and fliers.  I found some old files from Newsmaster on my portable drive recently.  Here’s a fun chain, my 500GB portable drive is full of files I’ve been sorting out over time, many of these files came from old archive DVDs, which in turn are a collection of old archival CD-rs.  one of these CDs had a collection of files pulled from sole 3.5 diskettes, one of which was an archive of files originally on these 5.25 disks.

And now, bring it around, I found an abandon ware copy of Newsmaster to open the files with.

These files are an eclectic collection of fake news papers, random graphics, journal entries (which were no longer than Tweets) and very short stories from my childhood.  I’m sure that writing a paragraph back then felt like a monumental achievement, these days I feel like most blog posts contain more typed words than the entirety of my first ten years of life.

One particularly fun set of files was the NEWS News/Times.  This was a video game news letter written by myself and my best friend at the time.  Each “issue” had top ten lists and codes and brief notes on some game we’d been playing.  The reality is it was probably a crib notes version of the most recent Nintendo Power.  It’s only really notable because I often consider it the precursor to my modern blogging.  The above issue was created in 1991.  roughly seven years later, I’d create The Chaos Xone on Geocities, which would evolve into Lameazoid.com.  It’s kind of funny how my interests really have not changed a whole ton in the past 30 years.

Fixing my New 3DS …

So, the title there says New 3DS, which is is the “New 3DS” but it’s also New, in the sense that I bought it at the start of January.  It’s like 3 or 4 weeks old.  Then I broke it on accident.  It’s taken me years to get around to saving the money to buy one of these, not so much because I don’t have the money, but because I wanted to know it was at a point in it’s console life cycle that it was worth buying.  If it has been say, $50 cheaper, I’d have bought one years ago.  Also, unlike all of my previous Nintendo based hand helds, I wanted to wait to get the “improved version”.  I have a Game Boy, a Game Boy Advanced, a Nintendo DS, but they were all the first gen models.  I didn’t care for the 3D gimmick, so I passed on the 3DS.  Well now they have the horribly branded “New 3DS” and in my case, it’s the XL version, because I like having a big honking screen.

I’ve played it pretty regularly since buying it.  This is kind of the problem with my argument of “waiting for the right moment”.  My track record with Nintendo hand helds has always been amazing.  I measure this by one real metric, how many games do I finish on them?  I’m pretty sure I’ve completed every game I own for Nintendo’s handhelds since the Game Boy, and I own a lot.  Contrast this with say, Steam, where I’ve beaten like 20% of my 1000+ game Steam Library.

On a side note story, that’s related here, the water out of the faucet at work is awful, there’s crap floating in it and it’s scummy and possibly not healthy (probably is for legal reasons though).  So in order to make my coffee each morning, I carry a metal water bottle with water from home, usually in my lunch box.

Anyway, a week or so ago, I put my 3DS in my bag I carry and went off to work.  On this particular day, I didn’t bring a lunch, so I just had my laptop bag and no lunch box.  I stuck my water bottle in the side pocket of my bag and drove off to work.  Upon arrival I found the bottom of my bag was wet and the top of the water bottle was not fully attached.  Incidentally, the water bottle was also empty.

I headed into the office to assess the damage here.  Headphones, some notes, the bottom of the bag and my 3DS were all wet.  Bummer.  I took everything that was damp and strung it around to dry out for a while and went about my day.  Later, as things were drying I tested the 3DS.  This was my fatal mistake, it turned on, but the cursor on the bottom of the screen was flipping constantly (due to water inside making an electrical contact) and when I tried to turn if off I got a cryptic message flashed up about “There is some kind of problem something something) before it turned off, for good.

I set it out to dry some more, hoping this would correct the issue.  It still didn’t turn on some time later, so I set about opening it up.  I’d already removed the back cover and battery, now it was time to crack open the case.  It turns out it’s a pretty simple task thankfully, there’s maybe 8 small screws holding the case shut. You’ll also need to remove any SD cards.

Side not to anyone trying to do this, there are two small ribbon cables along the top edge of the system that come off with the back cover.  These operate the shoulder buttons.  To actually remove the cover, you must lift the top edge gently a bit, so they the whole thing can slide down and over the headphone jack, then the cover rolls/flips towards the upper side of the 3DS, minding these cables along the way.  The cables can be removed and may even pop off, this is ok so long as they don’t get damaged.  They ultimately need to be removed anyway, using some small pliers or a screw driver, to remove the black square from the main part of the 3DS.  These connectors are designed to be removed and reinserted easily.

After removing the cover, I had a nice view of the inside of the 3DS.

On the plus side, once inside, things were not as bad as they might seem.  The way the handheld sits in my bag, only one end of it got any sort of water (the left end shown above).  On the minus side, there was a lot of water, like I had to get paper towels and dry it up all over inside, including removing the face buttons.  To get to the underside water, I had to also remove that board on the left side, it has 5 screws, 4 in the central area, and one near the bottom ribbon cable.

Once everything was dried, I reassemble it and tried to turn it on again, with no success.  So I opened it up again for a deeper inspection.  This was when I found what I should have noticed originally, the painfully obvious blown out components on the board.

Nothing else inside seemed to be damaged at all and all of the moisture was on this end of the console.  So I figured I’d look into replacing this power board (the batter connects to this board).  I figure spending $50 on a new board would be better than $200 on a new 3DS.  Fortunately, these boards can be found all over online, and even more fortunately, it only cost me around $15 to order one, a real deal non knockoff one too.

A week later, I had the new power board, time to swap.  It’s pretty straight forward as well, I removed all of the screws first.  Next there are two small ribbon cables that attach to the board, the one broad orange one and another smaller one at the top for the secondary nubbin that is on the New 3DS models.  The large orange one was simple, since the new board came with a new ribbon cable, potentially damaging the old one wasn’t a problem.  I was still careful to slide it out of the end on the main part of the 3DS.  After removing it, the gray bar is able to flip up so the new cable can be slid in and aligned, then the gray bar snaps back down to secure it.

The second smaller cable was a bit trickier, but due to it’s small size, I was able to flip the bar piece holding it down up using a small screw driver.  Once these cables were swapped, the new board gets screwed in.  Carefully reattach the two cables on the case cover for the ribbon cables, there is a natural orientation to these when the cover is attached, though it’s slightly twisted around with it removed.  Once everything was reassembled and screwed down, I reinserted the battery for the moment of truth of powering the system back on.

Which was successful!

I’m not saying this will fix any broken 3DS, there’s all sorts of other issues that could come up, especially with water.  This is more just how I was troubleshooting and fixed mine.

 

 

Dead Hard Drive and My Process

So, I have been pretty sure for a while that the main Hard Drive in my desktop was going out.  It’s probably the oldest drive I own and occasionally it got feisty during reboots.  For a variety of reasons, I kept putting off replacing it.

… and putting it off…. and putting it off…

Then I went down to my office one day, the wife and kids were heading out for the weekend, I had grand plans to waste away my weekend on Overwatch and Battlefield 1.  Those plans came to an abrupt halt because I was greeted with a GRUB error.  My first assumption was that, as has happened before, Windows 10 did an update and screwed things up again.  A good while back I encountered  similar problem and after some troubleshooting I found that my Linux partition had been wiped out.  I reinstalled Ubuntu there and everything booted just fine.  Windows 10 had just done and update and after some searching online there were sporadic reports of similar issues.  After some troubleshooting trying to use a Windows disk to do a Master Boot Record fix and then trying to reinstall Ubuntu again, it became apparent that instead, the drive had failed.

This complicates things a bit.  I pulled out my SpinRite disc and threw it in the drive, hoping it would find and correct the error.  It instead threw out an error partway through the scan.  It’s an older disc, I’m honestly not sure if it’s compatible with the newer set up.  Instead I tried a copy of Norton Ghost to clone the drive to a spare 1TB drive I had in the cabinet.  It looked promising as well, though it also listed that it would take nearly 50 hours to finish.

I guess that meant no Battlefield but Overwatch runs fine on the laptop so a weekend of Overwatch and Netflix it would be.

Unfortunately, the clone crapped out as well after about an hour.

The final solution was to simply reinstall Windows 10, on a new drive.  I never use Ubuntu on the desktop so I opted not to bother reinstalling it.  I downloaded the official Windows 10 recover ISO and ran through the install.  During the install I skipped over entering the CD Key, Windows 10 is supposed to activate itself based on account credentials and hardware on the same machine, time to test that concept out.  The install finishes up and Windows 10 loads up just fine.  It’s even activated as promised in all of the Windows 10 feature lists.

The next task involves getting things back up and running order.

In recent years I’ve pushed a lot of my data off onto either my NAS or into Cloud accessible storage.  This makes this whole task much much easier.  I keep very little irrecoverable data on any one machine these days.  There are a few folders that I will need to recover from the old drive, but nothing super important, and I should be able to simply hook the drive up using a USB drive bay and do normal recovery operations to get to my data.

More interesting through, I ended up saving a ton of time and bandwidth with the games I had on the machine.  At one point I had nearly all of my 1000 Steam Games downloaded and installed, all of my GOG galaxy games and all of my Origin games installed.  These games are spread across several drives of varying size in this machine.  Once I reinstalled Steam, I set up Steam to use each of these drives and it simply detected all of the downloaded games, automatically.  The same happened with GOG Galaxy.  I didn’t see a way to make Origin to reattach to it’s old data so I just dumped that folder and redownloaded things as needed.

Honestly, ultimately this whole debacle has been a bit of a godsend.  I now have a fresh clean Windows 10 install, not one from my Windows 7 upgraded to Windows 10.  I also have a slightly nicer and faster drive as the main drive, which helps performance a bit.  It also gave me an excuse to purge out a lot of cruft I wasn’t really using.  I’ve shifted a lot of my computer use to my laptop, the desktop is primarily used for gaming, so it doesn’t really need anything else installed that doesn’t serve that purpose.