tag:blogger.com,1999:blog-75808926307970232832024-03-13T08:23:06.287-07:00TJOtalaNews, Rants, Raves… and Random StuffTapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-7580892630797023283.post-68966508299864247932017-01-25T21:00:00.000-08:002017-01-26T15:58:54.106-08:00I Have Seen The Light... and It Is SmarterSomething has always bothered me about bicycle lights: they are fundamentally dumb. No, I do not mean that they are useless - but rather how they are not adaptive to our riding behavior. There is no way to indicate intent as we do with the turn signals and brake lights in a car.<br />
<br />
Read the rest here: <a href="https://www.linkedin.com/pulse/i-have-seen-light-smarter-tapani-otala">LinkedIn</a>, <a href="https://medium.com/@tjotala/i-have-seen-the-light-and-it-is-smarter-d872be7d6dd8#.kmzpa09pq">Medium</a>.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-14510271325626339402016-11-27T17:52:00.002-08:002016-11-27T21:58:49.255-08:00I've moved this blog from another hosting company over to Blogger. Pardon the noise and dust while I rebuild it.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-83764380025974659682016-09-22T22:22:00.000-07:002017-01-14T22:28:53.249-08:00Reading Klingon is Hard!Few months ago I read an article about a new product named FreeWrite designed for distraction-free writing. That product intrigued me because I have a college-bound son who could benefit from such a product. The only trouble was the $549 price tag that seemed excessive considering its limited features. Granted, that is the whole point of the product yet I felt confident that I could build something equivalent for far lower cost. I am pleased to report that after investing only about $75 and some of my spare time, the finished product turned out quite nicely and became a very nice parting gift to my son for his journey into creative writing.<br />
<br />
Read the rest here: <a href="https://www.linkedin.com/pulse/reading-klingon-hard-tapani-otala">LinkedIn</a>, <a href="https://medium.com/@tjotala/reading-klingon-is-hard-1032a79e1fa8#.8mx49bsx2">Medium</a>.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-37682031181442228722016-09-09T22:24:00.000-07:002017-01-14T22:31:02.796-08:00On Careers and AerobaticsI have a confession: I have a lifelong seemingly irrational fascination with all things flying. I have flown in many kinds of aircraft: commercial airliners, of course, but also in smaller prop planes, helicopters, hot air balloons, a Zeppelin and even a WW II bomber. I've also intentionally jumped out of planes couple of dozen times. After all, who wouldn't? I mean sure they're pretty to look at but noisy and smelly, and the door was open.<br />
<br />
Read the rest here: <a href="https://www.linkedin.com/pulse/careers-aerobatics-tapani-otala">LinkedIn</a>, <a href="https://medium.com/@tjotala/on-careers-and-aerobatics-ea5f80b5e6#.gnq2ge7o4">Medium</a>.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-23013553264118938972008-03-27T21:06:00.000-07:002009-10-13T10:41:54.577-07:00Photoshop Express Launches!My team and I played a major part in making this new online service launch a reality. Go check it out at <a href="http://www.photoshop.com/express">http://www.photoshop.com/express</a>.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-71883773942976172142008-03-21T22:23:00.000-07:002009-10-13T10:42:28.496-07:00RoboCopy and Buffalo TeraStationRecently I set up a new recurring backup scheme from my PC’s main data drive to a 1TB Buffalo TeraStation II Pro NAS device but ran into a strange problem. I was planning to use <a href="http://en.wikipedia.org/wiki/Robocopy">RoboCopy</a> as an easy and cheap (read: free) solution to a recurring backup. However, I was baffled by RoboCopy’s insistence on copying some files despite options instructing it to only copy changed files. No matter what I did, RoboCopy would always re-copy some files.<br />
<br />
<a name='more'></a><br />
<br />
I would launch RoboCopy with the following command line options:<br />
<code>robocopy /job:Backup /log:Z:\Mirror-D.log D:\ Z:\Mirror-D</code><br />
The job file <code>Backup.rcj</code> in turn had several options:<br />
<pre><code>
::
:: Copy options :
::
/S :: copy Subdirectories, but not empty ones.
/E :: copy subdirectories, including Empty ones.
/COPY:DAT :: what to COPY (default is /COPY:DAT).
/PURGE :: delete dest files/dirs that no longer exist in source.
/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).
/A-:A :: remove the given Attributes from copied files.
::
:: Retry Options :
::
/R:5 :: number of Retries on failed copies: default 1 million.
/W:30 :: Wait time between retries: default is 30 seconds.
::
:: Logging Options :
::
/V :: produce Verbose output, showing skipped files.
/TS :: include source file Time Stamps in the output.
/FP :: include Full Pathname of files in the output.
/NDL :: No Directory List - don't log directory names.
/NP :: No Progress - don't display % copied.
/TEE :: output to console window, as well as the log file.
</code></pre>Now, if I were copying files from NTFS to FAT, I would expect some loss of detail due to the fact that the FAT filesystem stores far less file metadata (dates, times, attributes, access rights). However, in my case both the source drive (D:, 500GB RAID1) and the destination drive (Z:, 700GB RAID5) are formatted as NTFS and therefore the metadata would be copied faithfully. Or so I thought.<br />
After scratching my head for a while, I realized that the time stamps stored on the TeraStation were slightly off compared to the originals. Not much, but enough to throw RoboCopy off to think that the destination files were either older or newer than the source files. Turns out that whenever I copied a file over the TeraStation, the time stamps would get rounded up or down by up to a few seconds. This was difficult to notice at first since the standard <code>DIR</code> command output only shows hours and minutes in the timestamps.<br />
Fortunately it so happens that the authors of RoboCopy anticipated this problem, and provided a handy option to tell RoboCopy to accept up to 2-second difference in the timestamps for the files to qualify as “same”. Thus, simply adding the following option to the backup job file solved the problem:<br />
<pre><code>
/FFT :: assume FAT File Times (2-second granularity).
</code></pre>Now instead of copying 440GB of files every now and then, I was able to copy only the truly changed files. I further improved the backup job by adding two more options:<br />
<pre><code>
/MON:5 :: MONitor source; run again when more than n changes seen.
/MOT:30 :: MOnitor source; run again in m minutes Time, if changed.
</code></pre>The combination of these two options means that on my system, I can leave an instance of RoboCopy running at all times. What happens is that if any point in time I have more than 5 changes to files on the disk, RoboCopy wakes up and immediately mirrors those changes to the TeraStation. If on the other hand there are less than 5 changes, then RoboCopy wakes up after 30 minutes and again mirrors the changes to the TeraStation. That way the TeraStation is always at most only 30 minutes behind the current state on the primary data drive.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-45353526423728167622007-09-27T20:55:00.000-07:002009-10-13T10:50:23.812-07:00Photoshop Elements 6 shippedMy team and I played a part in making <a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200709/092407PREPSE.html%22">this software release</a> a reality. It’s great to see it hitting the stores and getting rave reviews.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com4tag:blogger.com,1999:blog-7580892630797023283.post-85121135200356690572007-01-29T06:36:00.000-08:002016-11-27T23:02:48.373-08:00Generating Histograms from Photo TagsOccasionally I like to visualize how many photos are assigned to a given set of tags in my photo collection. One common example of this is the <code>Ratings</code> tag which has 5 sub-tags ranging from <code>1-Bad</code> to <code>5-Stellar</code>. Another example is the <code>When</code> tag which has sub-tags for each year (and within each year, the months). This simple IMatch script automates the process of visualizing the histogram plot of the number of photos assigned to each sub-tag under a parent tag.<br />
<br />
The script performs 3 simple steps: <br />
<ol>
<li>Launches Excel</li>
<li>Generates a table of data that holds the name of the tag in the first column, and the count of photos assigned to that tag in the second column</li>
<li>Creates a new bar chart from the data table</li>
</ol>
<todownload>Download the <a href="https://drive.google.com/open?id=0B5EbDQkYTrsKQks0S1F6c3R2RU0">script</a>.</todownload><br />
<toinclude id="83/">
</toinclude>Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-18160177127317665782006-11-06T09:12:00.000-08:002016-11-27T23:10:51.718-08:00Clearing Haze from PhotosThese two Photoshop actions can be used to clear haze from digital photographs. Try each to see which one produces better results.<br />
<br />
<a name='more'></a><br />
The first action is based on ideas I gained from <a href="http://en.wikipedia.org/wiki/Dan_Margulis">Dan Margulis</a>' excellent book <i><a href="http://www.amazon.com/Photoshop-LAB-Color-Adventures-Colorspace/dp/0321356780/sr=11-1/qid=1162801117/ref=sr_11_1/002-0881131-9681653">Photoshop LAB Color: The Canyon Conundrum and Other Adventures in the Most Powerful Colorspace</a></i>. Basically, it converts the image into LAB color space and then applies curves similar to the ones in Chapter 3 of Dan's book.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/ZpKRJGip8N2-MmcIHBR1jpRSP0HYHe5jR931rYJmDsya5hT_exCmI5Asx92_4o-FCdmC8Q=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="147" src="https://2.bp.blogspot.com/ZpKRJGip8N2-MmcIHBR1jpRSP0HYHe5jR931rYJmDsya5hT_exCmI5Asx92_4o-FCdmC8Q=s400" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Clear Haze Curve</td></tr>
</tbody></table>
The second one is based on an idea from one of <a href="http://www.sweetlightstudios.com/">Robin Bourbounnais'</a> postings on the <a href="http://www.soocool.com/forum/">SooCool forum</a>. It simply creates a 75% opaque levels adjustment layer with blending mode set to soft light. Note that the levels adjustment isn't actually applying any levels adjustments; it's just a cheap way of making an adjustment layer. Nevertheless, you could tweak the effect further by playing with either the opacity or the levels adjustment.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/kY-vaHn_5jp9cx8fmhAK29in0Pf4Q1mmgJr4Anq5218oP2BPnmNHvUyWWYWUjM1s9Y9bLw=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="111" src="https://2.bp.blogspot.com/kY-vaHn_5jp9cx8fmhAK29in0Pf4Q1mmgJr4Anq5218oP2BPnmNHvUyWWYWUjM1s9Y9bLw=s400" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Soft Light Blend</td></tr>
</tbody></table>
Click <a href="https://drive.google.com/open?id=0B5EbDQkYTrsKWkhEOExVTTdHcFU">here</a> to download the Photoshop CS and CS2 action.<br />
<toinclude id="59/">
</toinclude>Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com1tag:blogger.com,1999:blog-7580892630797023283.post-58049334797091403712006-10-01T20:34:00.000-07:002016-11-27T23:13:56.634-08:00New Gig!As of September 29th, I no longer work at <a href="http://www.tivo.com/">TiVo</a>. I left after 6 years of developing TiVo DVR platforms and changing the way people watch TV. It was a lot of fun but in the end it was also time to look for a fresh new challenge that would allow me to stretch my experience in a different direction. <br />
<blockquote>
So Long, and Thanks for All the Fish</blockquote>
I will start working at <a href="http://www.adobe.com/">Adobe Systems</a> on October 9th as Sr. Manager of Engineering, Online Services and Photoshop Elements. I will be developing and launching several new online services related to digital imaging and digital asset management.Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0tag:blogger.com,1999:blog-7580892630797023283.post-73673978770394535112002-07-21T09:18:00.000-07:002016-11-27T22:21:34.847-08:00Deck TablesI got this project idea from a deck furniture catalog. The idea was to make 6 triangle shaped table segments that can be arranged as either a single hexagonal table, a long narrow table, or several individual tables. What's more, the tables can be stacked on top of each other for storage in the shape of a spiral tower. Think Rubik's Cube here.
<br />
<a name='more'></a>The tables were made of recycled redwood from our old backyard deck. They were treated with clear Minwax Wood Finish and three coats of clear satin Minwax Helmsman Spar Polyurethane.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/0wEQVuAgoNhdMJq-mlgS49-9HH7rfDzhy-lqjbWukd67Akg8r6ECZNtkFl61qqoD-mCO5A=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://4.bp.blogspot.com/0wEQVuAgoNhdMJq-mlgS49-9HH7rfDzhy-lqjbWukd67Akg8r6ECZNtkFl61qqoD-mCO5A=s400" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">End Table Configuration</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/YNSZmhrEZKzLextXebBwlsev8SvvU_UmtGbon2f6yDdvks9llz-sq2z-QDhVrJrJbrjh4Q=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://2.bp.blogspot.com/YNSZmhrEZKzLextXebBwlsev8SvvU_UmtGbon2f6yDdvks9llz-sq2z-QDhVrJrJbrjh4Q=s400" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Stacked Tables</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/zmjrD9ni4asUOFxGBiiOztWp4wWqfUL-ESOUTW7Mwn6oIq7dKYap2DcWxbdf1gIsHNPHmg=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://2.bp.blogspot.com/zmjrD9ni4asUOFxGBiiOztWp4wWqfUL-ESOUTW7Mwn6oIq7dKYap2DcWxbdf1gIsHNPHmg=s400" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Hexagonal Pattern #1</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img border="0" height="300" src="https://2.bp.blogspot.com/1oqbyjZrKML0DfXxoumf0ihcnvcCDEm7Fz3-Rz2-FdU_999RN2HRqWVVZIIvsr4_8EDivQ=s400" style="margin-left: auto; margin-right: auto;" width="400" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Hexagonal Pattern #2</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/1oqbyjZrKML0DfXxoumf0ihcnvcCDEm7Fz3-Rz2-FdU_999RN2HRqWVVZIIvsr4_8EDivQ=s400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/e4HYhRi0zHIFBf7Zgv0iAzo3CmucKjqrgQMIdW1jVyBF9R6FEM9-aylK0ZMgu8_KsXbpUw=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://1.bp.blogspot.com/e4HYhRi0zHIFBf7Zgv0iAzo3CmucKjqrgQMIdW1jVyBF9R6FEM9-aylK0ZMgu8_KsXbpUw=s400" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Hexagonal Configuration</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/ibfJ9TBbywFVlysMTdiM5xD_-gjjmx5ao6q3RoNKE7sWcwdWkervHMbLW5FnkdvLbUM4IA=s400" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://3.bp.blogspot.com/ibfJ9TBbywFVlysMTdiM5xD_-gjjmx5ao6q3RoNKE7sWcwdWkervHMbLW5FnkdvLbUM4IA=s400" width="300" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Straight Table Configuration</td></tr>
</tbody></table>
Tapani Otalahttp://www.blogger.com/profile/13040350955779333139noreply@blogger.com0