Have you ever felt guilty for laughing at night
when you knew of a terrible tragedy?
The momentary mirth feels like a rude intrusion
into a sacred time of mourning for a dear friend.

Have you ever felt ashamed for feeling grief
in the middle of a time of rejoicing with friends?
Even if your heart sinks only for a minute,
that minute feels like a violation of joy.

I wondered, as a teenager, lying in bed and waiting for sleep
if others knew the same loneliness that stalked me day and night.
I wondered whether the day’s victories and defeats and the resulting emotions
could be valid in a world full of others’ stories.

Was I happy and satisfied as others lay weeping tears of pain?
Were others oblivious as I felt utterly alone?
Logic told me that joy could not be held hostage to others’ pain
– that each must embrace goodness as we find it,
even if at that very moment others too far for us to reach
are cold or hungry or sick.

There are too many stories for a human being
to know and carry the full weight of them all.
The knowledge that gives some hope tonight
is the same knowledge that fills others with despair.

All the time, dawn sweeps onward –
sometimes pink and sometimes grey.
All the time, noon rolls on
and each of us have different clouds.
All the time, midnight surrounds
– for some a blanket, for others a cell.

The human family across the planet,
separated by belief, bound together by blood,
billions of hearts beating out of sync.
Here we are together.
Here we are apart.

None of us knows what God is doing.
We watch precious lives fade
while others which do not value themselves or others
last decades beyond what we hoped for those dear to us.

We see children born to those who do not want them
as others who long for a child are denied again.
We see some succeed without effort
whose only thought is themselves
while at the same time others who would give everything away
go decades without knowing how to make ends meet.

Somewhere, someone lies alone in a hospital.
Somewhere, someone has fallen in love.
Somewhere, a painter is mastering their technique.
Somewhere, someone is learning to read.

Babies feed at mothers’ breasts.
Husbands struggle to find enough sleep to make it through another day.
Sweethearts picnic together.
Soldiers fight to defend good.
Soldiers fight to destroy others’ lives.
Friendships are restored.
Relationships are betrayed.
Forgiveness is bestowed.
Grudges go on, boiling the bones of those in their clutches.
Some fight to make the truth known.
Some knowingly mislead and decieve.

Some cry out for wisdom
while others have never considered that they do not have it.

Whether you feel so sick that you wonder if you are dying today
or you feel more full of life than you ever have before.
Please remember those around you.

If you have just cause for anger,
please take your complaint to God.

If you are in need of forgiveness,
I hope that you offer your apology freely,
I hope that you ask God to give you strength to change.
I hope that your relationship will be restored.

Amidst the deep wounds,
amidst the fullness of wonder,
as the planets revolve,
as the tide swells,
as the meanings of texts are computed
in the mind of mankind and parsed by machine
wherever you are now
I hope you find God
waiting for you.

The one true and living God.
Our Heavenly Father.

May He sing over you.
May He touch you and heal you.
May He cleanse your mind, body, and soul
whether you have kept the law or broken it.

Cast your cares on God
because He cares for you.

Whether you can scarcely dare to dream that your life is real
or you have felt trapped in a nightmare,
may you find God near to you
and may He bless you deeply.

May He grow your hopes
and be your protection against those who would harm you.

Last chance to Save Photosynths

Hello, friends!

In case you missed the news, Microsoft announced on 2016 November 4th that on 2017 February 6th they will delete and everything on it forever.

That means you have just one more month to save your Photosynth uploads. supports three different types of uploads:
1) original photosynths
2) panoramas
3) tech preview synths

Microsoft graciously gave us a way to export our panoramas and tech preview synths (types 2 and 3) but did not offer any way to export original photosynths (type 1).

(To officially export any of your own panoramas or tech preview synths, just sign into the account on that you uploaded your content with, view any of your panoramas or tech preview synths, and click the ‘Export’ link, then refresh the page in a minute and click ‘Download’.)

This morning a friend of the Photosynth community, Henri Astre, released a new script to enable anyone to export any Photosynth 1 or Photosynth 2 synth (upload types 1 and 3) but not panoramas (upload type 2).

Henri’s PhotosynthDownloader gives us:
1) the only way to easily export an entire original synth
2) the ability to download not only our own synths, but our favorite synths of others (perhaps some famous synths that were featured on the Photosynth homepage or were demoed by Photosynth team members in a video we watched).

I want you to be able to take advantage of this amazing chance to save your photosynths, but PhotosynthDownloader does take a little bit of work to get running.

Here is what you need to do:

1) Install node.js on your computer.
Henri’s PhotosynthDownloader needs node.js installed in order to work.
(Windows users, be sure to get the installer .msi file (NOT than the exe)
(Mac users, click here)
(Linux users, I assume you know what you’re doing.)

2) Get PhotosynthDownloader
(This comes as a compressed folder with a .zip file ending.)

3) Unzip PhotosynthDownloader
In Windows 10, you can right-click on the .zip file and then click ‘Extract all’ in order to unpack the zip file to a normal folder.

By default the unzipped folder will probably be named PhotosynthDownloader-master.
You may want to name the folder something shorter, such as PSD, and also perhaps move the unzipped folder to a simple place on your hard drive, such as C:\PSD or C:\PhotosynthDownloader

4) Open your command prompt
(On Windows, you can hold down the Windows key and tap the R key (and release both keys), then type cmd into the Run box.)

5) Change folders in the command prompt to the folder where you unzipped PhotosynthDownloader
On Windows:
a) in File Explorer open the unzipped folder
b) click in the address bar and copy the address of the folder
something like C:\Users\Nate\Downloads\PhotosynthDownloader
c) in your command prompt window type:

You can right-click in the Command Prompt window to paste the folder address after the cd and a space.

You will need to use the address of your folder on your computer.
If you renamed and/or moved your PhotosynthDownloader-master folder, then your Change Directory command might look like:

C:\PSD or


6) When Command Prompt is navigated to the folder where you unzipped your files, type npm install into Command Prompt and press Enter/Return.

You will see some activity in the Command Prompt as PhotosynthDownloader is installed.

7) Now that you have everything set up, you can open Command Prompt anywhere anytime by pressing Windows+R and typing cmd and then typing:
node synth_downloader.js



That is an example.

You would replace the

d44051e8-4c86-452c-a366-f4a5ede27709 part with the ID number of the synth you want to download.

When viewing any original photosynth on, the ID number will be the part of the address in your web browser’s address bar in bold here:

When viewing any tech preview photosynth on, the ID number will be this part of the link in your web browser’s address bar:

You also need to replace the word output with the address of whatever folder you want to download synths to.
C:\Photosynths\NateLawrence or
C:\Photosynths\David-Photosynth-Team or

(Please note that you will need to use the address of a folder that you have created before you enter the command to download a synth.

In other words, you cannot type the address of a folder

which does not yet

into the Command Prompt and have it create the folder for you.


If you are going to want to create a lot of different folders (maybe one folder called Photosynths and then one folder per username of people whose synths you want to download) then you might find it helpful to create a list of the folder names you want to create and use a utility such as Text2Folders in order to speed up creating many folders.

If you need any help getting this working or have any questions about saving your uploads, I would be very happy to help you if I’m able to.

You can drop me a note on Twitter.
You can email me.
You can ask me here on Tumblr.
You can ask a question on Photosynth’s Get Satisfaction community.

I wrote this post to help you back up photosynths.
If you are looking for some of the synths and panos that have been featured on Photosynth’s homepage over the years, check out the favorites on these accounts:

If you are trying to download your own panoramas, you should use the official Export feature on (as long as you can remember your Microsoft Account email address and password that you used to upload them with).

If you are trying to download other people’s panoramas (or your own which you’ve forgotten your login information for), I suggest that you go get Christoph Hausner’s SynthExport 2 for Windows and use the Format: Microsoft ICE Format option in the lower right hand corner of the window.
(Just unzip the folder and click SynthExport.exe inside of it to begin.)


How Sonic 3 turned a bookworm artist jungle kid into a lifelong Sega fan

The chapter which follows is what began as my attempt to write a concise explanation as to what I saw in the Sonic the Hedgehog games growing up to someone who was brave enough to ask whether he were the only Sega fan who didn’t care for the Sonic games (Sega’s mascot character, for the uninformed).

My love of hearing stories, reading, studying hand drawn and photographed illustrations for hours, drawing, and building models goes back to my earliest memories and predates my awareness of video games. One way of summarizing the common thread would be to say that I was really into imagination and finding out what was in others’ imaginations. Like most guys, I imagine, this revolved around central characters and inventing stories as I played with toy cars, planes, soldiers, etc.
My infrequent visits to my grandparents’ house also found me spending a lot of time with old school mechanical toys – puzzles that used ball bearings, underwater hoops to try to stack on spindles, Tinkertoys, Lincoln Logs, ViewMasters, and those sorts of things. From these, my appreciation of physical materials, physics, construction, and stereo vision were nurtured.
This is to say nothing of their children’s book library (my grandmother was an elementary school teacher for decades) or other mind opening aspects of being in their house such as the visual striking translucent red glass bird on their wind chimes or the variety of different fabrics in their guest bedrooms or the strange cubby-hole nature of their laundry hamper. But I begin to ramble. =)
I know that I’d encountered a few computer games briefly though the years like Centipede/Millipede, Pac-Man, and Space Invaders and seen a few others, but I never spent much time with any of them (either watching or playing).
Most computer hardware that I’d been exposed to was just too primitive to do anything resembling smooth scrolling movement etc. so I just wasn’t overly interested. My impression of computer or video games at that point would have been more of an electronic puzzle than anything to do with an imaginary world.
Over Christmas holidays when I was in… either 4th of 5th grade my family did some housesitting for an old friend of my dad’s family while they were in Australia and I found their sons’ NES with which my younger brother and I were able to play Super Mario Bros. and Duck Hunt and get our first real dose of playing video games.

