In Valid Logic

Endlessly expanding technology

Archive for February, 2008

Nick learns to “talk”

with one comment

Last night, Trish really had Nick going making noises and she was running her finger over his mouth to break up the noises. Was really cute. Check out the video for more.

Written by krobertson

February 28th, 2008 at 5:06 pm

Posted in Life

Experimenting in Rails

with 4 comments

Lately, have had some late night hacking to experiment with some Ruby/Rails apps. For a long time, I’d been neglecting Rails and had intentions of learning it, though always put it off. Though I’d been reading some books on it, but I tend to learn new languages by doing rather than reading.

Recently, had started using Skitch to take screenshots in OS X, but was disappointed with their Skitch.com service for posting photos online. It was ok, but didn’t have configurable thumbnail sizes for embedding and always included a tagline below the image.

It offered posting photos online via WebDAV, so I thought, what if I wrote a quick Rails app to handle the WebDAV PUT request and then I could have my own page to go along with it with customizable thumbnail settings, various pre-formed content, and no taglines. Normally, Skitch will post it then copy the image location to the clipboard (it knows the location, won’t let you return the location unfortunately), so I can paste that URL into a browser then add on ".view" to go to a custom page with options for the image:

skitchdav-20080214-003225.jpg

Right now, have it just have a regular thumbnail/link, one for thumbnail/larger in a lightbox pop-up, and a thumbnail/link in BBCode. I have global thumbnail defaults, and individual image overrides. If the thumbnail would be bigger than the original, then it doesn’t scale it and instead just does an IMG tag for the image itself. Also can upload images over the web interface, as opposed to always having to use Skitch. And it has authentication.

Nothing really super fancy and would likely take a Rails expert a few hours to whip up, though it was a good amount of experimenting for me over the course of a few nights, slowly adding this/that, getting it working on OS X, then Windows, then OS X again, and then on Linux. There are some things to be cautious of when changing environments, especially with the uploaded files (in dev, it was a UploadedTempFile, on Linux it was UploadedStringIO, on Windows I could remove it when done, on OS X/Linux I couldn’t).

I’m not about to pull a Mike Gunderloy and jump ship from .NET to Ruby, though I definitely find the "convention over configuration" approach to Rails refreshing. I think ASP.NET will get a lot better with ASP.NET MVC, and I’m impressed with it from what I’ve seen so far. But I think .NET still has a couple of lessons it could learn from Rails, such as ease of deployment, ease configuration and definition of environments, and programmatic database migrations.

A big part of it has to do with Windows developers aversion of the command line. When I used to run Linux full time, I’d always have 2-3 console sessions open, especially when coding. When developing on Windows? Most likely none, unless I need to do a ping or something. Any console window is probably just a quick test console application that is running in debug mode. The command line has so much more power than the GUI, as the command line can be nicely organized while the GUI gets cluttered with add-ons, widgets, to-dads, and task bar icons.

Perhaps I should do a short series on some of my thoughts on how .NET could adopt some of the things that make Rails so easy.

Written by krobertson

February 21st, 2008 at 8:01 pm

Posted in Technology

Moved to DirecTV

with 2 comments

As I’ve mentioned before, I’ve been a huge fan of Windows Media Center Edition. MCE, in my opinion, is just about the golden grail in terms of DVR experiences. The UI is very rich and responsible, very extensible platform, and quite feature-full.

However, recently I made the decision to move away from cable towards DirecTV. There are a couple of motivators:

First, the coming analog switch next year means my current tuners would be obsolete and I’d need to buy newer Digital Cable Tuners for the box, including paying fees for the CableCARD to power them. However, did I really want to stay with Comcast? I mean, with my own system, I couldn’t leverage their on demand without paying for a normal receiver to accompany my MCE box. Was wondering, did I want to put more money into it?

Secondly, in keeping with my new years resolutions to simplify my life, going to DirecTV made sense. With MCE, it was my box, and my problem when it didn’t work right. I was having issues with OTA HDTV and had been dragging my feet on buying a new, better antenna. Dragging them for like 9 months. I only ever thought of getting a new one at night when the thing was acting up, and that was never the time I wanted to research antennas and order one. By moving to DirecTV, if it doesn’t work, its their problem. Call them, come out, fix the dish, replace the tuner, etc. They own the hardware. One less thing that would rest on me or I’d be a bottleneck on.

