diff --git a/app/styles/home.sass b/app/styles/home.sass
index b03fa5097..2e0d77fdd 100644
--- a/app/styles/home.sass
+++ b/app/styles/home.sass
@@ -81,7 +81,7 @@
           text-shadow: none
 
         .code-wizard
-          display: none
+          opacity: 0.5
 
     .code-language
       cursor: pointer
@@ -97,6 +97,7 @@
 
         .code-wizard
           display: block
+          opacity: 1
 
       &.selected-language
         opacity: 1
diff --git a/app/templates/home.jade b/app/templates/home.jade
index 8be32e95d..d854013fc 100644
--- a/app/templates/home.jade
+++ b/app/templates/home.jade
@@ -7,7 +7,7 @@ block content
   .code-languages
     .primary-code-languages.row
       .col-md-6
-        .code-language.selected-language#javascript(data-code-language='javascript')
+        .code-language#javascript(data-code-language='javascript')
           .code-wizard
           h2 JavaScript
           p The language of the web. Great for writing websites, web apps, HTML5 games, and servers.
diff --git a/app/views/home_view.coffee b/app/views/home_view.coffee
index ef36bac52..a117d9469 100644
--- a/app/views/home_view.coffee
+++ b/app/views/home_view.coffee
@@ -10,6 +10,9 @@ module.exports = class HomeView extends View
   id: 'home-view'
   template: template
 
+  events:
+    'click .code-language': 'onCodeLanguageSelected'
+
   constructor: ->
     super(arguments...)
     ThangType.loadUniversalWizard()
@@ -25,6 +28,7 @@ module.exports = class HomeView extends View
       console.warn 'no more jquery browser version...'
     c.isEnglish = (me.get('preferredLanguage') or 'en').startsWith 'en'
     c.languageName = me.get('preferredLanguage')
+    c.codeLanguage = (me.get('aceConfig') ? {}).language or 'javascript'
     c
 
   afterRender: ->
@@ -42,3 +46,17 @@ module.exports = class HomeView extends View
         href[href.length-1] = lastLevel if href.length isnt 0
         href = href.join("/")
         playLink.attr("href", href)
+
+    codeLanguage = (me.get('aceConfig') ? {}).language or 'javascript'
+    @$el.find(".code-language[data-code-language=#{codeLanguage}]").addClass 'selected-language'
+
+  onCodeLanguageSelected: (e) ->
+    target = $(e.target).closest('.code-language')
+    codeLanguage = target.data('code-language')
+    @$el.find('.code-language').removeClass 'selected-language'
+    target.addClass 'selected-language'
+    aceConfig = me.get('aceConfig') ? {}
+    return if (aceConfig.language or 'javascript') is codeLanguage
+    aceConfig.language = codeLanguage
+    me.set 'aceConfig', aceConfig
+    me.save()  # me.patch() doesn't work if aceConfig previously existed and we switched just once