An Open Plea to Creators of Login Pages

Sep
15
2008

I just reset my password on the ASP.NET forums for the 6th time. I know that it's been 6 times because I can see archived emails proving that point. However, none of those emails gave me a clue to either what my changed password was or why I keep needing to change it.

So, I reset the password yet again and went to my email to click reset link #7. When I went to choose a new one, I was immediately reminded of why I forgot my password and why I will likely continue this cycle of resetting the reminder finally sticks.

I put in one of my "normal" passwords that I use for things like forums and was greeted to what jogged my memory:

Invalid password. All passwords must be at least 6 characters long and contain at least 1 uppercase character, at least 1 lowercase character, and at least 1 numeric character (digit).

I've since gone back to create a new account as a test and this message is nowhere on any of the following:

  • The registration page.
  • The "Lost your password?" page.
  • The reset password page.
  • etc.

Of course, if this was a singular instance of this problem, I'd probably just move on, irritated. However, this kind of thing is nearing universality as web sites and web applications start pushing for password policies. This is just one of the best examples of how to do it wrong.

I'm not going to get into whether the policies themselves make sense. Heck, in some places in the world, password policies are making it into banking legislation, removing the option from doing it any other way.

However, if you're going to enforce a password policy that is anything other than "whatever you feel like entering", it is your job to help the people who are interacting with your site remember the conditions when they created that password.

So, PLEASE, if you are building such a site, with such a password policy, display that policy whenever my login fails, whenever I might be about to reset or request that you send me a new password, when I register and, quite frankly, whenever the username and password boxes appear on your site. It would make the world a better place.

Standardized ASP.NET MVC Controller Actions with Visual Studio Item Templates

Sep
07
2008

First, I think that this may be the longest title for any post on this site. I ditched 2-3 other variations for the only one that accurately describes this post.

Anyway, over the last couple of months, I've been working on getting better with screencasting tools. I learned a lot doing the last one and took that into the tinkering I've done with another one over the past week or so.

It stretched out over that timeframe because of a bunch of other stuff going on as well as some time spent on one-time tasks, like creating a Keynote theme to use for future screencasts that's a bit better thought out than the one I used on the last screencast. This look is something I'm much happier with and gives me a basis for more consistent look and feel going forward.

There's none of my shining face because I lent my webcam to a friend. I do see the value in adding that to the recording, but am not sure the best way to do it.

Anyway, on to the topic I actually covered in this video.

In ASP.NET MVC, the Controllers often end up with an Action method for all of the really common bits of functionality: Create, Insert, Update, Delete, etc. Stephen Walther put together a list of suggested standardized naming and usage for these Actions and I've been using them in the couple of ASP.NET MVC projects I'm working on.

In the process, I created a Visual Studio Item Template to make creating a new Controller that follows that convention easy. When I showed it to a co-worker, he expressed interest in how I did it and I saw an opportunity to explain something that's actually useful.

So, if you've ever wondered how to get your own templates into that Visual Studio "Add New Item" dialog box next to "Class Library", "Application Config File", etc. This is the screencast for you.

Anyway, give it a watch and let me know what you think.


Creating Visual Studio Item Templates from J Wynia on Vimeo.

Handling Pro Bono and Discounted Projects

Sep
01
2008

A few weeks ago, I was reading this article on 30 Ways to Create an Incredible Client Experience and I thought about something I started doing a while back. It actually seems counter-intuitive at first, but turns out to actually improve the experience on projects where you're charging less than your full rate.

From time to time, I do a project or a portion of a project for free. Some are for friends or family, some for charity and sometimes I have some hours that I don't bill for because I screwed up.

When I first started out, I would do that free or discounted work and it would never be mentioned again. Then on more than one of these projects, things were just sort of sour.

On one, someone was upset that the project was late (I was too), and I'd actually put in a ton of unpaid work over a couple of months to get it done and we still didn't make it in time. The client made a comment that hit me hard. He was looking at my bill, which only included the first 40 hours of each of those weeks and said, "Maybe if you'd been willing to put in more than just the minimum effort, we'd have launched on time."

Right there and then, I realized how important perception and visibility are to a project. Later on, as I read more about marketing, human psychology, etc. I learned a bunch of things about the way people view "free". Further experience taught me that if the value wasn't visible, people will invent a number in their head. And, if the number they come up with on their own is closer to what you pay the neighbor kid to mow the lawn than to what they pay their mechanic, you're in trouble as a tech professional.