Playing Super Mario Bros. was a revelation to me in terms of having a world that a story could take place in, which you could interact with. The smooth scrolling of the level made it possible for me to think of the level in the same way that I thought about moving toy vehicles over the ground or through the air in the real world.

I thought of it, at the time, like an interactive painting or, to put it another way, of being able to get into someone else’s imagination in an objective sort of way, avoiding any sort of misinterpretation that comes with reading someone else’s story or trying to imagine what lies beyond the edges of an illustration.

When I was entering sixth grade our family got a DOS copy of Prince of Persia from one of my uncles. Our ancient monochrome computer could only play it at about 1/3 the correct speed. Nevertheless it left a deep impression on me because of the puzzle based level exploration and the rotoscoped animation. Again, you felt that this was an actual place that someone had dreamed up and although the story is similarly sparse, you understand that you are following the journey of the hero of the story.

When I was entering 7th grade, my dad bought my brothers and I a second hand NES as something to do at home, since we had moved around the world away from all of my friends and I was having trouble fitting in. He got us Super Mario Bros. 1 and 3 and my younger brother and I played those like crazy. Only months after getting these games did I discover that you could run by holding down the B button (our copies didn’t have boxes or manuals), which was insane to me, since I had already learned to beat everything possible without running.

We also obtained a copy of Duck Hunt and our own Zapper and also got a cheap copy of Prince of Persia for the NES.
Strangely, we also began collecting NES peripherals on the cheap from pawn shops and it is with some amusement that I remember that we had more controllers than we had NES games.

During the Christmas holidays of my 7th grade year, Super Mario All Stars was being promoted on TV and I couldn’t believe how beautiful SMB 1 and 3 looked when I saw them on display at WalMart. When someone gave me and my two brothers $40 apiece for Christmas I lobbied for us to put our money together and get the $120 SNES bundle which included a system, two controllers, Super Mario World, and a mail in rebate for Super Mario All Stars.
My brothers were easily convinced so we headed off to the store and came back that afternoon with our shiny new system (our first experience of owning any brand new gaming equipment – and having the game’s manual). After getting over the alien nature of completely differently shaped cartridges and controllers, we got it set up and played Super Mario World like crazy. I was very impressed by the better color palette and parallax scrolling as well as the new gameplay mechanics (such as Yoshi, using the cape to fly as opposed to the raccoon tail, or the hidden exits to levels and finding the switch palaces to fill in missing blocks which made other areas accessible) but although I enjoyed Super Mario World, I felt that it lacked artistically when compared to the pixel art of Super Mario Bros. 3, so I was extremely happy when our copy of Super Mario All Stars arrived in the mail.
Later that year we were browsing the game section at Toys ‘R’ Us.
At this point in my life, I had beaten all four original Mario games in Super Mario All Stars as well as Super Mario World and loved all of those five games (well maybe The Lost Levels a little less, but it was interesting nonetheless).
I had been looking for more games to get for our Super Nintendo but the combination of only having a few promotional pamphlets and screenshots on the back of game boxes to look at and a very limited number of games on display in stores (thanks to Nintendo’s policy of pushing each scheduled showcase release hard for a month or more to generate sales) and occasionally flipping through a games magazine which someone else had already removed from its shrink wrap wasn’t much to go on for laying down anywhere from $40 to $70 when you’re 13 years old.
After looking through all the game boxes for NES, SNES, and GameBoy and playing whatever game was on display on the SNES there for the fifth time or so (probably Super Metroid, but I’m not sure) I decided to branch out and see what else might be on the next isle…
I was surprised to see that it was more video games, but nothing that I’d encountered before.
“Sega… Genesis? Game Gear? What was that?”, I wondered, suspecting that they were some sort of cheap knock off of Nintendo stuff.
I walked down to the system on display and saw and heard, for the first time in my life, Sonic 3.
To say that I was impressed would be a complete understatement. I’d never seen or heard anything like it.

With Sonic 3, although the rules of the world were recognizably borrowed from Mario (walk, jump, run, fly, explore, jump on enemies, get goodies out of boxes, avoid pits, go swimming, launch off of spring loaded platforms, etc.) there was a completely different mentality and idea about what a game could be artistically.

From the moment it starts up and a pre-rendered Sonic jumps through that huge star-encrusted ring on the title screen to the posterized shot of his face peeking out from behind jungle foliage and his name behind the save file select screen to the way that the character select menu rotates Sonic, Tails, and Knuckles in the 2P Competition menu, these were things I’d never seen any computer or video game do before and in each case it felt as though someone who knew what looked good was the master of their craft and the master of using this hardware to realize their vision.

(Even the way the save file menu functions – selecting Robotnik and moving him over to the file to be deleted and then selecting Delete or Cancel with Left or Right was intuitive and interesting and unlike any menu I’d encountered in any other software, limited though my experience was at that point.)
I loved the idle animations.
I loved that when you pushed into a wall the character had a unique animation for that action.
I remember playing as Tails and being surprised that he got tired when flying and I was pleased that when I flew into the water, his animation switched from flying to swimming. (Sonic hadn’t had different underwater animation frames.) I remember being surprised that you could drown underwater and that there were air bubbles that you could get extra underwater time from breathing in.
I remember riding the flying foxes down the vines or smashing through the large boulders that hide secret caves and seeing them shatter into smaller boulders. Discovering spin dashing was an amazing surprise after not finding any run button.
I remember trying out the 2 player races and that being my first sort of experience with any sort of two player local competition. The whole experience was just incredibly impressive to me.
This was to say nothing of the sleek black crescent moon controller, the huge (A) (B) (C) buttons, the strangeness (to someone who had only played two Nintendo systems) of having an odd number of buttons on the controller, or the tiny size of the sleek little black system with its sweet Model 2 curves or the tiny black cartridge that the game came in.
I walked out of the store that day promising myself that I would save as long as it took to buy that system, even if the only game I ever got for it was Sonic the Hedgehog 3.

As the year went on I caught glimpses of other Sega Genesis games on display in stores like Disney’s Aladdin or The Jungle Book.
“Licensed games?” some will scoff, but I would like to point out that from 5th grade onward I had been an animation junkie (I’d dreamed of pursuing it professionally throughout junior high and high school) and Disney’s Aladdin on the Genesis had real Disney animators drawing the frames which stood out to me from the tile-confined pixel art of other games in stark contrast.
I had been the one who pushed for our purchase of the SNES and I did love it and the games we had for it and I could tell, even then, that the SNES had more colors and had the ability to draw translucent sprites (clear advantages, artistically) but every time that I encountered another Genesis game, I walked away with the impression that whoever was making these games just put more attention to detail and effort into them and it just felt to me as though they were trying harder.

It took me until my birthday in November of that year (having seen the Genesis shortly before the end of my 7th grade year) before I could save up the money to buy a Genesis. That summer I had bought a Super Scope and Yoshi’s Safari (graphically impressive Mode 7 scrolling but very short for someone accustomed to full length Mario games… also the Super Scope eats AA batteries for lunch) and among several other SNES rented games, discovered the amazing multiplayer gameplay of Super Mario Kart (although I was initially reluctant to give it a chance because of its pitiful art style).

