<?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>David&#039;s Blog</title>
	<atom:link href="http://davidmccuskey.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://davidmccuskey.com</link>
	<description>A creative, technical engineer, skilled from A-Z</description>
	<lastBuildDate>Sat, 29 Apr 2017 00:30:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.17</generator>
	<item>
		<title>My VPN Service Showdown</title>
		<link>http://davidmccuskey.com/2017/04/my-vpn-service-showdown/</link>
					<comments>http://davidmccuskey.com/2017/04/my-vpn-service-showdown/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Sat, 29 Apr 2017 00:30:57 +0000</pubDate>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Home]]></category>
		<guid isPermaLink="false">http://davidmccuskey.com/?p=855</guid>

					<description><![CDATA[You need to determine what things are important to when when looking for a VPN Service. Features I wanted: reasonable P2P allowances support for pfSense speed, ideally 80-100% of my bandwidth capability streaming video, eg, Netflix or Amazon Video not blocked I am less concerned about: company location, ie, if the company is US-based logs, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>You need to determine what things are important to when when looking for a VPN Service.</p>
<p>Features I wanted:</p>
<ol>
<li>reasonable P2P allowances</li>
<li>support for pfSense</li>
<li>speed, ideally 80-100% of my bandwidth capability</li>
<li>streaming video, eg, Netflix or Amazon Video not blocked</li>
</ol>
<p>I am less concerned about:</p>
<ul>
<li>company location, ie, if the company is US-based</li>
<li>logs, since all services shy away from keeping logs</li>
</ul>
<p>I imagined that I may use some online-service (eg, Netflix) which wouldn&#8217;t work correctly, so I also setup another wifi network which bypasses all VPN connections.</p>
<h2>My Top Service</h2>
<h3><a href="http://mullvad.net">Mullvad</a></h3>
<p>I like Mullvad a lot. The pricing is very simple at $5/mo and there isn&#8217;t any long-term commitment necessary to get that pricing (ie, no need to pay for a full-year up front). I switched to a different server and was getting consistent 100-110 Mb/s download.</p>
<p>Signing up is dead simple. And the installation on pfSense seemed to be one of the easiest as well.</p>
<p>Mullvad also has port-forwarding capabilities. Unfortunately it didn&#8217;t help with my Plex issues.</p>
<h2>Tested Services</h2>
<h3><a href="https://www.privateinternetaccess.com">Private Internet Access</a></h3>
<p>I used a friend&#8217;s PIA account for this. Initially the speeds were great at around 110-120 Mbps, but after a few days they would drop to 5 Mbps and never recover.</p>
<h3><a href="http://expressvpn.com">ExpressVPN</a></h3>
<p>ExpressVPN was decent. Their server speeds were consistent but pretty slow. On average, I was getting only 1/2 of my regular bandwidth.</p>
<p>The look of the website is clean, but I found it difficult to find out how to actually install their desktop software.</p>
<h3><a href="http://nordvpn.com">NordVPN</a></h3>
<p>Separate server choices for P2P. Crazy number of US servers ! (but I don&#8217;t know where they are)</p>
<p>Downloaded software directly from their website. After launch it notified me that there were updates ! (Hmm, that&#8217;s bad ! The download should have <em>already</em> been the latest version.)</p>
<p>NordVPN had relatively higher speeds – definitely over 70-80 Mbps. However, it was hard to consistently test with testmy.net.</p>
<p>Their pfsense configuration was much more complex, including special DNS configurations which no one else had. My browsers would hang while surfing, etc. I seemed to be because the DNS queries took awhile to work – for example, on the command line I would <code>ping</code> a server. The first two responses would be <code>icmp errors</code>, then the ping would go through and would resolve the IP address.</p>
<h3>iVPN</h3>
<p>(to try)</p>
<h3>IPvanish</h3>
<p>This was the first VPN service I tried, however at the time I didn&#8217;t yet have my pfSense router. The service seemed good, so I&#8217;d like to try it again.</p>
<h3>Vypr</h3>
<p>(to try)</p>
<h2>References</h2>
<ul>
<li>https://thatoneprivacysite.net/simple-vpn-comparison-chart/</li>
<li>https://www.top10vpn.com/top10-lists/</li>
<li>http://www.top10bestvpn.com/</li>
<li>https://www.bestvpn.com/best-vpn-services/</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2017/04/my-vpn-service-showdown/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Auto Connect to VPN on Boot &#038; Login in MacOS Sierra</title>
		<link>http://davidmccuskey.com/2017/04/auto-connect-to-vpn-on-boot-login-in-mac-os-x-sierra/</link>
					<comments>http://davidmccuskey.com/2017/04/auto-connect-to-vpn-on-boot-login-in-mac-os-x-sierra/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Sun, 02 Apr 2017 05:10:10 +0000</pubDate>
				<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Geek]]></category>
		<guid isPermaLink="false">http://davidmccuskey.com/?p=839</guid>

					<description><![CDATA[I added VPN connectivity to my network and I wanted to make sure the connection to the remote VPN was always running. One way to do this is to use AppleScript to check the connection status. The problem I had was that the AppleScripts that I found no longer worked with MacOS Sierra. After some [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I added VPN connectivity to my network and I wanted to make sure the connection to the remote VPN was always running. One way to do this is to use AppleScript to check the connection status. The problem I had was that the AppleScripts that I found no longer worked with MacOS Sierra.</p>
<p>After some digging, I got it to work. Here&#8217;s my script:</p>
<pre><code>
on idle
  set myVPN to "VPN (dallas)" -- set name of VPN connection
  try
    set isConnected to do shell script "scutil --nc show \"" &amp; myVPN &amp; "\" | grep -c Connected"
  on error
    set isConnected to "0"
  end try
  if isConnected = "0" then
    do shell script "scutil --nc start \"" &amp; myVPN &amp; "\""
  end if
  return 15 -- how often to check, seconds
end idle
</code></pre>
<p><strong>Modifications</strong></p>
<p>Change the variable <code>myVPN</code> to the name of your network connection. Here mine is <code>VPN (dallas)</code>.</p>
<p>Also modify the <code>return</code> value if you want the time between checks to be longer or shorter. Here I&#8217;ve set mine to 15 seconds.</p>
<p><strong>References</strong></p>
<p>These are the some of the pages that I started with. The instructions for script generation and auto-boot still apply. So you can still reference them for those other tasks:</p>
<ul>
<li>http://osxdaily.com/2016/08/10/auto-connect-vpn-mac-boot-login/</li>
<li>https://www.maketecheasier.com/auto-connect-vpn-mac-startup/</li>
</ul>
<p>Some other tech references which helped:<br />
* https://www.cyberciti.biz/faq/mac-osx-applescript-run-shell-script/<br />
* <a href="https://books.google.com/books?id=t0snCgAAQBAJ&amp;pg=PA672&amp;lpg=PA672&amp;dq=applescript+let+idle&amp;source=bl&amp;ots=feTq73ZGcD&amp;sig=p1nbgb4hxOKfWd-lCvSUJyAi2A4&amp;hl=en&amp;sa=X&amp;ved=0ahUKEwjdpIqe-ITTAhWJeSYKHU7-C98Q6AEIGjAA#v=onepage&amp;q=applescript%20let%20idle&amp;f=false">&#8220;on idle&#8221; reference</a></p>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2017/04/auto-connect-to-vpn-on-boot-login-in-mac-os-x-sierra/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DMC Corona UI – Awesome widgets for Corona SDK</title>
		<link>http://davidmccuskey.com/2015/04/dmc-corona-ui-widgets-for-corona-sdk/</link>
					<comments>http://davidmccuskey.com/2015/04/dmc-corona-ui-widgets-for-corona-sdk/#comments</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Wed, 22 Apr 2015 03:47:27 +0000</pubDate>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://davidmccuskey.com/?p=815</guid>

					<description><![CDATA[I&#8217;m happy to announce the release of my new library DMC Corona UI – Widgets for Corona SDK. It&#8217;s been a couple of months in the works and now I feel it&#8217;s stable enough for others to use. I put together the following screencast to give some insight into what it can do. [vimeo 125632027] [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m happy to announce the release of my new library <strong>DMC Corona UI</strong> – <em>Widgets for Corona SDK</em>. It&#8217;s been a couple of months in the works and now I feel it&#8217;s stable enough for others to use. I put together the following screencast to give some insight into what it can do.</p>
<p>[vimeo 125632027]</p>
<p>The library is comprised of Widgets, Styles and Controls.</p>
<p>Many of the <strong>Widgets</strong>, like Text or TextField, wrap other OpenGL or platform-native objects to make them behave more consistently and without a doubt give them a lot more Awesome. Some of their important core functionality is based around concepts learned from Adobe Flex.<br />
The other items like the ScrollView and TableView are evolutions based on both code I&#8217;ve written in the past and ideas from the UIKit API from Apple iOS.<br />
<em>All of the components are style/theme-aware</em>.</p>
<p>The <strong>Styles</strong> represent a powerful way to manage style properties and can be linked together to form an inherited cascade of style goodness. There are a couple of ways in which they can be organized, and putting everything into a single location or into full themes is really easy.</p>
<p>The <strong>Controls</strong>, like Navigation, are totally new and again borrow a lot of lessons from iOS. This one alone saves me from writing a lot of navigation code for complex projects. There are more cool Controls still to build.</p>
<p>Even though some of the ideas are from iOS, I spent a lot of time thinking about WWCD (<em>What Would Corona Do</em>) as I think the Corona API is one of its many strong points. At times this required more coding to ensure this complex system was easy to use. I think the result is a good blend of the two worlds.</p>
<p>As &#8220;side projects&#8221; to this endeavor, I re-vamped my documentation site from an aging wiki server to a sleek, modern static-website (old is new again!) which has many benefits one of which is being blazingly fast. I also put a build system in place (snakemake) to help wrangle all of the updates to the modules in the DMC Libraries (now over 40+).</p>
<p>There&#8217;s more work to be done for sure, but I think we&#8217;re off to a really good start. <img src="https://s.w.org/images/core/emoji/13.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<ul>
<li><a href="http://docs.davidmccuskey.com">http://docs.davidmccuskey.com</a></li>
<li><a href="http://github.com/dmccuskey">http://github.com/dmccuskey</a></li>
</ul>
<p>Enjoy !</p>
<p>~ dmc</p>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2015/04/dmc-corona-ui-widgets-for-corona-sdk/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Should you get an Amazon Echo ?</title>
		<link>http://davidmccuskey.com/2015/01/should-you-get-amazon-echo/</link>
					<comments>http://davidmccuskey.com/2015/01/should-you-get-amazon-echo/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Sun, 11 Jan 2015 20:35:15 +0000</pubDate>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[amazon echo]]></category>
		<guid isPermaLink="false">http://davidmccuskey.com/?p=763</guid>

					<description><![CDATA[The Amazon Echo is a high-quality device in both its form and function. For my interests in the Echo, I thought that the special price of 99$ for Prime Members was a bargain. For others I think it&#8217;s going to have to do a lot more, especially to justify the intended regular price of 199$. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The Amazon Echo is a high-quality device in both its form and function. For my interests in the Echo, I thought that the special price of 99$ for Prime Members was a bargain. For others I think it&#8217;s going to have to do a lot more, especially to justify the intended regular price of 199$.</p>
<p>I&#8217;ve been using my Echo for over a week and I like having it around, but should <em>you</em> get one at 99$ ? Well, if what you&#8217;re looking for in the Amazon Echo is:</p>
<ul>
<li><strong>A personal assistant</strong><br />
Right now the Echo has limited capabilities which consist of a small set of actions for a handful of categories – music, lists, information, weather or time. If you like technology <em>and</em> during the day you make lots of <em>searches/queries</em> in at least one of those categories then I would consider it. Otherwise, the Echo&#8217;s novelty is likely to fade quickly.</p>
<p><em>Simply determine if any of your most-accessed mobile apps fit into the categories above. I find that I use Echo mostly for its music and news broadcasts and often ask help with weather, my shopping list, and timers. Similarly, I already have corresponding mobile apps which I use on a daily basis.</em></p>
</li>
<li>
<p><strong>Bluetooth speaker</strong><br />
The Echo works really well as a Bluetooth speaker and has no trouble filling a large room with good quality sound. Playing bass-heavy music, like hip-hop or dance music, on the highest volume didn&#8217;t produce any obvious distortion. But even at 99$, I think that purchasing the Echo as <em>just a speaker</em> is a hard sell considering the likelihood another one on Amazon could outperform Echo for half that price.</p>
<p>However, if the prospect of having the additional personal-assistant functionality is remotely interesting, then I&#8217;d consider it. What you&#8217;ll experience at least once when you use Echo, like when setting up your Bluetooth connection, is how easy it is to use technology <em>when your voice becomes the UI</em>.</p>
<p><em>I&#8217;ve never owned a Bluetooth speaker before, but now I use Echo to play audio from my iPhone or iPad when using apps like Pandora or Newsy. I prefer the enhanced sound quality, plus it&#8217;s cool that I can still control the volume with my voice.</em></p>
</li>
<li>
<p><strong>Tech street-cred</strong><br />
If you&#8217;re a technophile, a hard-core developer or someone that likes to play with cutting-edge technology then the Echo is for you. It&#8217;s already a very robust piece of technology which offers a glimpse of the future and will help you to re-imagine personal computing. However, to ensure a lasting relationship, refer to the guidelines I mentioned above in <em>Personal Assistant</em> as they still apply&#8230; at least until Amazon releases a dev kit.</p>
</li>
</ul>
<p>I can envision a day that this type of technology plays a huge part in personal computing, but there&#8217;s a long road ahead before we&#8217;re there. So if you&#8217;re still on the fence about the Echo then you should probably sit out for awhile and wait until the technology matures.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2015/01/should-you-get-amazon-echo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>New release of lua_objects for Lua OOP</title>
		<link>http://davidmccuskey.com/2014/12/new-release-of-lua_objects-for-lua-oop/</link>
					<comments>http://davidmccuskey.com/2014/12/new-release-of-lua_objects-for-lua-oop/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Thu, 25 Dec 2014 01:49:17 +0000</pubDate>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://davidmccuskey.com/?p=735</guid>

					<description><![CDATA[For those Lua OOP aficionados, I recently released a new version of lua_objects which, among other things, now includes support for: * class mixins * multiple-inheritance Check out lua_objects @ github for more info. These changes were inspired from continuing work on my Lua port of the WAMP Protocol library for Corona SDK. That project [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For those Lua OOP aficionados, I recently released a new version of <code>lua_objects</code> which, among other things, now includes support for:<br />
* class mixins<br />
* multiple-inheritance</p>
<p>Check out <a href="https://github.com/dmccuskey/lua-objects">lua_objects @ github</a> for more info.</p>
<p>These changes were inspired from continuing work on my Lua port of the <a href="http://WAMP.ws">WAMP Protocol</a> library for Corona SDK. That project contains a lot of Python code and it has reminded me how much I like the Python language. <img src="https://s.w.org/images/core/emoji/13.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Some particular things I re-discovered this time around were 1. method / class decorators and 2. multiple inheritance (including mixins).</p>
<p>That got me working on how to bring some of these aspects to Lua when doing OOP.</p>
<p>After the update, I was able to move the existing Event code (add/remove listener, etc) from the <code>lua_objects</code> core into its own module <code>lua_events_mix.lua</code>. Now that Event code can be easily re-used by other projects, either as a mixin or as a (monkey) patch.</p>
<p>Have fun !</p>
<h3>References</h3>
<ul>
<li>lua_objects: <a href="https://github.com/dmccuskey/lua-objects">https://github.com/dmccuskey/lua-objects</a></li>
<li>WAMP Protocol: <a href="http://wamp.ws/">http://wamp.ws/</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2014/12/new-release-of-lua_objects-for-lua-oop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>LightCharts – Lightweight charts for Flex</title>
		<link>http://davidmccuskey.com/2010/07/lightcharts-lightweight-charts-for-flex/</link>
					<comments>http://davidmccuskey.com/2010/07/lightcharts-lightweight-charts-for-flex/#comments</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Mon, 12 Jul 2010 16:47:58 +0000</pubDate>
				<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">http://davidmccuskey.com/?p=652</guid>

					<description><![CDATA[LightCharts A lightweight line-chart library for Flex. Background I created LightCharts for a project of mine that involves tracking many stock market symbols. Originally I was using the Adobe Flex Charting library, but found that performance suffered greatly given the number of charts I was using (around 60+), the amount of data displayed, and the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" style="margin-left: auto; margin-right: auto;" src="http://davidmccuskey.com/wp-content/uploads/2010/07/lightcharts-single-screenshot.png" alt="lightcharts-single-screenshot.png" width="440" height="135" border="0" /></p>
<h3>LightCharts</h3>
<p>A lightweight line-chart library for Flex.</p>
<h3>Background</h3>
<p>I created LightCharts for a project of mine that involves tracking many stock market symbols. Originally I was using the Adobe Flex Charting library, but found that performance suffered greatly given the number of charts I was using (around 60+), the amount of data displayed, and the constant real-time updates. Of course this isn&#8217;t necessarily due to poor coding on Adobe&#8217;s part, it&#8217;s just that their library contains an amazing amount of features to handle a variety of needs, consequently it&#8217;s very heavy. I didn&#8217;t need a lot of features, just a nimble way to display data.</p>
<p>I searched the Internet for other charting libraries which I could use and stumbled across a fantastic set of components created by Keith Peters called <a href="http://www.minimalcomps.com/">Minimal Comps</a>. Keith&#8217;s library is extremely lightweight and it would have been a good fit, but MinimalComps is geared towards the pure Flash environment and not Flex – a major issue being the disparity in the component lifecycle.</p>
<p>Nonetheless, I was inspired by his code so I decided to use it as a starting point, adding and changing what I needed along the way.</p>
<p><span id="more-652"></span></p>
<h3>Features</h3>
<p>The result is a charting library that has many new features and several new object classes, some for visual enhancements and others for displaying and interacting with data. For instance, the data series class gives the ability to display multiple lines on a graph. The Toolset architecture is useful for creating mini plug-ins which can annotate or interact with data, all without needing to change any of the charting base classes.</p>
<p>Also, the line-chart class can be subclassed to create new line-chart types which have different visual characteristics or behavior. Included are a couple of examples for charts which I used in my project – these include the MACD and Stochastic. <em>Note: These examples show how to make visual and behavioral changes to the base class, not how to calculate the values for the MACD or Stochastic charts. Those formulas can be easily found online.</em></p>
<h3>Screenshot</h3>
<p><img loading="lazy" style="display: block; margin-left: auto; margin-right: auto;" src="http://davidmccuskey.com/wp-content/uploads/2010/07/lightcharts-screenshot.png" alt="lightcharts-screenshot.png" width="440" height="371" border="0" /></p>
<p>In the screenshot above you can see many of the features:</p>
<ul>
<li>Three different charts (standard, MACD, and Stochastic), displaying different backgrounds including gradients and alphas, line colors, value ranges, etc.</li>
<li>On the first chart, the display of crosshairs and coordinate value on mouseover; all charts have this functionality.</li>
<li>On the first and second charts, a custom plug-in called <em>DotDisplayTool</em> which displays a dot over the last data point in the series. <em>DotDisplayTool</em> is an example of a non-interactive plug-in.</li>
<li>On the second and third charts, a custom plug-in called <em>LinearDrawTool</em> which allows you to draw on top of the data; it displays a line and the chart values which correspond to the beginning and ending points. <em>LinearDrawTool</em> is an example of an interactive plug-in.</li>
</ul>
<h3>Live Demo &amp; Source</h3>
<p>If you want to see the library in action, click on the following link: <a href="http://davidmccuskey.com/demos/lightcharts/" target="_lightcharts_demo" rel="noopener noreferrer"> LightCharts live demo</a>.</p>
<p>The source is covered under the MIT license and it&#8217;s currently available from the live demo &#8220;View Source&#8230;&#8221;.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2010/07/lightcharts-lightweight-charts-for-flex/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Generating Random Session IDs</title>
		<link>http://davidmccuskey.com/2009/09/generating-random-session-ids/</link>
					<comments>http://davidmccuskey.com/2009/09/generating-random-session-ids/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Sun, 13 Sep 2009 21:03:36 +0000</pubDate>
				<category><![CDATA[Code Sample]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.mccuskey.com/?p=578</guid>

					<description><![CDATA[For any online service you must login so you can gain access to your stuff. So that you only have to put in your password once, the website must maintain a special unique character sequence called a session key to know that you have already authenticated. There is a problem with these keys, however, if [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For any online service you must login so you can gain access to your stuff.  So that you only have to put in your password once, the website must maintain a special unique character sequence called a <em>session key</em> to know that you have already authenticated.</p>
<p>There is a problem with these keys, however, if they are not truly random. This is detailed in a paper I stumbled upon entitled <em>Brute-Force Exploitation of Web Application Session IDs</em> by David Endler. It covers ways in which these keys can be &#8220;hacked&#8221; because they are not unique, but rather follow some sequence which can be guessed. He lists some major websites which he was able to get access to information that should have been private.</p>
<p>The paper got me thinking about how to generate random session keys, so I created some quick Python scripts using Twisted which demonstrates my solution. (This was my first time using Twisted, so it&#8217;s very possible that there is a better way to structure the code).</p>
<h4>Solution</h4>
<p>The character buffer in the server is used to generate new keys.</p>
<p>To fill the buffer:</p>
<ol>
<li>Create a list of websites which themselves deliver random web pages (eg, wikipedia)</li>
<li>Select a website from random and ask for a random page</li>
<li>Grab the data within the HTML <em>body</em> tags and put that string in the character buffer</li>
<li>When the buffer needs more data, go back to 1.</li>
</ol>
<p>To generate X number of keys:</p>
<ol>
<li>Grab two random lengths of the character buffer. Use one to re-seed the random generator and the other as the basis for the new session key. Create the session key using MD5 and the key seed</li>
<li>Update() the current MD5 session key using a generated random character / string</li>
<li>Add that key to the buffer.</li>
<li>When the key buffer needs more keys, go back to Step 1. For every Y number of keys generated, go back to Step 0.</li>
</ol>
<h4>Notes</h4>
<p>We don&#8217;t use a new seed for each MD5 session key because the buffer will be emptied too quickly. Of course, the settings for the buffer size, etc could be tweaked.</p>
<h4>Performance</h4>
<p>Running the server code on my Mac Mini (2.16GHz Dual Core) and 5 clients on another machine, I was able to service ~8000 keys/sec (~750 million keys/day).</p>
<h4>Conclusion</h4>
<p>My experiment satisfied my curiosity and answered the questions from my own project.</p>
<p>There are, of course, many tweaks that can be made. Send me the code changes to your favorites and I&#8217;ll include them.</p>
<p>&#8220;Click to download the client server files.&#8221;:/downloads/code/HTTP-Session-Key.zip</p>
<h3>Resources</h3>
<ul>
<li><a href="http://www.cgisecurity.com/lib/SessionIDs.pdf">Brute-Force Exploitation of Web Application Session IDs</a> (PDF)</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2009/09/generating-random-session-ids/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>KryptoPhoto Photo Viewer is Released</title>
		<link>http://davidmccuskey.com/2009/08/kryptophoto-photo-viewer-is-released/</link>
					<comments>http://davidmccuskey.com/2009/08/kryptophoto-photo-viewer-is-released/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Tue, 11 Aug 2009 18:38:44 +0000</pubDate>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[KryptoPhoto release]]></category>
		<guid isPermaLink="false">http://www.mccuskey.com/?p=572</guid>

					<description><![CDATA[I have released my new photo viewer, so now I can once again show &#8220;my photography&#8221;:/photography/ on this site. It currently supports the API at SmugMug.com, but I have plans for compatibility with other photo-sharing sites. I built it using the Adobe Flex framework. You can &#8220;get more information about KryptoPhoto at MentalHijack.com.&#8221;:http://www.mentalhijack.com/software/kryptophoto/]]></description>
										<content:encoded><![CDATA[<p>I have released my new photo viewer, so now I can once again show &#8220;my photography&#8221;:/photography/ on this site. It currently supports the API at SmugMug.com, but I have plans for compatibility with other photo-sharing sites.</p>
<p>I built it using the Adobe Flex framework. You can &#8220;get more information about KryptoPhoto at MentalHijack.com.&#8221;:http://www.mentalhijack.com/software/kryptophoto/</p>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2009/08/kryptophoto-photo-viewer-is-released/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>My New Camera: Canon PowerShot SD890 IS</title>
		<link>http://davidmccuskey.com/2009/07/my-new-camera-canon-powershot-sd890-is/</link>
					<comments>http://davidmccuskey.com/2009/07/my-new-camera-canon-powershot-sd890-is/#respond</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Thu, 02 Jul 2009 20:43:30 +0000</pubDate>
				<category><![CDATA[Photography]]></category>
		<guid isPermaLink="false">http://www.davidmccuskey.com/?p=474</guid>

					<description><![CDATA[I just received my new Canon PowerShot SD890 IS! I purchased it for my up-and-coming Colorado trip to partake in a honest-to-gosh cattle drive (a la &#8220;City Slickers&#8221;:http://www.imdb.com/title/tt0101587/). I&#8217;ve always wanted a Point-and-Shoot in addition to my Canon Rebel XT DSLR because it&#8217;s not as convenient to carry around an SLR just to take random [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="http://davidmccuskey.com/wp-content/uploads/2009/07/canon-890is-hand.jpg" alt="The Canon PowerShot 890 IS in my hand" border="0" width="320" height="213" align="right" />I just received my new Canon PowerShot SD890 IS! I purchased it for my up-and-coming Colorado trip to partake in a honest-to-gosh cattle drive (a la &#8220;City Slickers&#8221;:http://www.imdb.com/title/tt0101587/).</p>
<p>I&#8217;ve always wanted a Point-and-Shoot in addition to my Canon Rebel XT DSLR because it&#8217;s not as convenient to carry around an SLR just to take random photos. However, I don&#8217;t buy things without justification, but I was able to convince myself that this trip was (finally) my reason to get one.</p>
<p>From the horse-riding lessons I have taken in preparation for the trip, I learned that horses can be devious like three year olds and some will try to annoy you when you&#8217;re not paying full attention. I imagined that this could be problematic while handling both the horse and a DSLR since I give the camera a lot of concentration when taking photos, basically opening myself up for horse trickery. My dream ends with me on the ground more times than I would enjoy with an expensive piece of equipment in my hands.<br />
A little Point-and-Shoot is cheaper and easier to replace, can be stowed anywhere and would be much more comfortable to fall on.</p>
<p>I like Canon because they make great equipment at a very reasonable price and they have been at the top of their game for awhile. I chose the PowerShot SD890 IS from the entire PowerShot family because of two features: the image stabilization as well as the more powerful 5x optical zoom. The image stabilization will be handy to minimize blurred photos because horses don&#8217;t usually stand still. The bigger zoom will help make up any distance between me and the subject since maneuvering a 1,000 pound horse is an inexact science.</p>
<p>I think the camera is going to be fine for the trip. The only drawback I see is that the ergonomics of the camera are too good for what I need! This model is sloped on the right side to follow the curve of a hand and offers no edge which could be used like a camera grip. This would be immensely helpful for one-handed shooting while holding reins in the other. It&#8217;s not as much of an issue for normal use because people generally take photos holding the camera with both hands.</p>
<p>I know that I&#8217;ll have more to say about the PowerShot SD890 IS when I return from my trip.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2009/07/my-new-camera-canon-powershot-sd890-is/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>When I own a MacBook Air, this leather bag will be its home</title>
		<link>http://davidmccuskey.com/2009/03/when-i-own-a-macbook-air-this-leather-bag-will-be-its-home/</link>
					<comments>http://davidmccuskey.com/2009/03/when-i-own-a-macbook-air-this-leather-bag-will-be-its-home/#comments</comments>
		
		<dc:creator><![CDATA[David Mc]]></dc:creator>
		<pubDate>Wed, 18 Mar 2009 05:51:57 +0000</pubDate>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[laptop bags]]></category>
		<category><![CDATA[MacBook Air]]></category>
		<guid isPermaLink="false">http://www.davidmccuskey.com/?p=402</guid>

					<description><![CDATA[Having the sexiest laptop in your possession, it&#8217;s only fitting that one get a equally uber-cool bag. And in general, there should be a law against putting a $2000 work of art in a $20 black laptop bag. After looking through hundreds of bags from around the world, I&#8217;ve settled on what I believe to [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" src="http://davidmccuskey.com/wp-content/uploads/2009/03/2802-aristamahogany.jpg" alt="2802_aristamahogany.jpg" border="0" width="50%" height="50%" align="right" />Having the sexiest laptop in your possession, it&#8217;s only fitting that one get a equally uber-cool bag. <em>And in general, there should be a law against putting a $2000 work of art in a $20 black laptop bag.</em> After looking through hundreds of bags from around the world, I&#8217;ve settled on what I believe to be the best mix of form, function, and beauty &#8211; &#8220;the Orbino Arista featuring handstained mahogany leather&#8221;:http://www.orbino.com/store/product_info.php?products_id=257 <em>(pictured at right)</em>.</p>
<p>In the resources below I have included links to many of the sites I looked through in the quest to find my ultimate MacBook Air laptop bag. They should give you a good starting point for finding the bag that you love most.</p>
<p><em>It should go without saying, but I will anyway &#8211; as with anything fashionable, women have a much larger selection of cool, stylish and funky MacBook Air cases than men.</em></p>
<p><em>Here are some typical, safe, laptop bag alternatives if fashion isn&#8217;t a concern:</em> &#8220;uggghh&#8221;:http://www.buy.com/prod/case-logic-15-4-slimline-laptop-case-nylon-black-case-logic-15-4/q/loc/16234/202778691.html, &#8220;&#8216;khaki pants and sneakers'&#8221;:http://www.bestbuy.com/site/olspage.jsp?type=product&amp;id=1218011398693, &#8220;death by extreme black-neoprene boredom&#8221;:http://www.officedepot.com/ddSKU.do?level=SK&amp;id=564380.</p>
<p>h3. Resources</p>
<p><em>[updated 2009.03.19]</em> &#8211; added Kenakai.com to the list</p>
<p>h4. &#8220;Orbino.com&#8221;:http://www.orbino.com/ &#8211; look no further than Orbino for stunning leather cases for iPods, laptops, handbags, etc.</p>
<ul>
<li>&#8220;Arista landing page&#8221;:http://www.orbino.com/store/index.php?cPath=30_128</li>
</ul>
<p>h4. &#8220;kolobags.com&#8221;:http://www.kolobags.com/home.php?cat=36 has an incredible selection of men&#8217;s laptop bags.</p>
<ul>
<li>&#8220;knomo by kolobag&#8221;:http://www.kolobags.com/product.php?productid=918 is my second favorite. It&#8217;s a very stylish choice, though not sized especially for the Air.</p>
</li>
<li>
<p>&#8220;knomo picture &#8211; tan&#8221;:http://www.kaboodle.com/reviews/knomo-bungo-oil-tan</p>
</li>
</ul>
<p>h4. &#8220;Waterfield Bags&#8221;:http://www.sfbags.com/ has a large selection of different styles, all look very high quality.</p>
<ul>
<li>&#8220;Waterfield HardCase&#8221;:http://www.sfbags.com/products/hardcase/hardcase.htm</p>
</li>
<li>
<p>&#8220;Waterfield HardCase review&#8221;:http://blogs.zdnet.com/Apple/?p=1381</p>
</li>
<li>
<p>&#8220;Waterfield Vertigo&#8221;:http://www.sfbags.com/products/vertigo/vertigo.htm</p>
</li>
<li>
<p>&#8220;Waterfield SleeveCase review&#8221;:http://blogs.zdnet.com/Apple/?p=1280</p>
</li>
</ul>
<p>h4. &#8220;Tom Bihn&#8221;:http://www.tombihn.com/page/001/CTGY/MACBOOKAIR has a small selection of bags for the Air, most are technically complex.</p>
<ul>
<li>&#8220;Ristretto Messenger is a fav&#8221;:http://www.tombihn.com/page/001/PROD/MACBOOKAIR/TB0223</li>
</ul>
<p>h4. &#8220;Built NY&#8221;:http://www.builtny.com/showPage.php?pageID=1518 has some fun cases fashioned from neoprene, if you&#8217;re into that sort of thing.</p>
<p>h4. &#8220;MacCase.com&#8221;:http://mac-case.com/MacCase13.html carries a whole bunch of stylish cases for the Air.</p>
<p>h4. &#8220;Mobile Edge&#8221;:http://www.mobileedge.com/ offers a huge selection of well made bags, Unfortunately the ones for men are more on the safe side of fashion, though the women&#8217;s cases are cute.</p>
<ul>
<li>&#8220;Mobile Edge men&#8217;s laptop bags&#8221;:http://www.mobileedge.com/mens-laptop-bags</p>
</li>
<li>
<p>&#8220;Mobile Edge Paris bag&#8221;:http://www.amazon.com/Mobile-Edge-Paris-Backpack-Microfiber/dp/B000B54H6C/ &#8211; very European</p>
</li>
</ul>
<p>h4. &#8220;LaptopStuff&#8221;:http://www.laptopstuff.co.uk/ has a nice selection of funky and hip bags and cases.</p>
<p>h4. &#8220;Case-Mate.com&#8221;:http://www.case-mate.com/laptop/MacBook-Air-Cases offers mainly sleeves for the Air.</p>
<p>h4. &#8220;Brenthaven&#8221;:http://www.brenthaven.com/ has some interesting styles, including several which are airport-scanner friendly.</p>
<p>h4. &#8220;Timbuk2&#8221;:http://www.timbuk2.com/tb2/products/laptop/ offers a solid line of tough, durable bags and cases though mostly of the messenger-style. If you really want something special, try their <em>Build Your Own Bag</em> wizard.</p>
<p>h4. &#8220;IGIO.com&#8221;:http://www.ogio.com/products.php?category=30 leans towards the boring side, but their Brain Bucket Mini (in color Wasabe) is ok.</p>
<ul>
<li>&#8220;Brain Bucket mini in multicolors&#8221;:http://www.amazon.com/Ogio-OGIO-Brain-Bucket-Mini/dp/B000FHE9K0</li>
</ul>
<p>h4. Only sleeves</p>
<ul>
<li>&#8220;Kenakai.com&#8221;:http://www.kenakai.com/ has some fabulously rich sleeves for MacBooks, unfortunately not MacBook Air specific.</p>
</li>
<li>
<p>&#8220;Wrappers&#8221;:http://wrappers.typepad.com/ has fun sleeves for different things.</p>
</li>
</ul>
<p>h4. Aggregators, blogs, etc.</p>
<ul>
<li>
<p>&#8220;BizRate.com&#8221;:http://www.bizrate.com/computer-bags/ is a store aggregator. They list products from elsewhere.</p>
</li>
<li>
<p>&#8220;squidoo.com computerbags&#8221;:http://www.squidoo.com/computerbags is small page with important goodies (for women).</p>
</li>
<li>
<p>&#8220;Six Cool Sleeves for the MacBook Air&#8221;:http://tech.yahoo.com/blogs/hughes/22543</p>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>http://davidmccuskey.com/2009/03/when-i-own-a-macbook-air-this-leather-bag-will-be-its-home/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
