The other blog

I started another blog. The topic range is much different from the usual topics discussed here, so instead of polluting this blog and alienating my audience I decided to start a dedicated blog/posterous about it.

This blog will stay as my programming/design/software development blog and is still going to be maintained. The other one is going to be about things I find on the web. Useful apps, interesting and innovative startups (mostly non-US based, that tend to get less publicity in the mainstream media like Techcrunch, Engadget, or Mashable), and all things related to that. Those who follow me on twitter know I tweet that stuff pretty often. Now I wanted to take it to the next level, not be constrained by 140 characters limit and make it less volatile.

If you feel that’s something that might interest you hop on and subscribe.

address: http://foundontheweb.posterous.com/

My Visual Studio (with ReSharper) color settings

That’s a post I’ve been meaning to write for quite a long time, yet I never got around to really doing it. Now, here it is – my Visual Studio color theme and it looks like this:

vs_scheme

The theme works with Visual Studio 2010 and requires Resharper 5.1 or newer with “Color Identifiers” option turned on.

Some things to notice.

Instance classes, static classes and interfaces have all very similar but slightly different shade of yellow/green.

Extension methods are slightly lighter than regular methods.

Mutable locals, immutable locals and constants have also similar but slightly different color.

The background is dark, but not completely black.

 

Hope you enjoy it. If you do – you can grab it here.

Productivity tip of the week, part 3

This time it’s not a single keyboard shortcut. There’s a little known feature of ReSharper, called To-Do Items. It’s a series of tags, you can define, and when you put them in your comments somewhere in the code, ReSharper will pick the comment up and put it, in the To-Do Explorer Window.

There are 3 predefined tags: TODO, BUG, NOTE and NotImplemented which picks up the NotImplementedException occurrences in your code. Yes, this is not a code comment, but most of the time you’ll use comments only.

So how is this useful and boosts productivity?

As you code your way, you can tag it with such comments, mostly for later review or to fix later.

productivity_3_code

You can then immediately view all of them in To-Do Explorer, and jump to any of them.

productivity_3_explorer

One thing I do however, is I redid the tags (defined via regular expressions), because the default ones used to pick up false positives.

productivity_3_pattern

I changed the pattern to be case sensitive and to include a colon after a tag. To make use of this feature, I also keep my To-Do Explorer window always visible, to ensure that I do pick up the comments I, or any other developer on the team puts in the code.

Technorati Tags:

Productivity tip of the week II

Since my Keyboard shortcut of the week post spawned some positive reactions and requests to continue it on a regular basis… well, here we go.

This week’s productivity tip of the week is actually a keyboard shortcut as well, this time however it’s ReSharper specific (you should do yourself a favor and get ReSharper anyway, if you don’t use it). It’s for Visual Studio’ keymap.:

ALT + SHIFT + L

What it does is it highlights the location of currently active file in the Solution Explorer. It’s very useful if you explore codebase, navigate between calls and want to quickly find out where you landed.

Keyboard shortcut of the week

My team at work is far from agile, but I’m trying to smuggle some ideas and practices, according to the old Latin proverb gutta cavat lapidem, non vi, sed saepe cadendo.

Recently, as a small way of continuous improvement I suggested each week we print some Visual Studio or ReSharper keyboards shortcut, that we didn’t know or use, and which can help us do some things a little bit faster.

Here’s the first one:

DSC00117

It’s pinned to a cork whiteboard in a location that everyone looks at it few times a day. Hopefully by the end of the week everyone will have it memorized, as we move to another one.

And you? What small things you do to improve your skills (or your team’s)?

Technorati Tags:

Posting to Twitter with Launchy

[UPDATE2]

This tool has been deprecated. I leave the download links as they are, but if you want to interact with Twitter from within Launchy you better check out updated version of this tool here.

[UPDATE]

I uploaded a binary version of the tool, for those who don’t want/can’t deal with source code.

Grab it here.

