Git SVN Error in SourceTree for Mac after upgrading to OS X Mavericks 10.9

I upgraded my Mac to OS X Mavericks 10.9 yesterday evening and everything has been going well, except for one thing with SourceTree and Git SVN repositories. When attempting to synchronize SVN repositories with SourceTree via Git, the following error occurs:

Can't locate SVN/Core.pm in @INC (@INC contains: 
/Applications/Xcode.app/Contents/Developer/usr/share/git-core/perl 
/usr/../Library/Perl/5.12/darwin-thread-multi-2level 
/usr/share/git-core/perl /Library/Perl/5.12/darwin-thread-multi-2level 
/Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level 
/Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 
/System/Library/Perl/5.12/darwin-thread-multi-2level 
/System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level 
/System/Library/Perl/Extras/5.12 .) at /usr/libexec/git-core/git-svn line 61.

So something’s wrong with OS X’s Perl installation. I couldn’t figure out what exactly, but configuring SourceTree to use your system’s Git installation (instead of SourceTree’s built-in version) seems to do the trick. Here’s how:

  1. Open SourceTree Preferences
  2. Click the “Git” tab
  3. Click the “Use System Git” button

SourceTreePreferences

SourceTreeSystemGit

How to use your computer’s keyboard with the Windows Phone emulators

It’s a little known fact (at least, it was to me) that you can actually use your computer’s keyboard when interacting with the Windows Phone 7 & 8 emulators. This feature is somewhat hidden and differs slightly between the major OS versions:

  • Windows Phone 8: Page-Down enables computer keyboard, Page-Up disables it
  • Windows Phone 7: Page-Up enables computer keyboard, Page-Down disables it

Funny how this is inconsistent between versions. In any case, it eliminates the need for clumsily clicking keys on the on-screen keyboard.

How to compile Node.js from source with Ubuntu

UPDATE: Works with Node.js 0.6.6 and 0.6.7 on Ubuntu 11.10 (Oneiric Ocelot) / Linux Mint 12 (Lisa).

There are no pre-compiled packages for Linux, so if you want to use Node.js, you’ll have to build it yourself. It’s easy enough though, and here’s how.

Download and unpack Node.js Source

You can obtain the release version from their website or get an edgier version from their Git source repository. If you acquired it from the former source, you’ll need to decompress it first, for instance to /usr/local/src/.

(optional) Install the build tools

If you haven’t done this before, your system most likely won’t have the required tools for software compilation. You can easily install them: 

sudo apt-get install build-essential checkinstall 

(optional) Install openssl-dev

If you want to compile with SSL support (default), you’ll also need to install the OpenSSL Development Packages, like so:

sudo apt-get install libssl-dev

Build Node.js

Open up a terminal witndow and navigate to the directory that contains the Node.js source, e.g. /usr/local/src/node-0.6.6. And execute the following commands in succession: 

./configure
make
sudo make install

If all goes well, you should be able to access the node command from any terminal window.

How to build a JavaScript project with Maven

Prologue

This year’s buzzword has to be ‘HTML5’. Everywhere I go, people are making a fuss out of building HTML5 ‘applications’ (for the desktop too, now, with Windows 8’s WinRT). However, I see HTML5 more blandly as ‘HTML/JavaScript’, and I make this pairing consciously, because in my opinion, there is no HTML5 without JavaScript and vice versa. Therefore it’s important to know and master the intricacies of JavaScript before boasting your “HTML5”-skills to friends, colleagues and the world at large (using a <header> tag doesn’t count as a skill). Don’t be fooled by JavaScript’s supposed simplicity. It’s just that simplicity (read: lack of OO principles) that makes it difficult to use for building maintainable and enterprise-grade software. Languages like Java, C#, and even ActionScript (JS’ cousin), provide the developer with a degree of standardization and structure that is severely missed in the JavaScript world.

From my point of view, JavaScript has two weaknesses: its loose type system and its prototypal inheritance model. I know many people don’t agree and opine that the points I just made are actually strengths. Point taken. It does have a couple of things going for it: ubiquity and a low barrier to entry.

Tacking a build process onto JavaScript, with Maven

If you’re used to a more object-oriented development language/platform, with classes, interfaces, inheritance, strict typing, unit and integration testing, this all looks very scary. Many enterprise developers seek the assistance of Maven, Ant or other tools of that ilk to manage framework dependencies, build and test processes, and code quality metrics. And there’s no reason why this can’t also be applied to JavaScript development.

