<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Jordan Zaerr's Blog]]></title>
  <link href="http://JordanZaerr.github.com/atom.xml" rel="self"/>
  <link href="http://JordanZaerr.github.com/"/>
  <updated>2015-01-16T09:01:02-07:00</updated>
  <id>http://JordanZaerr.github.com/</id>
  <author>
    <name><![CDATA[Jordan Zaerr]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Polymer]]></title>
    <link href="http://JordanZaerr.github.com/blog/2014/09/12/polymer/"/>
    <updated>2014-09-12T15:50:00-06:00</updated>
    <id>http://JordanZaerr.github.com/blog/2014/09/12/polymer</id>
    <content type="html"><![CDATA[<iframe width="560" height="315" src="http://JordanZaerr.github.com//www.youtube.com/embed/aFWNw9h5Qoc" frameborder="0" allowfullscreen></iframe>


<p>There is a live demo of this application pushed to Heroku <a href="http://trainroutepolymer.herokuapp.com/">here</a></p>

<p>The code for this post/video can be grabbed from its <a href="https://github.com/JordanZaerr/TrainRoutesPolymer">git repository</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Dart]]></title>
    <link href="http://JordanZaerr.github.com/blog/2014/04/25/dart/"/>
    <updated>2014-04-25T15:37:00-06:00</updated>
    <id>http://JordanZaerr.github.com/blog/2014/04/25/dart</id>
    <content type="html"><![CDATA[<iframe width="560" height="315" src="http://JordanZaerr.github.com//www.youtube.com/embed/Z2Y3p4CWop4" frameborder="0" allowfullscreen></iframe>


<p>There is a live demo of this application pushed to Heroku <a href="http://websocketschatdemo.herokuapp.com/web/">here</a>
If you visit that link in multiple tabs you should be able to hold a conversation.</p>

<p>The code for this post/video can be grabbed from its <a href="https://github.com/JordanZaerr/WebSocketsChatDemo">git repository</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[SignalR]]></title>
    <link href="http://JordanZaerr.github.com/blog/2014/02/18/signalr/"/>
    <updated>2014-02-18T15:29:00-07:00</updated>
    <id>http://JordanZaerr.github.com/blog/2014/02/18/signalr</id>
    <content type="html"><![CDATA[<iframe width="560" height="315" src="http://JordanZaerr.github.com//www.youtube.com/embed/Hv6ZAWFOfRE" frameborder="0" allowfullscreen></iframe>


<p>I&#8217;ll be the first to admit I&#8217;m not the best presenter out there and this was the first one I&#8217;ve given in awhile but hopefully it will prove useful.</p>

<p>The code for this post/video can be grabbed from its <a href="https://github.com/JordanZaerr/ChatRoom">git repository</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Fixing a Kindle Fire Stuck in Bootloop]]></title>
    <link href="http://JordanZaerr.github.com/blog/2013/04/24/resettingkindlefire/"/>
    <updated>2013-04-24T20:13:00-06:00</updated>
    <id>http://JordanZaerr.github.com/blog/2013/04/24/resettingkindlefire</id>
    <content type="html"><![CDATA[<p>Basically boot looping is when you see the &#8220;Kindle Fire&#8221; logo over and over again when
you power on the device and it doesn&#8217;t do anything else.</p>

<p>I have no idea what happens to the Kindle Fire to get it into this state but my sister
managed to do it and this is how I fixed it. This will replace the bootloader on the device
and reset it to factory settings. Everything that you have stored on the device will be gone
and you will have to reconfigure the device. Basically as if you had just received your kindle for
the first time. Once you enter your account information it will sync with your Amazon account and you
can redownload anything that you had in your cloud storage and your books will sync with the device.
So not everything is lost but it is an inconvenience.</p>

<p>The nice part about this approach is if something like this happens again you should be able to fix
it on the device without having to attach it to a computer.</p>

<p>This is just a stock first generation Kindle Fire and the software mentioned in this post
only works on the first generation and will cause problems if used on other generations.</p>

<p>The first thing you are going to need is the Kindle Fire Utility which can be found here:
<a href="http://forum.xda-developers.com/showthread.php?t=2192818">Kindle Fire Utility</a></p>

<p>My screenshots are using version 0.9.6 and the link I provided at the time of posting
is for version 0.9.9 but the menu choices are basically the same.
The older thread with version 0.9.6 is here: <a href="http://forum.xda-developers.com/showthread.php?t=1399889">Kindle Fire Utility unmanged thread</a></p>

<p>Install the drivers for the kindle by running the drivers.bat file that is found in the
Kindle Fire Utility download and plug in the kindle fire into your computer.</p>

<p>Once your device is recognized by your computer start the Kindle Fire Utility by running the run.bat
file and you should see the following</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/KFUHome.png"></p>

<p>If your boot status isn&#8217;t 4000 that fine we are about to change it into fastboot(4002) anyway to
install some additional software. You do have to have an ADB Status of &#8220;Online&#8221; though.</p>

<p>Hit 1 and press enter to choose the Bootmode Menu and you should be looking at</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/KFUBoot.png"></p>

<p>Hit 2 and enter and your device should reboot in a few seconds and stay on the &#8220;Kindle Fire&#8221; logo.</p>

<p>You can keep hitting 0 and enter to recheck the ADB/Bootstatus of the device and once it is rebooted you
should see this with the Boot Status of 4002. The boot status is remembered on the device and won&#8217;t allow you
to boot normally until you change this setting back to Normal(4000). No amount of rebooting the device will fix this
and is a common problem with people.</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/KFUFastBoot.png"></p>

<p>Don&#8217;t press any number and just hit enter to return to the home screen</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/KFUHome.png"></p>

<p>From this main menu hit 3 and enter to install TWRP which is a recovery software that will need later
More information on what it is/does can be found here <a href="http://www.teamw.in/project/twrp2">TeamWin</a></p>

<p>After that finishes installing get back to the main menu again and hit 5 and enter to install the
FireFireFire bootloader.</p>

<p>If those two things installed successfully you can go back into the Bootmode Menu and change it back
to Normal(4000) at this point. Follow the same steps we did above to change it into FastBoot(4002).</p>

<p>You can disconnect your device from the computer and reboot it.
The first screen that you should see when it reboots is this one</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/FireFireFireMain.jpg"></p>

<p>My images are a little fuzzy but the bottom of the screen says &#8220;Press power button for boot menu&#8221;
If you tap the power button (possibly a couple times if it doesn&#8217;t recognize it right away)
You should see it turn into the menu below.</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/FireFireFireMenu.jpg"></p>

<p>Which says:<br/>
Normal Boot<br/>
Recovery<br/>
Reset Boot Mode</p>

<p>Keep tapping the power button until it selects the Recovery option as in the picture. Once it is selected
stop and in a few seconds it will start booting up TWRP which we installed earlier. It will say &#8220;Booting&#8230;&#8221;
at the bottom of the screen for a few seconds and then should show this image for a second or so</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/TeamWinLogo.jpg"></p>

<p>and then it will slide out of the way showing you the TWRP Menu.</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/TWRPMenu.jpg"></p>

<p>Press on the &#8220;Wipe&#8221; button and you will see this screen.</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/KFWipe.jpg"></p>

<p>Press on &#8220;Factory Reset&#8221; button and this screen will show.</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/TWRPReset.jpg"></p>

<p>Just swipe to reset the device to Factory Defaults.</p>

<p>Then click on the House shaped icon in the top right to return to the main menu.
Click on the &#8220;Reboot&#8221; button</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/TWRPReboot.jpg"></p>

<p>Click on &#8220;System&#8221; and the device will reboot and you will see this screen again.</p>

<p><img src="http://JordanZaerr.github.com/images/KindleFire/FireFireFireMenu.jpg"></p>

<p>Hit the power button a few times and choose &#8220;Normal Boot&#8221; instead of &#8220;Recovery&#8221; as we did before
and after a bit of time you should be presented with the screens for setting up your kindle.</p>

<p>That&#8217;s it and if it ever happens again the software to fix the problem is already on the device
and you can reset it if happens again. Depending on exactly what happened to your Kindle Fire you
be able to get away with just clearing the cache but the factory reset should pretty much
always do the trick even if it is annoying to have to reconfigure the device and pull your apps
back down from the cloud.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Service Watcher]]></title>
    <link href="http://JordanZaerr.github.com/blog/2012/11/16/servicewatcher/"/>
    <updated>2012-11-16T13:40:00-07:00</updated>
    <id>http://JordanZaerr.github.com/blog/2012/11/16/servicewatcher</id>
    <content type="html"><![CDATA[<!--Yes I know this is bad...-->


<p><img src="http://JordanZaerr.github.com/images/ServiceWatcher/ServiceWatcher.jpg" style="float: left; margin-right: 15px;"></p>

<p>You can grab the code from here:
<a href="https://github.com/JordanZaerr/ServiceWatcher">Service Watcher</a></p>

<p>This is a simple application that allows you to monitor the status of services on any server that you have permissions to.</p>

<p>You can additionally start, stop, and kill processes for services by selecting the one you want and clicking the corresponding button.</p>

<div style="clear:both; padding-top:25px;">
The config.xml file that generated the picture above looks like this.
Make sure you edit this file before you run the solution.
The server&#8217;s name attribute is what shows up in the UI and has to either be the name of the machine or 
the IP address where the services are running.
<div><script src='https://gist.github.com/4090873.js?file='></script>
<noscript><pre><code></code></pre></noscript></div>

</div>


<p>You can quickly find the service short name by looking it up in the task manager on the Services tab.</p>

<p><img src="http://JordanZaerr.github.com/images/ServiceWatcher/TaskManager.jpg"></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[WMA repair using Yeti]]></title>
    <link href="http://JordanZaerr.github.com/blog/2012/10/12/wma-repair-using-yeti/"/>
    <updated>2012-10-12T13:11:00-06:00</updated>
    <id>http://JordanZaerr.github.com/blog/2012/10/12/wma-repair-using-yeti</id>
    <content type="html"><![CDATA[<p>Figured I would put this up here, mostly for my own reference for some of the links down below.
Yeti can be grabbed from its <a href="https://github.com/mtscout6/yeti">git repository</a>.</p>

<div><script src='https://gist.github.com/3881245.js?file='></script>
<noscript><pre><code></code></pre></noscript></div>


<p>As you can see this is a simple one liner. It takes in the filename and will repair it in place.
Making a copy of the file before it&#8217;s repaired might be a good idea. This method reconstructs the header information
on the WMA file so that it is in a valid state again.  This fixes issues like players not knowing the length of the file,
not being able to skip through the file, and more importantly not being able to convert the file to another format or
splicing/combining. You can alternatively pass a stream into the method instead of a file name. The second parameter should
almost always be false. It signifies if the filepath/stream being passed in is from a broadcast.</p>

<p>Some notable classes would be the FileProperties</p>

<div><script src='https://gist.github.com/3881775.js?file='></script>
<noscript><pre><code></code></pre></noscript></div>


<p>and DataProperties</p>

<div><script src='https://gist.github.com/3881787.js?file='></script>
<noscript><pre><code></code></pre></noscript></div>


<p>These are the classes that read and write the header information for the file.
The header/section guid&#8217;s from the ASF spec are in Yeti for the other areas
but the classes that would read and write those values haven&#8217;t been created.</p>

<p>If you want to know what those guids are for and what data they point to that information can be found in the ASF specification document found
<a href="http://www.microsoft.com/en-us/download/details.aspx?id=14995">here</a>.</p>

<p>Another tool that is incredibly helpful for figuring out what is wrong with your file is the &#8216;Windows Media ASF Viewer&#8217;.
It can tell you any format errors that you have with the file and the structure of the data in your file. The download link
can be found <a href="http://www.microsoft.com/en-us/download/details.aspx?id=12826">here</a>.</p>

<p>I have some running examples of this here: <a href="https://github.com/JordanZaerr/Yeti-Examples">Yeti-Examples</a>.
I will mention that the broken.wma file that I used is horrendous audio quality since I recorded it
with earbuds held up to my laptop&#8217;s microphone. It is just 40 seconds of the mp3 that is also in the examples.
The music is from djabacus who is a friend of mine and some of his music can be found <a href="http://www.djabacus.net">here on the audio tab</a> for free.</p>
]]></content>
  </entry>
  
</feed>
