VsDebugFx - weakly-typed lambda expressions and LINQ in Visual Studio debugger

September 26, 2012

I’ve just published a little project of mine on GitHub, called VsDebugFx. It’s a NuGet package which you can install into your .NET project and get more expressiveness during your debugging sessions inside Visual Studio. It’ll let you evaluate expressions that use C# features which are not normally allowed by the IDE, namely: lambda expressions, anonymous types, LINQ queries and implicitly-typed arrays.

I don’t want to repeat myself (DRY anyone?), so if you’re interested in knowing more, go check out the README file about the project on GitHub.

Save Yourself Some Time When Watching Videos

September 7, 2012

Just stumbled upon a nice little program that allows you to change playback speed of any Flash/HTML5 video without affecting the pitch of the audio signal. It comes very handy when watching talks on TED, Vimeo, Channel9 and the likes and you want to either digest the content faster or have trouble understanding the speaker. Go grab it here: MySpeed.

MySpeed

Words of Wisdom on Open-Source Software Engineering

August 21, 2012

Note to self: review these quotes when you finally decide to get back to developing UberDeployer* and write something about it on the blog.

* UberDeployer is a little proof-of-concept tool I’ve coded at my current workplace that aims to provide an automated deployment (or maybe even continuous delivery) solution for more complex, enterprisey settings, where you have dozens of applications and services going through multiple staging environments and bureaucracy standing in your way.

All of the quotes below come from Eric Raymond’s essay titled “The Cathedral and the Bazaar”. Don’t be put off by the fact that this article dates as far as 1997 — this one is a timeless gem and I don’t know why I hadn’t stumbled upon it before.

I’ve emphasized three quotes that resonate with me the most at the moment when I think about starting an open-source endeavour. What are yours?

The Mail Must Get Through

1. “Every good work of software starts by scratching a developer’s personal itch.”

2. “Good programmers know what to write. Great ones know what to rewrite (and reuse).”

3. “Plan to throw one away; you will, anyhow.” (Fred Brooks, The Mythical Man-Month, Chapter 11)

4. “If you have the right attitude, interesting problems will find you.”

5. “When you lose interest in a program, your last duty to it is to hand it off to a competent successor.”

The Importance of Having Users

6. “Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.”

Release Early, Release Often

7. “Release early. Release often. And listen to your customers.”

8. “Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.” or “Given enough eyeballs, all bugs are shallow.” (Linus’s Law)

When Is a Rose Not a Rose?

9. “Smart data structures and dumb code works a lot better than the other way around.”

10. “If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.”

Popclient becomes Fetchmail

11. “The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.”

12. “Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.”

13. “Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.” (Antoine de Saint-Exupéry)

Fetchmail Grows Up

14. “Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.”

15. “When writing gateway software of any kind, take pains to disturb the data stream as little as possible and never throw away information unless the recipient forces you to!”

A Few More Lessons from Fetchmail

16. “When your language is nowhere near Turing-complete, syntactic sugar can be your friend.”

17. “A security system is only as secure as its secret. Beware of pseudo-secrets.”

The Social Context of Open-Source Software

18. “To solve an interesting problem, start by finding a problem that is interesting to you.”

19. “Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.”

Software You Won't Be Able to Live Without Once You Know It

August 19, 2012

I’ve been recently doing a clean install of Windows 8 and as you probably experienced an OS install yourself many times before, you’re aware that it takes some time until your workstation is truly usable. There are many programs, smaller or bigger, that you’ve been accumulating for a long time, without which you can’t work. You might even don’t realize it until they’ve gone from your system.

I thought it was a great opportunity to assemble a list of such software for myself and share it with you, hoping that you’ll find a couple of gems you didn’t know existed that will make your life a little easier. I’ve grouped it into four categories: General Tools, Software Development, Web Apps and Firefox Add-ons.