Why DirecTV vs Comcast Digital Cable? Well, several. The internet is littered with poor opinion over the Comcast DVRs. And I wanted a good DVR. I was dead set on a dual HD DVR. Didn’t want one everyone thought sucked. DirecTV is more vested in their own DVRs as well. My dad has the same DVR package I got and likes his a lot, and I’ve liked it and the service when at their house. They put out regular updates, look for customer feedback, and even allow customers to use beta releases through their own online support forums. Never heard of that with Comcast. And the whole recent rave of commercials that Comcast has more HD channels than DirecTV? Don’t think so. I counted them. Comcast: 28, DirecTV: 45. Sure, the important ones are likely on both. But really, cable advertising has always bothered me. Speaking of advertising, Comcast seems to also like littering their interface with ads. Bleh.

So what about DirecTV vs MCE? There are a few pluses and a few minuses. The interface is much more fluid and responsive in MCE. DirecTV does have a delay between pressing a button and getting a response. But its quality is great. Some things I really like, such as if you watch 20 minutes of a show and then decide to record it, it will save the 20 mins you’ve already watched. MCE didn’t do that.

One thing I did find an issue with is DirecTV’s support for pre/post recording. Normally, I like to record 2-3 minutes before and after a program, since some tend to run over a bit (FOX/American Idol). With MCE, it supported that and it would know the core minutes (ie, 8:00-8:59) were required, and the padding was optional. DirecTV’s DVR doesn’t see that… it requires all of it. To put it into perspective, take this scenario. You have two tuners. You record one show from 8:00-10:00 on FOX and with padding, it is 7:55-10:05. Then you want to record something on NBC from 8:00-9:00, so it marks it as 7:55-9:05. Then you want to record another show on CBS from 9:00-10:00, but the DVR won’t let you, because the tuner is still busy from 9:00-9:05. It won’t let you. With MCE, it would recognize that the padding is optional and it needs the tuner for something else. So it would have recorded NBC from 7:55-9:00 and CBS from 9:00-10:05, since that made sense. DirecTV doesn’t recognize that. Because of this, their pre/post recording is essentially useless. Hopefully I can send some feedback and this maybe makes it into a future update.

There are some pluses one thing DirecTV does that MCE didn’t is if you watch 20 mins of an hour long show, then don’t have time to finish it, hit record and it captures the entire show, not just from then on. MCE didn’t do that.

Additionally, with an update last week, I now have the DirecTV On Demand beta accessible on my box, and it is pretty nice. Doesn’t yet have a full wealth of shows available, though they have a good list of channels signed on, and I like the interface and way it is set up. You can browse a global directory, or narrow it down to a specific channel, such as view the On Demand page for Discovery or TLC.

Overall, I am impressed and glad I made the switch.

Written by krobertson

February 20th, 2008 at 4:51 pm

Posted in Life

Ok, but what do I do now?

without comments

I had decided to give Quicken Online a try. I’ve been missing out since dropping Money and really do need to know where my account is heading. Mainly, need to be aware of bills I’ve queued/checks I’ve written that haven’t posted yet, and a bit of a forward projection so I know ahead of time if I might need to transfer some money from another account before a big grocery shopping trip or a weekend away.

The problem? Well, I am no longer on Windows, so can’t use Microsoft Money unless I use it from within a virtual machine. I was thinking of trying Quicken for the Mac, but figured I’d given Quicken Online a try. They had a free trial, so figured why not.

Well, my trial lasted about 30 seconds.

Quicken_Online-20080218-155714.jpg

The first strike is that they don’t list Wells Fargo as one of the banks they support. Come on? Wells Fargo isn’t some small bank no one has heard of. They are one of the big names.

But the main thing that turned me off is the lack of direction. Ok, I typed in Wells Fargo, it says we couldn’t find them, so I click the link about not being able to find them, and all it says is to send them feedback.

But what do I do right now? There is no cancel button, since this screen came up before I even got into the application, and there is no skip, or enter later, or anything. They have created a barrier for me before I even enter the application.

Don’t needlessly create barriers for users. Offer them direction. Feedback is good, but it doesn’t do anything for me right now. Their feedback page doesn’t even promise a response, so in essence, my trial is over and I won’t be using their service.

Written by krobertson