Only after I saw that the Mode 7 background plane scrolling and rotation gave the same illusion of space that Yoshi’s Safari had (as opposed to the completely unappealing-to-me fake ‘pictures of a left turn’, ‘pictures of a straightaway’, ‘pictures of a hill’ style of racing game that I’d seen in older arcade games in bowling alleys (like OutRun or Hang On – or Lamborghini on the SNES). Again, it was that sense of continuous movement over space that sold me on Super Mario Kart, much the same as Super Mario Bros. had made me a believer in the side scrolling platformer to create an explorable imagined world.

My 14th birthday arrived and with the exception of the summer rentals of SNES games and my purchase of the Super Scope and Yoshi’s Safari, I’d been putting every penny away to get a Genesis and Sonic 3 bundle. My birthday night came and card after card had another check or ten or twenty dollars in it until I had just enough to get a Genesis bundle (which included the system, one controller, and one game), with a little money left over.
My family made the drive out to the nearest town that night which had stores that carried video games.
(We had moved from Colorado to Pennsylvania at the end of that summer and lived on the outskirts of a smaller town so it was over an hour’s drive to get to a city which had the stores we wanted and which would still be open late.)
I remember visiting a Radio Shack, Service Merchandise, and Sam’s Club, among others.
Unfortunately, everywhere we looked that night had either a Sonic 2 bundle (not quite what I was looking for, amigos), a non-Sonic game bundle (no thanks), or a standalone console (which, if bought alongside the same game separately cost more than getting them bundled). I didn’t have enough money to get a standalone console and Sonic 3 separately and I wasn’t going home without a game to play on my new system.
Somewhat frustrated, I finally decided that because I would probably eventually want to pick up the earlier games in the series and because there was a savings involved, I would buy a Sonic 2 bundle. I debated what to do with my leftover $15 or $20 dollars. Should I keep it as a head start toward saving up for Sonic 3? Should I try to buy a second Genesis controller that same night? I finally decided on the latter to get it out of the way, knowing that it meant months of extra waiting for the game I actually wanted. In the end, Sonic 2’s 2 player competitive levels were a big hit with my brothers and our friends that night, which is what I’d hoped for, so I think that I made the right call.

Well, right about that time, as I was saving up for Christmas and hoping for some Christmas money to get Sonic 3, what should come out in stores but Sonic and Knuckles? I played it several times in stores and just thought Knuckles was such a cool character and loved the exploration abilities that he had to climb up walls that Sonic and Tails couldn’t scale – and although he couldn’t fly upward like Tails, his ability to glide infinitely sideways until he lost enough altitude to land meant that if you climbed high enough first, you could glide extremely far.

Sonic & Knuckles is, as many will tell you, the second half of Sonic 3. I don’t know that I knew that at the time, but I felt then, as now, that it had everything that Sonic 3 had going for it with an extra layer of polish on it (albeit, Sonic 3 has better title screen music to my ears).

The colorful stages, the animating foreground elements, the ability to break through different parts of the level to discover alternate routes, the mini in-game cutscenes at the end or beginning of a level to further the story or even things like the crazy use of parallax scrolling to create the planks of wood which form gateways between the huge tree trunks on the final boss of Mushroom Hill Zone was unlike anything I’d seen in any other game before. (A year later, I would have similar feelings about the 2-dimensional parallax scrolling in Donkey Kong Country 2’s underwater ship backgrounds. Amazing pre-polygon depth effects.)

Again, my background was playing with model planes and putting my head as close to them as possible as I flew them around my house or our yard in the village I’d grown up in or imagining what it would be like to be the size of my Lego men climbing up through our Christmas tree. For that matter, during my youngest years I often flew in a small single engine Cessna with my family several times a year, so I had a love of flying and watching the rainforest roll along below me and seeing that infinite expanse of open space. So getting that feeling of things really moving past the character with that change in perspective as you passed them and illusion of space was something that really connected with me.

I still very badly wanted to get Sonic 3, but now knew that Sonic & Knuckles was also a must have for me.
I may not remember correctly, but I believe that Sonic & Knuckles was $10 cheaper than Sonic 3.
It was that same time that Donkey Kong Country came out for the SNES and I knew that that was also a must-have for me, but honestly there’s only so much that a $2 allowance can buy, especially when you have no job. =)
I saved as much money as I could between November and December and in mid-December I was able to afford Sonic & Knuckles, just as my brothers saved enough together to buy Donkey Kong Country.
We spent that Christmas in Virginia with our other cousins and played both games as much as we could, although there was competition for the TV. =)
I spent that spring saving for Sonic 3. I believe that the exception to this was the purchase of a Super Soaker for that summer, but I was a man on a mission. Sonic 3 or bust. By the last month of that school year, I was able to afford my long awaited dream and spent many hours exploring every corner of the game.
Thanks to the barrel in Carnival Night, I also made my first 1-800 call to Sega’s toll-free automated help line. =)
That summer, my younger brother and I were offered a job by a kind local farmer to help him pick potatoes in his fields (and later some of his wife’s strawberries and blueberries, if memory serves) and suddenly our capacity to save money went from single digit dollars per week to single digit dollars per hour.
Together, my brother and I bought Star Fox (which we’d been introduced to by our neighbors) Sonic 1, Super Mario Kart, and Disney’s The Lion King for the Genesis.
I picked up Sonic 1 just for completeness’ and curiosity’s sake more than anything, and also because it was only $20 brand new.
I was amazed by its primitiveness and amused to think that it was popular enough to kickstart a blockbuster series which so quickly stepped up its production values. Having said that, though, I still find Green Hill Zone to be one of the most beautiful Sonic levels ever and playing through the game was a series of ‘aha’ moments, realizing that some of the enemies went right back to the first game and that those mid-level bosses in Sky Sanctuary were all throwbacks to the bosses in Sonic 1. I was also fascinated by the slower more puzzle oriented gameplay in Sonic 1 and the curiously ‘early Mickey Mouse’ vibe that it had going on.
So, with that, our Sonic collection on the Genesis was complete. I know that there’s Sonic CD, Sonic Spinball (we’d managed to get this with a mail-in rebate from another game), Dr. Robotnik’s Mean Bean Machine, and (after this point in the story) Knuckles Chaotix but I just didn’t have the money to buy a Sega CD (or 32X). Years later, I tracked those games down out of curiosity, but in the case of Sonic CD and Knuckles Chaotix, I never felt that they were on the same level at all as the main Sonic series. Sonic Spinball is really not a real Sonic game at all and Dr. Robotnik’s Mean Bean Machine is just a rebranded puzzle game which is unrelated in any way.
Later that summer, my younger brother, being the pragmatist of the family (I’m the idealist) decided that he didn’t mind second hand games from pawn shops with missing boxes or manuals if they were 1/4th or 1/5th the price of a brand new game (an understandable position) and this way he was able to afford the Super Star Wars trilogy on SNES as well as Disney’s Aladdin for the Genesis.
Either just prior to that summer or at the beginning of it one of our British friends’ family came to visit Pennsylvania and our friend told us about Nintendo’s upcoming ‘Ultra 64’ and Sega’s new ‘Saturn’ which was all news to me.
It was exciting news and I wanted to see what the new games looked like. The production values on Sonic 3 and Sonic & Knuckles were just so completely off the charts amazing that I was sold on the Saturn sight unseen.
I had similar faith that whatever Nintendo did next would be crazy good.
Nintendo 64 news was hard to come by (although I scoured EGM and other open game magazines in stores in the summer and fall of ’95 whenever I could and then later broke down and bought a couple of magazines with Mario 64 coverage from E3 ’96) but I saw Daytona USA arcade machines on one of our summer of ’95 road trips with a ‘coming to Sega Saturn’ promotion on them and was duly impressed.
Later on I saw a Saturn on display in a store and spent ten or fifteen minutes going through some sort of demo disc which included a playable version of Daytona USA. I still remember hitting the wall in the tunnel and seeing that stock car flip and tumblr and thinking, ‘Wow!’ just from seeing that tumbling animation of something so much more solidly 3D than Star Fox had been.
So, with our handful of games from our potato picking earnings, as my brother put his last savings toward pawn shop games, all of my money was going into a ‘Nintendo 64 and Sega Saturn’ fund.
At E3 that year, Nintendo announced a one year delay on their system and made my decision for me as far as which system I’d be buying first.
I kept hoping for some sign of a new Sonic game for the Saturn. Of course we know there wasn’t one for some time (and even then, not from Sonic Team, aside from Sonic Jam). Somewhere along the way, however, I’d seen a Sega Saturn VHS promo in a store, gotten a look at BUG!, and could hardly believe my eyes at the perspective of all of the platforms shifting as they passed by and the expanse of the pathways as they stretched into the distance. Combine that with some slick DKC-style pre-rendered sprites with a great early CG cartoon style to the character designs (tragic box cover art aside) and I’d found my platformer launch game.
So few stores had Saturn hardware in mid-1995 (in combination with how infrequently our family was near to cities that had big stores), that I was actually never aware of the surprise launch of the Saturn. It’s kind of amazing and sad to me that someone as devoted to learning all I could about the system –  and all-out dedicated to buying it as I was still thought that September’s planned ‘Saturnday’ launch date was still the plan. I’m sure that was partly due to reading older gaming magazines in my infrequent visits to stores.
I’d seen a Saturn demo unit on display earlier, as I’d mentioned, but assumed that the store just had an advance unit as a promotional deal. I’d also seen a couple of stores with slips of paper that had the game covers on them with a pocket of tickets for the game that you could take to the checkout counter and present to the clerk to buy the game but I just took these as a pre-order or something.
I remember convincing my dad to take me to our nearest large city (we’d moved to rural Missouri during the summer of ’95) to some electronics stores (I think this was my first time in a Best Buy) to try to get my hands on a Saturn display unit on ‘Saturnday’ and being confused at the lack of fanfare. Little did I realize that the Saturn had already been on sale for four months. =) It didn’t really matter, since I didn’t have $400 saved up at that point in time anyway and just wanted to see some games in action.
I believe that Best Buy didn’t have any playable games on display so we went over to the local Toys ‘R’  Us in Springfield Missouri. I can’t remember what they had on display that day, but I do remember visiting that store three or four times in the last months of ’95 and the first few of ’96. I know I played BUG! there (and became more certain than ever that I would be buying it – say what you will about how it has aged), as well as Daytona USA, Cyber Speedway, Astal, Sega Rally Championship, and in early ’96 Panzer Dragoon II.
I knew the moment that I played Panzer Dragoon II that it was going directly onto my ‘must have’ list. I’d seen screenshots of the original and realized from that that it must be like Star Fox and being curious, simply on its art style alone.
Saving up $400 dollars just to buy a Saturn with one controller and no full game (not to mention the $50 for 1 new game, more money for a second controller, more money for a memory cartridge, or the money for a Nintendo 64, Super Mario 64, or a second N64 controller for later multiplayer games) at the speed of $2 per week is not very easy, especially when there are amazing games coming out for the 16-bit systems that you already own.
The fall of 1996 saw the release of Donkey Kong Country 2 and Yoshi’s Island on the SNES, both of which were high on my list of wanted games. I knew that I was dedicated to getting the Saturn and N64, but my brother wanted me to help him buy both of those SNES games that fall. With the understanding that he would buy back my half of both games as soon as his allowance would permit him to in order to put back the hole in my Saturn + N64 savings that it would take, I agreed. There are no regrets there as I think that both of those titles are amazing games.
Donkey Kong Country 2 is my absolute favorite of the series and one of my favorite SNES games of all time and Yoshi’s Island is an amazing tour de force for the SNES and FX2 chip.
Anyway, fast forward to the end of my 9th grade year and a few weeks before school was out the guy who sat behind me in homeroom told me that the Saturn’s price had been slashed to $200. This was mind melting since I already had a little over $200 saved up. I didn’t have enough to buy both the system and a game but my family was going to be leaving the country that summer before the launch of the N64 and suddenly my goal of having a new system with me when we returned to the South Pacific was within my grasp. I calculated the difference in what I would have left after sales tax and realized that I could also afford to buy BUG! before we left the country so went ahead and that very same night begged my dad to take me directly to WalMart to buy a Saturn.
I cannot tell you how amazing it felt to walk into our house with it late that night.
I can’t remember whether I had tried to keep going to get it a secret from my brothers or not but do remember that they were in bed that night already when I brought it in and hooked it up for the first time.
Booting up the Bootleg Sampler disc and being able to play demos of Clockwork Knight 2, World Series Baseball, Sega Rally Championship, and BUG! was just mind boggling. And that realtime attract mode of Virtua Fighter 2? Every negative thing I’d seen written in game magazines about the Saturn in relation to the PlayStation went right out the door. Any doubt I had was gone.
I’d seen Tekken in action at the same Toys ‘R’ Us that I’d played the Saturn games mentioned before at and I had to hand it to Sony for making such a symmetric console and controller with decent looking games (I’d also played a little Ridge Racer). At that point in time, though, Nintendo and Sega had proven records in game development and publishing, though, and even though Sony had a massive bank account and I knew from gaming magazines that they were serious about getting into the games industry, I considered getting a PlayStation a 3rd priority behind the Saturn and N64, where I had every expectation that big libraries of great games would be.
I’d heard people talk crap about the Saturn compared to the PlayStation and from what I was seeing in stores with Sega Rally and Panzer Dragoon II and later at home with Virtua Fighter 2, I just didn’t see anything on PlayStation that impressed me as much or more than those games. I also didn’t see any platformer at that point in time on PlayStation, so since that was my go-to favorite sort of game it was just low priority for me.
Our family headed west toward Oregon via Colorado shortly after that.
In Colorado, I asked my younger brother to return the favor of the loan I’d given him for DKC2 and YI and lend me the rest of the money I needed to buy BUG! which he did.When we got out to Oregon, by brothers bought Super Mario RPG and my youngest brother bought his own first whole game, chosen all on his own – Astal for the Saturn, which he’d played in Missouri. Both Astal and Rayman were on my ‘must have’ list, so I was happy with his purchase, which was a complete surprise to me when we were in the car headed home from the store that day.
My Saturn was popular when I got back to the South Pacific and my friends and I spent a good deal of time exploring BUG!’s many levels and Astal’s beauty, and replaying the Bootleg Sampler many times over. I definitely wanted another game, but the list of interesting games already had too many on it, although I was looking for something multiplayer that several people could enjoy at once. I wasn’t very big into sports games (after all if you want sports, we had plenty of space outside) but did ponder getting a soccer game since soccer was popular in our community.
We didn’t have Internet access there yet and no one that I knew had any gaming magazine subscription that covered Saturn or N64 games, so my knowledge of what was available was pretty limited. A friend did have some Nintendo Power issues, so that did fill in some gaps in knowledge.
Sadly, during that first year overseas my Model 1 Saturn just stopped working one day in the middle of playing my Sega Rally Championship demo. My heart sank as I’d spent my entire 9th grade year saving to buy it and was finally making some progress toward being able to buy a Nintendo 64 when suddenly my Saturn was out of commission.
It had already been difficult enough to try to decide between getting another Saturn game or two or biting the bullet of the long and arduous journey of saving and saving just to get an N64 and Mario 64. Now I had to think about whether I should spend money on shipping my Saturn overseas to a repair shop which would be expensive enough just getting it over there and back through customs, let alone what the repair shop might charge me just to look at it, after which time they might have been forced to tell me that I would have to buy a whole new system, so I sadly resolved to just finish saving up for an N64.
Westerners taking local jobs isn’t welcomed there (or wasn’t at the time) and we were about seven km outside of the local town anyway, so I didn’t really have any way to earn money to speed up saving.
A friend of mine eventually agreed during the end of our 10th grade year to go 60/40 with me on buying an N64 and Super Mario 64 and having my grandparents bring it over to us when they returned at the beginning of the next school year.
I was looking for a cheaper game to buy my youngest brother for his birthday that summer and thought that, given that he and his friends had played a lot of Contra Hard Corps, he might enjoy Vectorman. I’d played it a bit before leaving the US the year past and was pretty impressed with its visuals.
Just a couple of weeks before my 11th grade year began, my grandparents returned with a long awaited sleek charcoal grey system hidden within. After supper with my grandparents the night they arrived, I quietly asked them to get it from their bags and took it down to our game room.
Setting that up for the first time was a blast since I’d kept the fact that I’d gone ahead and bought the system and game a secret, even from my own brothers.