I’ve been using Twitter for few days now, and I’ve tried quite a few options to use it. Currently I’ve settled on three different ways of interaction with the services (excluding browsing its website)

  • When I’m in Firefox I use TwitterBar extension, that allows me to write posts in my address bar.
  • When I read posts (tweets?) of other users in Twihrl and I want to comment on them, I use Twihrl to post.
  • When I’m just doing something on my computer and I want to post without running Firefox or Twihrl I use my beloved app launcher – Launchy to post.

This last option is a little bit tricky and it required a little bit of work to set up. I assume you have Launchy already installed. If not, go get it here.

You’ll also need Twitt.Poster that we’ll be invoking from Launchy to do actual work for us. Just compile the project, set your username and password in app.config, and put the compiled files in some directory.

Next, open Launchy, right-click it, and select “Options”. Then navigate to “Plugins” tab, and select “Runny”. This is the plugin, that will invoke Twitt.Poster.

To make it do so, click the ‘+’ button at the bottom and add new entry to the grid. Name is the name of the command in Launchy – “twitt” in my example but you can call it whatever you like. Then Program is the fully qualified path to the executable of the poster application. Last column is command line arguments and you should set it to “$$”. Notice that you need to put dollar sings in quotation marks, otherwise it won’t work. When you’re done just click OK, and we’re all set.

launchy_twitter

Now you can invoke the command in Launchy, press tab, and enter your message. When you’re done just press enter and your message should get posted to Twitter.

launchy_twitter2

That’s it. So far this is my favorite way of posting to Twitter.

As for Twitter.Poster, use it however you like and don’t sue me if it breaks something. I publish it on terms of BSD licence. However, it uses Twitterizer library, that is licensed under terms of GPL v3, so take that into account when creating derivative work.

This is just a sample application that I created mostly for myself. However you can post bugs and feature requests in comments. I don’t want to promise anything, but I may implement some of them if there’s demand and I find some time.

Technorati Tags: ,

ALT.NET Thunderbird configuration

ALT.NET discussion group is quite active.

altnet_activity

There are around 1700, to over 2000 posts per month. It’s easy to drown in the flood of information, and if you want to benefit from the group you need to develop a strategy.

Here’s mine:

I use Thunderbird, as my email client, and for the group as well. In its basic form, it’s not so well suited for the job of handling threaded discussion, but same as Firefox – you can expand its capabilities with extensions.

altnet_thunderbird_threads

The first thing to do, even before you go looking for extensions is viewing your messages by threads. [via Lifehacker]

To do this, go to Tools–>Options–>Advanced–>General, and select “Config Editor”. Find mailnews.thread_pane_column_unthreads and change its value to false. And you’re done. You should have now your messages grouped in threads and sorted by date, like I have on the screenshot above.

altnet_sort_by_thread

 altnet_extensions_quotecollapse

My favorite extension is QuoteCollapse. Its name is quite self-explanatory – it collapses quoted text in messages, so that you can only see what the person actually has written, without seeing all previous posts that you probably already read before.

 

altnet_extensions_quotecollapse_sample

  The small picture you see on the above screenshot was put there by MessageFaces extension. It gets those images from gravatar.com, or some other places. I don’t exactly know, but it’s good to visually recognize the author of the message. Even if you remember the author as “tape-measure guy”, it’s still easier to connect those posts to earlier posts by the same author, at least for me.

SearchBar, is a small but useful extension that allows you to quickly find some message very easily.

Url Link, is an extension that I use in both: Firefox and Thunderbird, that allows you to click links that are inserted as plain text, like this: www.goo… eeeer I mean www.live.com.

altnet_extensions_QuickTextQuickText allows you to easily insert parts of text, with some level of flexibility, i.e. you can do something like: [[TO=firstname]]. I use it for my header and footer mostly.

GMailUI sets a few usefull shortcuts, so that you can with one key, move to next unread message, mark all thread as read, and so on. I believe those are the same shortcuts as for GMail, but I’m to lazy to verify that.

And that’s about it. How about you? What do you use?

How to unregister windows service

