Archive for June, 2013

YNAB Update – June wrap-up

June is almost over, with just about 48 hours left of it as I start writing this.

  • In March, my first partial month, I was a little under $300 over budget.
  • In April, I went almost another $400 over budget, giving me a total overage of about $670 dollars.
  • In May, I pushed a secondary source of monthly income that arrives late in the month (about $600) to be counted in June income, instead of the current month as I had done in the past.  The end result was that I effectively lowered my May income, and kept my expenditures close to even, keeping the overage at about $670.
  • In June, I spent about $600 less than my June income, lowering my over-budget amount to about $70.  I would have been about even, if it weren’t for the untimely demise of my cable modem.  Only about 3 months after the end of the warranty…  😦

My July income is in-line with my June income, but since I’m starting at a deficit of only $70 (instead of the $670 deficit I started each of the last two months with), I have $600 extra to budget.  It’s sort of like getting a $600/month raise.  Technically, I’m just more effectively using the money I do have, but it sort of feels like a raise.  As I’ve gotten better at planning what I need money for each month, the amount I’m having to shift around to “roll with the punches” is getting less and less…

I think July is going to be my best month on YNAB yet.

June 29, 2013 at 12:16 am Leave a comment

OpenDNS discussion part 3, building a custom DNS solution

In my last entry, I talked about creating a custom solution to get the advantages of OpenDNS’s filtering capabilities, while still getting access to CDN servers that are located in your neighborhood.

Since I didn’t want to re-invent the wheel and write my own DNS server, I started out by looking at open-source DNS servers.  I found a few, but a good many of the ones out there weren’t well maintained, or building them for Windows was daunting.  (Yes, I run Macs, but I wanted to run this on a Windows box that serves as my Plex server.)

I have previous experience with a Windows DNS server called SimpleDNS Plus.  It’s not open-source, nor is it free, but it is a very good Windows DNS server that does have a plug-in architecture so that you can build your own plug-ins.

They have a screencast showing how to build a basic plug-in for SimpleDNS 5.0/5.1, but the current version is 5.2, and there have been some changes that make those screencasts obsolete.  After sending a few emails to support explaining what I wanted to do, then asking for more information, I got a good reply telling me how I would implement my idea as a plug-in, but they were not willing to provide any further documentation than what was already on their website.  No example projects or anything.  Disappointed at the lack of assistance from the devs, and severely out of practice with C#, I started trying to hack away at it.

I’ll skip all the boring stuff that took a few days to get through…  I used an open-source .NET library to perform my DNS lookups, but had to embed it in my project because I was unable to use any additional assemblies from my .dll.  I’m not sure if that was a restriction of the plug-in, or something I wasn’t doing right, but I finally got a version of it working on my home network.

The way it worked was to perform a lookup against OpenDNS for every request it was sent.  I had hoped that SimpleDNS Plus would cache my answer, and look in the cache before sending the request to my plug-in, but that’s not the way SimpleDNS handles plug-ins.

So, I wrote a rudimentary caching system.  It doesn’t obey the TTLs, simply building up and emptying on a regular schedule, but it works.  Once my plug-in has resolved an address, it will skip lookups for that address, and just let Simple DNS Plus handle the resolution, unless it was a “blocked” site, in which case it will direct you to the blocked website.

My result?  We’ll it seems to work well enough for personal use…  I’ve ran GRC’s DNS Bench against it, and if it’s benchmarked against the default list, it is (predictably) slower, but reliable… However, if you remove all the others and only benchmark SimpleDNS Plus with my plug-in, it has some reliability issues…  Like down around 75-85% reliable, though I’m not 100% what the figure is telling me, exactly.  With my plug-in turned, off, I’m sitting at 100% reliability, so it’s definitely something I’m not doing right… It could also be the DNS Client library I’m using, I suppose…

It’s not terrible, but I’m a perfectionist, so I’m still trying to figure out why the performance isn’t as good as I’d like it to be…

Update:Woohoo!  A few hours after this blog entry was published, I cracked it.  I replaced the open-source .NET DNS Client library I was using with the library from ARSoft.Tools.Net, and now it works wonderfully well!  The GRC DNS bench tool now shows 100% reliability after multiple tests.  Now, I just need to watch it and see if it is stable.

June 18, 2013 at 8:26 pm Leave a comment

OpenDNS discussion part 2, Developing a solution

In my last blog post I talked about the advantages and disadvantages of OpenDNS.  The main advantage that I’m concerned with is the filtering, as I have children in the house…  Not to mention that I don’t want to accidentally run across some content that I’m not interested in seeing myself.  The chief disadvantage to OpenDNS is that CDNs (Content Distribution Networks) use Geo-location when they answer DNS servers requesting the IP Address of a server.  This means that when you use OpenDNS and download from iTunes, stream from Hulu, NetFlix or Youtube, or any other of a number of high bandwidth activities, you are talking to one of a group of CDN servers that are located somewhat near the OpenDNS server that you are using for DNS resolution.  For me, this means one of OpenDNS’s East Coast servers, which I believe are located near DC.  Everyone using OpenDNS’s service on the East Coast will be directed to these same CDN servers.  That means there’s a good chance that these servers are busy, which translates to slow downloads, etc.