General Tools

  • Keybreeze — Your favorite applications, folders, web sites, system commands and macros at your fingertips.

    Keybreeze

  • Search Everything — Quickly search for files and folders by their name. Feels almost like ReSharper’s navigation feature but for the whole file system.

    Search Everything

  • EditPad Pro — Versatile text editor; unrivaled when it comes to handling large files, multi-line find/replace and text processing with regular expressions.

    EditPad Pro

  • Ditto — System-wide clipboard manager. Stores the history of things you put into the clipboard for later access. Can also strip formatting information, eg. from a copied web page fragment.

    Ditto

  • Total Commander — Tabbed file manager. I don’t use it as a file manager though — it made it to this list because of its one feature: Find in files, which basically is a very comfortable to use grep.

    Total Commander

  • 7+ Taskbar Tweaker — A little utility that allows you to freely rearrange taskbar buttons. This feature is built-in since Windows 7 but the tool is still useful as it can completely disable grouping of taskbar buttons.

    7+ Taskbar Tweaker

  • Switcher — Alt+Tab on steroids with great keyboard support.

    Switcher

  • LockHunter — Easily get rid of occasional file system locks.

    LockHunter

  • Boomerang for Gmail — Provides scheduled sending of your e-mails and allows you to defer messages until a specified date and time. You might want to check out the free alternative: Defer.It.

    Boomerang for Gmail

Software Development

  • ReSharper — Essential Visual Studio extension for keyboard addicts. Provides real-time code analysis, quick navigation, refactorings, code generation and more.

    ReSharper

  • Reflector — .NET decompiler. Although no longer free, in my opinion still the best. Free alternatives: dotPeek, JustDecompile.

    Reflector

  • Fiddler — Web debugger. Invaluable in complex HTTP debugging scenarios.

    Fiddler

  • SQL Prompt — IntelliSense and snippets for T-SQL inside Microsoft SQL Server Management Studio.

    SQL Prompt

  • NAnt / Ant — XML-based build tools. For build automation freaks like me.

    NAnt

Web Apps

  • Google Reader — An RSS feed reader that just works.

    Google Reader

  • Instapaper — A web site with an accompanying bookmarklet that lets you save web pages for reading later. Great when used along with an iOS or Android app.

    Instapaper

  • Metareads — A web reader that lets you read articles just the way you like it — with paging, adjustable margins and custom fonts, eg.: read this post in Metareads Reader.

    Metareads

  • CrawlCast — Easily extract audio tracks from popular video hosting services like YouTube, Vimeo, Google Video, TED, Channel 9 and other.

    CrawlCast

  • Dropbox — A cloud storage service. What I specifically like about it is its terrific integration with the OS.

    Dropbox

  • Grooveshark — A music streaming service. No more juggling MP3s between workstations.

    Grooveshark

Firefox Add-ons

  • Tree Style Tab — Seriously, tabs at the top of browser windows should go away. This add-on is the single reason why I’m still using Firefox instead of Chrome which some time ago ditched the Side Tabs experimental feature.

    Tree Style Tab

  • Adblock Plus — This should go without saying. The Web with ads is a horrible, horrible place.

    Adblock Plus

  • LastPass — Password manager which can integrate with every major browser. Thanks to its auto-fill and auto-login features it can save you many unnecessary keystrokes.

    LastPass

  • Session Manager — Crash recovery mechanism for Firefox which actually works. You won’t fear loosing your open tabs anymore.

    Session Manager

  • Greasemonkey — Can run custom JavaScript on specified web sites. There is a database of ready to use scripts that will fix any annoyances you may experience while browsing the Web.

    Greasemonkey

That’s it. This is my list. Do you have other tools, web sites or extensions that you can’t live without and would like to share?

All NDC 2012 Talks in MP3 Audio Format

August 7, 2012

Don’t have time to watch all the awesome talks from NDC 2012? What about listening to them during your commute or a trip?

It sounds like a good idea to me, because I think that for many talks out there, you can get most content without looking at the slides. So I extracted audio from the videos using a little website I created a while ago (www.crawlcast.com) and thought I’d share it with you.

Check it out: all NDC 2012 talks in MP3 audio format.

Personally, I’m going to start with these talks by Robert C. Martin (you can’t go wrong with this guy):

Happy listening!

Markdown Syntax Coloring in EditPad Pro

August 4, 2012

For some time now, I’ve been using Markdown for almost all plain-text files I create. If you don’t know what Markdown is, I highly recommend checking it out. It’s becoming ubiquitous on many websites out there, like GitHub or StackOverflow. I found it particularly useful for blogging when you just want to focus on the content, letting a tool do the work of converting it to HTML.