I still remember powering it on and hearing, ‘It’s a me, Mario!’ for the first time.
As I recall, my younger brother walked in right about then, just home from playing ball in our local gym. =)
My friend who had gone halvsies with me on it was still on summer vacation with his parents so I wanted to keep a tight lid on the knowledge of the system’s existence until he was able to use it.



Unfortunately, less than a month later, in an effort to take screenshots of Super Mario 64, I made the mistake of plugging the system into the wrong power outlet at my dad’s computer desk (it looked like a US power outlet and indeed our US Windows PC was plugged into it but my father hadn’t informed me that his PC also ran on 240. Alas the N64 did not run on 240 (not that I ever thought it did – I thought I was plugging it into 110) and in a horrifying flash of smoke, the N64 no longer turned on. =|
So… now I was out 1 Sega Saturn, 1 N64, all immediate prospects of buying games for either, and I owed my friend half an N64 in cash. I had no idea how extensive the damage to the N64 was – was it only the power adapter or the system itself? Was the Super Mario 64 cart damaged? I didn’t know. Again, I faced the dilemma of whether I dared risk the expense of shipping the system all the way to the US and paying a fee for a repair shop to examine it, only to be told after all of the money needed to get that far that I needed to just buy a brand new system. It seemed like too expensive a gamble, given what I’d already obligated myself to paying so I just waited and began saving money again as fast as I was able.
Later that year, the mother of one of my classmates had to return to the US for cancer treatment and after much self doubt and questioning whether this was insensitive and selfish to ask a favor of her during such a difficult time, I finally asked her if she would mind carrying the N64 and its power adapter in her bags with her and taking it to the local Nintendo certified repair shop when she was in the States. She agreed to do so, which I am so grateful for and humbled by.
The upshot was that a few weeks later I got an email from her that she’d taken it to the shop, they examined it, and determined that I just needed a new power adapter and the rest of the system was just fine.
That meant that I went from looking at buying a whole new N64 myself (and not owning half of it, after I had) plus still wanting to buy games for it, to suddenly having enough money left over after getting a new power adapter to not only buy MarioKart 64 for my brothers for Christmas, but also buy a blue controller for myself and a red and a green one for my two brothers. My friend also got a yellow controller and, by the end of that 10th grade school year, he and I bought WaveRace 64 as our second co-owned game. Somewhere along the way, I also bought a Memory Pak to use with MarioKart 64 and WaveRace 64.
A New Zealand friend of ours knew some Chinese guys in town who had an Australian N64 who had Star Fox 64 (Lylat Wars 64) and Shadows of the Empire, in addition to the international version of Super Mario 64. We met and let them borrow our WaveRace 64 and MarioKart 64 cartridges while we borrowed their Lylat Wars and Shadows carts until we realized (after they were on the road back to town) that the Aussie N64 carts are molded to not fit into US N64 systems and vice versa, at which point they returned and we just traded the whole system for a week or so, including their Rumble Pak.
I was pleased that the Nintendo 64 circumstances had turned out so well, but remained really sad about having lost my Saturn. It was becoming clear to me now from non-gaming magazine coverage (and also the number of N64 and PS1 ads in VHS tapes of TV programs that US family members would mail to us and our neighbors while we were overseas) that the Saturn was struggling in the US, but it already had plenty of games that I wanted to get. We had finally gotten dial up Internet access and I was able to visit Nintendo and Sega’s sites to see updated game catalogs.
I had a list of Saturn games I was still interested in and also kept an eye out for interesting SNES and Genesis games, but N64 seemed the most hopeful in terms of new exciting games. There were also plenty of other people who had SNESes and Genesises to borrow those games from. I decided that Ocarina of Time would be my next project to save up for. I kept my Saturn in mind, but on the back burner. I just didn’t have the heart to spend my entire last year of high school saving up to replace the system that had cost me my entire first year of high school’s savings. My youngest brother agreed to split the expense of Ocarina of Time with me when it released my senior year of high school.
The Christmas of my senior year, my parents pulled a coup de grâce on my mourning for my Saturn. This will go down in history as one of the most meaningful set of Christmas gifts that anyone has ever given me. My parents have never had much money, but because Saturn stock was being liquidated off of store shelves in the US, they’d been able to get quite a good deal and in a combined birthday/Christmas gift gave me a Model 2 Saturn (which came with a slightly modified Bootleg Sampler as well as a NiGHTS demo disc).
I hooked up my Saturn to our living room TV and put the NiGHTS demo disk in before I took my beautiful Model 2 Saturn downstairs to my game room and played that NiGHTS demo over and over and over again that morning.
It was also great to be able to fire up Astal and BUG! after all this time and enjoy them again.
My dad actually let me just play for a couple of hours before he tapped me on the shoulder and told me that he had something else for me. I guess our family like a lot of secrets and surprises when it comes to gifts. =)
What should he hand me but Panzer Dragoon Saga?