February 18th, 2008 at 4:06 pm

Posted in Software

Search for hosted Subversion

with 4 comments

I recently decided to look into using a hosted Subversion service. I used to always use Subversion locally using a method I’ve mentioned before, however recently, I was going to be doing some coding while out of town and wanted to be able to make regular check ins, but couldn’t since all my repositories were local. So I decided to look into actually using a live Subversion server.

Initially, I thought I’d simply set up a Subversion server on my own servers and go with that, but I wanted to have an interface for managing the repositories, so I could easily create new ones or access/browse them through the web and didn’t want to have to set all that up on my own. Additionally, there are a number of inexpensive Subversion hosing services, so sometimes it just isn’t worth the effort.

I couldn’t use something like Google Code, because most of these are personal projects and not open source. Though my three main contenders are hosted-projects.com, Beanstalk, and Code Spaces. Briefly, here are the pros/cons so far:

hosted-projects:

  • Pros:
    • Cheapest
    • Unlimited repositories (I prefer individual repositories over a generic “projects” repository)
    • Includes WebDAV space (see end)
    • Includes Trac install with each repository
  • Cons:
    • Butt ugly. Seriously, their website is unappealing and the control panel is even worse. It makes me question how much they’ve invested in their business, how they’d handle failure/failover/recoverery.
    • While Trac is nice, it is a bit overkill for personal projects. I just want to view source/revisions, don’t need tickets and a wiki. Can use Basecamp/Unfuddle if I needed those features.

Beanstalk:

  • Pros:

    • Rich interface, very nicely done
    • Just does source/revision viewing, but offers integration with Basecamp for more functionality (not Unfuddle, unfortunately)
  • Cons:
    • Costs more
    • Limits based on number of repositories. I could group projects, but don’t really want to.

Code Spaces:

  • Pros:

    • Good interface, offers work items, forums, and a wiki, similar to Trac, but busier for basic change log type viewing. Code browser is a bit too busy too, too AJAXy.
    • Unlimited repositories with their “Small Team” package, which is only a little bit more than Beanstalk
  • Cons:
    • Though you can get unlimited repositories, for the package level I am looking at of the three, it is the most expensive.
    • While the interface isn’t horrendous like hosted-projects, I don’t like the over use of AJAX and modals.

Overall, I am pretty torn. Plain, simple, and unlimited (while ugly) with hosted-projects, or strong interface but limited repositories with Beanstalk. That is pretty much where I am at. If Beanstalk were unlimited repositories, it’d be a no brainer. If they were to double the repositories, I’d definitely stay there. For me, disk space is unimportant. I really don’t need that much disk space, so with Beanstalk, the limiter is repositories and not space, so I’d be just as happy with 1/2 the disk space and twice the repositories.

I did mention something about WebDAV, though that is a very minor point. One system I am particularly looking to move towards is using git. I am thinking of just skipping a hosted Subversion solution and just going to using git. Git is basically a distributed version control system, where you have full history local to you and can commit and use it entirely while disconnected. Then you merely have multiple branches of the same code that can get merged together. In my recent case, of doing some coding while out of town, I was at my parents and they have (until they move in 2 months) crappy satellite internet since they are out of reach of regular utilities. Their connection is barely ok for web browsing, horrid for RDC, and I wouldn’t trust it much with version control since it isn’t always consistent or sustainable. With git, I could sync to my laptop before I leave, make checkins while gone, totally offline, then merge back when I get home. With a Tortoise-like clone being developed for Git, it will likely be a lot easier to use on Windows soon, and it looks like there is a Git bundle for TextMate, so I’d be set in my OS X + TextMate bliss.

If I went with git, I wouldn’t really need a central repository site like hosted-projects, since you don’t really create a repository that you then load everything into. Git doesn’t have to be online at all. But what would be nice would be a simple web application to browse the history (even though I could do all that locally).

Written by krobertson

February 14th, 2008 at 9:08 am

Posted in Technology

Membership.GeneratePassword and plain alphanumeric passwords

with 3 comments

Recently, I ran across an issue with a particular way I was using Membership.GeneratePassword. I had written some code to handle some automated deployment and was using Membership.GeneratePassword to generate a password for a SQL user and then add it to the connectionStrings section of the web.config.

