|
teqKnowledgy == Todd E. Qualls
|
Articles
|
|
Written by Todd E. Qualls
|
|
Wednesday, 10 October 2012 10:05 |
|
Yes, I'm a developer on the Microsoft platform. I don't love Microsoft, but I love to write code in C# and VB.Net. I love Visual Studio because it saves me *tons* of time. And then there's the real reason that I develop on MS technologies: it's what I know and therefore, it pays the bills.
But being a MS developer means making certain sacrifices in consideration for the productivity gains enabled by VS and the .Net Framework in general. My biggest gripe is seemingly esoteric. It is the absolute cluster-f$%^, that is deployment to a production server on an external host. In the Linux world, my Open Source dev brethren seem to have endless options for deployment: SCP, SSH, Rsync, Git, FTP, SFTP, FTP over SSH to name a few. I'm left with one one of those options, FTP. Actually it's not even fair to call it an "option." Calling something an "option" implies that I have, you know, *OPTIONS*. I don't. It's FTP. I'm FTP0wned.
Now, I'm fully aware that there there are technically other options, so don't tell me about Web Deploy Projects, Team Foundation Server or the Utopian dev dream of a VM with Git on it. Those are options that are not available to me for a variety of reasons. It basically comes down to the external host not offering those options. The client picked the host, and I'm stuck with it. But in the Windows web hosting world, even if I could change to another web host, I would likely still be FTP0wned...few hosts offer any alternative means to push files to their servers. It's FTP or nothing.
So here I sit waiting...hoping...praying that all of my files currently in transit to the great host in the sky actually make it across the wire. Oh...look...my transfer is complete: "Transfer complete but with errors. See log for details."
FTP makes me sad.
|
|
Last Updated on Wednesday, 10 October 2012 10:48 |
|
Articles
|
|
Written by Todd E. Qualls
|
|
Thursday, 19 July 2012 10:57 |
|
When working with another developer on the same app and working off of a localhost db, I get tired of having to change my connection string in web.config every time he changes his conn string to match his local environment (Note: the other dev has to follow this practice as well or this approach will not work).
So to avoid that, I use these two GitBash scripts to toggle the tracking of web.config. That way I only commit web.config when there are changes to the file other than dev conn string changes.
Now, you will get an error when you do a pull from the repo when the other dev has made substantive changes to the config file, if you are still running in the "ignore mode" set by ignore-config.sh script. However, just run commit-config.sh, tell git to commit your local changes and then do your pull from the repo again. You may get a merge conflict, so work through that as you normally would, commit your changes, then run ignore-config.sh again to stop tracking your config changes going forward.
|
|
Last Updated on Thursday, 19 July 2012 11:55 |
|
Articles
|
|
Written by Todd E. Qualls
|
|
Thursday, 19 July 2012 08:48 |
|
So for the last couple of months I have been getting these really helpful (not) SMS messages from MobiBroIQ, phone number 584-97.
Now, these messages sometimes come in at about 3:00 AM, so I'm usually not thinking very clearly at that hour. Even when the messages have arrived when I am awake and alert, I have completely ignored them thinking that they would eventually stop and that it wasn't worth the hassle of contacting AT&T over a few $.20 text messages. That's where I was wrong.
You see that part in the screen-grab about the $9.99/month. That's for real. I had been automatically subscribed to this bullshit service without any authorization on my part. After doing a little research, I found that this practice, called "cramming," is perfectly legal and that *all* the carriers have been complicit in this kind of scam for years. If you're not paying attention to your bill, you can rack up some serious charges. To avoid the automatic charges, you either have to opt-out by replying "STOP" each time you get the charge message, or you have to have a "premium SMS service" block on your account.
The latter solution is the one I have taken for all the lines on my account with AT&T. Once you have the block in place, you have to reply with a PIN in order for the charge to hit your bill. I will never ever do that and I am not even going to keep track of what my PIN is. I also asked for a credit for any of the charges that I have received on my bill.
I will say that the AT&T rep I worked with was actually very quick and helpful in putting this in place. However, the simple fact that the carriers allow cramming and in fact profit from cramming, shows a complete lack of respect for customers. It's no wonder that carriers are hated so much.
So take action today. Call your carrier and make sure you are not being charged for bullshit you did not authorize and demand a credit for any past or future charges.
|
|
Last Updated on Thursday, 19 July 2012 09:44 |
|
Open Source Projects
|
|
Written by Todd E. Qualls
|
|
Tuesday, 17 July 2012 16:45 |
|
If you're a web developer like me, you probably have a cadre of sites that you manage. When a client calls *you* to inform you that her site is down...that's bad. If you're using a shared hosting provider, downtime is inevitable, but your life is going to be much better if you know a site is down before she does.
Enter Pingaling. Pingaling is a very simple Windows command line tool that I created for checking to see if sites are up or down. If a site is down, Pingaling sends you a notification email and you can take corrective action if necessary. Set Pingaling to run as a frequent Windows System Task and you can fire and forget.
You can learn more about Pingaling on my GitHub project page.
|
|
Last Updated on Tuesday, 17 July 2012 16:59 |
|
Open Source Projects
|
|
Written by Todd E. Qualls
|
|
Monday, 16 July 2012 11:28 |
|
I started a new Open Source project a few weeks ago called "teqBlog."
The basic idea is for a blog tool that is fed images (and potentially text files) that get automatically posted to the blog site. I know that there are probably hundreds of other tools available for doing this sort of thing, but I wanted to do it myself. This project also uses the ASP.Net MVC design pattern rather than the traditional Web Forms approach. Since I am a complete MVC n00b, this gives me a chance to learn MVC with a real world project.
I'm also using the Entity Framework's "code-first" methodology to generate the database from my C# model, so that's another new piece of technology for me. I'm quite used to generating an EF model by using an existing SQL Server database, so this is quite a paradigm shift.
The problem I'm trying to solve is this: I want to upload a photo from my iPhone to a DropBox folder and then have that photo be automatically resized (made lower resolution). The photo will then either automatically appear on a blog, or else be available for later inclusion in the body of another post.
I've already got quite a few commits out on GitHub, so head on over to my project page if you want to learn more.
|
|
Last Updated on Monday, 16 July 2012 11:47 |
|
Articles
|
|
Written by Todd E. Qualls
|
|
Wednesday, 16 May 2012 09:24 |
|
As a follow-up to my post from last night, I thought it fair to mention that one of the responses to Jeff Atwood that I read via Hacker News led me to some incredible free and/or cheap online resources for aspiring programmers.
The author of the rebuttal, Zed Shaw, has produced several books on Python, Ruby, C and even general use of a command line interface (CLI) such as Unix/Linux bash and Windows PowerShell. I've already dived in myself and have decided to improve my skills with the CLI first and then move on to either Python or Ruby...or maybe C???
Maybe all three??? Yikes. I might be a real hakz0r after that.
All of the learning resources can be found at Zed's site at: learncodethehardway.org. Thanks for all the hard work, Zed.
|
|
Last Updated on Wednesday, 16 May 2012 09:43 |
|
Articles
|
|
Written by Todd E. Qualls
|
|
Tuesday, 15 May 2012 21:01 |
|
Jeff Atwood of CodingHorror.com, true-to-form, set of yet another proverbial dev flame-war, by taking a stand against the recent notion that everyone should "learn to code."
Hacker News was filled to the brim today with dev blogger responses about how they agreed or disagreed with Jeff. I read a lot of the responses. The subject has been so thoroughly beaten to death that I can't imagine a sound rationale for why I should add my two cents worth.
Yet, I'm going to do it anyway...but I promise to be brief.
If you think it would be a fun or intellectually stimulating exercise to learn to program, then I think that's awesome. By all means do it. But if you think you are going to go buy a book on Javascript or Objective C and that that will put you on the road to becoming the next Mark Zuckerberg within a couple of years, you are not being realistic. As Jeff pointed out, research has shown that it takes 10,000 hours to become an expert in any field. I have certainly not reached that benchmark yet...but I'm getting there one line of code at a time.
I think Jeff's main message got lost in his somewhat condescending tone. For me the message is this: if you want to learn to code, then go get yourself a real world project and solve a real world problem. Doing anything else is just an intellectual exercise. There's nothing wrong with engaging in an intellectual exercise just for the sake of it. Whether building your understanding of plumbing or coding or French Impressionism, intellectual pursuits give you experience that you can apply to seemingly unrelated parts of your life.
Learning about programming is bound to improve your understanding of the evolving high-tech world around you and that it is a good thing. But let's call it what it is...
Coding as an intellectual exercise is less "Learning to Code" and more about "Coding to Learn." Semantics? Maybe. But that's how I see it.
|
|
Last Updated on Friday, 18 May 2012 08:01 |
|
Open Source Projects
|
|
Written by Todd E. Qualls
|
|
Friday, 11 May 2012 23:35 |
|
I recently developed some code for validating form data in an ASP.NET Web Forms application and I have turned it into a live working demo at validate.toddqualls.com.
I plan on writing a longer blog post later to explain the inner workings of the demo, but for now here are the basic pieces:
- An ASP.NET Web Forms App
- jQuery and jQuery AJAX for capturing and submitting the data to a web service
- jQuery.blockUI.js for blocking the UI and providing user feedback during validation
- A C# .asmx style web service to validate form data
- A C# class with various static methods for validating individual fields
There's nothing ground breaking here, but I had fun doing it and have shared the code as open source on GitHub. If you think you can make my code better, then by all means send me your pull request!
|
|
Last Updated on Wednesday, 16 May 2012 06:26 |
|
Articles
|
|
Written by Todd E. Qualls
|
|
Saturday, 05 May 2012 13:16 |
|
Over the past several months I have learned the joys of Git, the distributed source code management program. I have used SVN in the past and liked it, but...I don't know exactly why...I find Git to be so much more flexible. Every day I learn something new that makes my coding life easier and more productive. I'm now using Git on my current work contract (an ASP.Net web forms application) and have moved all of my past customers' projects to Git as well. I've even set up my own Debian Linux server as the ultimate repository for all of my Git projects. I used the "Gitosis" project to do this if you are interested. I've even joined GitHub and started a few public repos to share with the world. There's not much to see there yet, but I have big hopes to develop some cool things to "push" there in the near future.
|
|
Last Updated on Saturday, 05 May 2012 13:31 |
|
Articles
|
|
Written by Todd E. Qualls
|
|
Wednesday, 02 May 2012 20:23 |
|
In my last post I wrote about my odyssey of migrating from VirtueMart 1 to VirtueMart 2. The journey has not been an easy one, but I made great progress and learned a lot about VirtueMart, Joomla! and even PHP in the process. But in the end, none of that stuff was enough to justify the time I have invested. The bottom line is this: I give up. I love technology. In particular, I love developing, configuring and deploying software. When I start with something IT related, I can't stand to give up until I figure out the shit that needs to be figured out. But it's time to face reality: VirtueMart 2 is just not yet ready for prime time and I am wasting my time. I know the developers have good intentions. For years they have produced a free, open source product and asked for little in return. But now they are trying to move to a different business model where they actually hope to make money. For eample, the UPS shipping module was included in the core VirtueMart product for free. In VirtueMart 2, you have to buy the UPS shipping module for about $65 or else roll your own. I don't blame them. I like to be paid for my development efforts too. However, in their haste to monetize it feels like they have "thrown the baby out with the bath water." When I look at posts for help in the VirtueMart forums and the pace at which the developers are pushing out bug fixes I have to conclude that VM 2 is not even beta software yet. It's an alpha product at best. Others may disagree, but that's what my experience tells me. Again, I empathize with the developers and I appreciate their efforts, but good intentions aren't enough for me and my customer. The whole reason I was even attempting this migration was because some of my customer's shoppers were experiencing seemingly random problems with the checkout progress. When the customers got to the shipping method selection step, they were unable to get a shipping quote and proceed to the final step. To make a long story short, since I had been unable to troubleshoot this problem or even reproduce it myself, I ultimately assumed this was a bug in VirtueMart 1, or the UPS shipping module. Since the developers were nearing end of life for support of VM 1, I decided that migrating to VM 2 was my best hope to resolve the checkout issue. But in the middle of my migration I discovered that the whole problem was caused by a cultural anomaly in the US. When filling out shipping addresses in the US, the average user expects the field order to be: City, State, Zip. VM's shipping address order is City, Zip/Postal Code, State/Province. I discovered that when I put in my own test order (one of many previous test orders) that I had entered my home state of NC in the Zip Code field in my haste to enter the address. When I tried to check out, I got the error mentioned earlier. After much cursing that I had been toiling with an unnecessary shopping cart migration, I have resolved that I am going to keep both Joomla and VM on the current version and start looking for another long term solution for my customer's shopping cart. I have looked at a few ASP.Net solutions, but I have a feeling that in the end, that I will roll my own. Third party solutions can be real time savers, but if I can come up with a home-grown solution that exactly meets my customer's needs, I think we will all be better off in the long run. So VirtueMart...it's been real. Happy trails!
|
|
Last Updated on Saturday, 05 May 2012 13:10 |
|
|
|
|
|
|
Page 1 of 2 |
|
|
Twitter (@teqKnowledgy)
|