The Best Time Tracking App for Windows

This looks pretty fantastic. Do you have any suggestions for time tracking apps – for Windows, Mac, or Linux? I’ve had great luck with RescueTime, but I can definitely use something like Klok for tracking time on consulting projects manually.

The Best Time Tracking App for Windows

There are a number of different ways to track your work time, but for the majority of people, something like the free, cross-platform Klok is perfect for managing your workday, seeing how long your projects take, and tracking how you spend your time.

via The Best Time Tracking App for Windows.

Computer Science Question of the Day

Fun question for all the CS nerdz out there:

What is the simplest and/or most efficient function you can write to determine whether a given string has balanced brackets or not?

Examples:

  • Balanced: “(This is balanced)”
  • Not Balanced: “(((This is *not*) balanced.”

Function prototype:

bool stringHasBalancedBrackets(string inputString)

The function should return true if the brackets are balanced, otherwise false.

(BTW, there is a great solution on Stack Overflow; I’m looking to see what everyone can come up with off the top of their heads.)

Git: Complex Simplicity.

I may be totally off on some/all of these points here, but I thought I’d share some tidbits I’ve learned during my deep-dive of Git research tonight:

Git is deceptively simple.

Coming from a background in Subversion, I expected to have to jump through a bunch of hoops to get a repository configured, then get a server configured, etc. It took me most of the night to realize that you really don’t need anything other than the git binaries and a place to put your repository (local or remote).

If you do want to use a remote server to coordinate your repository, try just creating a bare repository on a remote server you can access via SSH, and “git clone” from there. Check out this Stack Overflow post for a great example: http://stackoverflow.com/questions/4948190/git-repository-sync-between-computers-when-moving-around

If you’re coming from Subversion, start by abandoning the concept of a partial checkout.

This concept kept me from making progress with Git longer than any other misconception I had. If you get caught up in trying to recreate your Subversion workflow in Git, you’ll get frustrated. If you embrace the concept of lots of small repositories that represent the folders/projects that you’d selectively check out from a master repository, then you’ll get Git right away. (FWIW, I did read about git submodules, but for my own purposes, fully separate repositories work best.)

The best way to learn is to experiment!

The best advice I can give is to just get your feet wet. Once you have a local version of Git installed, just start creating repositories and experiment with clones, commits, pushes, and pulls. If you do plan to work with a team and/or a remote repository, I highly suggest signing up for a GitHub account – it’s free for public repositories and pretty cheap ($7/mo starting) for private repositories.

There’s tons of help out there…

Speaking of GitHub, they also have a great site to help you get started using both Git and GitHub: http://help.github.com/

Besides the guide on GitHub, here are some of the best guides I’ve found yet:

 

svn – How to solve merge issues in large Subversion repository? – Stack Overflow

After spending the night playing with Git and trying to wrap my head around the best way to migrate our large Subversion repository to Git (or Mercurial), I realized that I was really trying to solve a core issue with our Subversion merge workflow at the office and that it might help to post the issue on Stack Overflow for more input from the community.

So, here’s the question I posted to Stack Overflow, along with a link to the post there:

How to solve merge issues in large Subversion repository?

Before I explain the core issue, let me say that I’m actually quite interested in migrating our source control from Subversion to Git/Mercurial if it really is a better solution for our issues, but I’m really looking for the best solution without causing a lot of unnecessary stress on the team. (In other words, I’m not looking for the “dump Subversion altogether and move to Git” answer, since that involves a lot of thrashing and a steep learning curve.)

Now that’s out of the way, here’s our core issue:

My development team is working with a relatively large Subversion repository, where all development used to be done directly on the Trunk. A request from above for a faster release cycle led us to split our work into separate branches, with each branch containing a mirror of Trunk at the time the branch was created and sub-teams working in parallel on each branch. The new cycle is to release a specific branch to production, then merge the new changes into trunk, and merge trunk changes into each of the other branches.

Unfortunately, this has become a very painful and error-prone process, and we need to find a better way to perform our merges that also takes into account simple changes between branches such as code reformatting (some of us use “cleanup code” on our source files, some don’t).

To summarize, we need help figuring out a better way to merge that doesn’t require one or more of our developers to spend an entire day manually resolving conflicts.

(Sorry if that’s a little vague or rambling; I’ll be happy to clarify or provide more details upon request.)

Thanks in advance for any help you can provide!

Things I see in student code | FOB

My CS300 professor at Portland State University just wrote a fantastic blog post about things he commonly sees in student source code – it’s a great read and helpful for reflecting on your own code and best practices:

I’ve read quite a lot of student code over the years. Some of it is quite good. A lot of it is full of predictable badnesses. These notes attempt to enumerate some of this badness, so that you may avoid it.

This is pretty C-centric in its current form. However, many of its lessons are multilingual. This is a living document, so don’t expect it to be the same next time you look at it. In particular, the numbering may change if something gets inserted in the middle. It is revisioned automatically by Drupal, so feel free to point at a particular revision if you care.

 

via Things I see in student code | FOB.

ASP.NET Web Forms MVP

Update: Just found some great tutorials and articles on the MVP wiki here: http://wiki.webformsmvp.com/index.php?title=Spread_the_Word

ASP.NET MVC might be the new kid on the block, but there are still a host of compelling advantages to ASP.NET Web Forms.

The ASP.NET Web Forms MVP project is about bringing the love back to Web Forms through a renewed approach to using it – an approach that facilitates separation of concerns and testability whilst maintaining the rapid development that Web Forms was built to deliver.

http://webformsmvp.com/

This is really cool stuff – we’ve just started using it in our development and I can already see the benefits to plain Web Forms or MVC. Granted, if you’ve already developed a pure MVC site, this probably won’t be useful to you, but if (like most of us, I assume) you have an existing ASP.NET Web Forms site and want to try the features of MVC without completely rewriting your framework, I highly suggest checking this out.

I’ll try to see if I can abstract out some of our internal examples for a future blog post. =)

Mind = Blown.


IE9 Beta - Acid3 Score: 95%
IE9 Beta - Acid3 Score: 95%
Firefox 3.6 - Acid3 Score: 94%
Firefox 3.6 - Acid3 Score: 94%

Internet Explorer beat Firefox on the Acid3 test? I think it must be a cold day in hell. 😉

(IE9 is actually pretty badass; I’m very impressed with the work Microsoft has done to step it up in this release. Feels like an actual competitor to Chrome/Firefox, not a ball and chain like previous IE releases.)

VS2010: My Favorite Extensions

VS2010 - My Favorite Extensions
VS2010 - My Favorite Extensions

My favorite feature of VS2010 so far is the excellent extension support, which allows me to add in my favorite plugins from the Microsoft Visual Studio Gallery.

Since there are thousands of plugins in the gallery right now, I thought it might be useful to share the most useful extensions I’ve found (and currently use) so far:

In alphabetical order…

  1. AnkhSVN
    AnkhSVN is a Subversion Source Control Provider for Microsoft Visual Studio 2005, 2008 and 2010.
    AnkhSVN provides source code management support to all project types supported by Visual Studio and allows you to perform the most common version control operations directly from inside the Microsoft Visual Studio IDE.
    The Pending Changes dashboard gives you a unique insight in your development process and provides easy access to the source code and issue management features. The deep source code control (SCC) integration allows you to focus on developing, while AnkhSVN keeps track of all your changes and provides you the tools to effectively handle your specific needs.
  2. Code4Blog
    Code4Blog is a Visual Studio 2010 extension that allows to convert any code supported by Visual Studio IDE to HTML format with the same structure and colors. Main purpose of this extension is to prepare a code snippet to be published in rich documents, for example in blog posts, Microsoft Word documents or Help files. Some additional styling could be applied: max width and height of the code block, custom background (per code line), font family and font size, line numbering and others.
    Code4Blog is now published on CodePlex. You are welcome to work with the source code directly!
  3. JSEnhancements
    This extension provides outlining and matching braces highlighting features for Visual Studio JavaScript and CSS editor.
    Works both in JS/CSS files and HTML script/style blocks.
    Outlining is like in C# editor. It outlines {}’s, []’s and #region tags
    Brace highlighting is made from MSDN example.
    CodePlex page: http://jse.codeplex.com/
  4. PowerCommands for Visual Studio 2010
    PowerCommands 10.0 is a set of useful extensions for the Visual Studio 2010 adding additional functionality to various areas of the IDE.
    Visit the VSX Developer Center at http://msdn.com/vsx for more information about extending Visual Studio.
  5. PowerConsole
    This extension provides an extensible VS command window with default PowerShell integration. You can now script Visual Studio interactively in PowerShell, and enjoy familiar VS style syntax coloring and tab-completion.
    Prerequisite: Visual Studio 2010 RC (or above) + Windows PowerShell v2 (or above). After installation, open the new tool window from View->Other Windows->Power Console.
  6. Productivity Power Tools
    A set of extensions to Visual Studio Professional (and above) which improves developer productivity.
    (Tons more info at the VS Gallery Page: http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef)
  7. Regex Editor
    This sample was built to ease your pain when working with regular expressions.  It rehosts the editor in a dialog box and provides a basic language service to provide colorization, brace matching, sample testing grouping and selection tracking.  It shows re-hosting of the editor in a tool window, and provides a nice starting point for similar projects.
  8. VS10x Code Map
    VS10x Code Map is a Visual Studio 2010 extension that displays a graphical nested representation of the current editor window code (C# and VB.NET). It helps the developer  visualize type nesting, implemented interfaces, regions, member type and scope, as well as  quickly navigate to their respective position in the code editor.
  9. VS10x Method Block Highlighter
    Highlight entire methods with a colored-marker-like (standard green, yellow, cyan or magenta) background.

Steve Jobs: Thoughts On Flash

This is worth reposting as a whole, IMO:

Screenshot: Thoughts On Flash

Thoughts on Flash

Apple has a long relationship with Adobe. In fact, we met Adobe’s founders when they were in their proverbial garage. Apple was their first big customer, adopting their Postscript language for our new Laserwriter printer. Apple invested in Adobe and owned around 20% of the company for many years. The two companies worked closely together to pioneer desktop publishing and there were many good times. Since that golden era, the companies have grown apart. Apple went through its near death experience, and Adobe was drawn to the corporate market with their Acrobat products. Today the two companies still work together to serve their joint creative customers – Mac users buy around half of Adobe’s Creative Suite products – but beyond that there are few joint interests.

I wanted to jot down some of our thoughts on Adobe’s Flash products so that customers and critics may better understand why we do not allow Flash on iPhones, iPods and iPads. Adobe has characterized our decision as being primarily business driven – they say we want to protect our App Store – but in reality it is based on technology issues. Adobe claims that we are a closed system, and that Flash is open, but in fact the opposite is true. Let me explain.

First, there’s “Open”.

Adobe’s Flash products are 100% proprietary. They are only available from Adobe, and Adobe has sole authority as to their future enhancement, pricing, etc. While Adobe’s Flash products are widely available, this does not mean they are open, since they are controlled entirely by Adobe and available only from Adobe. By almost any definition, Flash is a closed system.

Apple has many proprietary products too. Though the operating system for the iPhone, iPod and iPad is proprietary, we strongly believe that all standards pertaining to the web should be open. Rather than use Flash, Apple has adopted HTML5, CSS and JavaScript – all open standards. Apple’s mobile devices all ship with high performance, low power implementations of these open standards. HTML5, the new web standard that has been adopted by Apple, Google and many others, lets web developers create advanced graphics, typography, animations and transitions without relying on third party browser plug-ins (like Flash). HTML5 is completely open and controlled by a standards committee, of which Apple is a member.

Apple even creates open standards for the web. For example, Apple began with a small open source project and created WebKit, a complete open-source HTML5 rendering engine that is the heart of the Safari web browser used in all our products. WebKit has been widely adopted. Google uses it for Android’s browser, Palm uses it, Nokia uses it, and RIM (Blackberry) has announced they will use it too. Almost every smartphone web browser other than Microsoft’s uses WebKit. By making its WebKit technology open, Apple has set the standard for mobile web browsers.

Second, there’s the “full web”.

Adobe has repeatedly said that Apple mobile devices cannot access “the full web” because 75% of video on the web is in Flash. What they don’t say is that almost all this video is also available in a more modern format, H.264, and viewable on iPhones, iPods and iPads. YouTube, with an estimated 40% of the web’s video, shines in an app bundled on all Apple mobile devices, with the iPad offering perhaps the best YouTube discovery and viewing experience ever. Add to this video from Vimeo, Netflix, Facebook, ABC, CBS, CNN, MSNBC, Fox News, ESPN, NPR, Time, The New York Times, The Wall Street Journal, Sports Illustrated, People, National Geographic, and many, many others. iPhone, iPod and iPad users aren’t missing much video.

Another Adobe claim is that Apple devices cannot play Flash games. This is true. Fortunately, there are over 50,000 games and entertainment titles on the App Store, and many of them are free. There are more games and entertainment titles available for iPhone, iPod and iPad than for any other platform in the world.

Third, there’s reliability, security and performance.

Symantec recently highlighted Flash for having one of the worst security records in 2009. We also know first hand that Flash is the number one reason Macs crash. We have been working with Adobe to fix these problems, but they have persisted for several years now. We don’t want to reduce the reliability and security of our iPhones, iPods and iPads by adding Flash.

In addition, Flash has not performed well on mobile devices. We have routinely asked Adobe to show us Flash performing well on a mobile device, any mobile device, for a few years now. We have never seen it. Adobe publicly said that Flash would ship on a smartphone in early 2009, then the second half of 2009, then the first half of 2010, and now they say the second half of 2010. We think it will eventually ship, but we’re glad we didn’t hold our breath. Who knows how it will perform?

Fourth, there’s battery life.

To achieve long battery life when playing video, mobile devices must decode the video in hardware; decoding it in software uses too much power. Many of the chips used in modern mobile devices contain a decoder called H.264 – an industry standard that is used in every Blu-ray DVD player and has been adopted by Apple, Google (YouTube), Vimeo, Netflix and many other companies.

Although Flash has recently added support for H.264, the video on almost all Flash websites currently requires an older generation decoder that is not implemented in mobile chips and must be run in software. The difference is striking: on an iPhone, for example, H.264 videos play for up to 10 hours, while videos decoded in software play for less than 5 hours before the battery is fully drained.

When websites re-encode their videos using H.264, they can offer them without using Flash at all. They play perfectly in browsers like Apple’s Safari and Google’s Chrome without any plugins whatsoever, and look great on iPhones, iPods and iPads.

Fifth, there’s Touch.

Flash was designed for PCs using mice, not for touch screens using fingers. For example, many Flash websites rely on “rollovers”, which pop up menus or other elements when the mouse arrow hovers over a specific spot. Apple’s revolutionary multi-touch interface doesn’t use a mouse, and there is no concept of a rollover. Most Flash websites will need to be rewritten to support touch-based devices. If developers need to rewrite their Flash websites, why not use modern technologies like HTML5, CSS and JavaScript?

Even if iPhones, iPods and iPads ran Flash, it would not solve the problem that most Flash websites need to be rewritten to support touch-based devices.

Sixth, the most important reason.

Besides the fact that Flash is closed and proprietary, has major technical drawbacks, and doesn’t support touch based devices, there is an even more important reason we do not allow Flash on iPhones, iPods and iPads. We have discussed the downsides of using Flash to play video and interactive content from websites, but Adobe also wants developers to adopt Flash to create apps that run on our mobile devices.

We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform. If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.

This becomes even worse if the third party is supplying a cross platform development tool. The third party may not adopt enhancements from one platform unless they are available on all of their supported platforms. Hence developers only have access to the lowest common denominator set of features. Again, we cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms.

Flash is a cross platform development tool. It is not Adobe’s goal to help developers write the best iPhone, iPod and iPad apps. It is their goal to help developers write cross platform apps. And Adobe has been painfully slow to adopt enhancements to Apple’s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5. Adobe was the last major third party developer to fully adopt Mac OS X.

Our motivation is simple – we want to provide the most advanced and innovative platform to our developers, and we want them to stand directly on the shoulders of this platform and create the best apps the world has ever seen. We want to continually enhance the platform so developers can create even more amazing, powerful, fun and useful applications. Everyone wins – we sell more devices because we have the best apps, developers reach a wider and wider audience and customer base, and users are continually delighted by the best and broadest selection of apps on any platform.

Conclusions.

Flash was created during the PC era – for PCs and mice. Flash is a successful business for Adobe, and we can understand why they want to push it beyond PCs. But the mobile era is about low power devices, touch interfaces and open web standards – all areas where Flash falls short.

The avalanche of media outlets offering their content for Apple’s mobile devices demonstrates that Flash is no longer necessary to watch video or consume any kind of web content. And the 200,000 apps on Apple’s App Store proves that Flash isn’t necessary for tens of thousands of developers to create graphically rich applications, including games.

New open standards created in the mobile era, such as HTML5, will win on mobile devices (and PCs too). Perhaps Adobe should focus more on creating great HTML5 tools for the future, and less on criticizing Apple for leaving the past behind.

Steve Jobs
April, 2010

http://www.apple.com/hotnews/thoughts-on-flash/

Software Development Posts

I’ve started to compile my software development related posts into a nice little category for your reference here:

https://blog.wolffmyren.com/category/software-development/

There’s more to come from that category, both old posts and new, as I dig out old articles and categorize them correctly. =)

For a quick reference, please check out the following articles – they’re the most useful of the bunch so far, IMO:

Thanks for visiting! =)

