diff --git a/posts/2006/02/obligatory-post-about-ruby-on-rails.md b/posts/2006/02/obligatory-post-about-ruby-on-rails.md index 7a51136..c8310f5 100644 --- a/posts/2006/02/obligatory-post-about-ruby-on-rails.md +++ b/posts/2006/02/obligatory-post-about-ruby-on-rails.md @@ -64,9 +64,9 @@ Tags: rails, coding, hacking, migration, rails, testing
  1. Separating data, function, and design
  2. -
  3. Readability (which is underrated)
  4. -
  5. Database migrations
  6. -
  7. Testing is so easy it hurts
  8. +
  9. Readability (which is underrated)
  10. +
  11. Database migrations
  12. +
  13. Testing is so easy it hurts
diff --git a/posts/2006/02/textmate-insert-text-into-self-down.md b/posts/2006/02/textmate-insert-text-into-self-down.md index 9ca11c9..5179fa2 100644 --- a/posts/2006/02/textmate-insert-text-into-self-down.md +++ b/posts/2006/02/textmate-insert-text-into-self-down.md @@ -42,10 +42,10 @@ Tags: textmate, rails, hacking, commands, macro, rails, snippets, textmate @@ -55,9 +55,9 @@ Tags: textmate, rails, hacking, commands, macro, rails, snippets, textmate The macro I'm thinking of to invoke this is tab-triggered and will simply: diff --git a/posts/2006/12/coping-with-windows-xp-activiation-on-a-mac.md b/posts/2006/12/coping-with-windows-xp-activiation-on-a-mac.md index a7e6691..b27a2c7 100644 --- a/posts/2006/12/coping-with-windows-xp-activiation-on-a-mac.md +++ b/posts/2006/12/coping-with-windows-xp-activiation-on-a-mac.md @@ -70,7 +70,7 @@ Now that you have your activations backed up you need to have the correct ones c If you have XP Pro then you can get it to run using the Group Policy editor. Save the activate.bat script provided here anywhere and then have it run as a system service. Go Start -> Run... -> gpedit.msc [enter] Computer Configuration -> Windows Settings -> Scripts (Startup/Shutdown) -> Startup -> Add. -

If you have XP Home then the best you can do is run this script from your Startup folder (Start -> All Programs -> Startup), but that is not really going to work because eventually Windows will not even let you log in until you activate it. What a P.O.S.

+

If you have XP Home then the best you can do is run this script from your Startup folder (Start -> All Programs -> Startup), but that is not really going to work because eventually Windows will not even let you log in until you activate it. What a P.O.S.

@echo off diff --git a/posts/2007/05/a-scheme-parser-in-haskell-part-1.md b/posts/2007/05/a-scheme-parser-in-haskell-part-1.md index bf2e830..4ae329a 100644 --- a/posts/2007/05/a-scheme-parser-in-haskell-part-1.md +++ b/posts/2007/05/a-scheme-parser-in-haskell-part-1.md @@ -9,7 +9,7 @@ Tags: coding, haskell From Write Yourself a Scheme in 48 hours:
-

Basically, a monad is a way of saying "there's some extra information attached to this value, which most functions don't need to worry about". In this example, the "extra information" is the fact that this action performs IO, and the basic value is nothing, represented as "()". Monadic values are often called "actions", because the easiest way to think about the IO monad is a sequencing of actions that each might affect the outside world.

+

Basically, a monad is a way of saying "there's some extra information attached to this value, which most functions don't need to worry about". In this example, the "extra information" is the fact that this action performs IO, and the basic value is nothing, represented as "()". Monadic values are often called "actions", because the easiest way to think about the IO monad is a sequencing of actions that each might affect the outside world.

I really like this tutorial. I'm only on part 3.3 of 12, parsing, but I'm new to Haskell so I'm learning left, right & centre. The exercises are taking me hours of reading and experimenting, and it's lots of fun! ghc's errors are usually quite helpful and of course ghci is a big help as well. @@ -28,7 +28,7 @@ Okay that's pretty simple right? Let's break it down, first looking at the right * liftM is concisely and effectively defined elsewhere, and I'll borrow their description:
-

liftM f m lets a non-monadic function f operate on the contents of monad m

+

liftM f m lets a non-monadic function f operate on the contents of monad m

liftM's type is also quite telling: liftM :: (Monad m) => (a -> b) -> (m a -> m b) diff --git a/public/f/localstorage.html b/public/f/localstorage.html index 1e3f562..a677861 100644 --- a/public/f/localstorage.html +++ b/public/f/localstorage.html @@ -2,9 +2,9 @@

diff --git a/public/f/note.html b/public/f/note.html index d0870af..d4166e2 100644 --- a/public/f/note.html +++ b/public/f/note.html @@ -13,12 +13,12 @@ if (timeout) clearTimeout(timeout); timeout = setTimeout(saveNote, 100); }); - restoreNote(); - note.focus(); + restoreNote(); + note.focus(); }); function saveNote() { localStorage.note = note.innerText; - timeout = null; + timeout = null; } function restoreNote() { note.innerText = localStorage.note || ''; diff --git a/public/images/manifest.json b/public/images/manifest.json index 9570cdb..1ba0063 100644 --- a/public/images/manifest.json +++ b/public/images/manifest.json @@ -1,16 +1,16 @@ { - "name": "", - "icons": [ - { - "src": "\/images\/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image\/png" - }, - { - "src": "\/images\/android-chrome-256x256.png", - "sizes": "256x256", - "type": "image\/png" - } - ], - "theme_color": "#ffffff" + "name": "", + "icons": [ + { + "src": "\/images\/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png" + }, + { + "src": "\/images\/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image\/png" + } + ], + "theme_color": "#ffffff" }