I’d definitely had my eye on NiGHTS for some time and had looked at the information on about Panzer Dragoon Saga as well. To be honest Panzer Dragoon Zwei was still a higher priority to me than Saga was, but this was still an amazing surprise and to be honest the system alone would have been an amazing gift.

In retrospect, I’m very happy to have gotten Saga when I did and, although I still feel that Zwei has the more cinematic gameplay (due to being on branching rails and being able to control the pace that you move through the level), there’s no denying Saga’s much deeper story or excellent battle system.
For the next week or so, I and my youngest brother and one of my friends were very heavily engrossed in making our way through Panzer Dragoon Saga with more and more NiGHTS demo practice thrown in for good measure.
Then, randomly after about half the Christmas holidays are over my parents hit me with more news.
They also bought Sonic 3D Blast and Sonic R for me and were just waiting for the right time to tell me.
To be honest, I had more interest in the Sonic World 3d museum portion of Sonic Jam than I did in Sonic 3D Blast, but I’d downloaded a demo of the PC version of 3D Blast and enjoyed it for what it was, even if I don’t consider it a real Sonic game. I’d considered getting it for the Genesis, simply as a counterpart to Super Mario RPG in terms of pre-rendered isometric perspective 16-bit console games.What I hadn’t counted on (or experienced in the PC demo) was the polygonal 3D special stages in the Saturn version of Sonic 3D Blast which are a remake of the Sonic 2 style of special stages. These were (as I understand it) programmed by Sonic Team in Japan. While the draw distance is not astounding and the geometry is nothing too mind boggling, I was still very very happy to see my Saturn doing such rock solid geometry at such a good frame rate.

I only wish that once you had beaten the game, there was some way to easily jump directly into the special  stages as they are by far the most enjoyable part of the game for me. The corkscrew spins in some of them are fantastic and reminiscent of some parts of BUG TOO! or Speed Highway in Sonic Adventure, except without the blocky geometry of the BUG TOO! terrain. I also love the fifth and sixth special stage in the bright blue clouds, especially the sixth one which has a transparent halfpipe/track.

I also feel like these special stages would have made a cool addition to Sonic R if you had save files from both games on your Saturn. Clearly some modification would be needed since the special stages rely on you being forced down the halfpipe and Sonic R’s camera follows you wherever you wander (and there is nowhere to wander outside of the halfpipe) but I’m still of the opinion that you could have some great 2 player gameplay, given some good MarioKart style powerups in the Saturn 3D Blast special stages.

While Sonic R controls oddly when compared to 3D platformers, and Travelers Tales is not Sonic Team, I enjoy Sonic R for giving us a glimpse at what sort of world a fully 3D Sonic platformer could have been on the Saturn. I finally had a Saturn counterpart to MarioKart 64 (even if it has nowhere near the number of tracks) and between my two Saturns, I had two controllers for my 2 player Saturn game.
Only a month later, Ocarina of Time would be arriving at our house after its long journey in international mail.
Before our copy of Zelda 64 arrived in the mail in February of ’99, though, my class had taken a surprise trip to Cairns, Australia for a week, using the money we’d raised during our junior year and while there I bought a couple of gaming magazines with news about Sega’s Dreamcast and I picked up a Rumble Pak to use with Zelda 64 once I returned home, since I knew it couldn’t be much longer. In fact it arrived in the mail that same week that I was out of the country.
Sonic R was the last Sonic game – indeed the last console game of any kind that I got while I was still in high school.
By that point, I’d already seen screenshots of Sonic Adventure and could hardly believe my eyes.
I’d spent all night one night downloading a 15 megabyte trailer of Sonic Adventure in AVI format.
As flaky as our dial up internet connection was, the fact that the connection stayed open until the download finished was a small miracle. I also downloaded all of the publicity stills released at the announcement of the game. Amazing stuff at the time.
After returning to the States in July of ’99 and visiting family and friends and renting Super Smash Bros., Yoshi’s Story (dodged a bullet not being able to afford that one overseas), playing Worms Armageddon with my classmate in Wisconsin, watching him play HalfLife, and scoping out a Quake 2 LAN party in Colorado, we moved back to Oregon where I was when the Dreamcast launched.

I hadn’t found a steady job yet so it took me about a month until I was able to find work to afford getting a Dreamcast and again I was stuck not being able to afford the game I wanted right away, but the Dreamcast Generator disc came to my rescue and I soon rented the full game and played through to the Egg Carrier with Sonic and Tails in a single weekend.

Soon after that, I was able to afford the full game and my younger brother and I rented SoulCalibur. That was an amazing weekend and we unlocked nearly everything in Mission Mode within our rental period.



