<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codethink &#187; random</title>
	<atom:link href="https://codethink.no-ip.org/tags/random/feed" rel="self" type="application/rss+xml" />
	<link>https://codethink.no-ip.org</link>
	<description>A blog about coding, life, and other arbitrary topics</description>
	<lastBuildDate>Sun, 15 Mar 2026 21:30:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.29</generator>
	<item>
		<title>Introducing Webcomix</title>
		<link>https://codethink.no-ip.org/archives/511</link>
		<comments>https://codethink.no-ip.org/archives/511#comments</comments>
		<pubDate>Sat, 19 Mar 2011 07:15:12 +0000</pubDate>
		<dc:creator><![CDATA[aroth]]></dc:creator>
				<category><![CDATA[banter]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://codethink.no-ip.org/wordpress/?p=511</guid>
		<description><![CDATA[I wanted to take a brief moment to invite anyone who stumbles across this post to beta-test my latest personal project; Webcomix. Webcomix is a simple web-comic aggregation service that allows you to read a number of different comics on &#8230; <a href="https://codethink.no-ip.org/archives/511">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I wanted to take a brief moment to invite anyone who stumbles across this post to beta-test my latest personal project; <a href="http://webcomix.no-ip.org" target="_blank">Webcomix</a>.  Webcomix is a simple web-comic aggregation service that allows you to read a number of different comics on a single page.  Here is a screenshot of it in action:</p>
<p><a href="http://codethink.no-ip.org/wordpress/wp-content/uploads/2011/03/webcomix.png" rel="lightbox[511]"><img src="http://codethink.no-ip.org/wordpress/wp-content/uploads/2011/03/webcomix-1200x681.png" alt="Webcomix screenshot" title="Webcomix screenshot" width="640" height="363" class="aligncenter size-large wp-image-512" /></a></p>
<p>Each comic in Webcomix is periodically checked for updates, so if like me you keep tabs on several different web-comics that all update at different intervals then Webcomix will save you from having to remember to refresh half a dozen different websites at various times just to keep up to date.  Simply visit your Webcomix dashboard and you&#8217;re set!</p>
<p>Underneath the covers there&#8217;s a fair bit that I&#8217;m proud of with this app.  First off the entire system is designed to be as lightweight and efficient (in terms of server compute-time and bandwidth) as reasonably possible.  Virtually all of the actual work is handled by the client-side JavaScript.  The handful of tasks that must be performed server-side are optimized with the help of a custom caching layer which ensures that any given computation (or fetch of an external resource) only needs to be performed once.  There is also an additional caching layer in the client used to prevent it from making any given request to the server more than once per session.  </p>
<p>The server itself is client-agnostic and provides a simple JSON-based API, meaning that while the initial incarnation of Webcomix is in the form of a web-app it should be just as easy to package the same functionality in a mobile, desktop, or other flavor of application.  But that&#8217;s a project for another day.</p>
<p>Anyhow, please note that Webcomix should be considered to be beta software at the moment.  So if you find any bugs or have any suggestions for new features or improved functionality then please don&#8217;t hesitate to say so in the comments section.  </p>
<p>Also, the list of comics currently available in Webcomix is not set in stone and is only based upon my personal preferences at the moment.  Webcomix is designed in a way that makes adding additional comics a trivial task, so if your favorite comic is currently not in the list then I encourage you to post a request in the comments section so that I can add it.  </p>
<p>Lastly, if anyone has any good ideas for how to extend the comic selection UI to handle a large number of comics that they&#8217;d like to share, then please do.  The current interface with its basic rows of checkboxes is obviously not sufficient for handling hundreds (or even dozens) of comics.  It needs to be replaced with something better (or at least, collapsible) soon.</p>
]]></content:encoded>
			<wfw:commentRss>https://codethink.no-ip.org/archives/511/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reunion</title>
		<link>https://codethink.no-ip.org/archives/416</link>
		<comments>https://codethink.no-ip.org/archives/416#comments</comments>
		<pubDate>Mon, 28 Feb 2011 13:24:30 +0000</pubDate>
		<dc:creator><![CDATA[aroth]]></dc:creator>
				<category><![CDATA[banter]]></category>
		<category><![CDATA[fiction]]></category>
		<category><![CDATA[writing]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://codethink.no-ip.org/wordpress/?p=416</guid>
		<description><![CDATA[And now for something completely different; some light fiction: Slowly and with much deliberation he approached, taking care to avoid her eyes and the fierce and beautiful and terrifying intensity that he knew must still burn there even after so &#8230; <a href="https://codethink.no-ip.org/archives/416">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>And now for something completely different; some light fiction:</p>
<p>Slowly and with much deliberation he approached, taking care to avoid her eyes and the fierce and beautiful and terrifying intensity that he knew must still burn there even after so many years.  She possessed that kind of penetrating gaze which can pierce right through you and with a glance expose you to the very core, and if he was sure of anything it was that time had done nothing to bolster his ability to withstand such a thing, that it must be avoided at all costs.  </p>
<p>But also he remembered, with more than a touch of fondness, those long-lost gossamer days where she would dare him to meet her eyes with his and wait patiently as he tried, awkwardly and unsuccessfully, to rise to the task and accept that which was being freely offered.  With such a staggering clarity did he remember those days of long ago that it was as if he could reach out and touch them if he so dared.  Always would he try to muster the courage and the confidence to hold her gaze, to shatter the sudden paralysis which seemed to take hold of him whenever he felt the presence of her eyes upon him, and to do whatever it was that she expected him to do (though he was never sure exactly what that might be).  And always would he fail.  And always would he long for his next opportunity to try and to fail.  </p>
<p>She was close now, and had undoubtedly noticed his approach.</p>
<p>&#8220;Hello&#8221;, he said meekly, giving an awkward kind of half-wave as he did so.</p>
<p>Instantly her gaze was on him, and involuntarily he found himself bracing as if in anticipation of a mighty blow, a force of old habits long dormant but not forgotten.  But this time there was no challenge, no request, no invitation framed within her bright eyes.  If anything she seemed uncomfortable and awkward, mildly unsettled by his presence.  And he noted this with a quiet disappointment, being careful to keep his outward demeanor unchanged.  What else could he have expected, he mused inwardly, after all that had passed between then and now.  What else could there be, after his failures of inaction, his failures of ineffectual action, and his failures of inappropriate action?  He held her gaze, and this time found no terror there, just quiet sorrow and a dreadful still emptiness where once something vital and important had lived.</p>
<p>&#8220;Hi, long time no see&#8221;, she replied with an air of cordiality, stopping just short of friendliness.</p>
<p>And, he reflected, now at last I see what it was that so scared me all those years ago, and understand why that fear will never return to my life.  In her eyes, in that beautiful and terrible gaze of hers, had lived the future.  A future that could be his had he dared to just reach out and touch it.  But also a future that branched out upon itself like some crazed fractal, expanding outwards through the realm of possibility and past the foreseeable horizon.  A future so immeasurably vast and so full of possibility that he could not countenance the idea of grasping for it, of trying to contain it all in his feeble palm.  </p>
<p>He had not understood that it&#8217;s not necessary or beneficial to hold the entire thing in your hand at once, that it&#8217;s entirely sufficient to grasp just a single thread and be willing to follow it to wherever it leads.  The unknown had scared him then, the idea of not being able to know or to completely control what the future might hold.  And he had worked hard to break himself of this childish fear, and he had done so, and in the process learned that only in the unknown can one chance upon the majestic or the sublime.  Only by exploring the intricacies of the pattern firsthand does one come to understand it and gain access to those unique shared experiences that are so priceless and rare.  </p>
<p>But that pattern from his past, that future branching out into infinite possibility that he remembered with such unshakeable clarity, was dead now.  Both of them had moved on and grown up, separated at most times by thousands of miles.  They had their own lives, their own places that they were accustomed to, their own independent notions of home.  Never again would he or could he see the same mystifying and terrifying realm of possibilities within her eyes, or be tested with a challenge or an open invitation to come plumb its depths.  All that existed there now was a simple pattern; mundane conversation, awkwardness begetting awkwardness, a few trivial branches here and there, each punctuated by a scheduled departure a few days hence.  He had missed his chance, would have no more opportunity to try again, to fail again.</p>
<p>Too late it was when he had finally recognized himself as the explorer that he was.  Too late to go back as he longed to do, and explore that myriad future the mere glance of which had so paralyzed him in his youth.  That door was closed to him forever now.  So he took solace in the same way that anyone who has ever touched upon something so precious and rare that it occurs once in a lifetime and then allowed it through sheer carelessness to slip through their fingers does.</p>
<p>&#8220;What did I know back then,&#8221; he asked himself quietly, as he slowly and somewhat dazedly wandered past the greeting area and on to the reception area where more acquaintances from years past remained.</p>
<p>The night passed uneventfully, and not another word passed between the two of them.  A few days later, he returned home.</p>
]]></content:encoded>
			<wfw:commentRss>https://codethink.no-ip.org/archives/416/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disaster!</title>
		<link>https://codethink.no-ip.org/archives/83</link>
		<comments>https://codethink.no-ip.org/archives/83#comments</comments>
		<pubDate>Thu, 27 Jan 2011 15:20:12 +0000</pubDate>
		<dc:creator><![CDATA[aroth]]></dc:creator>
				<category><![CDATA[banter]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://codethink.no-ip.org/wordpress/?p=83</guid>
		<description><![CDATA[So I just had a HDD die on me. Do I have a backup that I can restore from? Of course not; though before you chastise me too severely perhaps I should explain my system configuration. I run a custom-built &#8230; <a href="https://codethink.no-ip.org/archives/83">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>So I just had a HDD die on me.  Do I have a backup that I can restore from?  Of course not; though before you chastise me too severely perhaps I should explain my system configuration.  I run a custom-built PC with two RAID arrays for storage.  The first array is a RAID-0 array of two Western Digital Raptor (10,000 RPM) disks and is intended to be used only for things like OS and program installation.  The second array is a RAID-5 array using 4 Seagate (7200 RPM) disks, and is intended for storing pretty much everything else.  Now I&#8217;ve had disks in the RAID-5 array fail multiple times in the past, and it was no big deal because I could just RMA the disk and pop in a replacement drive and the array would rebuild itself and all would be well.  </p>
<p>The problem is that this time it wasn&#8217;t one of the RAID-5 disks that failed, it was one of the RAID-0 disks.  And although I had always recognized that volume as being vulnerable to spontaneous destruction in the event of a drive failure, the gravity of the thing when it actually happens far outweighs the mere recognition of it as a possibility.  Yes, I treated the contents of this volume as expendable.  But no, I wasn&#8217;t perfect about it in practice.  There were some non-expendable things that I allowed to linger on the RAID-0 volume, such as my Eclipse workspace and inside of it all 64 of my <a href="http://codethink.no-ip.org/wordpress/archives/71">Project Euler</a> solutions, and now that they&#8217;re suddenly gone it stings just a bit.  And even ignoring that, I&#8217;d rather not have to install and configure all of my software all over again.  Particularly since I was also in the middle of playing through Fallout: New Vegas on hardcore mode, and my save-games got wiped out with the program install.</p>
<p>So I did some investigation of my own into the failed drive, hoping that I might find some way to bring it back to life, at least for long enough to get my data off of it.  Standard home remedies such as tapping, dropping, and shaking the drive were all tried, along with the fabled freezer-trick, to no avail.  Eventually I decided to go out and get a Torx set so that I could remove the drive&#8217;s controller board, and I located the problem:</p>
<p><a href="http://codethink.no-ip.org/wordpress/wp-content/uploads/2011/01/smooth.jpg" rel="lightbox[83]"><img src="http://codethink.no-ip.org/wordpress/wp-content/uploads/2011/01/smooth.jpg" alt="Smooth Processor:  Destroyed" title="Smooth Processor:  Destroyed" width="717" height="528" class="aligncenter size-full wp-image-87" /></a> </p>
<p>Looks like the &#8220;SMOOTH&#8221; processor isn&#8217;t feeling too smooth anymore.  On the bright side, this does open up one possible avenue for resurrecting the drive.  If I can track down another model with an identical firmware version, it should be possible to swap their controller boards.  So if anyone has (or knows where to find) an old Western Digital Raptor, working or non (so long as the controller board is intact), that you&#8217;d be willing to part with, please let me know.  The exact details of my failed drive are:</p>
<p>Model:  WD1500ADFD-00NLR1<br />
Manufacture date:  05 June, 2006<br />
DCM:  HBCA2AB<br />
Firmware revision:  V7353 (can only be found by removing the controller board)</p>
<p>I know this is a long shot, but who knows.  The Internet is a very large place, after all.  In the mean-time, perhaps I&#8217;ll seek some estimates from professional data-recovery companies.  I&#8217;m sure their rates will be laughably unreasonable.</p>
<p>Sigh.  Time to rebuild.</p>
]]></content:encoded>
			<wfw:commentRss>https://codethink.no-ip.org/archives/83/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Math Geeks Only</title>
		<link>https://codethink.no-ip.org/archives/71</link>
		<comments>https://codethink.no-ip.org/archives/71#comments</comments>
		<pubDate>Wed, 26 Jan 2011 12:20:09 +0000</pubDate>
		<dc:creator><![CDATA[aroth]]></dc:creator>
				<category><![CDATA[banter]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=71</guid>
		<description><![CDATA[I wanted to take a brief moment to call some attention to Project Euler. Though I stumbled across it just recently, Project Euler has been around for nearly a decade now, and I find myself wishing that I had discovered &#8230; <a href="https://codethink.no-ip.org/archives/71">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I wanted to take a brief moment to call some attention to <a href="http://projecteuler.net/" target="_blank">Project Euler</a>.  Though I stumbled across it just recently, Project Euler has been around for nearly a decade now, and I find myself wishing that I had discovered it earlier.  Like back when I was still in college and had loads to time to waste on arbitrary diversions.  </p>
<p>But in any case, Project Euler is a set of mathematic-themed programming problems that anyone can attempt to solve.  There are just over 300 problems available at the moment, and the difficulty increases progressively as you move from problem to problem.  Solve enough of them, and you can be immortalized on the Project Euler leader-board (100 solutions are required to earn the first permanent ranking), if you care about that kind of thing.</p>
<p>Since finding Project Euler I&#8217;ve been compulsively solving problems almost non-stop.  They start out quite easy, though some of the later ones do require a thoughtful approach to solve effectively.  Particularly when you consider their &#8220;one-minute rule&#8221; in conjunction with the fact that there have been 5 to 6 iterations of Moore&#8217;s Law between now and when Project Euler was founded.  One minute of computation-time back then should equate to roughly just 2-3 seconds of compute-time on a modern CPU (or perhaps more like 8-12 seconds for a single-threaded solution given that the past few iterations of Moore&#8217;s Law have focused more on increasing thread-level parallelism than on performance-per-clock in single-threaded workloads), which makes the &#8220;one-minute rule&#8221; quite a bit more challenging.</p>
<p>If you feel up to the task and don&#8217;t mind the possibility of introducing a massive time-sink into your life, I encourage you to give Project Euler a go.  If you&#8217;re a coder with a head for numbers who likes to be challenged, I think you&#8217;ll find yourself enjoying it.  </p>
<p>If you do take a shot at it, my advice is to keep your solutions as modular as possible (don&#8217;t just stuff all your code into <em>main()</em>).  Many of the later problems build incrementally upon concepts introduced in previous problems, so if you always take the time to construct modular and well-defined functions (particularly in the areas of primality testing, factorization, and permutation computation) that can be reused in multiple solutions, you will be ahead of the curve.  </p>
]]></content:encoded>
			<wfw:commentRss>https://codethink.no-ip.org/archives/71/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction</title>
		<link>https://codethink.no-ip.org/archives/1</link>
		<comments>https://codethink.no-ip.org/archives/1#comments</comments>
		<pubDate>Sat, 22 Jan 2011 20:13:56 +0000</pubDate>
		<dc:creator><![CDATA[aroth]]></dc:creator>
				<category><![CDATA[banter]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=1</guid>
		<description><![CDATA[I suppose that&#8217;s how these things start, right; with an introduction?  Well my name is Adam Roth, and if you&#8217;re reading this then you have found your way to my blog.  While the primary focus will be on coding, software, &#8230; <a href="https://codethink.no-ip.org/archives/1">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I suppose that&#8217;s how these things start, right; with an introduction?  Well my name is Adam Roth, and if you&#8217;re reading this then you have found your way to my blog.  While the primary focus will be on coding, software, and other technical issues, expect to find occasional digressions onto other tangental or even wholly unrelated topics as well.</p>
<p>To give you some details about myself, I am a United States citizen by birth, and a permanent resident of Australia by choice.  I hold a Master&#8217;s degree in Computer Science, and have worked with a diverse array of technology companies ranging in size from the 5-person startup all the way up to 1000+-employee technology firms.  I intend this blog primarily as a place to explore (and perhaps more importantly, keep track of) interesting and challenging coding problems and their possible solutions.</p>
<p>Those who know me casually might describe me as a misanthrope, but they largely miss the point.  I hold no ill views towards humanity as a whole (except in cases where it is deserved, such as instances of mass stupidity, hysteria, or generalized group-think that result in tangible acts of inhumanity and/or neglect towards others).  I&#8217;m quite fond of it, in fact, and interested in doing what I can in my own small but unique way to help humanity progress further along (or with less hyperbole, to help those others that I am capable of helping).</p>
<p>What I don&#8217;t like, and what those aforementioned casual acquaintances so often mistake as a generalized disregard for humanity, is being around other people.  I just find it draining more often than not.  Always have, and probably always will.  Of course, there is the occasional rare exception to this rule; such as my wife and the small handful of people that I count as my true friends.</p>
<p>But I ramble on.  Suffice to say that this is my blog, and I hope that the content on it will prove to be of use to you.</p>
]]></content:encoded>
			<wfw:commentRss>https://codethink.no-ip.org/archives/1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