A few years ago, I was having a conversation with another consultant and was complaining about how a pro bono client I was helping seemed decidedly ungrateful. He told me that he billed even the free stuff and just discounted it. He went on to tell me to ask this particular client how much they thought they were getting for free.

I followed up on that suggestion and discovered that the non-profit in question thought that the web work I was doing would cost about $300 on the open market. Problem was that I'd given them the same amount of time that my paying clients pay well over $5000 for. Clearly there was a mismatch.

So, what I do now is to shine a light on that free and discounted time. If I'm doing some geeky work for someone that goes beyond a quick phone call or a chat over a meal, I write up the time spent at my normal market rate. I then apply the appropriate discount. That means that if the whole project is free, there's a completely normal project invoice, with a 100% discount applied.

That's something to think about for those who are starting out doing web or design or other work where the common advice to break in is to do a project for cheap or free to build your portfolio. That advice is frequently criticized because it can lead to either that first client or everyone they refer to you expecting the same cheap deal. If, however, you bill that portfolio building project and just discount it, the point that it was a one-time deal is much clearer. You can even name your discount to nail the point home.

I also do this for the kinds of things where I either screw up (I'm the first to admit that it happens) or need to a bunch of research and don't feel ethically right billing for it. I did it a couple of months ago, where the actual bill for the month was something like 22 or 24 hours and I included another 8 that I discounted 100% because I spent an entire day rebuilding the staging server after I messed it up by trying to take a shortcut.

Given that we had had conversations about the delay, putting it on the bill made it clear that I had really made an effort to rectify things. It also showed that I had skin in the game for the problem.

It's really all of those various reasons that have reinforced this technique. All kinds of assumptions and underlying miscommunication gets cleared up when this stuff shows up on a bill. I'm really still quite amazed at how well it diffuses bad blood on both sides.

If you've got frustrations with or have held back from doing discounted work because you aren't sure how to handle it, this approach is worth thinking about. It works great for me.

Old Photos and Family Trees and Scanner Software from The Island that Time Forgot

Aug
25
2008
2 Ancestors in the Field

Creative Commons Licensephoto credit: j wynia

When my grandparents on the Wynia side moved out of the farmhouse and into senior/assisted/nursing homes, a lot of their things were spread to various family members. We all went to the house and the question was posed whether we wanted any of their stuff (yes, those kinds of moments are weird).

Many members of the family had always wanted the china or the old baby buggy, etc. When I was asked, I thought back to Grandpa's slideshows, in the dark, those old images up on the screen. I asked if I could have the slides. There was a strange look and I remember someone asking if that was really all I wanted. I said "Yes" and have had those big boxes for several years.

I started scanning them a couple of different times, but life got in the way. However a month or 2 ago, I decided I needed to get back on it and committed to getting them all scanned. I've been slowly and steadily working my through the boxes in my evenings and weekends for the past couple of weeks as well as figuring out and improving the workflow for scanning them.

At first, I had hoped to use my Mac to do the scanning, in large part because I do like Applescript for chaining things like Photoshop together with other apps in a workflow as well as easily attaching actions to folders. Alas, my slide scanner (the one with 7200dpi optical resolution) does NOT work with anything but Windows.

So, I set things up on Windows, with a Photoshop macro to do the triggering of the TWAIN driver and capturing the image and an Autohotkey text snippet to uniquely name the output files with a timestamp. Autohotkey does a pretty good job of that sort of thing. You can either have a keystroke like CTRL+ALT+T that spits out a chunk of text or an abbreviation that always gets replaced when you type it, no matter where. If it wasn't obvious, you want to be careful you don't name your abbreviations into something that might get triggered by accident.

For this one, I just used this one line in an .ahk for CTRL+ALT+T inserting the current timestamp. I hit that key chord when Photoshop prompts for a name.


^!t::Send, %A_Now%

Makes the whole process a series of quick actions, punctuated by waiting for the scanner to do its thing. Click. Wait. Punch the naming chord and Enter. Wait. Repeat.

Now, I can't move on from the scanning without mentioning something that I find puzzling. From all appearances, scanning software and drivers appear to be written on The Island that Time Forgot.

I bought my first scanner in 1994 for something like $300. It was a little handheld gizmo that did all of 256 shades of gray. The software that came with it for Windows 3.1 looked like nearly everything else that year. It had that look of "multimedia CD-ROM" that was all the rage.

What's strange is that with 4 scanners in my office right now, all of the software that came with it looks almost exactly the same and has the same kind of crappy problems. These apps (it should be noted that this is on the Windows side of things. It's better on Mac and even Linux) do things like lock the mouse during the nearly 1 minute the scan actually takes, put progress windows on top of everything else and ensure that you can't minimize it, etc. All of this TWAIN stuff has the same big buttons with crude bevels and horrible usability.