Quick Update: CSS/JS Auto-Minification in ASP.NET

I’ve been trying for weeks to write up a good technical article about a recent CSS/JavaScript minification handler for ASP.NET (ASHX/HttpHandler) that I whipped up, but our current release has been so busy, I haven’t had enough time to really put it all together.

Just wanted to post a quick update for everyone who mentioned they’d like to hear about it that I’ll be posting more info as soon as I can. =)

In the meantime, here are links to some of the articles that helped me construct the custom handler in the first place:

And, my own pride and joy (this damn code took me forever, only because I had to do all sorts of research and testing with Regex in C#), the function that will fix relative paths in the combined CSS files by replacing them with absolute paths based on your application root:

/// <summary>
/// CSS Only: Replaces relative paths in url(...) properties within the specified script.
/// </summary>
/// <param name="scriptBody">The pre-combined script, passed from CombineScripts().</param>
/// <param name="scriptPath">The relative path where scripts are located (ex: ~/CSS/).</param>
/// <param name="applicationPath">The absolute application path. (ex: /ApplicationRoot).</param>
/// <returns></returns>
private static String FixRelativePaths(String scriptBody, String scriptPath, String applicationPath)
{
 scriptPath = VirtualPathUtility.AppendTrailingSlash(scriptPath);
 String relativeRoot = VirtualPathUtility.Combine(applicationPath, scriptPath);

 Regex cssUrlReference = new Regex("(?<=url\\()(.+?)(?=\\))", RegexOptions.Singleline);
 Regex invalidPathChars = new Regex("[ '\"]+", RegexOptions.Singleline);

 MatchCollection urlMatches = cssUrlReference.Matches(scriptBody);
 foreach (Match m in urlMatches)
 {
 String oldPath = Regex.Replace(m.Value, "[ '\"]+", "");
 String newPath = VirtualPathUtility.Combine(relativeRoot, oldPath);
 newPath = VirtualPathUtility.ToAbsolute(newPath);
 scriptBody = scriptBody.Replace(m.Value, newPath);
 }

 return scriptBody;
}

I’d love to read your comments and/or questions about this code, so please feel free to post your thoughts in the comments on this post.

I’ll try to get you the full meal deal on this code as soon as I can. =)