Yes, JavaScript can be tamed, you heard it right. With a limited amount of effort, we can let Maven take care of the following:

  • compile and validate your code with JSLint
  • compress and obfuscate your .js files in one fell swoop
  • combine all of your compressed .js source files into a single JavaScript module
  • integrate with the Jasmine BDD test framework for unit/integration testing of your JS code
  • code quality reporting with JSLint
  • generate JSDoc documentation

Prerequisites

Maven is a Java-based tool, so you’ll need to get the latest Java JDK from Oracle. I’m still using JDK 6, but I guess JDK 7 would do as well. Other than that, you’ll need to get the Maven 3 binary and unzip it somewhere. For your convience, you may want to consider adding it to your path (Windows, Mac, Ubuntu Linux). Fire up a text-editor (I like NetBeans for pom.xml and JavaScript editing) and a command-line window. You’re good to go!

The pom.xml config 

Here’s the full pom.xml configuration file. It’s currently still a work in progress, but it implements all of the features I described above. In the subsequent section I’ll provide more information on every section of importance.

In depth 

Same file, with some extra comments.

 

I’m continuously looking for things to add, so any suggestions are welcome. Also, I’m maintaining this project on BitBucket, here

How to prevent Firefox’ plugin hang detector from triggering during Flex development

Firefox’ plugin hang detector is a feature that aims to reduce browser crashing caused by plugins like Flash or Silverlight hanging for prolonged periods of time. Firefox will cut a plugin process off after a predefined timeout, set to 15 seconds by default. While I loudly applaud this stability feature, it is an annoying one to deal with if you’re a Flash developer using a debugger. Setting breakpoints for longer than 15 seconds will trigger the hang detector and break off your debugging session. Very annoying indeed.

Fortunately, there is a way to disable this feature (or set the timout to something more usable).
Here’s how.

Step 1: about:config

Open up a new tab and type about:config to bring up the advanced configuration page. Click past the warning ;-).

Step 2: Set timeout to -1 to disable

Use the filter field to search for dom.ipc.plugins.timeoutSecs and set its value to -1 to disable the detector entirely. Of course, you’re free to set it to any higher value, just remember that the timeout is expressed in seconds and you’re good to go.

How to install Flash Builder 4.5 “Burrito” on Ubuntu Linux 11.04 “Natty Narwhal”

In recent months, Adobe has formally dropped Linux support for it’s Eclipse-based Flash Builder IDE. Eclipse itself is cross-platform, however, so it was undoubtedly an artificial measure. Adobe probably figures the Linux developer community is just too small to support. And hey, they may have a point.

I know a lot of developers have a least one foot in Linux-land, still, so when I found out someone ported Flash Builder 4.5 to Linux, I was fast to try it out. It requires a some tinkering, as is customary with Linux, but it’s not too bad. Here’s how.

fb4linux

fb4linux – a straight port of the Flash Builder Eclipse plugin – is an open source project that resides on Google Code. The project is has medium activity, and supports Adobe’s latest release of Flash Builder, i.e. 4.5 “Burrito”, which is actually quite surprising. Being an unofficial port though, some features are disabled or don’t function properly, e.g. the network monitor and the profiler. These features don’t even work decently on a supported platform, so unless you really rely on these features, it’s not a big deal.

Installation

It looks like the installation instructions on the project’s website are out of date, but with a some common sense, you should be able to get it rolling.
Note: I’m running Ubuntu 11.04 with Unity.

Install Eclipse from Ubuntu Software Center

Open ‘Ubuntu Software Center’ and type eclipse in the search box in the top right corner.

Eclipse installs to /usr/lib/eclipse by default. This is an important location, since we’ll be pasting files into this directory later on. Note that you can find out install locations easily by using the Synaptic Package Manager. Just search for an app, right-click its entry and select Properties from from the contextual menu. The information you need will be under the Installed Files tab.

Get fb4linux

Download burrito4linux here and unpack it. The unpacked archive contains the following top-level directories:

  • /eclipse
    • /features
    • /plugins

Paste /features and /plugins

The next step is to paste the /features and /plugins directories in place into /var/lib/eclipse, overwriting any existing files. In order to accomplish this, however you’ll need to sudo. Open up a terminal and enter (disregard the warnings you may get in the terminal window after Nautilus opens):

sudo nautilus

Navigate to /var/lib/eclipse and paste the aforementioned files/folders from the unarchived directory. Make sure Eclipse isn’t running, just to be on the safe side.

That’s all folks! You should now have a functional Flash Builder. I haven’t gotten around to testing all features, but on first look, things looked just fine and functional. I’ll update this post if I find any critial bugs.