Here is a tool to find unclosed tags in your HTML. Just paste in your HTML and press Submit. You will see a result like "Closing tag </table> on line 188 does not match open tag <td> on line 62.".
I'll be honest - there are certain kinds of debugging that stress me out - such as when the bug is intermittent. One example is a bug that I've been looking at for the past day and a half: for quite a while, our users have been finding that Facebook Like buttons aren't working on their sites. They click Like and the popup appears for a second before disappearing. And it doesn't happen all of the time.
Well, we finally carved out some time this week to take a look at the issue. And yes, I could reproduce it yesterday. So I did my tried and true method of "deconstruction", in which I keep taking things away from the page until the problem stops. Well, I whittled the page down to just the Facebook Like snippet and it was still happening. So it was something to do with the URL we were giving to the Like button.
And then I couldn't reproduce it anymore.
Anyway, I was able to reproduce it again today. I put a bunch of Like buttons on a page: some that worked, some that didn't. And I eventually got it so that the only difference was that the Like buttons that didn't work had URLs that redirected to another URL.
By the way, throughout this saga, I was trawling the Facebook Bug Database and Stack Overflow for a silver bullet - someone who fixed the problem and here are the steps. I couldn't find any silver bullet, but it was still valuable because I heard mention of the Facebook Debugger, which sometimes fixes things when you put a URL through it because it clears Facebook's cache.
I tried putting my URL into Facebook's Debugger but it didn't fix my Like button. But I took a second look at the debugger results, and 'lo, there were some warnings about missing OpenGraph tags. I browsed around a bit and found that three of those tags are required (og:type, og:url, and og:title). So I put those tags on my page and...
the problem was fixed! Yay!
Tell me what's on your Mac OSX dock. These are the apps that you value the most.
Here's what's on my dock right now:
- Notational Velocity
- Network Connect
- Clock Chimes
- App Store
- System Preferences
- Microsoft Excel
Here's a great article describing a useful Git tool called tig.
One thing it doesn't mention is that you can actually press comma (,) when doing a tig blame, to do a blame on the parent commit. This is useful if the blame on the current commit isn't showing who really changed the line. You can do blame on the line all the way up the parent tree.
Other tig tips:
- Use this to browse the tree of another branch: tig origin/rel-1.5.
- If while browsing the commits on another branch you press Shift+C on a commit, it will cherry-pick it into your current branch.
I use this.
I'm doing an experiment to see how well I can live without Google products. They have served me so well for so long, but I don't want to depend on them too much. So I have made the following moves:
- Google search => Duck Duck Go
- Gmail => Hotmail
- Blogger => Ning
- Chrome => Safari
So far, it has been OK!
Here's a great weekly email newsletter about design for programmers: Hack Design.
I was reading one of the newsletter articles today, called Making the Transition from Development to Design. It had some good quotes, such as these ones:
I think the future designer is going to look and act a lot more like a design technologist.
Avoid pixel-pushing at all costs – your job is to solve problems.
Our ideas should be bigger than reality, but our execution should be married to it.
I was having trouble finding something to remind me to take an exercise break every hour or two. A lot of the break timers out there dim the screen and force you to press a button if you want to postpone it. This is problematic for programmers like me - you get into the "flow", and interruptions like that break your concentration, which is Not Good.
It turns out that it's not terribly hard to create your own (unobtrusive) break timer. Here's one that simply shows a Growl notification and makes a sound every hour, on a Mac with growlnotify installed:
growlnotify -m "Take a break"
Likewise, your question refers to the classical notion of leisure, to the question, as I like to ask it: “What do we ‘do’ when all else is done?” As Pieper pointed out in his famous book, the Greek word for leisure, skole, is the origin of our word for school. The denial of leisure becomes the classical word for “business,” both in Greek and Latin. Thus, the time we devote to keeping alive, to making a living, while necessary and important, is not primarily time “for its own sake.” This latter time is the time beyond business. It is in this latter time that we should be “free” to think of the highest things. Not to have such time is to be a kind of slave to this world.
From an Interview with Fr. James V. Schall, S. J.
So this is something that happened to me a few days ago, and it makes for a nice puzzle.
My wife asked me to pour soy sauce and vinegar into two saucers, equal parts (1:1 ratio).
I poured the vinegar into each saucer. But then I poured twice as much soy sauce as was needed into the first saucer.
Question: How do you fix this easily?
My wife solved it without thinking.
A while ago, Gina (Ning CEO) asked me to consider switching my blog from Blogger to Ning. Well, it's a number of years later and here I am trying it out. Ning sites are really complete social networks, so I am just using a fraction of what it can do. Anyway, I work for Ning, so it is good to finally be using the product I am building.
I'm a software engineering consultant. This means I can help your company with your software engineering needs:
providing temporary manpower for short-staffed software projects
helping new software projects get off to a good architectural start
improving the performance and reliability of old, legacy software systems
doing an important investigation or small project that you've always wanted to do but haven't had time for
Since 1999, I have done software engineering projects for the Canadian government, for Silicon Valley startups, and for established Bay Area companies, for small companies and medium-sized companies, for successful commercial projects and open-source projects.
Currently accepting small projects. If you have one, email or call me.