KB971092 won’t install (Visual Studio 2008 Security Fix)

From Microsoft Connect:
(https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=478117)

Until Microsoft come up with an official solution there is a working workaround for this problem.

This problem only appears to affect people who have not got Visual C++ Installed.

1.) Download VS90SP1-KB971092-x86.exe from here …
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=294de390-3c94-49fb-a014-9a38580e64cb
2.) Start the installation VS90SP1-KB971092-x86.exe
3.) Wait for the error message to come up – DO NOT CLOSE THE WINDOW!
4.) Copy the temp. folder where the patch has been unpacked to a new folder, for example onto your desktop.
5.) Close VS90SP1-KB971092-x86.exe that you started in 2.)
6.) Navigate to <drive>:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools and find vsvars32.bat.
7.) Change the permissions on the file to allow everyone to edit it.
8.) Start VS90SP1-KB971092-x86.msp from within the saved folder and the process should complete.

jQuery fadeIn/fadeOut IE cleartype glitch

Thanks to Benjamin Michael Novakovic for this fix!

While using the jQuery  javascript library today at work, I noticed a glitch under IE7. When fading a html node with the .fadeIn() and .fadeOut() functions in jQuery, IE drops the windows Cleartype rendering; which results in very ugly text. This problem appears to be very common, but no one has a nice solution for the problem.