Anyway, looking back on Sonic Adventure and Sonic Adventure 2, I feel like the gameplay of Sonic games suffered when it jumped from 2D to 3D. The classic 2D games feel like you flow along all surfaces that you come into contact with (save for vertical walls which don’t have a ramp leading up to them) and you have big sprawling levels which are often as tall as they are long. The 2D games have many places to reach top speed as well and tons to explore off the beaten path.
The 3D Sonic games, however, often feel like you’re colliding with edges that you ought not to be, in the case of Sonic Adventure 1, and in the case of Sonic Adventure 2 it feels to me as though too much of the levels are comprised of being shoved down a skinny corridor to the point that I feel like I’m constantly tightrope walking across Niagra Falls or walking the plank over an endless empty void.
I was also not a fan of the forced character changes in Sonic Adventure 2. SA2 is my youngest brother’s epitome of what a 3D Sonic game ought to be (or at least has been so far) but while I agree that it’s sharp technologically and I can appreciate its scale and variety of gameplay, it still left me hoping for Sonic Adventure 3, but the Dreamcast died before that could happen.
Past that point, I haven’t truly played so many of the newer Sonic games.
I guess, for that matter, while I did 100% Sonic Adventure 1, I found it to be completely impossible to achieve all A Ranks in Sonic Adventure 2, probably due in many cases to simply not knowing what time limit or score I needed to achieve.
I always meant to play through Sonic Heroes and while I really liked the overall style of the game visually, when I downloaded the demo on PC and also played the very beginning on GameCube once, I found that the irritating forced character switching between levels in SA2 had become full bore gate unlocking throughout each level so that dampened my spirits somewhat.
When Sonic 2006 was first announced I was hopeful and nearly picked it up when I got my 360, but after seeing other people play it am not too sorry I missed it.
The Wii spinoffs like Black Knight and Secret Rings… I don’t really consider them to be Sonic games per se, but wouldn’t mind watching someone play through them sometime and if I like what I see, playing through them myself once.
I loved the initial trailer of Sonic Unleashed (before any of the werehog stuff was shown) and enjoyed the demo on 360 but never got around to buying the full game – in part because of the werehog stuff that you’re forced to play in order to get back to the good Sonic parts.
Sonic Colors seems like a really interesting game and my youngest brother seems to really enjoy what he’s played of it, so I would be down for giving it a play through at some point. I just need to find the time and get a copy.
Sonic Generations was bought and mailed to me out of the blue by my cousins and I played through it pretty quickly except for a few of the last challenges on the world map and I got stuck on the controls on the Super Sonic boss fight.
I’d really like to finish this game but unfortunately my 360 DVD drive went on the fritz about two year ago.
I tried to like Sonic 4 and downloaded the demo when it was first out, but the physics were all wrong.
I don’t remember if I ever played a demo of Sonic 4 Episode 2 or not.

I never really played the GBA or DS or PSP Sonic games and not many of the Game Gear games either.

Some of the mobile games look decent but haven’t made me sit back and think, ‘Whoa, that looks amazing!’.
I was curious to try out Sonic Lost Worlds on Wii U.
It seems like the Sonic take on the Super Mario Galaxy idea which, if it’s done right I could get into.
I can’t really say without having actually played it, but if I get a Wii U, it’s definitely on the pick up list.
Sonic Boom, I haven’t really paid attention to.
It might not play poorly (I really don’t know) but the character redesigns are a turnoff for me for sure.
No offense to the people involved in the show or game. It’s just not at all what I’d choose to do with the characters.
So, in summary, I guess what I liked about the series the most was the attention to detail, interactivity of the environments,  artistic vision, and unexcelled graphical techniques in Sonic 3 and Sonic & Knuckles on the Genesis, where I don’t think that you can find a better looking platformer or possibly even a better looking side scroller.
The terrain wasn’t a bunch of flat lines like in Mario games up to that point. You could knock leaves off of trees in Sonic 2. You could kick up snowdrifts and hydroplane across the surface of water (like Dash does in The Incredibles) in Sonic 3. Sonic 3 took us snowboarding. Sonic & Knuckles took us rappelling.
Whether it was the physics that allowed you to bounce higher off of springs or mushrooms depending on your beginning altitude, the momentum that would carry you up a wall or around a loop, or the pseudo 3D special stages on the Genesis which I’d never encountered elsewhere, they just were such a spectacle to fly through and (certainly in Sonic 3 and Knuckles) a pleasure to go exploring in.
I have a few main criticisms of the 3D Sonic games (certainly the early ones that I’m familiar with):
1) it doesn’t feel as though the environments are a custom fit for Sonic’s abilities in 3D, as they did in 2D.
2) whether it was the power of the hardware or the imaginations of the team, we lost the feeling of expansiveness in 3D.
3) We keep being given a bunch of distracting alternate gameplay to substitute for a lack of excellent Sonic, Tails, and Knuckles gameplay.
4) It’s difficult to say any more that the Sonic games are graphically unexcelled in their cartoon based art style on the systems on which they appear.
Even for what are for me the true essence and high point of the Sonic Series – Sonic 3 and Sonic & Knuckles – they are 2D 16-bit platforming games.
If you got into gaming later than that or there aren’t any 2D 16-bit generation platforming games that you enjoy and appreciate, then you’ll be hard pressed to enjoy these along with them. It isn’t so much that those games are so antiquated that only those with nostalgia goggles can enjoy them. It’s more like: “Are you able to appreciate that they are artistic and cutting edge technological showcases of that system which most people would struggle with topping on original Genesis hardware even today?”
Even beyond that, if you just don’t like easygoing carefree cartoon worlds with physics driven navigation which require athletic finger dexterity and quick reflexes to navigate, then again you’ll have a hard time connecting.
We all have different things which we respond to that others don’t.
I love so many things that Sega has created but to be honest with you there are a whole stack of their arcade games and home games which just seem generic and sterile and completely boring to me.
Outside of Teenage Mutant Ninja Turtles II: The Arcade Game on NES, I don’t think I’ve ever enjoyed a beat-em-up, so things like Streets of Rage that so many people remember fondly… I just don’t care.
Altered Beast? Nope. I just can’t get into it.
For me, things are all about the way the camera moves through the world and the way the character or vehicle moves smoothly with style through that environment and communicates emotion.
When it comes to characters, that means that I want to see well drawn facial expression – something more common in cartoon styled characters.
The things that I am looking for are the finesse or fit-and-finish of motion and mood.
“What things is this game expressing better than any other game?”
would be one way to say what my eyes are always asking.
“How is this game taking what its peers have done and bringing it all to the next level?”
“Have any other games done this type of physical environment better than this?”
“Is this bringing to life an idea from books or comics or other past media which has never yet been expressed in a video game?”
“Is this game bringing something completely new to the table in terms of environment which I’ve never even read, thought, or dreamed about before?”
Those are the sorts of questions that my brain asks without words.
I guess because of my artistic and creative background, I’m always looking for the state of the art in the expression of ideas and certainly for a time the Sonic games were just that.

Pairwise Matching

I have used Structure from Motion software to find the spatial relationships between a group of photos taken in the same environment for years now, most prominently, Microsoft’s Photosynth.

A brief overview of the generic structure from motion workflow for the purposes of this discussion are as follows:

  1. Run a filter on each input photo to detect the sorts of points of interest which are likely to be recognizable from nearby, but certainly different, perspectives and create a descriptor for each feature in a given image.(These features will be found at various sizes and orientations in the image and are expected to be invariant to resolution observed at, lighting conditions, rotation, etc.)
  2. Since the computer does not know which images are likely to match each other, pairwise matching is used. This is to say, every image will be matched to every other image. (More technically, the list of feature descriptors for every image will be compared and matched to the list of feature descriptors for all other images.)(If we imagine that each feature discovered and described in a given image is a uniquely colored or numbered by thumbtack, you can think of this second step as essentially the process of trying to find any given thumbtack amongst the thumbtacks in all other photos.)
  3. Scene reconstruction or 3D reconstruction is the third step. This is the actual structure from motion problem, whereas the previous steps are simply a way of automating the identification of the same points in multiple photos.Every feature which is believed to have been identified in a chosen minimum number of photos (usually 3) will be represented by a point in 3D space and every photo will get added to the 3D scene one at a time, prioritized by how many features are believed to be shared between images.

    The positions of the points in 3D space and the camera positions will be refined with each added photo to satisfy the majority consensus. Essentially, as you place points in 3D space and project them back onto the flat plane in the camera frusta, representing each photo, you test how far away, in 2D space on the image plane, your proposed 3D point lands from where you know you observed it in Step 1 and then the computer adjusts either the camera position for that photo or the 3D points or both until it minimizes the energy/distance between the feature’s observed position and the resulting position of the proposed solution.

That is probably much too long of an introduction, but in any case what this blog post is primarily about is the second step: pairwise matching.

For years, I simply assumed that a 2D graph of the image comparisons necessary to be performed would be flat.

That is to say, I thought that for a batch of 200 photos, each photo would be compared to the other 199 (which is technically true), so I expected that if you plotted the total number of images to be matched on the x axis and which photos/how many photos it was matching on the y axis that you would see a flat line of 199 across the board.

What I had not given a great deal of thought until recently was that the total number of photo comparisons to be performed is not the number of input photos nearly squared, but rather about half of that.

What I am attempting to say is that rather than a formula for describing the total number of photo comparisons looking like this:
N * (N-1) = T
where N is the number of input photos and T is the total photo comparisons

instead, it ought to be half of that number, like so:
N * (N-1) / 2 = T