It was not until recently that it occurred to me that even though Markdown has minimalistic syntax, it might be useful to see it as you type, just like with regular programming languages. I’ve been a long time user of EditPad Pro — which in my opinion is the best text editor for Windows. It’s never let me down, it’s fast, it handles huge files, and its multi-line find/replace feature with support for regular expressions is unrivaled. It also has a vast database of syntax coloring schemes, but when I went there a couple of days ago to grab a scheme for Markdown, I found out, to my surprise, that it wasn’t there.

At the moment I was facing a choice — either start writing the blog post, which was what I originally intended to do, or try to create my own Markdown coloring scheme for EditPad Pro. The decision was easy for a procrastinator like myself, who also finds it a lot easier to code than to write. “After all, how hard could it be?” — I thought to myself — “I’ll just need to hack a few regular expressions.” And I was right, however, it took me much more time than I originally estimated. Sounds familiar?

Anyway, after a couple of days tweaking the scheme and learning new things about regular expressions along the way, like what is negative lookbehind or possessive quantifier, I was done. And now I would like to share this scheme with those who happen to use EditPad Pro and like Markdown. Just take a look at the screenshots below, aren’t they pretty?

Fresh Air Night
Paper Light Paper

Credits for color palettes go to the author of Mou - a Markdown editor for Mac.

You can grab the scheme from EditPad Pro’s website but note that it does not include color palettes. You have to download them separately from the GitHub page where you can also create a fork should you feel like customizing them. Detailed instructions on how to install both the scheme and color palettes are also on the GitHub page.

Happy writing!

Keyboard-Friendly TortoiseHg

July 28, 2012

I’ve been using more and more Mercurial these days and I’d say I’m now sold on the idea of Distributed Version Control Systems. The speed is great, rigorous branching is designed in from the beginning (as opposed to Subversion) and websites like GitHub and Bitbucket make collaboration on code dead easy and fun.

There are several annoyances though, one of which is that TortoiseHg, a GUI for Mercurial, lacks proper keyboard support. I find it very odd that this aspect has been so much neglected by developers of this, otherwise very fine, piece of software as I truly believe that we are typists first, programmers second.

One might argue that if I insist on using a keyboard, I can do everything with a Mercurial repository from the command line. However, I postulate that if you want to maximize your efficiency with a computer, you have to put to good use both your keyboard and the mouse. Aside from that, I appreciate the ease of navigating through the repository log and its visualization. In case you’re wondering, I just checked that there is an extension for displaying repository graph in ASCII (hg glog) - isn’t it silly?

Anyway, if you’re also missing some keyboard shortcuts in TortoiseHg, you might want to check out my fork of it on Bitbucket where I hope to contribute some code for other developers who, like me, decided at one time to go commando and put down the mouse.

Shaping InstaFetch - Source Code Repository Visualization

July 14, 2012

In an NDC 2012 talk, titled "How to get productive in a project in 24h" (highly recommended by the way), Greg Young was talking about data mining your source code repository (among other things) and showed a brilliant visualization of the jQuery repository.

Turns out one can create such visualizations in a matter of minutes using this little open-source utility called Gource. When I found out, I immediately run the tool on some of my pet projects repositories and it was a great fun.

I thought I'd share a video showing how InstaFetch (an Instapaper client for Android I've been developing since 2010) has been taking shape:

Though it has been a bit sentimental peek at the past for me, the ending is rather saddening, since Marco Arment (the author of Instapaper) has recently decided to publish an official app for Android, effectively ending the life of InstaFetch :/

Anyway, if you have software projects of your own, I encourage you to play with Gource for a while. I myself can't wait to run it on repositories at my workplace.

Remote Android Debugging

If you’re developing for Android you know the pain of the change-compile-run cycle when using the emulator. Although the emulator itself starts quite quickly (especially if you use snapshots), it takes some time for the compiled application to be installed on it. For that reason I prefer using Android x86 running inside a VirtualBox virtual machine — apps install instantly and run much faster.

However, the x86 version of Android is not perfect and sooner or later you’d better test your app on real devices. In such scenario there’s just a little quirk that bothers me greatly — the necessity to use a USB cable for debugging — it gets really cumbersome to both develop and test the app at the same time with the cable getting in the way of using the device comfortably.

It was not until very recently that I thought that it might be possible to use adb via Wi-Fi instead of USB connection. And guess what — of course it’s possible and there are already apps that facilitate this. For me, adbWireless works great.