When you request a DNS name that is in one of your blocked categories, OpenDNS responds with a special IP address.  Your browser goes there, where they redirect you to their block page.  In my testing, this redirection (for filtering) is always the same IP address.  When you type in the name of a non-existent domain, they send back a different IP address.  When you go to a phishing site (like their test phishing site, you get back a 3rd IP address.  I’m not expecting that these addresses never change, however.  It’s likely they have lots of servers that do these jobs, perhaps co-located with the DNS servers you are hitting, or perhaps that have a big pool of them all at their corporate HDQ.

What if you have a DNS server that can perform lookups against OpenDNS servers,  looking for these special “block” addresses, and if they are found, that’s what the DNS client gets back.. But, if the IP of the site (as returned by OpenDNS) doesn’t match one of these “block” addresses, your DNS server checks a close DNS server (like your ISP’s), or performs resolution itself against the root DNS servers, giving you back that IP address, which would be of a Geo-located server that is nearby.

Yes, it will be slower to respond than either method alone, but it will get you the best of both worlds.  You’ll have the advantage of their free (or low-cost) filtering service, plus you’ll get sent to close CDN services, which are probably less busy than the ones everyone else using OpenDNS is hitting.  Is that worth the extra milliseconds it takes to query OpenDNS servers?  That’s up to you.

June 16, 2013 at 9:10 am Leave a comment

OpenDNS and CDN networks

I’ve long been a proponent of OpenDNS.  They offer a great service at a very good price for the home user.  The filtering they have is great, plus the malware/botnet and phishing protection is very nice.  They have a nice web interface allowing you to whitelist sites that you want to be able to visit, no matter if they fit into an otherwise filtered category.

But, at the same time, they seem to have a big issue with CDN networks.

Recently, I tested SimpleDNS and the CyberSitter plugin.  SimpleDNS is a really great piece of software that I’ve used off and on for years.  I decided to test this at home, as we have been thinking about implementing this as my place of work, and I wanted to try it out.  The CyberSitter plugin essentially lets you filter categories of websites.  It doesn’t provide as granular of a level of control as OpenDNS, but it seemed to generally do a good job.  While testing, though, I noticed something that was a bit unexpected.  Previously I thought CDN’s were a problem with OpenDNS, but I saw some evidence that the problem is bigger than I thought.

I buy seasons of shows through iTunes.  Just about every week, I’ve been downloading a new episode of Psych, and recently Mythbusters, among other shows.  My home internet connection gets in excess of 30 Mbps, but I sometimes see the estimated download time of 40+ minutes for a show.  I didn’t think much of it, figuring that Apple throttles their servers.  Since a typical hour show is only about 42-44 minutes in length, I could almost watch the show faster than I could download it, something that annoys me greatly.  🙂

Anyhow, when using SimpleDNS with the CyberSitter plugin, I noticed that my regular show downloads were fast.  Like under 4 minutes fast.  Netflix shows seemed to start playing faster.  And, it’s pretty typical for me to have issues streaming YouTube videos.  They seem to start playing, then some seconds later, pause again to buffer, with this start-stop pattern continuing until I give up.

But, all these problems seemed to go away.

Perhaps I’m wrong, but I attributed this to the fact that SimpleDNS was checking the DNS name against the CyberSitter list, and if it didn’t match a blocked site, it would perform a normal lookup against the root DNS servers.  This would result in me getting the IP addresses of servers closest, when I’m trying to reach CDN servers.

Anyhow, my trial period is over, and I’m back to using OpenDNS as my only DNS resolver.  If only I could get the best of both worlds… (Close CDN servers with top-notch free filtering)

June 8, 2013 at 1:22 am Leave a comment

YNAB Update – May wrap-up

Ok, so May didn’t turn out quite how I planned. At the beginning of May, I expected to be about $450 over budget for the month, but that ended up being a couple hundred too conservative.

The good news is that I’m not starting this month out expecting to be over budget!  In fact, I’m starting the month of June out with just over $100 in my Buffer category.

If you have a good memory, you might recall that in early May, I expected that June would have about $500 in my Buffer category.  Here’s what happened:

1. Unplanned expenses came up during May, driving me further over budget.
2. Some previously unplanned kid-friendly summer activities have now been planned.
3. I’m doubling down on my “Home Insurance” category, saving $200 in June instead of $100, as my bill comes due in September, and I need to ramp up the savings so it’s not a budget buster when it arrives.
4. I have a $125 pest control bill for June.

Hence the $400 swing in what I expected to be happening now.

But I’m not discouraged.  I expected things to come up that I hadn’t planned for, since I’m pretty new at this whole budgeting thing.

I can already see a huge difference in my credit card bills.  Each month, I would typically have $2500 – 3000 in credit card bills to pay.  This month?  About $2000.  That’s huge!  I would have normally spent another 500-1000, mostly on stuff that I don’t need.  This is what can happen when you are paying close attention to your budget.

I plan to update my blog again at the beginning of next month.  Here’s to hoping that my budget didn’t get blown, and I actually do end up with a little savings started up.

June 1, 2013 at 12:19 am 1 comment


June 2013

Posts by Month

Posts by Category