The reason that this is so is because, for any given pair of images, you only wish to compare their list of features once. In other words, once you have compared Photo 25 to Photo 80, you will get absolutely no new data from comparing Photo 80 to Photo 25. You already know which features they are likely (or not) to share.

So if we think back to the graph that I was imagining earlier, the comparisons which we want our program to perform will look more like an isosceles right triangle.

There are two ways to go about this.

We could begin with the brunt of the workload up front and compare our first image to every other image.

This would mean that the second image would be compared to every photo except the first photo (since they’ve already been compared).

Likewise, the third image would be compared to every image except photos 1 and 2.

In our 200 photo example, this means that with this method, by the time you reach Photo 200, it will have already been compared to every other image.


Working the other way around, you could begin by comparing each image to every preceding image. In other words:
Photo 1 does not get compared with anything,
Photo 2 gets compared only with Photo 1,
Photo 3 gets compared with Photo 2 and Photo 1,
Photo 4 gets compared with Photos 3, 2, and 1,
and so forth until Photo 200 will be compared with all 199 preceding photos.

Whichever end we begin at, we can still see that within the square graph of image combinations, our matches to be performed will begin in one corner and finish in the diagonally opposite corner with every cell on one side of that diagonal line destined to be filled in as that intersection of images is matched.

The second method may have a small benefit that if you wish to add more images later, you can re-use your code by telling all new images to compare themselves to every preceding photo, rather than needing to know the total number of images at the beginning.


I have seen an alternative to Photosynth called VisualSfM for years but was not able to get it running on my computers. It uses GPGPU hardware acceleration to significantly speed up parts of the 3 steps I mentioned at the beginning of the post.

While I find them to have excellent speed at detecting and describing features (Step 1) and 3D reconstruction (Step 3), unfortunately their pairwise matching appears to me to take significantly longer than the same images in Photosynth and I have found myself waiting weeks for this to finish.

Partially, I am to blame for that time duration, simply because I am matching many more images than most people would attempt to fit into a single reconstruction.

It is also important to understand that Photosynth will create a lower resolution proxy for each image to look for features in. Lower resolution versions of the photos mean fewer image features per photo which in turn means less time necessary to compare the feature descriptors from one image to the feature descriptors of others.

I will admit that I am currently computing matches for the full resolution photos from my current project, which I would expect to be slower than Photosynth, even if it was using the exact same matching code, simply because of the resolution which features are being detected in, per the previous paragraph, however I also tried running a very low resolution copy of the entire image set in both Photosynth and VisualSfM and found VisualSfM to still be significantly slower than Photosynth at this one step. That low resolution copy was lower resolution than what Photosynth downsizes to, so it ought to have been a completely fair test. Not only that, but I was running Photosynth on a much less powerful machine, so my hat goes off to Drew Steedly and David Nister at Microsoft for the speed they achieved on pairwise matching.

The point of all of this preamble is that as I wait the many hours necessary to compute the matches between the full resolution copy of these photos, it is possible to dump in all 6,000+ photos and just walk away to let VisualSfM run for over two weeks, but for my own encouragement have broken the job up into some smaller pieces, just so that I can see those smaller pieces be completed and feel as though progress is actually happening.

My photos for the project reside in 8 folders.

I have already compared the photos in each of the folders to themselves, but when you think about each folder’s photos still needing to match all the photos outside their folder, it becomes clear that this is just the beginning.

At the time of this writing, I have successfully compared all photos in folders 1 through 5 to each other, which is good progress, but (deceptively) not yet 50% of the total comparisons to be performed. This is because the later folders of images will be compared to more images than any of the images thus far because VisualSfM uses the ‘compare each image with all preceding images’ method.

My current project is the house where my youngest brother and his wife were married earlier this year and is primarily composed of the back and front yards of that house. I took still photos before the wedding with the aim of building the structure of the exterior of the house where the wedding was taking place so that I could collect the photos and videos from other guests and match them all in 3D.

The first three folders of images, taken by me on the Wednesday afternoon + evening, before the Saturday afternoon wedding, are almost exclusively taken in the back yard where the wedding ceremony was to be held.

Folders 4, 5, 6, and 7 were all taken by me early on Saturday morning, before everyone had arrived to finish decorating before the ceremony. Folders 4 and 5 are mostly taken in the back yard in a much closer state to the wedding than Wednesday had been, and Folders 6 and 7 are very nearly exclusively front yard shots.

Folders 3 and 5 both feature one trip around the house clockwise and counter-clockwise to bridge the two environments.

Folder 8 is where I am collecting photos taken by other wedding guests, which are divided into:
Front Yard,
Back Yard,
and Kitchen/Dining Room/Living Room.

After finishing the matches of everything in the first 5 folders and letting VisualSfM begin chewing on folder 6 for a while, I stopped that for a little while and decided to compare all of the interior and back yard shots in Folder 8 to Folders 1 through 5 (since they are all primarily Back Yard shots).