Tool for managing windows services in Windows XP allows you many things, but you can’t unregister (delete, remove) a service with it. There is however a command line tool that allows that.

Remember that unregistering important services may break your system. If you aren’t sure what you’re doing – don’t. You have been warned.

services_1 First you need to check real name of the service (not it’s display name). To do this go to Control Panel–>Administrative Tools–>Services, and find the service you want to uninstall. Right click it, and choose “Properties”. Then, on the “General” tab, find “Service Name”. For example for service on the screenshot it’s WLSetupSvc.

 

 

 

Next go to command line and run command ‘sc’, it will enumerate its options. This is the tool, that we’ll use to uninstall the service. To do this type

sc delete SERVICENAME

services_2 If everything goes fine, you’ll see command similar to second screenshot, and you’ll computer will continue working.

 

 

 

Technorati Tags: ,

Cheating an application

I have contact with lots of different software. However yesterday I came across an application, that completely blew my mind… in a negative sense. This particular application uses its own custom file format, that is basically zip, with special files and folders inside, much like Open XML and Open Office file formats work. What’s different however, is that it requires you to have WinZip installed in order for it to work. And by WinZip, I mean WinZip, not just some generic compressing/decompressing program that supports zip format. This thing is so ridiculous that I just don’t know what to say. ANY software that requires the user to use some other specific tool is broken by design, but requiring your users to buy other commercial tool to do such basic thing as compression/decompression… it’s just rude.

Well, anyway, as I really had no other choice but to use it, I decided not to give up and see how much it really needs actual WinZip. To do this I took invaluable tool from SysInternals (now part of Microsoft) called Process Monitor. With it you can see how processes on your system interact with each other and with the system. So I set it up, ran the evil program, made it do its thing, and then I could analyze what showed up in Process Monitor.

There were two important things to notice in the log:

  1. How the program identified WinZip’s exeprocmon1
    When you install it, you have to point it to a directory, where you have your WnZip installed. Important thing to see here, is ‘filter’ attribute in Details column. The way I understand it, it tells us, that the program was looking exactly for “winzip32.exe”. So it seemed like it doesn’t use WinZip’s libraries, nor it’s (if WinZip actually has one) automation model, but it just call winzip32.exe with command line parameters.
  2. What are command line parameters it passes to WinZip32.exe
    procmon2 Few (hundred) lines below I found out answer, when I looked at command line WinZip was actually called with: -a -x ‘path to where it wanted zip file to be saved’ ‘path to files it wants to compress’. (it called WinZip in few other places, with other commands, like when extracting files, but the general way to do this stayed the same)

It seems, that WinZip’s command line parameters are not public, but this little site, helped me with that. At this point, it looked like all this application really needs, is a executable called winzip32.exe that supports few of WinZip’s command line parameters. All I needed to do, was to find one. Unfortunately, after checking out few free compression/decompression tools I wasn’t any closer to the solution, as none of them would interpret those parameters the way WinZip does.

Then I decided to write my own using some free library. The actual code is not interesting, only interesting thing about it is that it was less than 30 LOC long and took me 15 minutes to implement (including time spent on learning the library). Now, you can look at it from two perspectives. One is, that with 30 lines of code, I saved my company quite an amount of money, it would have to spend on several WinZip licenses. The other is, makers of that tool required you to buy 3rd party tool to do something that can be done in few lines of code. I won’t comment on that…

Technorati Tags: ,

Resize any Firefox Window

I sometimes come across a website that pops up a window with some video, chat or something, but its size is fixed, and it doesn’t fit in it, when opened in Firefox. I used to move that tab to the main window, where I’m able to resize it, but I don’t like doing that. I want to be able to resize that stubborn window in the first place, so I found a way to do just that.

It only requires three simple steps:

  • write about:config in your address bar, and hit enter
  • find dom.disable_window_open_feature.resizable
  • double-click it in order to change its value.

Change its value to true

Changes take effect immediately, so you don’t have to restart your browser or anything. Now, you can resize any window.

You can now resize any window

Technorati Tags: ,