GeneratePassword takes two parameters, one for the length, and one for the number of non-alphanumeric characters (characters other than 0-9, a-z, and A-Z). The way I was using it was GeneratePassword(8, 0), so I wanted an 8 character password with just alphanumeric characters.

However, I eventually ran into an issue with it. It generated a password with ‘;’ in it, which broke the format of the connection string. Even with the way I was specifying 0 for numberOfNonAlphanumericCharacters, it was still inserting a couple of non-alphanumeric characters. After testing, I found it was averaging 2-3 non-alphanumer characters per password. I just didn’t notice it until one of them actually broke something.

I dug into the documentation for Membership.GeneratePassword and found for the numberOfNonAlphanumericCharacters, it showed the parameter description as:

The minimum number of punctuation characters in the generated password.

This contrasted what was shown to me in IntelliSense when I was initially coding it.

IntelliSense for Membership.GeneratePassword

So while I specified I didn’t want any non-alphanumeric characters, since the parameter is actually just a minimum, there is still a chance for them to slip in.

In examining the code through Reflector, I found that it generates the password in a kind of two-pass method. It first runs through and generates a password of the given length, allowing for a random chance of non-alphanumeric characters to be added. It then makes a small second pass where it ensures the given minimum has been meet. So if it needs additional non-alphanumeric characters, it will randomly replace characters until the minimum is met.

This makes sense, but it poses the problem that the method is not useful for generating simple alphanumeric passwords. In a case like mine, where I intend to use it in a connection string, it has the potential to break the syntax.

In the end, it would be nice if one of two things happened:

  1. Update the IntelliSense documentation to reflect that it is the minimum and not the actual number of characters.
  2. Update the method to treat the parameter as the minimum, but to support just alphanumeric characters when 0 is passed. As it is now, GeneratePassword(8, 0) and GeneratePassword(8, 1) are nearly identical, as the probability of getting a true alphanumeric password is low. With this suggested change, if you don’t want non-alphanumeric, then use 0. If you do want non-alphanumeric, then you can just use 1 or more. If you don’t care, perhaps they could add an overload for GeneratePassword(length) which maps to allowing a minimum of 1 (to encourage stronger passwords).

For now, I just switched to using my own base 62 random string generator and will make a mental note about the behavior.

Written by krobertson

February 6th, 2008 at 3:18 pm

Posted in Software

Tired of templated customer service

without comments

Recently, have encountered some poor customer service interactions that I’m sure Seth Godin would have a field day with. Too often, companies now rely on overly simplified and generic templated responses to customer service questions, without paying attention to what the customer was after. I’ve had two run ins with this as of late.

First, just a few days ago with Ebay. I’ve been clearing my closet of spare hardware and have one thing that I’ve tried to sell twice now, and both times within a few hours of the auction ending, I’ve got an email saying there was bidding without the owner permission and my auction had been removed and fees refunded. The first time, I figured shucks and reposted it. Then it happened a second time, so I’ve now wasted two weeks trying to sell it. I contacted Ebay and first had to fight to find the place to actually send them a question, since they love their FAQs, and then when I asked what tools they have available to sellers to help against this, they sent me a generic response a few hours later about how to report fraudulent activity on my account. They didn’t even read my short one paragraph question. There wasn’t any fraud with my account, I was asking how to avoid it with others.

I also had some recently with Yahoo. I have my own server and when I’ve tried to email some people on Yahoo accounts, I’ve been getting bounced emails. In the bounce message, it directs me to a page with information on the error, and on that page it says that if you run your own server, you can fill out a form to register your server. Well, that page was a bad link and was going to a “page not found” error. So I emailed them to let them know, said I was getting this message, went to the page, went to register my server, and the page isn’t there. Low and behold, I get a generic response about if I am getting that error, go to this page (the one I was already on). Zero help. I replied and explained I’d been there and one of the links on the page is bad. No response.

With Ebay, I was expecting them to respond saying there is nothing they could do and would have been totally fine with that. I figured it was worth asking. But instead, they respond with something that offer no help at all.

As a consumer, I don’t want to be treated like cattle. If I am having to contact you, it is because something is broken already. Don’t let poor customer service exacerbate the problem even more. I am not asking for a personal handler to walk me through it, but I would like for someone to actually reading my message and sending me a pertinent response.

Written by krobertson

February 5th, 2008 at 8:25 pm

Posted in Business