Saturday, February 15, 2014

Getting Jekyll up and running on Windows

I've started tinkering with GitHub Pages and Jekyll, partially motivated by a recent post by Phil Haack.

Unfortunately, Jekyll (as with many Ruby projects) is not officially supported on Windows, though it's possible with a little fiddling around. There are a number of "here's what worked for me" posts out there, all of which are a little different. Here's my contribution...

The Jekyll QuickStart instructions say getting a Jekyll site up and running is a simple as:
~ $ gem install jekyll
~ $ jekyll new myblog
~ $ cd myblog
~/myblog $ jekyll serve
Well since I'm on a pretty new machine, 'gem install jekyll' won't work because I don't have Ruby installed yet. So I downloaded and ran the Ruby v1.9.3 installer from rubyinstaller.org, which installed everything to 'C:\Ruby193\'. The only option I changed from default during the install was to check the box adding the ruby binaries to my path.

Now I can run 'gem install jekyll', but it complains because I don't have the Ruby DevKit installed, and directs me to installation instructions on the GitHub project wiki.

I downloaded the DevKit for Ruby v1.9.3 (again from rubyinstaller.org). The installer relies on you to choose a good permanent home for the extracted DevKit files. I chose to put it underneath my Ruby install location in 'C:\Ruby193\devkit\' (creating the 'devkit' directory myself). I saved the .exe file to that location and ran the .exe to extract it's files to the same directory. I then opened up a console and ran 'ruby dk.rb init' and 'ruby dk.rb install', per the instructions linked above.

Now that Ruby and the Ruby DevKit were installed, I was able to run 'gem install jekyll' without error. Following Jekyll's QuickStart instructions, I ran 'jekyll new myblog' to create a new default blog site. It ran without error.

I then ran 'jekyll serve', but it blew up with the following error output:
C:\temp\JekyllDemo\myblog>jekyll serve    Configuration file: C:/temp/JekyllDemo/myblog/_config.yml
            Source: C:/temp/JekyllDemo/myblog
       Destination: C:/temp/JekyllDemo/myblog/_site
      Generating... C:/Ruby193/lib/ruby/gems/1.9.1/gems/posix-spawn-0.3.8/lib/posix/spawn.rb:162: warning: cannot close fd before spawn
'which' is not recognized as an internal or external command,
operable program or batch file.
error: Invalid argument - C:/temp/JekyllDemo/myblog/_site/C:. Use --trace to view backtrace
While the error isn't exactly the same, I tried the guidance at the bottom of this post, uninstalling the pygments.rb code formatting gem and reinstalling to an older version which (apparently) plays nicer with Windows.
gem uninstall pygments.rb
gem install pygments.rb --version "=0.5.0"
And that resolved some of the errors, but not all:
C:\temp\JekyllDemo\myblog>jekyll serve
Configuration file: C:/temp/JekyllDemo/myblog/_config.yml
            Source: C:/temp/JekyllDemo/myblog
       Destination: C:/temp/JekyllDemo/myblog/_site
      Generating... error: Invalid argument - C:/temp/JekyllDemo/myblog/_site/C:. Use --trace to view backtrace
I then found an answer on StackOverflow which resolved the remaining problem:
gem uninstall jekyll
gem install jekyll --version "=1.4.2"
Now I can 'jekyll serve' and browse the resulting page . Nice!

Not too painful, all in all. Basically it came down to getting the right (well, older compatible) versions installed:

  • Ruby v1.9.3
  • Ruby DevKit for Ruby v1.9.3
  • jekyll v1.4.2
  • pygments.rb v0.5.0
Hopefully some awesome contributors to the Jekyll and Pygments.rb projects will get the newer versions stablized on Windows. In the meantime, big ups to everyone on those projects for their work to date!