The most common way to solve this problem is by removing the filter CSS attribute. In normal javascript, it would look like this:

document.getElementById('node').style.removeAttribute('filter');

and in jQuery, it would look like this:

$('#node').fadeOut('slow', function() {
   this.style.removeAttribute('filter');
});

via Benjamin Michael Novakovic » jQuery fadeIn/fadeOut IE cleartype glitch.

11 Tools Every ASP.NET Programmer Should Install

I found a great list of “6 Free Tools that every Windows Programmer should Install” via a contact of mine on Twitter, which made me want to create my own list, similar to the tools listed in the link above, with a few additions and changes:

  1. Firebug

    If you have Firefox, but you haven’t tried this yet, install it now. You’ll thank me later. Firebug is currently my most essential tool (besides Visual Studio, of course) to web development since it effortlessly debugs JavaScript and shows you the ins and outs of the DOM on any page you’re inspecting. Firebug is available as an extension for Firefox, or as a bookmarklet for any other browser.

    It’s also worth noting that Safari and Chrome (well, anything rendered with Webkit, it seems) have an excellent set of development tools built-in that are very similar to the functionality of Firebug in Firefox, and even IE8 is catching up to the game with its Developer Tools window/pane.

  2. Unlocker

    I agree with Ian, this program is excellent. Gives you some useful information for a change (and something you can do with it) when you get the message “Cannot delete <X>: It is being used by another person or program.”

  3. TortoiseSVN

    If you’ve been using Subversion for source control, I’m sure you’ve heard of this client. If not, get it immediately. It rocks, and integrates exceptionally well with Windows Explorer. (Not to mention Visual Studio, via AnkhSVN or VisualSVN)

  4. IETester

    Since Internet Explorer is the scourge of the Interwebs that will never go away, it helps to be able to test your site in multiple versions of IE, and since only one version can be installed at a time (and since IE8 Compatibility Mode doesn’t really help at all), IETester is a good solution that lets you test IE5.5, IE6, IE7, and IE8 rendering engines in the same tabbed browser. Very cool.

  5. VMWare Player

    …But, as my coworker mentioned, Internet Explorer is pretty invasive and modifies more on your system than just the rendering DLLs, so it’s a good idea to keep a spare VM running each flavor of IE as well. VMWare Player is the free version of VMWare Workstation, which will run pre-existing virtual machines, but can’t create new ones. Since that functionality is missing from VMWare Player, you can use this site to create your own virtual machines from scratch: EasyVMX! Virtual Machine Creator.

  6. .NET Reflector

    RedGate’s description says it best:
    “.NET Reflector enables you to easily view, navigate, and search through, the class hierarchies of .NET assemblies, even if you don’t have the code for them. With it, you can decompile and analyze .NET assemblies in C#, Visual Basic, and IL.”

  7. Sysinternals Suite (includes Process Explorer)

    Ian Hickman’s post (6 Free Tools that every Windows Programmer should Install) suggests Process Explorer alone, which is a superior Task Manager replacement, but I’ll extend it to suggest the whole Sysinternals Suite, since it comes with so many other great utilities and includes Process Explorer along with them. One of my favorite tools besides PE is AutoRuns, which is a msconfig.exe replacement that offers a much better look at your startup apps and services.

  8. WinMerge

    TortoiseSVN comes with its own diff tool, but I tend to end up using WinMerge instead because it does a great job with comparing local files or differing versions of a file in source control, and integrates seamlessly with TortoiseSVN.

  9. Launchy

    I’m definitely a keyboard junkie, so anything I can do to keep my hands on the keyboard is a plus. Launchy is by far my favorite application launcher for that reason. All I have to do is hit Alt+Space (you can reassign the hotkey if you like), and it brings up a prompt that allows me to launch anything on my Start Menu, and do a number of other tasks as well (launch websites, perform quick calculations, etc.). Definitely saves me a ton of time.

  10. Charles / Fiddler

    Of the two apps listed above, I prefer Charles, which is a paid application, but I’ve listed Fiddler as a free alternative. Both apps are proxies that log traffic between your system and the server you’re debugging (even localhost) and both provide valuable debugging information that is particularly helpful when trying to debug web services. From the Charles website:
    “Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).”

  11. EmEditorNotepad++ / Notepad2

    All three of the apps listed above are excellent full-featured text editors, but I prefer the feature set of EmEditor, which is a paid application. The killer feature that EmEditor provides which I haven’t yet found in either of the other editors is the Find *and Replace* in files. Notepad++ has a Find in Files option, but I haven’t found a Replace in Files function without opening up every single document and performing a replace in all open documents (info on that approach here: How To “Find And Replace” Words In Multiple Files).

    Notepad2 doesn’t offer the same tabbed document interface that both EmEditor and Notepad++ offer, but it is an incredibly lightweight, and more importantly, self-contained executable that’s a perfect drop-in replacement for Windows Notepad (info on how to do this here: Replace Notepad with Notepad2).

    Any of these apps offer syntax highlighting and are a great alternative to firing up Visual Studio when you need to make a quick edit (or on one of the *many* occasions when Visual Studio slows waaaaay down or locks up your system).

