josephbales.com
2024-03-02T15:47:05+00:00
https://josephbales.com/
Copyright © 2024 . All rights reserved.
Experience with a Local Business
2024-03-02T00:00:00+00:00
https://josephbales.com/blog/2024/03/02/more-advice-for-local-businesses
I have recently had some work done around my house and I have to say that I am quite disappointed in the quality of the work that was performed. This was perhaps my own fault because I only got one bid for the actual work that was performed, but in...
<p>I have recently had some work done around my house and I have to say that I am quite disappointed in the quality of the work that was performed. This was perhaps my own fault because I only got one bid for the actual work that was performed, but in my own defense only two of the places I called even responded to me and only one, the one that did the work, actually gave me a bid.</p>
<p>The issue at my house was that I had water ponding in my back yard. I am not a grading expert, so I felt I should call in a professional to perform this work, lest I make the issue worse. The company owner came out and told me what they’d be doing and upsold me a gravel driveway renovation as well. I was given a quote, told I would need to pay half up front for the work and that the work would probably only take one or two days.</p>
<p>On the first day of work a team showed up in the morning and started work right away. By the end of the day they had dug out all the places that they would be placing drain pipes. Since I work from home I was able to monitor their progress a bit and noticed that no transit was ever used and nothing was ever staked off. I would have thought that would be the first thing done when grading, but I thought maybe that would come later since the first day seemed to be just about prepping the drainage system.</p>
<p>On the second day they came back out and worked most of the day. Before they even arrived a gravel truck showed up and asked where he needed to dump his load of gravel. He said he would dump it out of the way, but then proceeded to dump it right in the middle of the work area and left. I called the contractor and told him about this and he said not to worry that his guys would move the gravel out of their way so that they could complete their work. They arrived about an hour later and worked about 5 hours. I was busy with work that day and didn’t really get much opportunity to step away and check what they were doing.</p>
<p>They left around 3pm that day and when I went to check on things a couple hours later, several things had gone wrong. They had not made one of the drain pipes flush with my house and had disconnected the down spout from the house and bent it out to fit. Part of the driveway renovation was to be that the vegetation would be removed and the new gravel would then be placed on the ground. They did not do this and instead just put the gravel over the vegetion with vegetation sticking up through the gravel. Their skid steer driver had hit my garage and bent the siding in one spot and had also run over an antenna mast I had laid in the back yard well out of what I thought would be the work area, bending it to the point that it was no longer usable. There were also skid steer ruts all over my yard and all of the dirt that was left over was not spread into low lying areas of the yard as the owner and I had discussed, but were put in areas of the yard that I thought would not be touched.</p>
<p>I informed the owner of these issues via email, with pictures, and he responded that his crew was not done and they would come back out and fix everything. The next day they did come out and fix some of the issues and laid down a hefty layer of straw and seeded what they had done. They said someone would come back later and fix the driveway and finish up. Then later on an electrical contractor came out to hook up the sump pump. Instead of hard wiring it like I was told it would be done, they installed a plug and ran wire over the top of the ground with conduit only partially protecting the wire. These contractors were also drunk when they came back from lunch.</p>
<p>Then it rained for a day or two. I noticed that the water was still ponding in my back yard, perhaps more than before and I noticed that the ground did not even slope down towards the drains that had been installed. I once again informed the contractor of this and told him I could see a big hump of dirt preventing the water from draining (it had been hidden by the straw). He said they would come back out and fix it when they came to fix the driveway.</p>
<p>When they came to do the fixes, I did keep and eye on them much more closely. They did do the driveway as expected, although the skid steer driver hit my garage again, but at least this time he told me when he did it. I also overheard them talking about what other work needed to be done and they just said exactly what I had written in my email to do, so it was clear they didn’t really know what they were doing, they just were doing what I said to do in the email.</p>
<p>After they left I was pretty done with the whole situation. The work is amateur at best. The yard is still not graded, with ruts and humps and low spots still existing. The water does seem to be flowing to the drains, so at least that part “works”, but I haven’t have a hard rain to really know if it is fixed or not. Looking at the drains, they are not level and look pretty bad. The driveway is okay, but the gravel they used is gravel for grading driveways, not really a very good surfacing material, which I didn’t know when I signed the contract.</p>
<p>I paid what was invoiced to me and told the contractor that I considered the work complete. I mostly wanted them gone from my property, because even though I was not satisfied with the work, I do not think that they have the necessary skills to properly do the job. Ultimately if any additional work needs to be done, I will either do it myself or find a more diligent contractor to do it for me. Unfortunately, I am out of money right now, so any additonal work to be done that costs money will have to wait until I can replenish my reserves.</p>
Advice for Local Businesses
2023-10-15T00:00:00+00:00
https://josephbales.com/blog/2023/10/15/advice-for-local-businesses
Dear local businesses, First and foremost, thanks for being there. However, I do have some advice I’d like to throw your way. You need a website. Facebook and other social media pages just don’t cut it. The website is not a one time fixed cost, it’s an ongoing marketing expense....
<p>Dear local businesses,</p>
<p>First and foremost, thanks for being there. However, I do have some advice I’d like to throw your way.</p>
<ul>
<li>You need a website. Facebook and other social media pages just don’t cut it.</li>
<li>The website is not a one time fixed cost, it’s an ongoing marketing expense.</li>
<li>The website should be up to date, I recommend checking it at least once a month for accuracy.</li>
<li>Do not put a contact form or contact email on your site unless you plan to respond within 1 business day.</li>
<li>Do not put a phone number with voicemail on your site unless you plan to respond within 1 business day.
<ul>
<li>Delete old messages so that your voicemail does not fill up.</li>
</ul>
</li>
<li>List your preferred method of contact on the website.</li>
<li>List your business hours on the website.</li>
<li>List pricing or estimates on your website.</li>
</ul>
<p>Do these simple things and it can only help you grow.</p>
More De-Googling
2023-07-23T00:00:00+00:00
https://josephbales.com/blog/2023/07/23/more-degoogling
Way back in 2014 I wrote a post about no longer being a Google fanboy. Over the last 9 years I’ve waffled on this a bit. I briefly dipped my toe into the Microsoft ecosystem, but found it lacking (and it’s still lacking to this day). So I gradually drifted...
<p>Way back in 2014 I <a href="/blog/2014/05/17/why-im-no-longer-a-google-fanboy.html">wrote a post</a> about no longer being a Google fanboy. Over the last 9 years I’ve waffled on this a bit. I briefly dipped my toe into the Microsoft ecosystem, but found it lacking (and it’s still lacking to this day). So I gradually drifted back into the Google ecosystem for most of my needs.</p>
<p>Then last month, I learned that Google was doing away with yet another service that I really enjoyed, Google Domains. It’s where I had all my domains registered. It had very affordable prices and some good features like email forwarding that I used quite a bit. But Google did what they do best and they decided to get rid of it. At least this time they aren’t shutting it down completely, but are selling it to Squarespace. Since I have no interest in becoming a Squarespace customer right now, I decided to move my domains to another provider. After a brief and ironic Google search, I found what I was looking for in <a href="https://porkbun.com">Porkbun</a>.</p>
<p>This also got me to thinking about what else I can do to “de-Google” my life. Here are things I’ve started looking into that I’ve found some decent alternatives for:</p>
<ul>
<li><ins>Search</ins>: Google has been my main search engine since I abandoned Alta Vista (not kidding) over 20 years ago. I have briefly flirted with Bing and other search engines, but always manage to wind up back on Google. Recently I’ve made the switch to <a href="https://duckduckgo.com/">DuckDuckGo</a> and have no real complaints. I also use Chat-GPT for coding questions when I get stuck in that realm.</li>
<li><ins>Web browsing</ins>: Google Chrome has been my browser of choice since it’s release with a few steps back into the Firefox world throughout the years. Firefox is okay, but today I started giving <a href="https://brave.com/">Brave</a> a try. It’s Chromium based, so it gives me a lot of what I like in Google Chrome, without the Google part.</li>
<li><ins>Password management</ins>: This one has been a HUGE blocker for me in migrating away from Google. I really enjoy how seamless the Google password manager works across Chrome and Android and it has kept me locked into the ecosystem for a while. However, I started looking into other password managers and came across <a href="https://bitwarden.com/">Bitwarden</a>. It has a nice free tier that I’m trying out right now. It’s not as seemless as the Google password manager, but it seems to work well enough and there are others I can try if I’m not satisfied.</li>
<li><ins>DNS</ins>: I use the <a href="https://1.1.1.1">Cloudflare 1.1.1.1</a> DNS servers now instead of the Google public DNS servers. I’ve noticed no significant difference.</li>
</ul>
<p>Here are the things that I still need alternatives for if I wanted to completely de-Google.</p>
<ul>
<li><ins>Phone</ins>: There aren’t very many good alternatives here, it’s either Apple or Google when it comes to phones and most other things aren’t worth the trouble. That being said, I have considered looking into getting an iPhone as my next phone. I already have an iPad and generally enjoy using that and appreciate how it handles permissions. iOS also tends to get apps sooner than Android and they tend to be of better quality. So this is a maybe for the future.</li>
<li><ins>Document and file storage</ins>: I store a lot of files in Google Drive, mainly using it as archival, off-site storage. The only document I use regularly within Google Drive is my budget spreadsheet, and I’m currently writing an app to replace that. I should have no issues finding affordable off-site storage to replace Drive, I just haven’t gotten around to it yet.</li>
<li><ins>Photos</ins>: Google Photos holds all my photos right now. This probably falls in the same category as file storage, but I do enjoy that when I take photos, they are automagically synced to Photos without me having to do anything. I’ll have to look into alternatives that can give me that same functionality.</li>
<li><ins>Messaging</ins>: iMessage is platform dependent, needing a macOS or iOS device. Google’s messaging is platform independent. That being said, I rarely use this, so I could definitely do without it.</li>
<li><ins>Voice</ins>: I have a Google Voice number that I occassionally use for spam avoidance. Honestly, with this one I could probably just do away with it completely since no one of importance contacts me with the Voice number anymore.</li>
<li><ins>Maps</ins>: There are alternatives, but nothing quite as good that isn’t already owned by Google. Maybe Apple Maps if I switch to iPhone?</li>
<li><ins>Email</ins>: This one is the biggie that I just don’t see myself moving away from. There are many good alternatives out there and if Google suddenly did away with Gmail, there would probably be government investigations since it’s so widely used not only for email, but authentication as well. I’ll probably stick with this one until the bitter end.</li>
</ul>
<p>I’m sure I’m leaving some things out here, but the real point I’m trying to make is that Google’s abandonment of yet one more project really has me thinking about jumping ship on other things. And in thinking about it, I’ve discovered there are some pretty great alternatives and have started pulling the trigger on moving things over. And the more I move away, the less data Google can sell. Is that what they really want?</p>
Cleaning Up This Mess
2020-10-18T00:00:00+00:00
https://josephbales.com/blog/2020/10/18/cleaning-up-this-mess
Part One Oh wow, nearly another whole year has passed since my last blog post. If you are an infrequent visitor you may have noticed that I’ve simplified the design of the site quite a bit. For several years this blog has been sporting a Bootstrap based theme. While bootstrap...
<h3 id="part-one">Part One</h3>
<p>Oh wow, nearly another whole year has passed since my last blog post. If you are an infrequent visitor you may have noticed that I’ve simplified the design of the site quite a bit. For several years this blog has been sporting a <a href="https://getbootstrap.com/">Bootstrap</a> based theme. While bootstrap themes make things easier (especially when using something like <a href="https://bootswatch.com/">Bootswatch</a> hosted from a <a href="https://en.wikipedia.org/wiki/Content_delivery_network">CDN</a>), it also adds a lot of overhead for what amounts to eye candy. While eye candy has its place, that place isn’t on the personal web site of a developer. I’m taking my inspiration from such famous developers as <a href="http://stallman.org/">Richard Stallman</a> and <a href="https://www-cs-faculty.stanford.edu/~knuth/">Donald Knuth</a>.</p>
<p>While the argument could be made that these are a couple of old school developers who haven’t bothered, either intentionally or unintentionally, to keep up with modern design concepts, I do not think that is a valid argument because of one thing, content is king. Content was originally what the web and the internet in general were all about. No one is really coming here to see what new theme I’ve picked or the 2 hours I spent making it look “just so.” People come here to find out what I’ve being doing by reading about it in the content of these pages.</p>
<p>My real objective here was very simple. I wanted to have a web site that was extremely minimal when it came to styling and features and I wanted it to load so quickly that it would seem almost instantaneous. I would say that my goal has been accomplished. There are almost no images that load on this site. There are no fonts. There are no cookies or other forms of client side storage taking place. There are no CSS files that load from a CDN. Everything is hosted locally in static HTML and CSS files, and that’s it.</p>
<p>You’ll also notice that there is no javascript running on this site. I even removed the javascript that I was using to track visitors to this site via Google Analytics. I did this for two reasons. The first reason is that I noticed that my <a href="https://pi-hole.net/">Pi-hole</a> blocks Google Analytics, thus making it unreliable considering a good number of people run ad and tracking blocking software. The second reason is that I think internet privacy is important and I don’t want to track someone if they don’t want to be tracked and honestly, I don’t have any reason to track anyone.</p>
<h3 id="part-two">Part Two</h3>
<p>The other thing I’m working on cleaning up is the United States. The year is 2020 and we have a <a href="https://en.wikipedia.org/wiki/Donald_Trump">racist, bigoted, ignorant, misogynistic, authoritarian, man-child</a> running the country. He’s dangerously close to getting a second term in office. We are two weeks out from election day and I’m still holding my breath, waiting for an “October Surprise” to drop on his main opponent, <a href="https://en.wikipedia.org/wiki/Joe_Biden">Joe Biden</a>. While Biden was not my first, second, third, or fourth choice to be President, he’s the candidate we have that has the highest chance of beating Donald Trump, so he is who I will vote for. While many polls show Biden in the lead at this point, it’s a very slim margin and some of the polling organizations like Rassmusen and Trafalgar that predicted Trump’s 2016 win are showing Trump leading in several critical states. It’s a toss up at this point.</p>
<p>Even if we successfully remove Trump from office, it’s still not going to clean things up. We will have to hold whoever the next President is to a higher standard and work hard to get them to start making government work for the largest portion of people that it governs.</p>
Two+ Years of Updates
2019-12-05T00:00:00+00:00
https://josephbales.com/blog/2019/12/05/Two-Years-of-Updates
Wow, time really flies when you’re having fun. It’s been over two years since my last update, so let’s see how some of the things I’ve talked about in the past have evolved.. er.. intelligently designed? Regarding career politicians in Tennessee, two out of three career politicians in Tennessee are...
<p>Wow, time really flies when you’re having fun. It’s been over two years since my last update, so let’s see how some of the things I’ve talked about in the past have evolved.. er.. intelligently designed?</p>
<ul>
<li><a href="/blog/2013/04/21/primary-challengers-wanted.html">Regarding career politicians in Tennessee</a>, two out of three career politicians in Tennessee are still in office.</li>
<li><a href="/blog/2013/05/10/sc-01-have-you-no-shame.html">Regarding Mark Sanford</a>, turns out SC-01 <strong><em>does</em></strong> have some shame.. <a href="https://en.wikipedia.org/wiki/Mark_Sanford#2018">5 years later</a>.</li>
<li><a href="/blog/2013/05/26/webs-dead-baby-part-1.html">Regarding the interwebs</a> , it’s still dead, despite this very blog post.</li>
<li><a href="/blog/2014/05/17/why-im-no-longer-a-google-fanboy.html">Regarding the Googles</a>, I waffle on the Google fanboy stuff. I wouldn’t say I’m a fanboy of Google, but I still use Gmail and Docs. They’re damn convenient.</li>
<li><a href="/blog/2014/12/08/the-purpose-of-twitter-bootstrap.html">Regarding Bootstrap</a>, if you’re using <a href="https://angular.io">Angular</a>, do yourself a favor and use <a href="https://material.angular.io">Angular Material</a> and skip bootstrap.</li>
<li><a href="/blog/2017/01/13/NET-Core-1.0-Not-Ready-for-Primetime.html">Regarding .NET Core 1.0</a>, .NET Core 2.1 and later are officially ready for primetime and getting better every day.</li>
</ul>
<p>So what’s new? I got divorced and now I am living by myself in a one bedroom apartment in Nashville, TN that costs twice what it did 10 years ago. Progress?</p>
.NET Core 1.0 Not Ready for Primetime
2017-01-13T00:00:00+00:00
https://josephbales.com/blog/2017/01/13/NET-Core-1.0-Not-Ready-for-Primetime
<rant> Well, I just spent two hours of my life getting a project running that was already working on another PC. I’m so fed up right now that I don’t really want to work on the actual project. It is an ASP.NET Core 1.0 project that I’ve been working on...
<p><code class="language-plaintext highlighter-rouge"><rant></code></p>
<p>Well, I just spent two hours of my life getting a project running that was already working on another PC. I’m so fed up right now that I don’t really want to work on the actual project. It is an ASP.NET Core 1.0 project that I’ve been working on a few minutes at a time for the past couple of months. I’ve made so little progress that when I started running into trouble I thought about just creating a new project from scratch and copying over the files. But without a guarantee that the new project would work I decided that was not a very good solution.</p>
<p>It’s actually been a few months since I’ve messed with the project. It builds and runs on my laptop, but I just built a new desktop computer and I have been doing most of my work on it, so I wanted to get the project going. I cloned it to the machine, restored the packages, and immediately ran into problems.</p>
<p>The first thing I ran into was that the .Net Core SDK doesn’t get installed with Visual Studio 2015, mmmmkay. I installed that. Then the project won’t build. Turns out there were some new packages I needed that didn’t get included in my project.json, so I added those. Mind you this is the same project.json file that worked fine on my laptop. Then I spent several minutes figuring out how to get the <code class="language-plaintext highlighter-rouge">dotnet user-secrets</code> command working. This one was also a missing reference in my project.json. This also didn’t work on the laptop although it must have at some point in the past, otherwise I would not have been able to add my secret keys to it.</p>
<p>I re-ran across the problem where if you are running the project with IIS Express and SSL in debugging mode, it won’t work until you create the self-signed certificate. It doesn’t throw an error or anything, the page just never loads. Using CTRL+F5 to start the project will get the pop-up you need to create the cert.</p>
<p>Finally, I ran across a bug where EF migrations can’t deal with the boilerplate code created for use with Microsoft Identity. I had to go in and manually edit the migration code to give some fields maxlengths so that they could be used as indexes. Crazy.</p>
<p>So far my experience with .NET Core has just been one thing after another like this. The tooling is standing in the way of my coding. Honestly I’m not even sure why they released .NET Core 1.0 while the tooling was still officially in preview. I mean, the tooling is still in preview 3 months later and still seems to need some work.</p>
<p>I like the ideas behind .NET Core, but I’m thinking it has been a bit rushed. One of the things that really sets the Microsoft stack apart from others is how solid and cohesive it has been. I hope they can pull this shit together and get it shored up in the next few months.</p>
<p>Also, while I’m ranting about Microsoft products, let me just say that their sculpt keyboard and mouse combo is not great. You can check out my review at <a href="https://www.amazon.com/gp/customer-reviews/R207405EDO9X04?ref_=cm_cr_arp_d_rvw_ttl&ASIN=B00CYX53QW&pldnSite=1">this link</a>.</p>
<p><code class="language-plaintext highlighter-rouge"></rant></code></p>
MVCGrid.Net
2016-12-12T00:00:00+00:00
https://josephbales.com/blog/2016/12/12/Free-Grid-Sorting-in-ASP.NET-MVC-5
I didn’t want an entire year to go by without writing a post, so I thought that I would talk a little bit about a neat little tool I found for displaying grid data in ASP.NET MVC 5 projects. It’s called MVCGrid.Net. I say “neat little tool,” but it’s actually...
<p>I didn’t want an entire year to go by without writing a post, so I thought that I would talk a little bit about a neat little tool I found for displaying grid data in ASP.NET MVC 5 projects. It’s called <a href="http://mvcgrid.net/" title="MVCGrid.Net">MVCGrid.Net</a>. I say “neat little tool,” but it’s actually quite powerful now that I know more about how to use it.</p>
<p>For styling it uses <a href="http://getbootstrap.com/" title="Bootstrap">Bootstrap</a> so that makes it easy for me since I already use Bootstrap for basic styling. It also includes a DLL where most of the magic happens and the configuration happens in a <code class="language-plaintext highlighter-rouge">MVCGridConfig.cs</code> file that you include in your <code class="language-plaintext highlighter-rouge">App_Start</code> folder.</p>
<p>It allows all kinds of automagic functionality like sorting, paging, filtering, and exporting. You can also allow customized fields and page sizes. A lot of this stuff is built in, but you can also write your own rendering engine and razor templates that will allow you to do whatever it is you want.</p>
<p>One page that might get overlooked in the documentation is the Custom Razor View page. It doesn’t have a direct link on the documentation table of contents. It’s actually buried in one of the other pages, but here’s the <a href="http://mvcgrid.net/demo/customrazorview" title="Link to Custom Razor Views">link</a>.</p>
<p>The best thing is that it is free, open source (using the MIT license), and fairly well documented. Check it out if you are in need of something to help you get sortable grids up and running quickly in ASP.NET MVC 5.</p>
Error converting data type DBTYPE_DBTIMESTAMP to datetime2
2015-09-15T00:00:00+00:00
https://josephbales.com/blog/2015/09/15/error-converting-data-type-dbtype_dbtimestamp-to-datetime2
Okay, so here is a post that has been months in the making. Lately I’ve been working on an ETL project, mostly the E and T parts. The project involves exporting data from a database via an ODBC driver (AcuODBC to be exact). I don’t have any control over the database being accessed other...
<p>Okay, so here is a post that has been months in the making.</p>
<p>Lately I’ve been working on an <a href="https://en.wikipedia.org/wiki/Extract,_transform,_load" target="_blank">ETL</a> project, mostly the E and T parts. The project involves exporting data from a database via an <a href="https://en.wikipedia.org/wiki/Open_Database_Connectivity" target="_blank">ODBC</a> driver (<a href="http://supportline.microfocus.com/Documentation/AcucorpProducts/docs/v6_online_doc/acuodbc/acuodbct.htm" target="_blank">AcuODBC</a> to be exact). I don’t have any control over the database being accessed other than being able to extract data and neither the client nor I have much knowledge of how the database actually works. For my part I just know that I can access it via the AcuODBC driver.</p>
<p>I am using .NET and C# to do the data extraction and translating, but I’ve run into an issue on several tables that has perplexed me for some time. It is the error message that I’ve used as the title of this post:</p>
<p><code class="language-plaintext highlighter-rouge">Error converting data type DBTYPE_DBTIMESTAMP to datetime2.</code></p>
<p>No matter how I was trying to get at the data, I kept getting this error. I tried <a href="https://msdn.microsoft.com/en-us/library/ms187928.aspx" target="_blank">CAST and CONVERT</a> SQL commands. I tried <a href="https://msdn.microsoft.com/en-us/library/ms162802.aspx" target="_blank">BCP</a>. I tried using <a href="https://msdn.microsoft.com/en-us/library/ms188029.aspx" target="_blank">SELECT INTO</a>. I tried <a href="https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx" target="_blank">SqlBulkCopy</a>. I finally got all the way down to using an <a href="https://msdn.microsoft.com/en-us/library/system.data.odbc.odbcdatareader(v=vs.110).aspx" target="_blank">OdbcDataReader</a> object to try to move the data, but I kept getting the error when I used <code class="language-plaintext highlighter-rouge">reader[index].ToString()</code> to access the data.</p>
<p>But then I noticed there was a method called <a href="https://msdn.microsoft.com/en-us/library/system.data.odbc.odbcdatareader.getstring(v=vs.110).aspx" target="_blank">GetString</a> in the OdbcDataReader object. I tried it and by golly it worked! (If you have been wondering what the cause of this error has been all along, it is an invalid date that was entered into the database with the year 0000). Yes, it worked, but it worked sloooooooow. Veeeeery slow. It was processing about 2 records per second, which isn’t too bad until you scale that up to over 1.1 million records. The time to extract just that one table would be over 6 days! That would not do.</p>
<p>I sat on it for a few days and thought about all the potential solutions. I could bulk copy all the rows except the ones in question, but then I’d have to go through each table and find the culprit(s) and write special select statements to exclude those rows, then special select statements to grab those rows minus the offending fields. Then I’d have to update my table with the omitted records. Not something I really wanted to do.</p>
<p>Then today I noticed that when I used the <code class="language-plaintext highlighter-rouge">reader[index].ToString()</code> method to get the data, it came out at a much faster, more acceptable speed. Okay, so what if I wrap that in a try block and then in the catch block I use the slower GetString method? If that worked then only the offending data would get extracted using the slow GetString method and everything else would use the other method. And what do you know, it DID work! Here’s the code for posterity (yeah, I’m stripping out all the new lines and spaces).</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">while</span> <span class="p">(</span><span class="n">reader</span><span class="p">.</span><span class="nf">Read</span><span class="p">())</span>
<span class="p">{</span>
<span class="kt">string</span> <span class="n">line</span> <span class="p">=</span> <span class="s">""</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="n">fCount</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span>
<span class="p">{</span>
<span class="k">try</span>
<span class="p">{</span>
<span class="n">line</span> <span class="p">=</span> <span class="n">line</span> <span class="p">+</span> <span class="n">reader</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="nf">ToString</span><span class="p">().</span><span class="nf">Trim</span><span class="p">().</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"\n"</span><span class="p">,</span> <span class="s">""</span><span class="p">).</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"\r"</span><span class="p">,</span> <span class="s">" "</span><span class="p">)</span> <span class="p">+</span> <span class="s">"\t"</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">line</span> <span class="p">=</span> <span class="n">line</span> <span class="p">+</span> <span class="n">reader</span><span class="p">.</span><span class="nf">GetString</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="nf">Trim</span><span class="p">().</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"\n"</span><span class="p">,</span> <span class="s">""</span><span class="p">).</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"\r"</span><span class="p">,</span> <span class="s">" "</span><span class="p">)</span> <span class="p">+</span> <span class="s">"\t"</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
Setting up Apache Virtual Hosts on FreeBSD 10.1
2015-04-03T00:00:00+00:00
https://josephbales.com/blog/2015/04/03/setting-up-apache-virtual-hosts-on-freebsd-10-1
I’ve been messing around on DigitalOcean with a FreeBSD 10.1 droplet. First let me say that FreeBSD is awesome. The thing that I like the most about the BSDs is that they don’t beat about the bush when it comes to making an OS because the purpose of each BSD is the...
<p>I’ve been messing around on <a title="The DigitalOcean website" href="http://digitalocean.com" target="_blank">DigitalOcean</a> with a <a title="FreeBSD website" href="http://freebsd.org" target="_blank">FreeBSD</a> 10.1 droplet. First let me say that FreeBSD is awesome. The thing that I like the most about the BSDs is that they don’t beat about the bush when it comes to making an OS because the purpose of each BSD <em>is</em> the OS. My main comparison is to Linux based OSes, which are awesome in their own way, but feel a bit splintered. With the BSDs it’s not just a kernel with a bunch of GNU apps thrown at it to make it usable, they take great pains to produce a complete OS. So when I need to know how to do something on FreeBSD, there’s probably already a darn good document out there with detailed instructions. Hell, you rarely have to go outside the FreeBSD manual unless you’re doing something really complex. It just works and that’s great!</p>
<p>Now on to why I’m writing this post. I was wanting to set up Apache on my FreeBSD 10.1 machine to serve up 3 different websites. In the Apache world this is called Virtual Hosts. So let us say that we have 3 different addresses, but only one IP, now what? Virtual Hosts, and specifically Named Virtual Hosts. Configuration is dead simple.</p>
<p>First, locate your httpd.conf file. The Apache configuration file has a lot of names on various different Linuxes, but on FreeBSD it’s just httpd.conf and it is located at /usr/local/etc/apache24/httpd.conf. Open that file and go all the way to the bottom.</p>
<p>Second you will need to add in VirtualHost entries for each of your sites. You’ll also need to include one for the default IP address of the machine, otherwise it will point to the first VirtualHost entry.</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><VirtualHost</span> <span class="err">*:80</span><span class="nt">></span>
ServerName 127.0.0.1
DocumentRoot /usr/local/www/apache24/data
<span class="nt"></VirtualHost></span>
</code></pre></div></div>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><VirtualHost</span> <span class="err">*:80</span><span class="nt">></span>
ServerName example1.com
DocumentRoot /usr/local/www/apache24/data/example1.com
<span class="nt"></VirtualHost></span>
</code></pre></div></div>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><VirtualHost</span> <span class="err">*:80</span><span class="nt">></span>
ServerName example2.com
DocumentRoot /usr/local/www/apache24/data/example2.com
<span class="nt"></VirtualHost></span>
</code></pre></div></div>
<p>The first line of each listing tells Apache that this is a VirtualHost entry and that it should listen to any incoming requests (the star) on port 80. The ServerName line tells Apache the name to look for for that particular entry. If a request comes in for example1.com, then the second entry above will be used. The first entry will be used if someone just types in the IP address of the server (assuming that 127.0.0.1 is the IP). The DocumentRoot line tells Apache where the files for that site are located. I tend to create a new folder for each site in the main document root folder so that all my sites are in a common place. The last line closes the listing.</p>
<p>Once you’ve edited your file, simply write it out and restart the Apache service to pick up the new settings.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo service apache24 restart
</code></pre></div></div>
<p>And it’s that simple! For more detailed documentation on Virtual Hosts you should read the official <a title="Apache Virtual Hosts documentation link" href="http://httpd.apache.org/docs/2.4/vhosts/" target="_blank">Apache documentation</a>. Have fun with it!</p>
The purpose of Twitter Bootstrap
2014-12-08T00:00:00+00:00
https://josephbales.com/blog/2014/12/08/the-purpose-of-twitter-bootstrap
Okay, so I rarely make websites or blog anymore. I’ll admit that I’ve fallen a bit out of touch with regard to the latest and greatest web technologies. But I’ve surprised even myself in the amount of time it has taken for me to understand Bootstrap. In case you didn’t...
<p>Okay, so I rarely make websites or blog anymore. I’ll admit that I’ve fallen a bit out of touch with regard to the latest and greatest web technologies. But I’ve surprised even myself in the amount of time it has taken for me to understand <a title="Twitter Bootstrap" href="http://getbootstrap.com" target="_blank">Bootstrap</a>.</p>
<p>In case you didn’t know, Bootstrap is a web framework. No, I wouldn’t go that far. It’s more like a web layout framework. Bootstrap helps take your dowdy, old site and make it look like something a professional web designer might throw together in an afternoon (this is a compliment to web designers from someone who couldn’t design their way out of a wet paper bag).</p>
<p>So the thing that has really eluded me when it comes to Bootstrap is the power. What power is this? What power could there possibly be in a glorified style sheet?</p>
<p>The power comes not from what Bootstrap does, it comes from what I don’t have to do (and this is the part that took me so long to figure out). I don’t have to write style sheets anymore. That’s it. But whoa, THAT’S IT! I used to spend HOURS (days even) tweaking this and nudging that, opening the <a title="The Gimp!" href="http://www.gimp.org/" target="_blank">Gimp</a> and doing a little on the fly editing, reading <a title="Pretentious" href="http://alistapart.com/" target="_blank">A List Apart</a> and <a title="Nerd cred quantified." href="http://stackoverflow.com/" target="_blank">Stack Overflow</a>.</p>
<p>Now when I build a site I vow to do as little of that crap as possible. Now I’m going to use Bootstrap for what it was intended: to leave the style to designers and let the blogger/developer blog and develop.</p>
Why I'm no longer a Google fanboy
2014-05-17T00:00:00+00:00
https://josephbales.com/blog/2014/05/17/why-im-no-longer-a-google-fanboy
I used to be a Google fanboy (my wife is still a Google fangirl). I used to sing their praises and recommend their software and services to anyone who asked for the slightest computer advice. But lately I’ve been rethinking my stance on Google and have started moving in other...
<p>I used to be a Google fanboy (my wife is still a Google fangirl). I used to sing their praises and recommend their software and services to anyone who asked for the slightest computer advice. But lately I’ve been rethinking my stance on Google and have started moving in other directions.</p>
<p>So what did Google do that has put me off? They started sucking at what they used to do best. We’ve known all along that Google’s products are NOT it’s services, but it’s users. Their massive user base and associated user data is where they make the big bucks. They amassed this data by tricking us users into giving it to them and the profit margins are astonishing because we give them all of that information without being compensated one red cent. It is not this fact that put me off. Quite the contrary, it is one hell of a business model. The thing that has put me off is that they aren’t able to trick me into giving them my information for free anymore.</p>
<p>What do I mean by this? The way they tricked me in the past was to give me some pretty great software and services. The problem now is that I can’t remember the last time they tricked me into using a new product. They have tons a new stuff coming out, but I’m not using it. Google+ is a flop and if the <a href="http://arstechnica.com/gadgets/2014/04/report-google-to-end-forced-g-integration-drastically-cut-division-resources/" target="_blank">rumors</a> are true they may finally be axing it. They killed the much loved Google Reader without even a reach around and that in turn has greatly reduced my blog readership (and writership for that matter). And the changes they are making in Android, Chrome, Apps, YouTube, and other services are more often than not making those services worse rather than better.</p>
<p>One thing I’ve noticed is that Google has become much more invasive and forceful in their efforts. In the past they were nice enough to allow us to customize their services and software and keep things the way we wanted them to be and allowed you to share content across multiple platforms. Now they are moving more towards the Apple approach where they are locking you into a certain ecosystem and locking you into the feature set they want you to have. They are changing things for the sake of their ecosystem and not for the reasons of customer feedback or improved feature sets.</p>
<p>My main issue lately is a growing distrust in their reliability. It really started with the aforementioned killing off of Reader. They had killed other services before Reader, but Reader was the first one that really affected me. I used to have a set of about 25 blogs that I read on a regular basis, but when Reader went, I couldn’t find a good replacement that worked like I wanted it to work. So now I no longer read blogs. The outcry was great from the community of Reader users, but those cries were left unheard. Now I hear that cry in the back of my mind every time I use a Google service. I think, “When will Google become tired of this service and remove it?”</p>
<p>So I’ve decided to try to become much less reliant on Google services. I’ve already given up on Chrome and replaced it with Firefox. At some point I would like to replace my Android phone with a Windows phone, but that’s probably a few years down the road (if Windows phone is still there). I now use Bing for most of my searching. The main services I use beyond that are Google Play for my music collection, Google Docs, Google Calendar, and Gmail. I’m not sure where I could put my music collection that is accessible as it is on Google Play, but there are multiple alternatives to Docs, Calendar, and Gmail and I am already exploring those. If you have any suggestions on replacements, feel free to contact me.</p>
<p>I don’t want this blog to become Google bashing central and my intent is not to bash Google. As a company Google is no better or worse than any other large corporation. I’m simply stating what my issues with Google are and why I am personally trying to move in another direction. The simple fact is they just aren’t capturing my enthusiasm anymore.</p>
Deleting Your Google Apps for Your Domain Account
2013-11-29T00:00:00+00:00
https://josephbales.com/blog/2013/11/29/deleting-your-google-apps-for-your-domain-account
Okay, I spent about an hour trying to figure this out and finally did it. Google does not make deleting information easy because that information is their product. So the documentation about this particular subject is very sparse and ultimately I got what I needed from a obscure post in...
<p>Okay, I spent about an hour trying to figure this out and finally did it. Google does not make deleting information easy because that information is their product. So the documentation about this particular subject is very sparse and ultimately I got what I needed from a obscure post in one of Google’s product forums. I’m posting this here for posterity.</p>
<p>First let me start with how I ended up with a Google Apps account. Several years ago I was going on the road for a while and decided to manage my domain through <a href="http://wordpress.com" title="Wordpress" target="_blank">Wordpress.com</a>. One of the features that Wordpress offered was integration with Google Apps. I was a big fan of Gmail at the time, so I signed up so that I could manage my josephbales.com email addresses in Gmail. I set up one address and forgot about it for 5 years.</p>
<p>Fast forward a few years. I’ve decided that in light of recent events that Google isn’t the coolest anymore. I’m still sticking with them for the moment, but I wanted to make sure I had full control of my own domain and email accounts and that none of that information was connected to a Google product.</p>
<p>When you search for instructions on how to delete your Google Apps account you get <a href="https://support.google.com/a/answer/1257646?hl=en" target="_blank">this url</a> as the first result in Google. These instructions are great for anyone who has been actively administering their Google Apps account. However, if you set your Google Apps account up in 2007 and promptly forgot about it, a few things have changed and these instructions are worthless.</p>
<p>The real key is figuring out what the administrative user for the account is. If you just have one user, it may not be that user which was what was happening in my case. The admin user is admin@your-domain.com or possibly superuser@your-domain.com (where your-domain.com is your actual domain). The user “admin” worked for me. Instead of signing in as my normal user, I signed in as admin and was able to follow the instructions for the search results I mentioned above. It might help to do this in Privacy Mode in whatever browser you happen to be using, just to make sure browser cookies are not accidentally logging you in as someone else. Hope this helps all you people out there.</p>
Web’s Dead, Baby: Part 2
2013-06-12T00:00:00+00:00
https://josephbales.com/blog/2013/06/12/webs-dead-baby-part-2
Well, now that I’ve made you wait a couple of weeks to tell you why the Web is dead, I guess it’s time to disappoint (nothing can live up to that amount of hype). As my one piece of evidence I present this link. Go ahead, look at it. I’ll...
<p>Well, now that I’ve made you wait a couple of weeks to tell you why the Web is dead, I guess it’s time to disappoint (nothing can live up to that amount of hype). As my one piece of evidence I present <a href="http://sachachua.com/blog/2013/05/how-to-learn-emacs-a-hand-drawn-one-pager-for-beginners/" target="_blank">this link</a>. Go ahead, look at it. I’ll wait.</p>
<p>…</p>
<p>So, what did you think? If you were thinking, “What the hell is Emacs?” you missed the point. I wanted you to look at the design of the page. In fact, you can check out <a href="http://sachachua.com/blog/2013/05/how-to-make-a-hand-drawn-highlighted-web-page-header/" target="_blank">this link</a> to see the time and effort that went into that design. I’ll wait.. again.</p>
<p>…</p>
<p>Okay, you done? Good. What did you think? Don’t answer, that was rhetorical (and people sitting near you will think you’re crazy for talking at the computer). I’ll tell you what I think. It’s glorious. It’s a fine piece of web design. That hand drawn look is very cool and the overall design is simple and easy to read. The fonts are great and I really admire the thought, time, and artistry that went into creating it. Now look at this image (click or touch for a larger version):</p>
<p><a href="https://josephbales.com/assets/sacha_chua_screenshot.png"><img src="https://josephbales.com/assets/sacha_chua_screenshot.png" alt="sacha_chua_screenshot" width="168" height="300" class="alignnone size-medium wp-image-1062" /></a></p>
<p>This is how that website looks on a mobile browser. Specifically, that’s how it looks on Chrome for Android on my Galaxy S3. So that great design, gone. The artistry, gone. Everything that made that sight design unique and interesting, gone.</p>
<p>“But Joey, the content is still there and surely that is what’s most important.” Yes, I know. Bear with me. It’s not just the mobile browsers, it’s the news aggregators that have been chipping away as well. Google Reader (now defunct), Feedly, whatever you want to use, they all strip the style of a site and just serve up the content. I’m old school and even though I’ve used Reader, even I have to admit that that it stripped away the context, the feel that the author intended to convey when they designed their site. Also, it makes it much easier to just go to your news aggregator and have things served up to you that you’ve previously subscribed to. Pretty soon, that’s all you’re looking at and the wider web is not within your walls.</p>
<p>Speaking of walls, here comes the real web killer. The thing that is making the web the long lost child that everyone has forgotten. Apps. APPS!!!! Apps are creating walled gardens of content. Instagram instantly comes to mind as an example. It’s pretty much a mobile only experience (at first an iPhone only experience). Sure they’ve added some web content in the past few months, but it’s just an afterthought, the only real way to see and interact fully is through an app.</p>
<p>Apps are putting up walls where the web had previously broke them down. Before the web, AOL, Prodigy, CompuServe, etc. all served up their own private content, and if you didn’t subscribe, you didn’t even have access to it. Apps are doing the same thing. To view and create content through certain services, you have to have their app. And some apps are iPhone only, or Android only, or only available on certain phone carriers. This isn’t progression, it’s regression. We are literally traveling back in time to the land of AOL and the private BBS.</p>
<p>Sure, the web is still around, and it will be for years and years to come, but it’s dead. Like magma that has cooled and solidified, the web sits and awaits its fate. And the freedom and the openness of the web? They’re slipping away too. The time when all you needed was a browser window to look into the vastness of all human intellect is fading into history. So when your grandkids ask you what the web was, you’ll just tell them, “<a href="http://youtu.be/y7Yp2L6c2KM" target="_blank">The Web’s dead, baby. The Web’s dead.</a>”</p>
Web’s Dead, Baby: Part 1
2013-05-26T00:00:00+00:00
https://josephbales.com/blog/2013/05/26/webs-dead-baby-part-1
Twenty two years is a good run for most technology these days. In fact it’s a phenomenal run. That’s how long the World Wide Web has been in existence. But I’m here today to tell you that the web as we know it is DEAD! (The irony of making this...
<p>Twenty two years is a good run for most technology these days. In fact it’s a phenomenal run. That’s how long the <a href="http://en.wikipedia.org/wiki/World_Wide_Web" target="_blank">World Wide Web</a> has been in existence. But I’m here today to tell you that the web as we know it is DEAD! (The irony of making this statement in a weblog post does not escape me.) What killed the web? How did it die? Is this the end of all things? Come close and I’ll tell you the story of the end of the web, but first, a little history.</p>
<p>The web has become synonymous with the <a href="http://en.wikipedia.org/wiki/Internet" target="_blank">Internet</a>. When people today talk about the Internet, they are talking about the World Wide Web (henceforth, I’ll just call it the web). But the Internet is actually more than just the web. It is a large network of computers that use a number of protocols and services to exchange information. <a href="http://en.wikipedia.org/wiki/Email" target="_blank">Email</a> is the prime example often given of a non-web Internet service, although it can now be accessed through the web. The Internet is more the connections between the computers than it is the content. Here are a list of some Internet services, both living and dead, that you might know.</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Usenet" target="_blank">Usenet</a> - This is the original Internet discussion forum. Thousands of Usenet groups were created for topics ranging from computing to German fetish porn. In fact the web was <a href="http://en.wikipedia.org/wiki/History_of_the_World_Wide_Web" target="_blank">first announced</a> on a group called alt.hypertext.</li>
<li><a href="http://en.wikipedia.org/wiki/Gopher_(protocol)" target="_blank">Gopher</a> - This is a (mostly) dead Internet service that was very similar to the early web. It was text based like the early web, but instead of <a href="http://en.wikipedia.org/wiki/Hyperlinks" target="_blank">hyperlinks</a>, it used numbered menus for navigation. (I am old enough to remember and have used Gopher. I actually preferred it to the web in my early Internet dealings.)</li>
<li><a href="http://en.wikipedia.org/wiki/Irc" target="_blank">Internet Relay Chat (IRC)</a> - Before Facetime, Hangouts, Skype, or even AIM and Yahoo Messenger, IRC was where people came to chat with other netizens (remember when that was a word?).</li>
<li><a href="http://en.wikipedia.org/wiki/Ftp" target="_blank">File Transfer Protocol (FTP)</a> - This was an early, and still in use Internet protocol for file sharing. In the days before <a href="http://en.wikipedia.org/wiki/BitTorrent" target="_blank">BitTorrent</a> and the Pirate Bay, anonymous FTP servers were where the pirates went to trade their <a href="http://en.wikipedia.org/wiki/Warez" target="_blank">warez</a>.</li>
</ul>
<p>Before the web these were the main services that were used on the Internet. They were all text based and text information was the main thing being shared on most of them. If you wanted a richer multimedia experience, early Internet consumers turned to services like <a href="http://en.wikipedia.org/wiki/AOL#History" target="_blank">America Online</a>, <a href="http://en.wikipedia.org/wiki/Compuserve" target="_blank">CompuServe</a>, and <a href="http://en.wikipedia.org/wiki/Prodigy_(online_service)" target="_blank">Prodigy</a>. They offered <a href="http://en.wikipedia.org/wiki/Walled_garden_(technology)" target="_blank">walled gardens</a> of multimedia content.</p>
<p>But then came the web. At first it was text based too, but multimedia was quickly added. With the advent of the graphical <a href="http://en.wikipedia.org/wiki/Mosaic_(web_browser)" target="_blank">Mosaic web browser</a>, then <a href="http://en.wikipedia.org/wiki/Netscape_Navigator" target="_blank">Netscape Navigator</a>, and finally <a href="http://en.wikipedia.org/wiki/Internet_Explorer" target="_blank">Internet Explorer</a>, the web took off like a rocket. Standards bodies were set up and mostly agreed upon and the golden age of the web began.</p>
<p>From the mid-90s to about the year 2000 the web grew at a tremendous rate, but after that the newness started to wear off. People began to wonder what was next for the web. In 1999 a new term was coined, <a href="http://en.wikipedia.org/wiki/Web_2.0" target="_blank">Web 2.0</a>. This term referred to the use of dynamic content on web sites (until that point most web content was just static content on a page). Web 2.0 allowed the web consumer to interact with content. We were on the verge of a new golden age, but there was a threat. After crushing Netscape Navigator in the <a href="http://en.wikipedia.org/wiki/Browser_wars" target="_blank">great browser wars</a>, Microsoft allowed it’s browser Internet Explorer to languish. Innovation ground to a halt and web developers spent most of their time writing around rendering errors in IE’s browsing engine. Finally, in 2003 a new web browser called Firefox rose from the ashes to challenge IE and allowed Web 2.0 to reach its full potential.</p>
<p>Okay, now the history lesson’s over. We get to the heart of it in Part 2!</p>
SC-01, Have you no shame?
2013-05-10T00:00:00+00:00
https://josephbales.com/blog/2013/05/10/sc-01-have-you-no-shame
For those of you living in South Carolina’s first congressional district, I have one question. Have you no shame? Mark Sanford’s re-election to his former post as your U.S. Representative would be laughable if it didn’t show the utter ignorance, hypocracy, and blind loyalty of 54% of the voters of...
<p>For those of you living in South Carolina’s first congressional district, I have one question. Have you no shame?</p>
<p><a href="http://en.wikipedia.org/wiki/Mark_Sanford" title="A Hypocrite's" target="_blank">Mark Sanford’s</a> re-election to his former post as your U.S. Representative would be laughable if it didn’t show the utter ignorance, hypocracy, and blind loyalty of 54% of the voters of that district. These results, combined with the 2012 re-election of TN-04 Rep. <a href="http://en.wikipedia.org/wiki/Scott_DesJarlais" title="Liar" target="_blank">Scott DesJarlais</a>, show that most people voting Republican are doing so strictly because there is an (R) behind the name on the ballot.</p>
<p>Let me break it down for you. Mark Sanford is a dirty liar. He took off on a trip to Argentina to see his mistress and told everyone he was hiking the Appalachian Trail. While he was governor… of a state. So if there had been an emergency like a tornado outbreak, terrorist attack, or tsunami, ol’ Mark would have had to span a quarter of the globe to get back home. This alone should have gotten him impeached (and it nearly did).</p>
<p>He’s a corrupt hypocrite too. On an earlier trip, he used state funds for his jaunt to Argentina. In his defense he did pay all that money back, but not until the scandal broke and a reporter dug it up. Additionally, <a href="http://www.cbsnews.com/stories/2009/08/09/politics/main5228211.shtml" target="_blank">he used state aircraf</a>t for other personal and political trips, including one to get a haircut… in violation of SC state law. So much for integrity and so much for fiscal responsibility (which is what he ran on in his most recent campaign).</p>
<p>This guy is a low down, despicable person who really needed to fade into obscurity and never be heard from again. For the life of me, I cannot fathom how in the world this guy even won his primary, let alone won his election.</p>
Primary Challengers Wanted
2013-04-21T00:00:00+00:00
https://josephbales.com/blog/2013/04/21/primary-challengers-wanted
I’m from Tennessee and if we know one thing, it’s how to create terrible, awful politicians. I’d love to see many of our local politicians voted out. Unfortunately, our populace is fairly uneducated and apathetic when it comes to politics. They are used to going into the voting booth and...
<p>I’m from Tennessee and if we know one thing, it’s how to create terrible, awful politicians. I’d love to see many of our local politicians voted out. Unfortunately, our populace is fairly uneducated and apathetic when it comes to politics. They are used to going into the voting booth and voting for a (D) or (R). The only real hope we have that awful people will get voted out is a primary challenge (or retirement, but nobody’s going to be doing us any favors there). Here are my top 3 <del datetime="2013-04-22T02:43:33+00:00">douche bags</del> problematic candidates that deserve a boot.</p>
<p>Problematic Candidate #1: Stacey Campfield. This guy is notorious not only in Tennessee, but in the nation as a whole. He’s probably most famous as the “<a href="http://www.huffingtonpost.com/2013/01/30/tennessee-dont-say-gay-bill_n_2582390.html" title="Don't Say Gay bill" target="_blank">Don’t Say Gay</a>” guy, but more recently he attempted to pass some welfare “reform” that would <a href="http://www.tennessean.com/article/20130412/NEWS0201/304110082/Sen-Stacey-Campfield-withdraws-welfare-bill-after-run-girl-protesters" title="Campfield's terrible welfare bill" target="_blank">reduce the benefits of parents whose children are not doing well in school</a>. Umm, there are about a billion things we can do to help those kids do better in school, but taking away what little money their family has coming in is not one of those things. In fact many children in such situations already have terrible home lives, and making them responsible for the income of the family is NOT something that is going to make school work any easier for them. He represents Knoxville in the Tennessee State Senate and he needs to GO! This is my official call to any Republican willing to take this guy on. As long as you aren’t an even bigger <del datetime="2013-04-22T02:56:22+00:00">douche bag</del> problematic candidate, I’ll do what I can to help you win your primary.</p>
<p>Problematic Candidate #2: Scott Dejarlais. Dr. Dejarlais (how he still has a medical license is beyond me) is just a hypocrite. This <a href="http://www.huffingtonpost.com/2012/11/15/scott-desjarlais-approved_n_2140171.html" title="Scott's bad things" target="_blank">pro-life, family values candidate</a> encouraged two ex-mistresses and his ex-wife to get abortions and also had multiple ethically questionable things going on in his medical career. Fortunately, the Tennessee Republicans were on top of this one as soon as the election (which he somehow won, proving that people indeed just vote for the party and not the candidate) was over. There are already several candidates lined up to give him a good primary challenge. I’ll be surprised if we see this guy back in Washington after the next election.</p>
<p>Problematic Candidate #3: Jim Cooper. Cooper is the TN-05 Representative in Washington. He runs as a Democrat, but his actions are more old Southern Democrat rather than the newer, more progressive Democrats we are used to. If a bill involves any kind of spending increase, Jim will vote against it, including <a href="http://www.nashvillescene.com/pitw/archives/2013/01/16/cooper-on-sandy-vote-i-hate-voting-with-the-republicans-but-congress-has-to-do-the-right-thing-for-the-country" title="Really?" target="_blank">Hurricane Sandy relief</a>. While Jim Cooper has been a target since at least <a href="http://www.salon.com/2009/09/25/various_matters_4/" title="Salon was working on it" target="_blank">2009</a>, no one has been able to mount a successful challenge to this Nashville Democrat’s name recognition juggernaut. Hell, even I held my nose and voted for him in the last general election despite a decent Green Party alternative. I’m not sure I will do that again. Since he basically votes Republican anyway, it wouldn’t really be any different having an actual Republican in the seat and might allow a real Democrat to step up in a following election.</p>