>tracert 188.8.131.52 Tracing route to FIN [184.108.40.206] over a maximum of 30 hops: 1 <1 ms <1 ms <1 ms 192.168.1.1 2 6 ms 5 ms 5 ms L100.NYCMNY-VFTTP-59.verizon-gni.net [220.127.116.11] 3 8 ms 7 ms 8 ms G0-1-3-4.NYCMNY-LCR-21.verizon-gni.net [18.104.22.168] 4 7 ms 7 ms 7 ms ae0-0.NY325-BB-RTR1.verizon-gni.net [22.214.171.124] 5 8 ms 7 ms 7 ms 0.xe-4-1-0.XT2.NYC4.ALTER.NET [126.96.36.199] 6 10 ms 10 ms 9 ms TenGigE0-5-0-0.GW8.NYC4.ALTER.NET [188.8.131.52] 7 109 ms 110 ms 110 ms tinet-gw.customer.alter.net [184.108.40.206] 8 135 ms 135 ms 139 ms xe-0-0-0.atl11.ip4.tinet.net [220.127.116.11] 9 139 ms 139 ms 138 ms epik-networks-gw.ip4.tinet.net [18.104.22.168] 10 138 ms 138 ms 136 ms po0-3.dsr2.atl.epikip.net [22.214.171.124] 11 * * * Request timed out. 12 172 ms 175 ms 175 ms Episode.IV [126.96.36.199] 13 177 ms 175 ms 174 ms A.NEW.HOPE [188.8.131.52] 14 170 ms 170 ms 164 ms It.is.a.period.of.civil.war [184.108.40.206] 15 176 ms 171 ms 164 ms Rebel.spaceships [220.127.116.11] 16 174 ms 173 ms 169 ms striking.from.a.hidden.base [18.104.22.168] 17 180 ms 175 ms 170 ms have.won.their.first.victory [22.214.171.124] 18 169 ms 172 ms 168 ms against.the.evil.Galactic.Empire [126.96.36.199] 19 167 ms 166 ms 168 ms During.the.battle [188.8.131.52] 20 169 ms 169 ms 169 ms Rebel.spies.managed [184.108.40.206] 21 168 ms 171 ms 170 ms to.steal.secret.plans [220.127.116.11] 22 163 ms 170 ms * to.the.Empires.ultimate.weapon [18.104.22.168] 23 179 ms 176 ms 174 ms the.DEATH.STAR [22.214.171.124] 24 172 ms 165 ms 166 ms an.armored.space.station [126.96.36.199] 25 179 ms 175 ms 176 ms with.enough.power.to [188.8.131.52] 26 169 ms 174 ms 174 ms destroy.an.entire.planet [184.108.40.206] 27 171 ms 175 ms 173 ms Pursued.by.the.Empires [220.127.116.11] 28 175 ms 181 ms 176 ms sinister.agents [18.104.22.168] 29 172 ms 175 ms 177 ms Princess.Leia.races.home [22.214.171.124] 30 172 ms 174 ms 169 ms aboard.her.starship [126.96.36.199] Trace complete.
NetHack is a computer game that was first released in 1987. I don’t remember the first time I ever played; I definitely remember playing the game that inspired it called Rogue in the late 80s. I’ve probably been playing NetHack for over 15 years. You can read a synopsis of the game at Wikipedia. It’s a role-playing game where you are an adventurer attempting to find the Amulet of Yendor. All of the elements of the game are represented by different characters. As an example, you, the adventurer, are represented by an “@” symbol. The “h” character can represent dwarves or mind flayers. You can zone out playing the game, but it’s never so addictive that you can’t walk away from a game. (It helps that the game is turn-based–there is no penalty for saving the game and coming back later.)
It’s not an easy game. To win NetHack, you need to defeat the Wizard of Yendor to get the Book of the Dead, finish a quest to get the Bell of Opening, and defeat Vlad the Impaler to get the Candelabrum of Invocation. From there you can descend into Moloch’s Sanctum to defeat the High Priest and take the Amulet of Yendor. Once you have the Amulet, you need to fight your way back up the levels to escape the dungeon. Finally, you need to defeat monsters on planes of Earth, Water, Fire, and Air before reaching the Astral plane. By sacrificing the Amulet you ascend to win the game.
If you’re still reading the blog post at this point, please note: yes, I know I’m a geek :-)
Today was the first day I ever won at NetHack.
I started playing on late Saturday night and went well past midnight. That evening, I completed all of the part of the game leading to the various planes. This afternoon, I dove in again. And in a couple of hours I had won.
Goodbye Firehawk the Demigod... You went to your reward with 4735686 points, Sting (worth 800 zorkmids and 2000 points) The Eye of the Aethiopica (worth 4000 zorkmids and 10000 points) Dragonbane (worth 500 zorkmids and 1250 points) Magicbane (worth 3500 zorkmids and 8750 points) The Bell of Opening (worth 5000 zorkmids and 12500 points) The Candelabrum of Invocation (worth 5000 zorkmids and 12500 points) Werebane (worth 1500 zorkmids and 3750 points) Stormbringer (worth 8000 zorkmids and 20000 points) The Book of the Dead (worth 10000 zorkmids and 25000 points) 12 fluorite stones (worth 4800 zorkmids), 7 diamonds (worth 28000 zorkmids), 6 rubies (worth 21000 zorkmids), 6 jacinth stones (worth 19500 zorkmids), 5 jet stones (worth 4250 zorkmids), 5 amethyst stones (worth 3000 zorkmids), 5 jasper stones (worth 2500 zorkmids), 4 chrysoberyl stones (worth 2800 zorkmids), 3 sapphires (worth 9000 zorkmids), 2 black opals (worth 5000 zorkmids), 2 citrine stones (worth 3000 zorkmids), 1 dilithium crystal (worth 4500 zorkmids), 1 emerald (worth 2500 zorkmids), 1 obsidian stone (worth 200 zorkmids), 1 agate stone (worth 200 zorkmids), 1 jade stone (worth 300 zorkmids), 1 amulet of life saving (worth 150 zorkmids), 1 amulet of unchanging (worth 150 zorkmids), 1 amulet of magical breathing (worth 150 zorkmids), and 138918 pieces of gold, after 74749 moves. You were level 30 with a maximum of 223 hit points when you ascended. You made the top ten list! No Points Name Hp [max] 1 4735686 Firehawk-Wiz-Elf-Mal-Cha ascended to demigod-hood. 143  2 2202518 Firehawk-Wiz-Elf-Mal-Cha died on the Astral Plane. Killed by Death (with the Amulet). -  3 2010849 Firehawk-Wiz-Elf-Mal-Cha died on the Plane of Fire. Killed by an invisible Archon (with the Amulet). - 
As you can see by the top ten list, I played a Male Chaotic Elven Wizard named Firehawk.
For the NetHack fanatics among us, here are the details of my character at the end of the game:
Amulets o - the blessed Eye of the Aethiopica w - an uncursed amulet of life saving (being worn) Weapons u - the cursed rustproof +1 Dragonbane v - the rustproof +1 Magicbane J - the +1 Werebane (alternate weapon; not wielded) O - the blessed rustproof +0 Stormbringer (weapon in hand) Armor e - a blessed fireproof +2 pair of gauntlets of dexterity (being worn) g - a blessed rustproof +2 helm of brilliance (being worn) C - an uncursed +0 Hawaiian shirt (being worn) E - an uncursed +0 pair of levitation boots T - a blessed fireproof +1 cloak of magic resistance (being worn) U - an uncursed +1 silver dragon scale mail (being worn) W - a blessed fireproof +4 pair of speed boots (being worn) Comestibles b - an uncursed tin of rock troll meat Spellbooks S - the uncursed Book of the Dead Rings d - an uncursed ring of regeneration r - an uncursed ring of conflict t - a cursed ring of warning x - an uncursed ring of slow digestion (on right hand) I - an uncursed ring of levitation Wands j - a wand of create monster (0:13) l - a cursed wand of digging (0:4) m - a wand of magic missile (0:6) s - a wand of secret door detection (0:14) z - a cursed wand of polymorph (0:3) D - a wand of death (0:4) H - a wand of digging (0:5) L - a wand of enlightenment (0:8) M - a wand of digging (0:3) N - a wand of digging (0:4) P - a cursed wand of cancellation (0:4) V - a wand of cold (0:2) X - a wand of teleportation (0:6) Tools f - a +0 unicorn horn h - a blessed bag of holding p - an uncursed blindfold q - a +0 pick-axe y - the cursed Bell of Opening (0:1) A - a blessed magic marker (1:3) B - the uncursed Candelabrum of Invocation (7 candles attached) G - a cursed skeleton key Gems k - 4 cursed chrysoberyl stones n - 3 uncursed jasper stones F - an uncursed luckstone Q - 3 uncursed sapphires Y - 4 uncursed jet stones Contents of the bag of holding: a tinning kit (0:63) an uncursed spellbook of cone of cold a blessed potion of full healing 2 potions of holy water an uncursed +0 pair of water walking boots the fireproof +0 Sting an uncursed amulet of unchanging an uncursed spellbook of magic mapping an uncursed black opal an uncursed emerald a cursed jet stone 2 cursed jacinth stones an uncursed spellbook of identify a blessed spellbook of finger of death an uncursed spellbook of magic missile a potion of unholy water a blessed spellbook of force bolt an uncursed scroll of food detection an uncursed scroll of scare monster a blessed scroll of taming a cursed scroll of teleportation an uncursed obsidian stone an uncursed flint stone 4 uncursed jacinth stones an uncursed bugle a cursed scroll of fire an uncursed spellbook of dig a blessed spellbook of light 5 uncursed diamonds 12 uncursed fluorite stones a rusty wand of secret door detection (0:12) a wand of sleep (0:7) 2 uncursed jasper stones an uncursed scroll of blank paper a blessed +4 quarterstaff 5 uncursed amethyst stones 6 uncursed rubies an uncursed scroll of stinking cloud an uncursed agate stone 2 uncursed touchstones an uncursed ring of searching an uncursed amulet of magical breathing an uncursed scroll of stinking cloud 134052 gold pieces 2 uncursed diamonds 2 uncursed citrine stones an uncursed dilithium crystal an uncursed jade stone an uncursed black opal an uncursed mirror a wand of striking (0:6) a wand of teleportation (0:8) an uncursed scroll of light an uncursed lizard corpse 4 uncursed food rations Final Attributes: You were piously aligned. You were fire resistant. You were cold resistant. You were sleep resistant. You were disintegration-resistant. You were shock resistant. You were poison resistant. You were level-drain resistant. You were magic-protected. You saw invisible. You were telepathic. You were warned. You had infravision. You were invisible to others. You could teleport. You had teleport control. You had slower digestion. You were very fast. You had reflection. Your life would have been saved. You were extremely lucky. You had extra luck. Bad luck did not time out for you. Good luck did not time out for you. You survived after being killed twice. Vanquished creatures: Asmodeus Baalzebub Orcus Juiblex The Wizard of Yendor (15 times) Pestilence (4 times) a high priest a mastodon Medusa Croesus 9 krakens 4 iron golems 2 ki-rin 2 storm giants a titan 7 glass golems 3 balrogs 6 purple worms 2 gray dragons 5 silver dragons 6 red dragons 6 white dragons 3 orange dragons 4 black dragons 6 blue dragons 2 green dragons 6 yellow dragons 9 minotaurs 4 jabberwocks The Dark One 9 baluchitheria 5 Angels a demilich Vlad the Impaler 15 stone golems 8 master mind flayers 10 Olog-hai 3 Nazguls 10 pit fiends 3 sandestins 4 hell hounds 4 titanotheres 4 trappers a baby silver dragon a baby black dragon a guardian naga 11 disenchanters 25 vampire lords 5 skeletons 10 shopkeepers 3 guards 18 aligned priests 7 captains 6 shades 5 liches 5 clay golems 12 nurses 6 ice devils 3 nalfeshnees 2 lurkers above 4 Aleaxes a frost giant 5 ettins 2 golden nagas 13 black puddings 36 vampires 11 lieutenants a watch captain 51 ghosts 2 wizards 3 queen bees 5 winged gargoyles 19 giant mimics 12 zruties 22 fire giants 11 ogre kings 11 ice trolls 29 rock trolls 8 umber hulks 6 flesh golems 4 Elvenkings 7 doppelgangers 14 hezrous 10 bone devils 9 large mimics 4 wumpuses 6 fire vortices 2 baby long worms 7 long worms 9 couatls 20 stalkers 16 air elementals 23 fire elementals 30 earth elementals 5 water elementals 2 hill giants 3 giant mummies 4 black nagas 23 xorns 21 giant zombies 5 elf-lords 17 sergeants 17 barbed devils 5 vrocks 8 salamanders 13 wargs a winter wolf 4 hell hound pups 27 small mimics a glass piercer 10 warhorses 14 steam vortices 20 xans 7 ettin mummies 5 ogre lords 13 quantum mechanics 27 trolls 7 sasquatches 7 wood golems 3 erinyes 4 mariliths 2 djinn 5 sharks 10 electric eels 5 gelatinous cubes 5 pyrolisks 6 large dogs 6 freezing spheres 8 flaming spheres 9 shocking spheres 10 large cats 7 tigers 12 gargoyles 2 dwarf kings 17 tengu 8 ochre jellies 13 leocrottas 9 energy vortices 2 mountain centaurs 16 stone giants 5 elf mummies 4 human mummies 3 red nagas 4 green slimes 9 pit vipers 5 pythons 13 cobras 59 wraiths 11 carnivorous apes 33 ettin zombies 8 leather golems a Grey-elf 120 soldiers 4 watchmen 7 horned devils 5 succubi 13 incubi 8 chameleons 5 crocodiles 18 giant beetles 10 quivering blobs 19 cockatrices 6 wolves 7 winter wolf cubs 3 lynxes 4 panthers 13 gremlins 7 spotted jellies 90 leprechauns 4 orc-captains 2 iron piercers 7 mumakil 13 giant spiders 10 scorpions 8 horses 4 ice vortices 12 black lights 70 vampire bats 3 forest centaurs 5 gnome kings 9 orc mummies 9 dwarf mummies 3 ogres 5 brown puddings 10 rust monsters 10 owlbears 12 yetis 5 gold golems 5 werewolves 5 Green-elves 4 piranhas 23 giant eels 21 lizards 16 chickatrices 4 dogs 7 dingos 4 housecats 5 jaguars 4 dwarf lords 3 blue jellies 4 white unicorns 7 gray unicorns a black unicorn 11 dust vortices 10 ravens 6 plains centaurs 4 gnome mummies 6 snakes 2 water moccasins 8 apes 19 human zombies 3 rope golems 2 Woodland-elves 15 soldier ants 6 fire ants 9 bugbears 6 imps 14 lemures 15 quasits 8 wood nymphs 5 water nymphs 6 mountain nymphs 18 Mordor orcs 34 Uruk-hai 3 orc shamans 7 rock piercers 3 rock moles 7 ponies 8 fog clouds 17 yellow lights 2 shriekers 5 violet fungi 26 gnome lords 14 gnomish wizards a Kop Lieutenant 5 kobold mummies 4 red naga hatchlings a black naga hatchling 3 golden naga hatchlings 2 guardian naga hatchlings 8 gray oozes 10 barrow wights 20 elf zombies 12 ghouls 4 straw golems 5 paper golems 2 jellyfish 2 baby crocodiles 17 giant ants 7 little dogs 12 floating eyes 4 kittens 31 dwarves 6 homunculi 6 kobold lords 3 kobold shamans 24 hill orcs 7 rothes 6 rabid rats 6 centipedes 19 giant bats 5 Kop Sergeants 3 monkeys 21 orc zombies 17 dwarf zombies 2 wererats 5 werejackals 7 iguanas 96 killer bees 5 acid blobs 9 coyotes 3 gas spores 16 hobbits 24 manes 3 large kobolds 16 hobgoblins 9 giant rats 15 cave spiders 4 brown molds 5 yellow molds 3 green molds 2 red molds 75 gnomes 15 Keystone Kops 14 garter snakes 18 gnome zombies 10 geckos 23 jackals a fox 3 kobolds 11 goblins 5 sewer rats 13 grid bugs 14 bats 14 lichens 14 kobold zombies 13 newts 2998 creatures vanquished. Genocided species: mind flayers liches demiliches master liches arch-liches 5 species genocided. Voluntary challenges: You genocided 5 types of monsters. You never changed form. You used 6 wishes. You did not wish for any artifacts.
Over the weekend, I read that Tom West passed away. The Tracy Kidder book, The Soul of A New Machine, chronicled the creation of a microcomputer at Data General in the late 1970s. I still own the copy that my parents gave me in high school. 20 years later, I still think about the engineers that worked on that machine. The Soul of A New Machine was one of the reasons why I became a software engineer, and Tom West was a role model.
The other day I wrote about having to reinstall Patti’s laptop from the factory defaults because Windows started to indicate that it was no longer licensed. The good news is that I finally got the laptop running well.
After installing the 15 remaining updates before and fully processing the removed antiquated programs, Windows started to work again. After that it was a matter of “simply” installing the remaining patches. It looks six or seven reboots with around 60-70 more patches to bring Windows up to a fully secure and patched version. Two of the reboots were due to service pack installations; they also required me to visit the computer more than once in order to install the patch–I had to agree to a license agreement. Similarly, I was prompted explicitly to install both Internet Explorer 8 and then Internet Explorer 9. There was no way for me to indicate to the operating system, “Please install all of the updates and keep updating until the system is fully patched and secure.” In addition, it was not possible to do one batch download of all of the updates. The final several reboots only consisted of five or six patches each.
Once the system was fully patched, I was able to install a copy of Microsoft Office for Home and Students. That installation went smoothly. I also installed several applications using the Google Pack–it’s an easy way to install a bunch of applications without having to worry about updating them manually later. I believe her laptop is fully patched at this point. It appears to be snappier, and I hope that it will continue to work correctly.
Patti has been using a Dell Inspiron 1720 for the past three years. I took at a look at a year or so ago; I made sure that it had up-to-date anti-virus software, upgraded the memory, ran all Windows updates, and set up automatic security updates. A month or so ago, Windows started complaining that it was no longer authentic. And then it started disabling features: the background became black, external drives no longer worked correctly, and the computer seemed to take longer and longer to start up.
Today, I worked for several hours trying to fix the problem. I was unable to figure out which specific patch interacted poorly with windows, so after three or four hours of troubleshooting I backed up Patti’s files and reinstalled from the recovery disk. I had been reluctant to reinstall, because Patti had also purchased Microsoft Word. We’re going to have to find those CDs to reinstall as well.
After reinstalling, the system appeared to be fine. I started to download the 300 MB of security updates (86 of 86), disabled the expired and antiquated anti-virus, and installed a modern anti-virus problem. After several hours of re-installation, the computer again started to report Windows Genuine Advantage validation problems.
I started chatting with Microsoft. We worked through around 15 minutes of troubleshooting before the connection died.
There appears to be another batch of 15 updates; I’m hoping that these updates fix the problem. It looks like the problem is caused by a Microsoft or Dell update that has moved a “protected” file from the expected location. However, even though Microsoft requires that files be in specific states and specific locations, the “protection” software does not give any easy way to see the offending application.
This has been a frustrating experience. The laptop was legitimately purchased; the Microsoft software was legitimately purchased. Why do they feel it’s okay for their software to break in this manner with little or no recourse?
I’ve completed my move from Blogger to WordPress.
The transition was fairly smooth; I probably should have made the changes a while ago. Here are some of the actions I took to migrate the blog:
- Created a new domain, wp.samgreenfield.com.
- Installed WordPress using Dreamhost’s one-click install.
- Exported my posts from Blogger and saved it to my desktop.
- Used the tool blogger2wordpress to convert my Blogger export file into a file that I could import into WordPress.
- I used this tool rather than the regular migration strategy in WordPress because I wanted to remember the URLs and email addresses that users would have entered into my blog before. The built-in Blogger import in WordPress just created the users without any additional information.
- Tweaked the export file so that categories were correctly imported.
- Performed the import into WordPress.
- Installed the Suffusion theme, because I think it looked good.
- Linked the domain “https://blog.samgreenfield.com” to wp.samgreenfield.com. My thought is that if I ever want to switch blogging platforms again, it will be easier if I have a single domain that faces the outside world.
- Set up Google Analytics in Suffusion; also installed the Google Analytics Dashboard.
- Configured archive and category pages on WordPress; also made the “permalinks” similar to the old site.
- Set up redirects from my old site at samgreenfield.com/log to blog.samgreenfield.com
- Ran a script to vet the old links to make sure they were redirecting correctly.
- It turned out that around 20% of the links did not work correctly. Blogger removed words like “a” and “the” from the title; WordPress keeps those words in. Blogger and WordPress also handled title collisions differently. I did a mass database update for most of the posts and then fixed a bunch of them by hand.
- Some of the category pages also needed to be tweaked by hand to make sure that they were working.
- Installed SSL on blog.samgreenfield.com so that I could use my username and password without getting them stolen.
- Purchased an IP address from Dreamhost
- Purchased an SSL certificate from RapidSSL. (Which doesn’t seem to work on Firefox, but I only really care about Chrome.)
- Installed plug-ins to add more functionality to WordPress
- Jetpack from WordPress which add some cool features, like YouTube integration and
- Google XML Sitemaps, which allows Google to scrape my site more easily.
- Redirection, to manage some of the changes in links from the old site.
- WordPress Mobile Pack, which renders the site in a mobile-friendly format. (Check it out if you have a phone!)
- WP-reCAPTCHA, to make it a little more difficult for spammers to comment
- WP Super Cache, to add static cached pages of content
- WordPress HTTPS, to help secure the site while editing
- PhotoShelter plug-in, which will allow me to publish more easily from PhotoShelter
- Extended Comments Option, to help manage comments on the site
It was a fair amount of work, but it was a lot of fun. I’m still looking for the best way to selectively publish photos directly from my Eye-Fi.
When I left Time Inc. in 2007, I built a new computer from parts purchased at Newegg.com. Over the years, the parts gradually broke: some of my memory was DOA, the video card went bad, the power supply died, and the back fan broke. Finally, a couple of month ago, the last of three hard drives decided to kick the bucket. (This was probably related to the back fan breaking.) I decided to buy a new computer; I’ve very happy I did. The new machine has some pretty great components:
- GIGABYTE GA-P67A-UD4-B3 LGA 1155 Intel P67 SATA 6Gb/s USB 3.0 This is one of the newer motherboards on the market.
- Intel Core i7-2600K Sandy Bridge 3.4GHz (3.8GHz Turbo Boost) This is a quad-core CPU. With hyperthreading, it appears as eight cores.
- Crucial RealSSD C300 CTFDDAC128MAG-1G1 2.5″ 128GB SATA III MLC Internal Solid State Drive I purchased two solid state drives. They run cool, make no noise, and are quite fast for random IO operations.
- G.SKILL Ripjaws X Series 16GB (4 x 4GB) 240-Pin DDR3 SDRAM DDR3 1600 (PC3 12800) The 16-GB kit is more expensive than two 8-GB kits, but it is tested and guaranteed to work together.
- Seagate Barracuda Green 2TB SATA 6Gb/s 64MB I also picked up a hard drive from Amazon–fast free delivery. The drive is for photos, music, and backups. I can’t believe a 2TB drive is under $80.
This is a pretty great machine. It takes less than a minute to fire up a web browser from when I turn on the machine, and I haven’t had any real issue at all.
A friend of mine at Microsoft used his employee purchase plan to get me an affordable copy of Windows 7 and Office. I also purchased an upgrade to the latest and greatest full version of Photoshop. I’ve installed all sorts of developer tools, and I’m looking fun to playing around with new applications at home.
Work has been keeping me very busy recently, which is why there haven’t been a ton of posts on the blog. (Not to mention keeping me from hanging out with friends a lot.)
I’m going to need to do some maintenance over the blog and email systems this week. Dreamhost recently disabled shell delivery of mail, which ended up killing all of my procmail filters. So instead of 100 messages in the spam file for a day, I’m seeing 1500 messages in several hours. And Google has decided to disable FTP publishing to blogger. So I’m going to have to migrate the blog to another system–Wordpress seems like the best bet.
I hope to have more photos and posts posted soon. Stay tuned!
Today is my one year anniversary as a Software Engineer at Google.
A while back, I found a neat description of AES: Moserware: A Stick Figure Guide to the Advanced Encryption Standard (AES)