Honorable mention: PhraseExpress
This program rocks. I’ve only started using it recently, and not nearly to its fullest potential, but the clipboard manager functionality alone is worth the download:

Also, I neglected to mention AutoHotkey since I haven’t used it as much as I probably could, but I can say that I’ve had a lot of luck with the AutoHotkey script iTunesAnywhere, which helps since I don’t have a keyboard with multimedia keys and for whatever godforsaken reason, iTunes *still* doesn’t natively support global hotkeys like Winamp does. (I’d switch back to Winamp, but I drank the Apple kool-aid and picked up an iPhone in January.)

Drupal Installation: Turn off register_globals on 1&1 Hosting

Update: If you’re having other trouble with your 1&1 Drupal setup, such as the “500 Server Error” or problems with clean URLs, try this post on Drupal.org:
http://drupal.org/node/232773


Thank you, thank you, thank you! This was bugging the hell out of me, and the link from the Drupal installer is less than helpful for sorting the register_globals issue out:

I run a couple of Drupal sites on 1and1 for historical reasons (3 years free). A while ago, I dutifully upgraded them to Drupal 5.7. And was surprised to find that PHP’s register_globals was enabled.

All this time, I’ve been running with a .htaccess file which explicitly disabled that setting — if 1and1’s Apache was running mod_php only, it turns out. Apparently, such PHP settings in .htaccess files don’t do anything if running PHP in CGI mode.

Since Drupal 5.7 warns you if register_globals is enabled, it became glaringly obvious that they were. Not a happy situation at all. Drupal is coded intelligently and securely in general, but register_globals is inherently a security risk. It should never be enabled. But worse, in many versions of PHP, there is a bug which allows even more exploits to be used when register_globals is enabled. This bug has been fixed in recent versions of PHP, but hosting companies like 1and1 are notorious for not upgrading their PHP, MySQL, etc. versions.

(via Making 1and1 More Secure | Web node for Chris Johnson, Drupal developer.)

For reference, the site above suggests to create a .htaccess file at the root of your hosting directory (~/) and add the following line to it:

AddType x-mapp-php5 .php

This helps with MediaWiki as well, but MediaWiki does have a workaround that auto-forwards the .php file to it’s corresponding .php5 file if it detects that it is running under php4.