Update: After starting to work with Jekyll, I quickly wanted to be able to run 'jekyll serve --watch' so the site would automatically detect updates as I created posts and otherwise played around. But running that command resulted in the following error (I've omitted a stack trace for brevity):
C:\temp\JekyllDemo\myblog>jekyll serve --watch
Configuration file: C:/temp/JekyllDemo/myblog/_config.yml
            Source: C:/temp/JekyllDemo/myblog
       Destination: C:/temp/JekyllDemo/myblog/_site
      Generating... done.
 Auto-regeneration: enabled
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- wdm (LoadError)
Thanks to some folks on StackOverflow, I was able to resolve this error by installing the 'wdm' gem via:
gem install wdm
Editing the site is much easier now that watch is working.

Sunday, April 8, 2012

Multiple Eclipse Projects in One Mercurial Repository

Eclipse is a tremendous IDE... except when it's not. One area I've found less than intuitive has been creating a single Mercurial repository to house multiple interdependent projects.

While exploring Android development, I've wanted to keep my application and test projects together in a single repository. It's (hopefully) obvious that you'd want to track changes to your application code and test code alongside each other so they're always in sync. But for some reason, adding these two separate projects to a single repository is not intuitive to do from inside Eclipse, at least while using the MercurialEclipse plugin.

There is probably a better way to do this, but here's how I've gotten things working. It relies on a combination of MercurialEclipse and an external-from-Eclipse tool. I recommend the excellent TortoiseHg.

Finally, these steps were outlined pretty quickly and I haven't tested all scenarios. Your mileage may vary.

Creating a new repository and adding projects:

  1. If needed, create a new workspace in Eclipse.
  2. Create a new directory underneath your workspace to contain your repository, and init a new repository there.
  3. Open the workspace in Eclipse.
  4. Add one or more new projects. You can try unchecking "Use default location" and adding them under the repository root, but it still always adds them to my workspace root for me.
  5. Close Eclipse.
  6. Manually move the project folder inside the repository folder.
  7. Commit the project's contents to your repository.
  8. Open the workspace in Eclipse.
  9. There will still be an entry in your Package Explorer for the project that you moved, which references the old project location. Delete it (right-click -> Delete). We'll re-add it momentarily.
  10. File -> Import -> Mercurial -> Projects from Local Mercurial Repository
  11. Browse to the root of your repository directory. Eclipse should detect the projects inside your repository directory, including any that might already be listed in your Package Explorer.
  12. Check only the project(s) you just created, and click Finish.

Importing projects from an existing repository:

  1. If you haven't done so yet, clone the repository to a directory inside your workspace using an external tool.
  2. Open the workspace in Eclipse.
  3. File -> Import -> Mercurial -> Projects from Local Mercurial Repository
  4. Browse to the root of your repository directory. Eclipse should detect the projects inside your repository directory.
  5. Select the project(s) you want, and click Finish.

Reference links:

Friday, April 6, 2012

Blocking Facebook Apps

This has been annoying me for ages.  Here's the rather hidden means Facebook provides to block apps from sending notifications, etc.
  1. In Facebook, click the world icon at the top of the page.
  2. Click “see all notifications” at the bottom of the popup.
    • If you can’t find the world icon use this link to go to the notifications directly.
  3. Click on the X on the right side of the offending notification.
  4. Click change app settings.
  5. Select to notify NEVER.
These instructions blatently stolen from the helpful Daniel Travolto.

Saturday, February 25, 2012

IDE Color Themes for Eclipse and Visual Studio

I hate hate hate (did I say hate?) staring at black-on-white text on a monitor. When your whole day is spent in front of a computer, the glare from a bright LCD screen can lead to some pretty serious eye strain. So for any tool in which I spend a significant amount of time, I tend to adjust the colors to give my eyes a rest.

As a developer working in an IDE with syntax highlighting, this can become a time-consuming process as you hunt down every last textual variant in the options. Fortunately, the kindly residents of the interwebs have contributed their time to the following websites.

If you're a Microsoft corporate sellout, check out Studio Styles (for Visual Studio).

If you're an Open Source hippie code-hugger, give Eclipse Color Themes a click-through. There's also an Eclipse plug-in for easy in-editor switching. Nice!

And for the love of Cheese and Rice, turn down the brightness on those monitors! Your eyes will thank you!

Sunday, January 29, 2012

Android Development - Starters Guide (Updated for Android 4.0)

First things first, major appreciation goes out to Lars Vogel for his incredibly helpful tutorial on Android development.  The last time I tinkered with all this, the best (only) online resources available were on the official Android Developers site, which is a great reference site, but didn't provide the clearest guidance to get you up and running quickly.  If you're here to get started with Android Development for the first time, save yourself some headaches and head straight over to Lars' tutorial.  Thanks Lars!

Second, the folks at Google have simplified the initial setup and installation process.  No more mucking around to download and install the SDK, then install Eclipse and install the APK plug-in, then tell the APK where your SDK is... all these dependencies can be installed for you from inside Eclipse now, and that awkward SDK configuration is handled for you.  So thanks Google!

So, here are the steps I took to set up my Android development environment.  FYI, I'm working in a VirtualBox VM with a sparkly fresh copy of Ubuntu 11.10.
  • First, open the Ubuntu Software Center, search for "eclipse", and install the Eclipse Integrated Development Environment.  (No need to install eclipse-jdt separately anymore, Ubuntu apparently gives it to you automatically now.  Yay!)  Note that it might take a while to download and install.
  • When it's done installing, launch Eclipse.
  • Use Eclipse's Update Manager (Help -> Install New Software...) to install the Android Development Toolkit plug-in.
    • First, be sure to add the software site for the version of Eclipse that you're using (in my case, it was http://download.eclipse.org/releases/indigo/).  Otherwise Eclipse won't be able to resolve dependencies when installing the ADT plug-in.  I don't know why this isn't added by default, but it always trips me up.
    • Next add Google's ADT software site (https://dl-ssl.google.com/android/eclipse/).
    • Working with the Google software site, select the "Developer Tools" item and it's four sub-items.
    • Click Next, and after Eclipse did some calculating, click Next again to confirm that you want to install the items you selected.
    • Then accept a couple of license agreements, and click Finish.
    • Eclipse will popp up a progress dialog, and do its download and install magic.
      • Note that in the middle of this step, I got a warning prompt asking me to confirm that I want to install unsigned content.  Clicking "Details" revealed that it's Google's ADT components making Eclipse a little nervous.  I clicked OK and didn't look back.
    • When the installation completes, Eclipse should prompt me to restart (Eclipse, not the whole computer), which you should do.
  • After Eclipse restarts, it should prompt you to configure a copy of the Android SDK that it can use.
    • I opted to let it install a new copy of the Android SDK, and chose to install the "latest available version" (4.0.3 at the time I'm doing this).  I left the default install location.
    • Clicking Next will lead to being prompted to let Google gather anonymous usage statistics on the SDK (your choice).
    • After a little bit of Eclipse progress-bar action, you should be prompted to Accept all of the SDK packages you wanted installed.
    • Then the Android SDK Manager will take over, showing a progress bar while it downloads and installs the SDK.
    • Note that only some of the SDK components are installed during this step.  It's enough so you can write and release an app, but there are other components for each API version that you'll also want.
  • In order to install ALL the components for a particular API version, you'll want to select them yourself in the Android SDK Manager.
    • In Eclipse, Window -> Android SDK Manager
    • Under the Packages section, check the box next to any entry or sub-entry that you want to install.  I recommend just checking the box for each version of Android that you want to target, and let it auto-check all of it's sub-entries.
    • Then click Install, and wait...
    • ...and wait...
    • ...and maybe put on a TV show until it finishes downloading and installing.
From here, I should be good to create a new android project.  But that's for another day...


Friday, January 20, 2012

Software Craftsmanship: Coding Katas

This is a collection of links to various coding katas I've run across.  I haven't tried all of them, but probably will over time.

For anyone wondering what the heck a kata is, this article from Dave Thomas is a good place to start.

First is Dave Thomas' post, which lists his original set of 21 kata.

"Vital Testing"
A set of six Kata used during Jim Weirich's half-day session at CodeMash 2012.

NimblePros Kata
Ten kata, including bowling, fizzbuzz, greed, potter, and tennis scoring.

Gilded Rose Kata
An interesting refactoring exercise where some files/classes in the project are absolutely off limits to editing.  The link above references a C# starter solution, but you can find Java and Ruby starters here.

At CodeMash 2012, there was a full-day session on "Putting the D&D in TDD".  I didn't attend, but got a link to a GitHub repo with the exercises from someone who did.  Although not exactly a set of katas, it could still be an interesting set of exercises to go through.

Sunday, October 16, 2011

Ubuntu 11.10 Upgrade

Just upgraded to Ubuntu 11.10 Oneiric Ocelot, and found that Flash was no longer installed or working. Fixed it by (re?)installing restricted extras, though I was surprised I had to do this since restricted extras was installed prior to the upgrade. Oh well.

Also ran across this interesting post on "10 things to do after installing Ubuntu 11.10". It's focused on a fresh install, and was written based on the 11.10 beta, but everything still applies and may be a helpful reference in the future.