I am nearing completion of that little side step (which also means I have a significant portion of Folder 8’s matches nearly finished.

I have also already compared the images in folders 6 and 7 to each other, as well as the Front Yard shots in Folder 8.

What I have left to match are Folders 6, 7, and 8 to everything that came before them.

At least… that is what would happen if this was Photosynth.
Part of me knows that most Back Yard shots will not match any Front Yard shots or vice versa.

Neither are Interior shots likely to match Front Yard shots (however the door to the back yard opens from the Dining Room which is a large glass door and that wall also has several windows which you see through from both sides, so matching Interior shots to Back Yard shots is worthwhile, even if a bit of a long shot in some cases.

The exception to this is that because the back yard has a steep hill at the back of the yard (which I climbed and took photos from along the back fence) you can see over the roof of the house and across the street to the fronts of the houses on the other side of the street and those same houses are definitely visible in my Front Yard photos. Likewise, the trees growing are the back hill behind the house are visible from the front yard photos. I would hate to miss out on those matches.


In this entire process, I have been wishing that I were able to visually represent what progress I have made on the matching process.

I would be satisfied with that simple square graph with half the cells colored to represent matches to be completed and then within that selection, coloring cells a second color to represent comparisons which have already been computed.

The key feature for me is being able to specify ranges of image comparisons which may have been completed out of sequence and have them be correctly colored without me needing to make time consuming manual selections to apply color to.

If anyone has tips as to how to achieve this in Excel or a custom coded script in JavaScript or Python or the like, please get in touch with me.

Photosynth Map Embed Tests

Geotagged Photosynths and Panoramas uploaded worldwide:

Geotagged Photosynths and Panoramas uploaded with Nathanael account:

Geotagged Photosynths and Panoramas uploaded with Nathanael.Lawrence account:

Geotagged Photosynths and Panoramas uploaded with NateLawrence account:

Transcript Sync

I’m looking for a simple way to get a transcript to automatically scroll as I play embedded audio or video on the same page.
If there’s a solution that will work with an embedded YouTube video, then that would be great.

Here are the features I’m looking for:

  • When the video is played, the transcript auto scrolls in sync.
  • When the video is scrubbed forward or backward, the transcript will automatically jump to the new timecode.
  • The user has the ability to click a phrase/word/syllable/letter in the transcript and the video player will jump to that timecode.
  • The user has the ability to turn off automated scrolling of the transcript in favor of free scrolling and searching.
  • The user has the ability to toggle off the function of clicking a word seeking to that point in the video (meaning that words in the transcript could contain hyperlinks to pertinent information such as Wikipedia entries, Twitter profiles of people being mentioned, other videos being mentioned, etc.)
  • This library/player can also generate a URL fragment which can be appended to the end of the page URL (in a similar fashion to appending a timecode to the end of a YouTube URL) which can pass a timecode to the player on page load for the purpose of linking others to a specific quote.
  • In addition to supplying only a beginning time, we might simply offer the user the ability to highlight the appropriate phrases and have a collection of (not necessarily consecutive) timecodes be auto generated + represented in as concise + human readable manner as possible.
    (In other words I want the ability to construct a playlist of moments selected within the audio or video which correspond to the desired quotes.)

If you turn on the transcript under the TED Talk video player, it offers a few of these features which may help you visualize more clearly what I am after.
I believe that their transcript viewer previously had automated scrolling of the transcript to keep it in sync with the video but this appears to no longer be the case.

A quick search on Bing also turned up TimeJump for deep linking inside of audio or video on a page.

YouTube is good insofar as:

  • It provides a free hosting solution.
  • It provides the only free solution I’m aware of to automatically synchronize a transcript to the audio of a video and auto-generate subtitles.
    (The automated line breaks are usually borderline useless, however this caption/subtitle file can be downloaded, manually edited, and resynchronized once we have the first automatic rough draft.)
  • While on a video’s page on any timecode mentioned in the description or comments is a hyperlink which will seek the player to that hour/minute/second.
  • We can easily append a timecode to the end of a YouTube URL to seek to a particular quote on page load.
  • YouTube allows us to easily create video playlists + within a playlist any video can be trimmed to a selection of a minimum of 15 seconds.
  • The same video can be added to a single playlist multiple times if we need multiple discrete quotes from a single video.

However YouTube is limited to the degree that:

  • When embedding a YouTube video on an external site, I do not know of a way to have timecode links on that page affect the video player’s progress bar.
  • Because of this, while I can display a transcript alongside the video and have a link to a timecode for each line/phrase in the transcript, it will want to open the link to that YouTube video in a new tab on rather than seeking to that point in the video player that I’ve embedded on the same page.
  • I know of no way for the transcript to know where the video player is progress-wise, and therefore do not know how to automatically scroll the transcript to the part being spoken in the video if the user manually scrubs forward or backward.
  • While the ability is there to temporally crop playback of individual videos in a YouTube playlist, this only works on laptops and desktops.
    On any mobile OS where the video is passed to the native media player, it will always play the entire video, meaning that if we added the same video to a YouTube playlist multiple times in order to play several non-consecutive portions, when viewing the playlist on a mobile OS or video game console the full length video will play multiple times, rather than playing only the selected portions.

If there’s no way to get this type of control in concert with YouTube’s Flash and HTML5 video players, then a solution which takes an MP4 and an SRT as input and renders them with something universal like Javascript would be ideal, as long as the performance is good (with progressive enhancement to use Canvas or anything else which will help us avoid slowdown and give us more presentation options).

Bonus points if it:

  • can work on mobile devices rather than the video being shuffled off to the mobile OS’ default media player (because the media player will not support any custom transcript viewer or obey commands to only play specified portions of the media)
  • can apply dynamic animations to the text currently being heard, such as printing the phrase to screen character by character or a subtle highlight moving across different phrases, based on the number of characters between a beginning timecode and finishing timecode for a given phrase.

Please let me know if you’re aware of anything like this.
I’m @natelawrence on Twitter.


  • Because we are dealing with heavily compressed web audio + video which comes in fairly large chunks, even if we had very precise timecodes, the player may only be able to seek to the beginning of the nearest chunk of audio.

Related concepts:

  • Verbatim transcript collapses to Proofread transcript.
    In cases of transcripts of impromptu conversation which contains rephrasings, stutters, etc. it would help to have transcript markup that allows the transcript viewer to toggle between showing verbal missteps (repeated words, “um”s, “uh”s, etc.) and hiding those in a proofread version without storing those as separate text files so that visual continuity is maintained by all text that the verbatim and proofread transcripts have in common.
  • A cross-site audio / video playlist webservice which allows me to add any embeddable web video to a single central audio + video playlist, specify that I want only a selected portion of the audio or video to play, and add captions/subtitles/synchronized transcripts, independent of the ability of the audio or video player from the site of origin to display such things.


I originally wrote the above entry to be able to link to in a comment on someone’s short blog post on TimeJump (so as to not write an entire chapter in their comment section) but my actual comment there included a bunch of other related thoughts I’ve had on this topic for many years and ended up being as long (if not longer) than this post. There is some redundancy, but for my own sake here is the full text of that comment.

Eric, hi.

I’m wondering if you’ve ever come across anything that would include concepts from TimeJump, but add more ideas as well.

I jotted out a quick sketch of what I’m looking for on my blog.

The gist of it is that, given a chunk of audio or video and a full transcript of what was said therein combined with subtitle-style timecodes that correspond to different phrases in the text, I want to be able to present the transcript and the source media together and have the text auto scroll to display the part of the transcript that is currently being heard.

I tend to transcribe audio as thoroughly as possible on first pass (including stuttering, “um”s, “uh”s, rewordings, etc.) just to be sure that I’ve not missed anything.

I then make a copy which I proofread and clean up, trying to punctuate the original words to be as grammatically correct as possible and remove any repeated phrases to convey the speaker’s intended meaning and to provide a text that will translate well. This also includes correcting any slips of the tongue when someone is speaking (say someone is illustrating a point and says “Abraham” when they obviously meant to say “Moses” or accidentally say “Pacifically” rather than “specifically”)

This results in two transcripts, but I would like to be able to present the option to the viewer to toggle between these on the fly as the transcript plays.

My ideal is that I could simply mark up the proofread differences into the verbatim transcript and not have a duplicate copy of all the text they have in common.

This is good for two reasons:

  1. File size/download time is cut by not redundantly storing the majority of the words twice.
  2. The transcript player can keep visual continuity on the words that don’t change and simply animate the repeated phrases collapsing to the proofread replacement so that our viewers do not lose their place.
  • The transcript is good for translation.
  • The transcript is good for searching.
  • The transcript is good for hyperlinking to a specific point in the video.
  • The transcript is good for hyperlinking to references (as you mention).
  • The transcript is good for those who cannot hear or cannot hear well or where the video is not of sufficient quality to lip read or the video has cut away to illustrative material while the speaker continues.

Above and beyond these requirements:

  • I’m looking for a way to highlight multiple sections of a single time-synchronized-transcript, which could auto generate the appropriate timecodes and then present a playlist of selections within a single piece of audio or video.
  • I’m looking for a way to have a playlist of multiple audio + video clips (potentially from different websites) and retain the ability to play multiple selections of arbitrary length from within each of them.
    (Imagine you have some audio journals and some video journals throughout a creative project and you want to play back all statements regarding a particular subject that is mentioned at least once in 75% of the recordings.)
  • I am looking for a way for the player to buffer ahead the specific selections of audio or video that we have specified that we will be playing.
  • It should always be made clear to the user, through text, that what they have listened to is only a portion of the whole.
  • I am looking for a way for the selections of audio + video to work on mobile devices and video game consoles without the operating system’s default media player intercepting the HTML5 audio or video and simply playing back the entire recording.
  • I am looking for a way (currently uploading a video to YouTube along with a uniquely formatted transcript is the only way that I know of) of automatically generating timecodes for the beginning of each word in a transcript.

My ideal is actually a timecode for the beginning and end of each syllable.
This gives us several things:

  1. When we switch from the verbatim transcript to the proofread transcript, we could actually skip the pieces of audio that we have folded out of view, allowing us to cut out stammering, rephrasing, unnecessarily long pauses while a speaker reviews their notes, etc.
  2. At this point, we can have the subtitles/captions/transcript print itself to screen on a per-character basis, synchronized with the speaker’s speech. We can thus visualize the speakers words materializing into existence on the page as they are spoken because we simply divide the amount of time that a syllable takes to play back by the number of characters in that syllable. This provides a satisfactory synchronization between a speaker’s nuances of speed of pronunciation whereas averaging the total number of letters in a word over the whole word may be too loose to be pleasant whenever one syllable is held for a longer period of time.
  3. This gives us the ability to generate a timecode for every letter in the transcript to seek to any point in the media (within the constraints of the compressed format that the media is stored in).
  4. It would require more markup, but we could actually animate someone forming their wording when they are rephrasing a sentence by use of crossed out text, deleting a phrase that will be replaced to complete the sentence, etc. My instinct, since I was in elementary school, was that this would help people think more clearly about grammar and punctuation.

My summary seems to have surpassed my original post in some ways and there are more ideas here than my core requirements which are thus:

For a single piece of audio/video on a webpage and a time-synced transcript I would like to:

  1. Display them side by side, showing the text that is currently being spoken
    (resynchronizing when the user seeks to a previous or future point in the recording).
    The idea is that we can add our own transcript/subtitles for a video or audio that did not include one.
  2. By clicking on a phrase within the transcript which corresponds to a segment of time, it will scrub the media player to that timecode (as TimeJump does on page load).
    See the transcript below the video player at for an example.
  3. Allow the user to stop the transcript’s auto scroll to search the text for a particular keyword + then seek to that time in the audio/video.
  4. Allow the user to toggle off time hyperlinks in order to click on hyperlinks to external resources mentioned (a passage on, a Wikipedia article, another church’s website, someone’s profile on Twitter, etc.). Perhaps it would suffice to hold down Ctrl and then click on a hyperlink embedded in the transcript to avoid seeking to that time in the media.

Lumia 1020 Test Shots

The Lumia 1020 has a 41 megapixel image sensor onboard for its camera.
Here are some test shots taken with it.
Try viewing them fullscreen and be sure to zoom in for high res details.

01 ) 7136 x 5360 (38.24 Megapixels) | 4:3.004 Aspect Ratio | Download from Nokia

02 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

03 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

04 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

05 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

06 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

07 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

08 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

09 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

10 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

11 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

12 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

13 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

14 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

15 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

16 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

17 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia

18 ) 7712 x 4352 (33.56 Megapixels) | 16:9.029 Aspect Ratio | Download from Nokia