tag:blogger.com,1999:blog-66439985775929148462024-03-15T01:28:59.999-06:00Plausible NonsenseNonsensical musings and technical mumbo-jumbo with a few good ideas thrown in.Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-6643998577592914846.post-7400192184007907742023-04-29T15:05:00.000-06:002023-04-29T15:05:04.156-06:00When to Charge Your Apple Watch<p>I have heard individuals complain about the battery life of their Apple Watch (or lack thereof) because they feel they need to charge it overnight, but then they don't get their sleep data.</p>
<p>A routine that works well for me is to charge it twice. I charge in the morning as I get ready for the day (shave, shower, etc.) then again at night when I get ready for bed (brush my teeth, wash my face, etc.).</p>
<p>It's always charged and I get my sleep data.</p>
<p>I hope this helps!</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-40224416736214344242019-03-07T09:25:00.001-07:002019-03-07T09:25:49.759-07:00Drinking Diet Soda During Pregnancy and the Link to Autism<p>There is as much evidence linking diet soda to autism as there is vaccines. By this, I mean there is none. Being a parent is hard and I know you want to protect your kid, but part of protecting your kid is protecting them from preventable diseases. I also know that you wouldn't like it if your kid got something because another kid wasn't protected.</p>
<p>Diet soda doesn't cause autism, nor do vaccinations. The difference is that a vaccine will actually save your kid's life.</p>
<p><strong>Get your kids vaccinated!</strong></p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-71975089490565943782018-05-23T09:42:00.001-06:002018-05-23T09:42:08.568-06:00How to Disable Browser Autocomplete in a Password Box<p>Most modern browsers are coded to ignore <code>autocomplete="off"</code> on an <input type="password"> field, with the assumption that the site is just trying to be annoying and that the user should be allowed to save and autocomplete their password if they want to.</p>
<p>Most of the time, this is what the user wants. Most sites only have one place and one use case for entering a password: signing in. Some sites also require verification of the password for sensitive operations. Again, the assumption of "if the user <em>wants</em> to save the password, let them" might be OK for these situations as well.</p>
<p>Where this really breaks down is administrative uses.</p>
<p>If I'm an admin and I want to create users, in some applications, I need to set their password. Having the site autocomplete <em>my</em> password, is at best annoying, and could be a security concern.</p>
<p>There are also other uses of <input type="password">: credit card CCV codes, security question/answers, cryptographic keys, etc. and having the browser autocomplete your password is not a good idea.</p>
<p>In these cases, you need/want to disable autocomplete. This is the way I've found that seems to work in the latest version of IE, Firefox, Chrome, and Edge.</p>
<code><pre><input id="password" name="password" type="password"
autocomplete="new-password"
readonly="readonly"
style="background-color:#fff" />
<script>
setTimeout(function() {
$("#password").prop("readonly", false).css("background-color", "");
}, 50);
</script></pre></code>
<p>Starting out in <code>readonly</code> mode is enough for IE, Firefox, and Edge, but has no effect in Chrome. The <code>background-color</code> style just resets the style so it doesn't appear grayed out when the page first loads. The <script> is needed to enable the field after the page has loaded. I tried enabling it when the document loads (e.g. <code>$(function() { ... })</code>), but in Firefox, it triggered the autocomplete anyway. Introducing the delay was the only way to get it to work (50 ms seems to work in my testing - a 10 ms delay didn't work reliably).</p>
<p>I like the <code>autocomplete="new-password"</code> method and wish browsers would standardize around this (since they don't want to use the current standard of "off"). This attribute value works in current versions of Chrome (66.0.3359.181 at the time of this writing) and was the <em>only</em> thing that worked in Chrome, but has no effect in other browsers.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-61459141086985118062016-08-04T21:50:00.000-06:002016-08-04T22:39:16.012-06:00World of Warcraft Error # 132 after installing Windows 10 Anniversary Update<p>I recently installed the Windows 10 Anniversary Update. After doing so however, my World of Warcraft installation started crashing during launch with a message stating Error 132 memory something or other referenced such and such.</p>
<p>I searched online for a solution and tried a bunch of things listed on <a href="https://www.youtube.com/watch?v=3ktIgouMeW4">this helpful Youtube link</a> - the DX9 fix worked, <em>but</em> I found a better fix. I happened across a post listing what's new in the update and found that they "added support" for World of Warcraft in the Game DVR. On a hunch, I turned it off (in the settings of the X-Box app). Voila, WoW started working again with DX11.</p>
<p>Edit: After posting I found that Blizzard has an official post with the same resolution: <a href="http://us.battle.net/forums/en/wow/topic/20748004624#post-1">http://us.battle.net/forums/en/wow/topic/20748004624#post-1</a>.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-38249254773804953942016-01-26T17:09:00.000-07:002016-01-26T17:19:26.627-07:00SQL to de-dupe overlapping ranges of dates<p>I came across a situation today where I was given a set of date ranges (begin date to end date) and needed to de-duplicate the ranges so any overlapping dates are "collapsed" so the final result would only contain the distinct range(s) of dates. There are probably a number of solutions to this problem, but I rather liked what I came up with so I decided to post it here for posterity. Code first, explanation after:</p>
<code><pre>
<span style="color:#090">-- Declare a table variable for test data</span>
DECLARE @Data TABLE
(
BeginDate DATETIME,
EndDate DATETIME
);
<span style="color:#090">-- Fill the test data</span>
INSERT INTO @Data
SELECT '2016-01-01', '2016-01-05'
UNION ALL SELECT '2016-01-03', '2016-01-10'
UNION ALL SELECT '2016-01-12', '2016-01-15'
UNION ALL SELECT '2016-01-14', '2016-01-18'
UNION ALL SELECT '2016-01-16', '2016-01-25'
UNION ALL SELECT '2016-01-16', '2016-01-20'
UNION ALL SELECT '2016-01-16', '2016-01-20'
UNION ALL SELECT '2016-02-01', '2016-03-13'
UNION ALL SELECT '2016-05-01', '2016-05-30'
UNION ALL SELECT '2016-05-28', '2016-06-10';
WITH S AS (
SELECT BeginDate, MAX(EndDate) AS EndDate <span style="color:#090">-- Select the starting ranges</span>
FROM @Data D
WHERE NOT EXISTS(SELECT * FROM @Data WHERE BeginDate < D.BeginDate AND EndDate >= D.BeginDate)
GROUP BY BeginDate
UNION ALL
SELECT S.BeginDate, D.EndDate <span style="color:#090">-- recursively expand the ranges</span>
FROM S
INNER JOIN @Data D ON D.BeginDate BETWEEN S.BeginDate AND S.EndDate
AND D.EndDate > S.EndDate
)
SELECT BeginDate, MAX(EndDate)
FROM S
GROUP BY BeginDate;
</pre></code>
<p>In this example, I used a <a href="https://msdn.microsoft.com/en-us/library/ms175972.aspx">common table expression</a> (<abbr>CTE</abbr>) for my test data. The work is done by the "S" CTE. It starts by selecting any date range that doesn't have another date range that overlaps its begin date, grouping by that begin date, to select the max end date (to eliminate any ranges that start on the same day). It then recursively joins back to the original data, bringing in any date range that overlaps and has an end date further out. In the final output, you select the BeginDate and MAX(EndDate) to get your distinct list of date ranges.</p>
<p>If you have additional columns you need to group by, you'll need to add them in. For example:</p>
<code><pre>
<span style="color:#090">-- Declare a table variable for test data</span>
DECLARE @Data TABLE
(
ID INT,
BeginDate DATETIME,
EndDate DATETIME
);
<span style="color:#090">-- Fill the test data</span>
INSERT INTO @Data
SELECT 1, '2016-01-01', '2016-01-05'
UNION ALL SELECT 1, '2016-01-03', '2016-01-10'
UNION ALL SELECT 1, '2016-01-12', '2016-01-15'
UNION ALL SELECT 1, '2016-01-14', '2016-01-18'
UNION ALL SELECT 1, '2016-01-16', '2016-01-25'
UNION ALL SELECT 2, '2016-01-16', '2016-01-20'
UNION ALL SELECT 2, '2016-01-16', '2016-01-20'
UNION ALL SELECT 2, '2016-02-01', '2016-03-13'
UNION ALL SELECT 2, '2016-05-01', '2016-05-30'
UNION ALL SELECT 2, '2016-05-28', '2016-06-10';
WITH S AS (
SELECT ID, BeginDate, MAX(EndDate) AS EndDate <span style="color:#090">-- Select the starting ranges</span>
FROM @Data D
WHERE NOT EXISTS(SELECT * FROM @Data WHERE ID = D.ID AND BeginDate < D.BeginDate AND EndDate >= D.BeginDate)
GROUP BY ID, BeginDate
UNION ALL
SELECT S.ID, S.BeginDate, D.EndDate <span style="color:#090">-- recursively expand the ranges</span>
FROM S
INNER JOIN @Data D ON S.ID = D.ID
AND D.BeginDate BETWEEN S.BeginDate AND S.EndDate
AND D.EndDate > S.EndDate
)
SELECT ID, BeginDate, MAX(EndDate)
FROM S
GROUP BY ID, BeginDate;
</pre></code>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-18890098671463762672015-12-03T12:58:00.000-07:002015-12-03T12:58:07.832-07:00Starting a numbered list at a different number in Gmail or other web email client<p>I recently was sending a colleague a series of questions across multiple emails and I wanted to continue numbering the list where the previous email left off. The rich text editor used by Gmail doesn't have this built-in (not that I can find at least), but I figured out a way using my trusty browser tools.</p>
<p>I'm a web developer so using the browser tools is perfectly normal for me on an average day, but although this might be unfamiliar, it's fairly easy to accomplish.</p>
<ol>
<li>If you haven't done so already, open your formatting tools by clicking the <span style="font-style:italic;text-decoration:underline">A</span> button in the toolbar, then insert the ordered list by clicking the "1 2 3" icon.</li>
<li>Right-click your list and choose "Inspect element". If your browser doesn't have "Inspect element" or another "Inspect" option, you can press F12 to open the browser tools then click the button in the top left - this lets you then click the list to select it.</li>
<li>You'll see the HTML of the current page. The <strong><ol></strong> tag is what you're looking for. Your tools might have auto-selected an <strong><li></strong> instead, in which case you'd look for the parent.</li>
<li>Right-click the <strong><ol></strong> tag and choose "Add Attribute".</li>
<li>Type "start=<em>N</em>" (no quotes) where <em>N</em> is the number you want to start with</li>
</ol>
<p>Your browser should update immediately and you'll see the new number as your starting point.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com65tag:blogger.com,1999:blog-6643998577592914846.post-80071651572695709522015-08-10T13:11:00.004-06:002015-09-17T08:37:47.793-06:00David Hasselhoff Screensaver<p>It's good sense to lock your computer when you're away. My co-workers have a habit of punishing those who don't by changing their desktop background to a picture of David Hasselhoff (usually the one where he's naked holding a puppy), a practice known as "Hoffing". I decided to go one further and create a screensaver that displays mister Hasselhoff in all his glory.</p>
<p><a href="https://drive.google.com/file/d/0B6ETOx3uiIxiMm5ocWZQRV9FYlE/view?usp=sharing">This is the result</a>. Extract the file on your victim's computer, right-click the .scr file and choose "Install". And <a href="https://drive.google.com/file/d/0B6ETOx3uiIxiNFJhMHppQ3kxNFU/view?usp=sharing">here is the source code</a> in case you're worried about malicious code (or just want to see how it works). I leaned heavily on the code from Frank McCown at <a href="http://www.harding.edu/fmccown/screensaver/screensaver.html">http://www.harding.edu/fmccown/screensaver/screensaver.html</a>.</p>
<p><strong>Update 2015-09-17</strong> - I found that the previous version was crashing when trying to move the image. I've uploaded new versions of the .scr and source code (same links) to resolve the issue.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com1tag:blogger.com,1999:blog-6643998577592914846.post-84319103128801215392014-09-14T00:44:00.001-06:002014-09-14T00:44:06.577-06:00Star Wars: CommanderI've <span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">Meanwhile, the</span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;"> </span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">non-optional</span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;"> PvP element is basically just stealing the hard-earned resources of other players. </span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">he real goal of these games though is to get you to buy whatever points they're selling in order to speed things up. This goal results in gameplay that just isn't fun.</span><div><br></div><div>Don't get me wrong, they're totally addicting. That's the whole point. Each stage opens up a new thing that makes you a little bit more powerful so you keep thinking "now I can do This", but each stage of the game takes longer and longer and ultimately, nothing really changes. You're still do the same thing over and over again. It's addicting, but I get no joy in the experience. It's just hard to stop.</div><div><br></div><div><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">Meanwhile, the</span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;"> </span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">non-optional</span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;"> PvP element is basically just stealing the hard-earned resources of other players. You log into the game to find another player has stolen resources it took you hours or even days to gather. Sure, you can attack them back, but them you lose the temporary protection obtained by having your base destroyed. And what's the point? Now they've lost time and resources.</span></div><div><br></div><div>This experience could be totally turned around by adding some additional strategy or RTS elements. As is, your attack units are completely mindless. <span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">After dropping them on the battlefield, you have no control over their behavior. </span><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;">They'll attack random (and strategically worthless) walls while being fired upon (and destroyed) by enemy units. Your defenses seem woefully underpowered (at least that's my experience) at repelling invading players. A single enemy unit was capable of taking down both shield generators and three turrets before being reinforced by the rest of the army for wiping out the rest of the base.</span></div><div><span style="font-family: 'Helvetica Neue Light', HelveticaNeue-Light, helvetica, arial, sans-serif;"><br></span></div><div><font face="Helvetica Neue Light, HelveticaNeue-Light, helvetica, arial, sans-serif">OK, rant over. And so is my time with this game.</font></div>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-2633368321424576142014-09-08T14:07:00.000-06:002014-09-08T14:07:24.404-06:00Dynamically Changing the Color of SVG Using an ASP.NET HttpHandler<p>I have an SVG file that I'm using as the background image of elements on the page (using sprites). I wanted to dynamically update the color of the shapes and paths when theming the application, but I could not find a way to do this using CSS when the SVG is loaded as a background image (I have heard that inline <svg> elements will inherit style rules).</p>
<p>The way I solved the issue was to use a custom <a href="http://msdn.microsoft.com/en-us/library/vstudio/ms228090(v=vs.100).aspx">HttpHandler</a> in my ASP.NET application that allows me to replace parts of the SVG with other content. Here's the code I used:</p>
<code><pre>using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web;
namespace MyNamespace
{
public class DynamicSVGHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest( HttpContext context )
{
var request = context.Request;
var response = context.Response;
var file = context.Server.MapPath( Path.ChangeExtension( request.Url.LocalPath, ".svg" ) );
if( File.Exists( file ) )
{
var lastWrite = File.GetLastWriteTimeUtc( file );
response.Clear();
response.ContentType = "image/svg+xml";
response.Cache.SetExpires( DateTime.Now.AddMinutes( 5d ) );
response.Cache.SetCacheability( HttpCacheability.Public );
List<KeyValuePair<string, string>> replacements = new List<KeyValuePair<string, string>>();
string value;
foreach( string key in request.QueryString )
{
if( key.Length > 3 && !string.IsNullOrEmpty( value = request.QueryString[key] ) && value.Length > 3 )//Implement any custom validation here.
replacements.Add( new List<KeyValuePair<string, string>>( key, value ) );
}
if( replacements.Count > 0 )
{
string line;
using( StreamReader reader = new StreamReader( File.OpenRead( file ) ) )
{
while( (line = reader.ReadLine()) != null )
{
foreach( var replacement in replacements )
line = line.Replace( replacement.Key, replacement.Value );
response.Output.WriteLine( line );
}
}
}
else
response.WriteFile( file );
}
else
{
response.Clear();
response.StatusCode = 404;
response.End();
}
}
}
}</pre></code>
<p>Make sure to register your handler in your web.config (This example is for IIS 7+, integrated mode and I used the extension .dsvg):</p>
<code><pre><configuration>
<system.webServer>
<handlers>
<add name="*.dsvg" path="*.dsvg" preCondition="integratedMode" verb="*" type="MyNamespace.DynamicSVGHandler, MyAssembly"/>
</handlers>
</system.webServer>
</configuration></pre></code>
<p>You can now reference any svg file in your application with the extension .dsvg instead of .svg and specify replacements in the URL (e.g. mysvg.dsvg?white=red to change "white" to "red").</p>
<p>In my SVG, I found it easiest to define the color using a style section rather than setting the fill of each shape, then add the class="svg-shape" to all the shapes.</p>
<code><pre><style type="text/css">
.svg-shape
{
fill:#fff;
fill:$color$;
}
</style></pre><?code>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-33566070989462882692014-03-13T11:27:00.000-06:002014-03-13T11:27:45.599-06:00Changing the Color of Table and Column Names in SQL Server Management Studio 2012<p>If you've upgraded to SQL Server 2012 and used the new Management Studio, you've probably noticed that your table and column names are now a teal color that looks exactly like the color of your comments. Previous versions of Management Studio would use the color specified for "Plain Text", but the new version uses a new setting.</p>
<p>To change the color, open the <strong>Tools</strong> menu and choose <strong>Options...</strong>. In the <strong>Environment</strong> settings click <strong>Fonts and Colors</strong>. Locate and click "Identifier" in the <strong>Display Items</strong> list box then change the <strong>Item foreground</strong> to something other than Default. That should do the trick.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-4856055841917682002014-02-24T15:50:00.001-07:002014-03-13T11:29:27.237-06:00How to Restore Files from a Restore Point<p>In <a href="http://www.plausiblenonsense.com/2014/02/warning-system-restore-will.html">my last post</a>, I mentioned how I had used Windows System Restore, only to find out that JavaScript (*.js) files are considered to be "system files" and are restored back to the state they existed when the restore point was created. I tried restoring back to the previous state, but no-go. System Restore failed with every other restore point.</p>
<p>I thought all was lost, until I found <a href="http://www.howtogeek.com/129188/htg-explains-what-are-shadow-copies-and-how-can-i-use-them-to-copy-or-backup-locked-files/">this article by the How-to Geek</a> that has a batch file letting you mount the latest VSS (Volume Shadow Copy) volume and view the files contained there-in (when you create a Restore Point, Windows creates a VSS volume containing your files at that point in time). I didn't want the most recent volume, but I looked at the batch file and figured out how to list the available volumes and mount the one I wanted. I figured I'd document the steps in case this helps anyone else.</p>
<ol>
<li>First off, you need to open a command prompt as an administrator (Right-click the "Command Prompt" and choose "Run as Administrator").</li>
<li>At the prompt, type <code><pre>VSSAdmin List Shadows</pre></code> This will list the available VSS volumes on your system. This can be confusing, but each one displays a creation time. What you're looking for is the the "Shadow Copy Volume" (e.g. \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1).</li>
<li>Once you find out the name of the shadow copy volumne, you can mount the volume using MKLINK just as you would any other folder (if you haven't used MKLINK, I'd recommend you check it out - it's a pretty useful tool). For example: <code><pre>MKLINK /D C:\ShadowBackup \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1</pre></code> In this example, you'll see a new folder named ShadowBackup on your C: drive, containing the contents of the VSS volume.</li>
</ol>
<p>Now you can view the contents of the VSS volume and view/copy any of the files within. This can also be useful if you accidentally delete a file or want to see what changes you've made.</p>
<p>To "unmount" the volume, you can simply delete the folder in Windows Explorer. This won't delete the volume, just the link to view the files.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-18332831644983936422014-02-24T15:25:00.003-07:002014-03-13T11:29:16.447-06:00Warning: System Restore will Modify/Delete JavaScript Files!<p>I discovered too late that Windows System Restore considers JavaScript (*.js) files to be system files. Apparently, the way System Restore works is it uses the Volume Shadow Copy service to back up your files, then during the restore process, it restores "system" files to their state at the time the restore point was created.</p>
<p>As a developer, this is bad for me, since I regularly create and edit JS files. After restoring my system, I opened up my code and found, to my surprise that all my JS changes had been reverted. If this happens to you, in my next post, I'll detail <a href="http://www.plausiblenonsense.com/2014/02/how-to-restore-files-from-restore-point.html">how I managed to restore the files</a>.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-47579239984293974532014-01-14T16:37:00.003-07:002014-01-14T16:37:52.444-07:00Munchkin Rules Removed by Request.The page of Munchkin rules has been removed by request. No hard feelings on this end.Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-49120514555736357092014-01-06T17:06:00.001-07:002014-03-13T11:30:17.953-06:00Performance of a shortcut to document.getElementById<p>I don't like typing <code>document.getElementById</code> (or <code>document.createElement</code>, etc.) repeatedly so for a while now, I've used my own function, I call byId (I know jQuery has $get, but I don't use jQuery, for reasons I won't go into here). This function started out as a simple:</p>
<code><pre>function byId(id)
{
return document.getElementById(id);
}</pre></code>
<p>In Internet Explorer, I could use <code>var byId = document.getElementById</code>, but this didn't work in other browsers. I then tried, what I though was a more elegant solution of binding byId to the document object (<code>var byId = document.getElementById.bind(document)</code>). This works, but it winds up being <em>slower</em> then then simple method in all browsers, but IE. I decided to publish <a href="http://jsperf.com/document-getelementbyid-vs-bound-byid">my results on jsperf</a> for anyone interested.</p>
<p>What's really maddening is that the best method is different in each browser. I'm sure any web developers have experienced this themselves.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-66439429312536454242014-01-06T11:30:00.003-07:002014-03-13T11:31:01.840-06:00Sneaky Christmas Music<p>More and more, it seems that every year the holidays sneak up on me and suddenly it's Christmas. I was thinking about it last night, and I think I figured out why.</p>
<p>For starters, I'm older and time seems to go faster as you get older because a defined period of time is a smaller and smaller percentage of your memories. But it's more than that. I think it's the music.</p>
<p>Back when I was younger, the radio was constantly playing Christmas music. We had to go outside to shop and all the stores were replaying Christmas songs (driving their employees crazy).</p>
<p>This year, I listened to very little Christmas music. Due to the digital age, I had Pandora, podcasts, and my iTunes music library. I rarely ever turn on the radio anymore. I think next year I might try and mix in a little holiday cheer to my auditory experience and see how that affects me.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-11707118341145413672014-01-03T12:34:00.000-07:002014-01-14T16:37:02.250-07:00Munchkin Rules in HTML Format<p>I love playing <a href="http://worldofmunchkin.com">Munchkin</a> so much, I decided to translate the rules of Munchkin into HTML format to make them more searchable/linkable/viewable on other devices and post them <a href="#" aria-label="Click here to view the rules of Munchkin">here</a> as a good way to access them anywhere. Note that I am in no way affiliated with <a href="http://www.sjgames.com/">Steve Jackson Games</a> and if they ask me to take these down, I will without hesitation (though I'd ask them to make them available on their own site).</p>
<p>*** Edit: Removed by request ***</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-54299337463448608142012-09-26T15:42:00.001-06:002014-03-13T11:32:34.556-06:00The Deception of Capital Gains<p>I could rant on this topic for hours, but for now, I'll focus on one point. Capital Gains tax rates are lower, typically <i>far</i> lower, than the average tax rate. This has been rationalized as being acceptable by saying that since you're investing in the growth of businesses, you should be rewarded or by saying that it encourages investment which in turn fuels business growth.</p><p>Don't believe it</p><p>What it actually does is reduce the tax rates for wealthy people. Now before you immediately stop reading and think I'm just spreading propaganda or anti-republican party BS, think about it. The only people that could really benefit from the lower rates are people that have extra disposable income. If you're living paycheck to paycheck and worrying about putting food on the table, you don't have extra money to invest in another business. In order to invest, you have to have at least some disposable income. Many or most middle class families make enough to invest some of their money, but most are investing in retirement plans and saving for the future. Retirement plans have their own tax incentives, but don't benefit from capital gains rates because they're separate. The beneficiaries of capital gains rates are those that have enough money to "make their money work for them" and use money to make money.</p><p>Don't you wish you could do that? Sounds like a great deal.</p><p>So basically, capital gains rates only apply to money that is made using money that you already have, and theoretically could afford to lose. Considering this type of income can only be made if your wealth increases and you only get taxed on the gain, not what you put in, do we really need to incentivize this behavior?</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-74690818252917797562012-08-01T11:40:00.000-06:002014-03-13T11:31:29.121-06:00Initial Thoughts on Windows 8<p>I recently installed the Windows 8 consumer preview on a virtual machine and thought I would post my initial reaction.</p><p>I actually like the new approach to the start screen and having information update in real-time and I think the UI will be really nice with a touchscreen. However there are drawbacks to this approach. I am mostly talking from a perspective of using a keyboard and mouse.</p><ol><li>When using a mouse, I realize I can hover in the bottom left and the button will appear, but this takes more time than simply clicking a button. Please just give me the option to show a button. The hover just takes too much time. I've also inadvertently launched IE from the desktop twice now because I hovered to bring up the button, then thought I clicked the button but the click went through to the pinned Internet Explorer icon. It might be possible to pin a short-cut to the start screen on the taskbar...</li>
<ol style="list-style-type:lower-alpha"><li>I'm running the preview in a virtual machine and since my virtual machine display is itself in a Window, it's actually relatively hard to move the mouse to the corners of the display without going into my host environment. This will cause problems with users using Remote Desktop.</li>
<li>Once I new about the "hot" areas, it became usable, but it's not obvious. It reduces the number of UI elements on the screen, but new users will have trouble.</li>
<li>I know that I can click the Windows button to bring up the start screen, but again, since I'm using Remote Desktop to a virtual machine, the Windows button is keyed to my host machine. I might not mind the lack of start button as much when I'm using it as my main OS.</li>
</ol><li>The buttons being so big makes it nice for a touchscreen because you have more click-able area, but when using a mouse, it winds up taking much longer because you now have to move your mouse a much greater distance. e.g. you might have to move across the entire screen instead of just a few inches.</li>
<li>I'm a developer and I use a lot of programs in my day-to-day life. By a lot, I mean I have about 8 programs I run every day (Visual Studio, 3 different browsers, Outlook, Messenger, SQL Management Studio, Notepad, etc) plus a large number of others that i run situationally. The old start menu gave me a way to organize those programs by function and was pretty good at simply listing them all. Everyone seems to be moving towards Search to find your app, but if you don't remember the name, you're basically browsing for the right app so you want to browse by category and/or simply view everything you have so you can find what you're looking for.</li>
<li>The buttons on the start screen are not very visually distinctive. I can appreciate the look you're going for and seeing the screenshots, I really liked it, but as I said on item #3, I use a lot of different programs and having to search through them all when all the buttons look alike is not a prospect I look forward to.</li>
<li>I still haven't figured out how to turn it off.</li>
</ol>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-50429314310489564792012-03-01T11:22:00.001-07:002014-03-13T11:32:13.507-06:00Campaign Contributions Must DieTell me if you disagree, but I think the biggest problem with our current political system is campaign contributions. Basically, the problem is that in order to be elected, you have to fund your campaign. Since most funding comes from corporations or special interest groups, politicians become beholden to said corporations or special interest groups and therefore work in their best interest rather than the interest of the public at large. This also encourages extremism in the beliefs of the candidates and what they propose because they're trying to get the support of a group that supports that belief (a problem with the political party system in general).<br />
<br />
I can see two ways of fixing this:<br />
1. Fund campaigns using government money.<br />
2. Require all campaign contributions to be anonymous.<br />
<br />
Option 1 should theoretically be more effective because each candidate would have an even playing field and voters would support the person with beliefs most in tune with their own. Since candidates run on money from the people, they're beholden to the people, not a faceless entity. Option 1 also evens the power between the wealthy and the poor since campaigns aren't dependent on the amount of money each supporter has available to donate. <br />
<br />
Option 2 is more moderate. People, corporations, and groups could still donate to help ensure their candidate wins, but the candidate is theoretically unaware of where these funds are coming from and is therefore less beholden to these groups. However, there is a large potential for abuse by off-the-record phone calls and the like. This option also has the downside of wealthier people having more influence. <br />
<br />
Or there is a third option:<br />
3. Allow people to vote on the issues themselves rather than having a representative do it for them.<br />
<br />
This would be the theoretical ideal but it runs into the problem of informing people about all the issues in a simple enough way that everyone could understand and then actually getting them to go out and vote. This is already hard for some people and increasing the number of things they're voting for might make it worse for some, though it might make it better for others since they would feel like they're part of the real process and not just voting between bad candidate A and bad candidate B. Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-46678547539832897692012-02-06T09:48:00.001-07:002014-03-13T11:32:53.951-06:00Hunan Express<p>I decided I'd also make a ringtone from Scott Johnson's Hunan Express story from episode 190 of <a href="http://frogpants.com/tms">The Morning Stream</a> (If you haven't heard it yet, I embedded the YouTube, below).</p><p>Then you can eat rice! <a href="http://sites.google.com/site/plausiblenonsense/files/Thenyoucaneatrice.mp3?attredirects=0&d=1">mp3</a> or <a href="http://sites.google.com/site/plausiblenonsense/files/Thenyoucaneatrice.m4r?attredirects=0&d=1">iPhone</a><br />
<br />
I also made a longer version that has an intro of Scott's angry little man voice in <a href="http://sites.google.com/site/plausiblenonsense/files/HunanExpress.mp3?attredirects=0&d=1">mp3</a> or <a href="http://sites.google.com/site/plausiblenonsense/files/HunanExpress.m4r?attredirects=0&d=1">iPhone</a></p><iframe width="560" height="315" src="http://www.youtube.com/embed/zdy8u2xijnU" frameborder="0" allowfullscreen></iframe>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-23619768799260123862012-02-03T10:02:00.001-07:002014-03-13T11:33:14.888-06:00Justin Robert Young, Rolling in the Deep RingtoneYou might have heard Mr. Gordon Wilson Phillips's (A.K.A. Justin Robert Young) rendition of Adele's <em>Rolling in the Deep</em> he <a href="http://twit.tv/show/nsfw/108">sung on NSFW</a> or heard it mentioned on Frogpants podcasts such as <a href="http://frogpants.com/tms/">The Morning Stream</a>, where I first heard it myself. Well, I decided to take the audio and create an ringtone out of it which I make available to you, if you want it, as either an <a href="https://sites.google.com/site/plausiblenonsense/files/108BoodleDeedleDo%28Rollinginthe.mp3?attredirects=0&d=1">mp3</a> or an <a href="https://sites.google.com/site/plausiblenonsense/files/108BoodleDeedleDo%28Rollinginthe.m4r?attredirects=0&d=1">iTunes ringtone</a>. Enjoy!Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-49568215196408429472011-10-13T23:09:00.001-06:002014-03-13T11:33:34.925-06:00Apple Distorts Reality<p>I'm listening to a recording of Buzz Out Loud's live coverage of Apple's announcement of the iPhone 4s and I'm reminded of how many people, myself included, were so disappointed that it's "only" a 4s, not a redesigned iPhone 5. All the changes are incremental, not revolutionary. A better camera, faster processing, voice commands, nothing terribly exciting.</p>
<p>Then I watched the keynote.</p>
<p>Suddenly that camera rivals the finest DSLR, the games spring to life as glimmers of light shine off of dust particles in games, and Siri is my own personal Jarvis from the Iron Man movies. I don't know where Apple gets their magic sauce or how they make it, but man, they've got it. If you haven't watched the keynote, I highly recommend it, if only to learn how to make a good presentation, but be prepared to exert a little willpower or you might find yourself at the nearest Apple store.</p>
<p>I haven't preordered and I don't actually plan on buying one, but not because I don't want it. I'm just waiting for my contract to expire before I jump carriers. By then the 5 will be out, or almost out, so I'll wait.</p>
<p>Reality distortion field aside, it actually seems like a pretty good update, not worthy of the complaints I've heard. The only things it's missing are true 4G (LTE or WiMax), NFC, and a change in form-factor. I'd be willing to bet the reason it's not 4G is battery life. Current chips suck down power pretty quickly and I don't think Apple wants to compromise on that front. NFC isn't very widespread and I could see Apple wanting their own payment partnerships rather than going with Google Wallet or similar services. As far as changing the design, since the retina display has so many pixels, they could probably get away with having the same pixel count in a slightly larger screen. I don't foresee Apple changing the resolution since one of their biggest strengths is that developers only have to work with one layout for a phone and one for an iPad. I couldn't see them introducing a third standard. Because of that, a larger screen wouldn't really get you anything since you couldn't display anything more on the screen, everything would just be bigger.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-21753996135692135692011-10-10T16:45:00.000-06:002011-10-10T16:45:39.184-06:00Copying Custom Emoticons<p>Every now and then I move to a new computer and try to IM someone using one of my custom emoticons only to find that the picture doesn't show up. Luckily, it's as simple as copying some files from your old machine.</p>
<p>Simply go to <code>C:\Users\<em>User Name</em>\AppData\Local\Microsoft\Messenger\<em>Live ID</em>\ObjectStore\CustomEmoticons</code> and copy the files in there to the corresponding location on your new PC. Remember to replace <em>User Name</em> with your own user directory and <em>Live ID</em> with the email address you use to sign into messenger.</p>Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-74482567427007161602011-09-04T14:10:00.000-06:002011-09-04T14:10:49.147-06:00G-Mobile?AT&T wants to buy T-Mobile, but no one in their right mind other than AT&T thinks this is a good idea, including the Department of Justice (go DOJ!). Let's say consumers actually win this one and the deal fails, but T-Mobile's parent company still wants to get out of the US market. Who might be the big winner? Google. It might just be my own wishful thinking but I'd love to see an innovator in the cellular market get bought out by a company with a vested interest in ensuring cheap, fast, and unlimited access to the Internet from anywhere and everywhere. Google would also have the resources to expand the T-Mobile network into something competitive with the other major players. Yeah, this is probably just wishful thinking, but maybe I'll be watching for a shooting star tonight. Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0tag:blogger.com,1999:blog-6643998577592914846.post-1412524910773600932011-07-29T16:23:00.000-06:002011-08-17T10:46:22.690-06:00We need more democracy and less republicThe biggest thing wrong with our government is that we're voting for people rather than issues. This made sense back in the old days because when our country was first founded, it was small enough that you likely knew your representative or at least his or her reputation. Communities tended to be more homogeneous since people tend to group with like-minded individuals. There was also the consideration that it was just plain hard to find out what everybody wanted. You almost had to vote for a representative because distance and travel time made it too hard to poll people's opinions.<br/><br/>These days, corporations and special interests are leading politicians around by the nose since the goal of politicians is not to do what's best for their constituents, but to get re-elected and/or retire and become a lobbyist. In the days of the Internet, it makes far more sense to poll people and get their opinion on the actual issues. We might also vote on who should be in charge of working out the details and writing the final bill, but the election should be entirely funded and run by the government, not the people/"entities" with the deepest pockets.Alanhttp://www.blogger.com/profile/04401094639573819263noreply@blogger.com0