<?xml version="1.0" ?> 
<rss version="2.0">
<channel>

<title>Michael Anttila's Picture Of The Week</title>
<description>Weekly photographs from the mind of Mike</description>
<link>http://www.anttila.ca/michael/potw/</link>
<item><title>Week Of March 9th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-03-09</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/RubiksCubeJigsawPuzzle.jpg
" width="1280 
" height="901
"/>&lt;p&gt;
Kai became interested in jigsaw puzzles, and we started doing some at home.
He helped a friend do a 500 piece puzzle at his house and wanted us to tackle a 500 piece puzzle here at home.
The puzzles we have here are a little challenging, and I wasn't too impressed with any of the puzzles at our local game store.
I felt it was the perfect opportunity to get a custom puzzle made!
&lt;p/&gt;
Kai and I went up to his room and arranged his toy shelf so that it would make a good scene for a puzzle.
Then I carefully took this photo, cropped it down and polished it up to send to &lt;a href="https://ca.venuspuzzle.com/"&gt;Venus Puzzle&lt;/a&gt;, which is a custom puzzle shop based in Slovakia.
They did a fantastic job of turning this photo into a 500-piece puzzle, and we had a great time putting it together.
It had just the right blend of easy-to-find pieces and more challenging sections.
&lt;p/&gt;
Technical Details:  This photo was taken with my Canon 5D Mark II + EF 17-40mm at 40mm, ISO 100, f/10 for 1/6th of a second (on a tripod).
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of March 2nd, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-03-02</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/OurLadyPeace2025.jpg
" width="1280 
" height="821
"/>&lt;p&gt;
Angela and I went out to see Our Lady Peace for their 30th anniversary tour.
This was a band that Angela followed when she was in university and they were just hitting their stride on the Canadian music scene.
I didn't follow them as closely at the time, but I did have &lt;a href="https://www.youtube.com/watch?v=I7R-PSvvziU"&gt;One Man Army&lt;/a&gt; in my playlist that I would listen to while programming at work for several years.
&lt;p/&gt;
Collective Soul was the opening band for the concert, and they put on a really good show as well.
&lt;p/&gt;
Technical Details:  This photo was taken with my Pixel 6.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of February 23rd, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-02-23</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/2025-02-23-A.jpg
" width="2037 
" height="1861
"/>&lt;p&gt;
This picture took over 10 years for me to take.
&lt;p/&gt;
&lt;ul&gt;
&lt;li&gt;Since the dawn of time, humans have asked the question: "Can I see my house from here?"&lt;/li&gt;
&lt;li&gt;When &lt;a href="http://anttila.ca/michael/potw/archive.pl?2014-03-02"&gt;Imagine Communications&lt;/a&gt; moved into a new location at the north end of Waterloo, there was a 6 story parking garage.
(&lt;a href="http://anttila.ca/michael/potw/archive.pl?2019-03-31"&gt;It is visible in the background of this photo&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;When driving home from work, I noticed that you can see one of the &lt;a href="http://anttila.ca/michael/potw/archive.pl?2023-10-01"&gt;Elora water towers&lt;/a&gt; from the intersection of Northfield and 86, near where &lt;a href="http://anttila.ca/michael/potw/archive.pl?2012-10-21"&gt;this photo was taken&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I wondered if you could see the water tower from the top of the parking garage.  Unfortunately, we were only allowed to use the first two levels of the garage, so I couldn't get to the top.&lt;/li&gt;
&lt;li&gt;This fall, when my team moved into the new office building in Kitchener, I got a great &lt;a href="http://anttila.ca/michael/potw/archive.pl?2024-11-10"&gt;view from my desk on the 8th floor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;So naturally, I wondered: Could I see Elora from my desk?&lt;/li&gt;
&lt;/ul&gt;
I opened up Google Maps and started doing some calculations.
I drew a line from a window near my desk to the water tower near my house.
The distance was over 24 km.
I then plotted the terrain height at 100 points along that line, taking into account the curvature of the Earth.
&lt;p/&gt;
My goal was to find out if there were any hills or other obstacles that would get in the way of the view.
After plotting the terrain, I also factored in the potential height of trees.
The good news was that there was no hard terrain in between the window and the water tower.
The bad news was that there were trees in between.
&lt;p/&gt;
I realized I could get a better view if I went up to the 11th floor, but I won't be allowed to do that until they finish constructing it.
I didn't want to wait so I decided to try taking the photo from the 8th floor.
&lt;p/&gt;
So, I waited until winter when there would be no leaves on the trees.
Then I brought my camera to the office and left it at my desk.
Every day I would check the weather to see if the atmosphere was transparent enough and the sun bright enough to maximize my chances of seeing something over 24 km away.
&lt;p/&gt;
Finally a day came where the air was clear and the sun was out.
I opened up the map again to verify exactly which direction I needed to look.
I pointed my camera and scanned the horizon.
It was hard to make out through the viewfinder, but I thought I saw some structures in the distance.
I took a photo and zoomed in on my camera's display to figure out what it was.
&lt;p/&gt;
To my amazement, I saw wind turbines, cell phone towers, and something that looked distinctively like a water tower.
I cross-referenced the map and realized that it was the water tower at the &lt;i&gt;north&lt;/i&gt; end of Elora, not the one near my house.
I carefully panned my camera over to the right and took another photo.
Sure enough, through the trees, I could just barely make out the shape of another water tower.
That was the one I wanted!
The mission was a success!
&lt;p/&gt;
Here are some explanations of the images.  On a PC, you can hover your mouse cursor over the photo to see the annotations.
&lt;ul&gt;
&lt;li&gt;The graph at the top shows the curvature of the Earth (blue), the level of the ground (red), the tops of the trees (yellow), my sight line from the 8th floor (green), and a theoretical sight line if I was allowed to go up to the 11th floor (orange).&lt;/li&gt;
&lt;li&gt;In the photo below that, a cluster of five structures are visible.&lt;/li&gt;
&lt;li&gt;"B" is the water tower at the north end of Elora.&lt;/li&gt;
&lt;li&gt;"C" is a wind turbine approximately 12 km further in the distance from the water tower - almost 37.5 km away from where I was taking the photo from!&lt;/li&gt;
&lt;li&gt;"D" is a cell phone tower about 14 km away.&lt;/li&gt;
&lt;li&gt;"E" is a cell phone tower at the &lt;a href="http://anttila.ca/michael/potw/archive.pl?2015-05-31"&gt;Grand River Raceway&lt;/a&gt; in Elora.&lt;/li&gt;
&lt;li&gt;"F" is another wind turbine.  It's interesting that these wind turbines are not visible from anywhere in Elora (I checked), because they are over 10km out of town.  They are only visible because of the extreme distance that I'm taking the photo from.&lt;/li&gt;
&lt;li&gt;In the photo at the bottom, "A" is the water tower near my house that I was hoping to be able to see from my desk.&lt;/li&gt;
&lt;/ul&gt;
Now that I know where the water tower is, I can actually "see" it from my desk.
At least, by craning my neck I can see the exact spot on the horizon where it would be if I had telephoto lenses for eyes.
&lt;p/&gt;
In conclusion, even those these pictures aren't the best, and were taken through a thick glass window with no tripod, they are very special to me, and mark the end of a long time wondering if I could see where I live from where I work.
&lt;p/&gt;
Technical Details:  These photos were taken with my Canon 5D Mark II + Tamron 150-600 at 600mm, ISO 800, f/8 for 1/1600th of a second.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of February 16th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-02-16</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/RubiksCubePattern.jpg
" width="1280 
" height="829
"/>&lt;p&gt;
For Kai's birthday party this year, Angela bought a box of 25 Rubik's cubes for $25 to hand out as party favours.
Before the party, Kai and I arranged them into this pattern.
As expected, the quality of a $1 cube is absolutely terrible, but Kai's friends had fun trying to solve them during the party.
&lt;p/&gt;
We held Kai's party at an indoor gym.
After running around for almost an hour, the gym instructors were trying to get the kids to play a game of soccer or basketball.
They were already pretty tired at that point, so we told the instructors that the kids would rather go to the party room and solve Rubik's cubes.
&lt;p/&gt;
I don't think we were believed.
After everyone was back in the party room, one of the instructors asked how many kids knew how to solve a cube, and was shocked when all of them except one put up their hand.
&lt;p/&gt;
The party was a success, and everyone got to take home a cube or two and a bag of other goodies.
&lt;p/&gt;
Technical Details:  This photo was taken with my Pixel 6.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of February 9th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-02-09</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/SnowyWinter2025.jpg
" width="1280 
" height="964
"/>&lt;p&gt;
We had a &lt;a href="https://youtu.be/kbKqpCreHXs"&gt;very snowy winter&lt;/a&gt; in Southern Ontario this year.
When we put the new deck on the house in the summer, we didn't take snow into consideration.
The only way to get snow off the deck is to shovel it all over to the side and then lift and throw it over the glass railing.
&lt;p/&gt;
After clearing the deck a couple of times, the pile of snow at the side reached a staggering height... almost up to the level of the deck itself!
It's hard to tell from the photo, but the deck is one full story off the ground, so the snow pile is around 8 feet high.
&lt;p/&gt;
Technical Details:  This photo was taken with my Pixel 6.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of February 2nd, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-02-02</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/GalaxySimulator.gif
" width="1200 
" height="676
"/>&lt;p&gt;
I told this story briefly on Facebook before, but I wanted to tell it again as a full-fledged Picture of the Week.
I think the full story is worth reading, even if it gets technical, so I hope you can survive those technical parts and read through.
&lt;p/&gt;
When I first joined the Google Stadia team in 2019, it was a bit intimidating.
I was joining a team that had a mix of people, some with decades of experience in the video game industry.
Because of this, I didn't want to come in as their manager right away -- I wanted to spend some time in the trenches, writing code and getting to know how the internal systems worked at Google.
&lt;p/&gt;
So, I joined the team as a senior level developer.
Because of this, I felt I needed to prove myself to the team in some ways.
My chance to do that came fairly quickly, as it turns out.
&lt;p/&gt;
The team lead for the Graphics Tools team had an idea to hold a series of friendly coding competitions.
It was a way of getting the entire team to be familiar with how video game engines work under the hood.
Each competition would involve writing or modifying a part of the video game engine that the team lead had started writing.
&lt;p/&gt;
The first competition was a Shader Jam, and the directions were straightforward:  Write a fragment shader from scratch that does something cool.
&lt;p/&gt;
A fragment shader is a little computer program that runs on the graphics card (GPU).
What sets it apart from a regular program running on the CPU is that the shader is executed once for each pixel that is covered by a polygon on the screen.
If you make one polygon that covers the entire screen, the shader will be run once for every pixel on the screen.
&lt;p/&gt;
Because of this, you have to write shaders almost backwards from how you would write a normal CPU graphics routine.
In a normal program, you would set up some variables, loop through all the pixels, and modify the variables as you go along to calculate what each pixel should be.
In a shader program, the only information you start with is where you are on the screen, and you have to figure out what the value of the pixel should be just based on that.
&lt;p/&gt;
The night before the contest, I was lying in bed trying to come up with some idea of what I was going to do.
I should add that I had never actually written a shader before, because up until then all of my work in the TV industry had been writing CPU graphics programs.
Then I had an idea:  I had recently read an article on how spiral galaxies get their shape.
The spiral arms are somewhat of an illusion.
From astrophysics, you know that planets and stars follow elliptical orbits.
It turns out that if you take a bunch of elliptical orbits, and have the angle of the major axis vary gradually by the size of the ellipse, then an overall spiral pattern emerges, even if nothing in the galaxy is following a spiral path.
&lt;p/&gt;
I decided to put that idea to the test, and see if I could simulate a spiral galaxy by plotting a bunch of ellipses and changing their angles according to their size.
&lt;p/&gt;
The next day, for the contest, we had an hour where the team lead walked us through his graphics engine to explain how it worked.
Then we had two hours to write a shader and ask any questions if we needed to.
&lt;p/&gt;
First, I looked up the equations for how to approximate an ellipse, and borrowed the first function I found that looked like it would work.
Then came the "backwards" part.
Usually I would write a program that traced the path of the ellipse, drawing pixels along the way.
Then I would loop that several times to draw different ellipses.
This time my shader program was given a pixel coordinate, and I had to loop through a bunch of ellipses trying to figure out if this pixel was on or off an ellipse.
I also wanted stars in my galaxy, so on each ellipse I calculated the positions of a few stars that fell on that ellipse.
&lt;p/&gt;
The end result of all my calculations was that for each pixel I calculated a value "ellipse" from 0-1, representing how much this pixel was on an ellipse.
Then I calculated a value "star" from 0-1, representing how much this pixel was on a star.
Then I calculated the colour of the pixel by multiplying the colour blue by "ellipse", and the colour white by "star", and adding those two values together.
&lt;p/&gt;
Shockingly, the theory worked!
Just by drawing a bunch of ellipses at different angles, a spiral pattern emerged, even though I hadn't written any code to generate a spiral at all!
&lt;p/&gt;
There were just two problems:  The stars near the centre of the galaxy flickered a lot.  Also, the galaxy looked kind of weird with no bright cluster of stars right at the centre.
I was able to fix both problems at once, finishing off my shader by calculating a central glow, which basically takes the distance from the centre, applies an exponential curve to it, and multiplies it by the colour yellow.
In an attempt to preserve the code for posterity, I &lt;a href="https://www.shadertoy.com/view/w3SGzD"&gt;wrote a version of it on ShaderToy&lt;/a&gt;.
&lt;p/&gt;
I'm very glad I had the idea for the Galaxy Simulator before I fell asleep the night before the contest.
I'm also glad I was able to figure out how to code it up under time pressure the next day!
It turned out to be the winning entry in the Shader Jam, and when I became the manager of the team a few months after, my manager remarked that I had earned the respect of everyone on the team.
That could very well have been because of this neat looking galaxy.
It could have also been because of the shader dissassembler that I wrote for our GPU profiler, but that wasn't quite as beautiful to look at.
&lt;p/&gt;
Technical Details:  This animated gif was captured from ShaderToy, since I seem to have lost the original animated gif that I captured from Stadia (yes, this Galaxy actually ran on cloud Stadia servers for one glorious afternoon).
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of January 26th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-01-26</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/SkiingJan2025.jpg
" width="1280 
" height="1019
"/>&lt;p&gt;
One good thing about having a lot of snow this winter was that conditions were excellent for skiing!
I took Aila and Jade over to &lt;a href="https://hockley.com/ski-snowboarding/"&gt;Hockley Valley&lt;/a&gt; and we got there just in time to sign up for lessons, which was great because Jade had never gone skiing before.
&lt;p/&gt;
After a few trips down the bunny hill, the instructor took them over to the chairlift and up to the top of the mountain.
This was a photo I took of the two of them coming down the big hill for the first time.
&lt;p/&gt;
After the lessons were over, the two of them had a blast doing that same run again and again.
They were both hooked on skiing after this, and for the next trip we invested in some better equipment, like ski goggles and warmer gloves.
&lt;p/&gt;
Technical Details:  This photo was taken with my Canon 5D Mark II + Tamron 150-600 at 600mm, ISO 400, f/8 for 1/640th of a second.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of January 19th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-01-19</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/NiagaraFalls2025.jpg
" width="1605 
" height="771
"/>&lt;p&gt;
The day after the &lt;a href="http://anttila.ca/michael/potw/archive.pl?2025-01-12"&gt;Walk Off The Earth concert&lt;/a&gt;, Angela took Aila and Jade over to the US to do some cross-border shopping.
(Historical note: This was when Biden was still president.)
Before she crossed the border, she dropped the three of us off at the falls.
&lt;p/&gt;
It was Finna's first time seeing Niagara Falls, although it was quite a cold experience for her.
Of course the falls are stunning in any season, so it was worth it.
We walked over to &lt;a href="https://www.birdkingdom.ca/"&gt;Bird Kingdom&lt;/a&gt;, and spent the rest of the afternoon there while we waited for our ride.
Finna even got some 1:1 time with this lovely grey parrot!
&lt;p/&gt;
Technical Details:  These photos were taken with my Pixel 6.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of January 12th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-01-12</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/WalkOffTheEarthJan2025.jpg
" width="1800 
" height="1137
"/>&lt;p&gt;
Last year, Angela and I went to see &lt;a href="http://anttila.ca/michael/potw/archive.pl?2024-01-21"&gt;Walk Off The Earth in Niagara Falls&lt;/a&gt;.
It was a great concert, and very kid-friendly, so we decided to take the kids to &lt;a href="http://anttila.ca/michael/potw/archive.pl?2024-06-02"&gt;see WOTE in Toronto&lt;/a&gt; for their first ever rock concert!
&lt;p/&gt;
We heard that WOTE was coming back to Niagara Falls again this year, so we bought tickets for everyone again!
As usual, the concert was great, and they played a lot of different material.
&lt;p/&gt;
Technical Details:  This photo was taken with my Pixel 6.
&lt;p&gt;0 comments.</description></item>
<item><title>Week Of January 5th, 2025</title><link>http://www.anttila.ca/michael/potw/archive.pl?2025-01-05</link><author>rssguru@anttila.ca</author><description><img src="http://anttila.ca/michael/potw/SparklesInThePark2024.jpg
" width="1749 
" height="841
"/>&lt;p&gt;
It has been &lt;a href="http://anttila.ca/michael/potw/archive.pl?2016-01-03"&gt;a while&lt;/a&gt;, but we finally got back to Riverside Park for "Sparkles in the Park" on New Year's Eve!
Aiti was with us again, and this was Finna's first time at the event.
&lt;p/&gt;
It's funny to look back at this photo now and see the lack of snow, after we just got through the snowiest winter in a while.
There was a great light show in the park, and they put on an amazing fireworks show as well.
Everyone was impressed!
&lt;p/&gt;
Technical Details:  These photos were taken with my Pixel 6.
&lt;p&gt;0 comments.</description></item>
</channel>
</rss>