It really seems like they keep TWAIN driver developers isolated from the rest of the world on some island. Every year, they ship a new batch of scanners and requirements to the island and get back a bunch of drivers on CD. They're somehow given copies of Windows stripped of all modern interfaces and keep using the same tools.

I'll grant you that Windows Image Acquisition (WIA) makes that much simpler. Unfortunately, a 3000 dpi scan of 35mm slide film isn't one of the handy presets and WIA doesn't provide a box to enter the DPI, even if the scanner supports more than the maximum in the drop down.

Digressions aside, scanning these images at nice, high resolution and staring into the past prompted further questions about family's history. After being tempted several times before, I finally registered for the 14 day trial at Ancestry.com.

The site has a couple of nice features, even if the workflow is a bit stilted. As you add people to your family tree, it marks people where they have information that might be attached to that person. You click, examine that information and decide to attach the info or ignore it.

The stilted workflow comes in that it always seems like the thing I'm trying to do next isn't on the screen anywhere or in the place I last used it.

However, the evidence from the few hours I've put into it over the past week or 2 speaks to its effectiveness in spite of those glitches. I've got 577 people added to my family tree and one chain of ancestors that goes back 13 generations to someone born in 1360 in "Warga, Boarnsterhim, Friesland, Netherlands". (Nearly 100% of my tree so far leads straight back to the Netherlands).

  1. J Wynia
  2. Louis Wynia Jr.
  3. Louis S Wynia
  4. Sam Wynia
  5. Suster DeVries
  6. Johanna Wynia
  7. Eeltje S Wynia
  8. S Jans or Wijnia
  9. Foekes or Wijnia
  10. Sijtses or Nijda
  11. S Sijes or Nijdam
  12. Willems or Nijda
  13. Willem W Nijdam
  14. Willem W Nijdam
  15. Sijts Ids
  16. S Van Idsinga
  17. Ferckje G Aytta
  18. Gerbeth Aytta - b1360

I can definitely see how sites like Ancestry.com have consumed all of the hobby time for a lot of folks. This is definitely some interesting stuff to dig through. If you've ever been curious yourself, it's worth checking out.

Dynamic Font Replacement: sIFR, FLIR and More

Aug
22
2008
numeral types
Creative Commons License photo credit: threedots

A couple of weeks ago, Antonio Lupetti shared a list of 10 "handwritten" fonts that he uses in his design projects. He also does a brilliant job of integrating that stuff into the diagrams in his posts, which is why I paid attention when he put out a list (just take a look at his archives and you'll see what I mean).

As I was looking at those fonts and downloading them, I was thinking about sIFR, which I've mentioned before. It's a way to replace text in web pages with Flash on the fly, using fonts that aren't on a user's computer. I've wanted to include that on this site and on several others for quite a while.
Read the rest of this entry »

« Older Entries   Newer Entries »

J Wynia

For better or worse, I'm the guy who runs things here. I'm a web consultant, software developer, writer and geek from Minneapolis, MN. This site is a fairly wide cross-section of the things I'm interested in and enjoy writing about.

Oh, and if you happen to be looking for hosting for your Subversion repositories or just web hosting in general, take a look at Dreamhost. It's what I use for Subversion and your signup helps me out.

Feeds and Links


www.flickr.com
This is a Flickr badge showing public photos from J Wynia. Make your own badge here.

Search


Pages

Archives

Computers Blog Directory
© 2003-2008 J Wynia. All original content is licensed under the terms of the Creative Commons Attribution license unless otherwise noted. Content from other sources is licensed under its original terms.