<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7972214731683804743</id><updated>2012-02-27T11:50:32.404-05:00</updated><category term='Cars'/><category term='User Interface'/><category term='GWT'/><category term='Architecture'/><category term='Software Engineering'/><category term='Performance'/><category term='Source Control'/><category term='Machine Learning'/><category term='Thoughts'/><category term='Math'/><category term='Windows'/><category term='Security'/><category term='RT'/><category term='Healthcare'/><category term='Concurrency'/><category term='Testing'/><category term='Web Development'/><category term='Community'/><category term='Medical Imaging'/><category term='Data Visualization'/><category term='AI'/><category term='Interviews'/><category term='Lies'/><category term='Karos Health'/><category term='tv'/><category term='J3WAO'/><category term='Android'/><category term='Open Source Software'/><category term='Computer Science'/><category term='Project Management'/><category term='exotic pets'/><category term='Test Driven Development'/><category term='REST'/><category term='AIR'/><category term='Java'/><category term='Algorithms'/><category term='SOAP'/><category term='REAP'/><category term='Life'/><category term='Programming Languages'/><category term='Genetic Algorithms'/><category term='Agile'/><category term='Functional Programming'/><category term='DB'/><category term='Programming Competitions'/><category term='Smartphones'/><category term='Object Oriented Programming'/><category term='Education'/><category term='OS'/><title type='text'>- Developers Anonymous -</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default?start-index=101&amp;max-results=100'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>133</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1112610926224422009</id><published>2012-02-27T01:20:00.001-05:00</published><updated>2012-02-27T01:21:31.467-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cars'/><title type='text'>Auto Show!</title><content type='html'>I went to The Auto Show this reading week with a friend. We decided to make some categories and choose the best cars for them. Here were my choices:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Best&amp;nbsp;Reasonably&amp;nbsp;Priced Car&lt;/b&gt;&lt;br /&gt;Our&amp;nbsp;definition&amp;nbsp;of reasonably priced car is &amp;lt; $30 000&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-c8LW7SmeRhQ/T0saOk3trnI/AAAAAAAAAEk/H7uz8jyB0_w/s1600/IMAG0162.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-c8LW7SmeRhQ/T0saOk3trnI/AAAAAAAAAEk/H7uz8jyB0_w/s320/IMAG0162.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Kia Optima. Starts at $23 000, and you get tons of car for that money. You can get it pretty much fully loaded for around $35 000, and for that you get a navigation screen and a turbo with ~270hp. The interior look great as well. I think it's fantastic value considering all the car you get. It also helps that it's fantastic looking on the outside. Close runner up was the&amp;nbsp;Hyundai&amp;nbsp;Sonata, but you get more stuff with the Kia, and the Sonata feels somewhat "cheaper".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Best&amp;nbsp;Reasonably&amp;nbsp;Priced Roadster&lt;/b&gt;&lt;br /&gt;Our definition of&amp;nbsp;reasonably&amp;nbsp;priced roadster was &amp;lt; $50 000&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.blogcdn.com/www.autoblog.com/media/2009/09/370zroadsterfd_01_opt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://www.blogcdn.com/www.autoblog.com/media/2009/09/370zroadsterfd_01_opt.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The Nissan 370Z. Now I had a really hard time with this. I can never seem to find a roadster that I think looks good. The 370 isn't the ugliest car in the world, but it's not &amp;nbsp;exactly pretty. However, it looks good on the inside, and it's pretty sporty, so it was my choice out of the other roadsters at the show. There really aren't a lot of good choices under $50 000. The most notable competition was the MX-5, but that didn't feel as fun. The Mitsubishi Eclipse&amp;nbsp;convertible&amp;nbsp;looks much better, but they didn't have any at the show. It's also much better value, so in real life I would probably prefer that.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;Best Car&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This is basically "If you could drive any car out of the Auto Show, which would it be". Not&amp;nbsp;surprisingly, my choice&amp;nbsp;coincides&amp;nbsp;with &lt;a href="http://oleksiderkatch.blogspot.com/2012/02/2-free-car-challenge.html"&gt;this&lt;/a&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4h0QJpH_XDQ/T0sdX2B5rKI/AAAAAAAAAEs/XZFOWICPeBo/s1600/IMAG0159.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://3.bp.blogspot.com/-4h0QJpH_XDQ/T0sdX2B5rKI/AAAAAAAAAEs/XZFOWICPeBo/s320/IMAG0159.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Aston Martin Rapide. Even better looking in person. It was the second best looking car in the show (after the better&amp;nbsp;proportioned&amp;nbsp;Virage)&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Other notable cars: The entire new Ford lineup. They redesigned most of their line up, and they all look fantastic. In particular, the new Ford Fusion:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-e23pyro7bjc/T0selBU6XAI/AAAAAAAAAE0/6YjyChC2FrQ/s1600/IMAG0164.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-e23pyro7bjc/T0selBU6XAI/AAAAAAAAAE0/6YjyChC2FrQ/s320/IMAG0164.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I would say that the new Ford Fusion is the best looking&amp;nbsp;reasonably&amp;nbsp;price car you can buy today. Unfortunately, they didn't have pricing information on it yet, but if it's anything like the old one, it'll start at $19 000 (well&amp;nbsp;equipped&amp;nbsp;for ~30K)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;All in all, the auto show was great fun as usual. Now back to real life (and school. boo).&amp;nbsp;Remember&amp;nbsp;the time I&amp;nbsp;blogged&amp;nbsp;about programming. Yup...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1112610926224422009?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1112610926224422009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2012/02/auto-show.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1112610926224422009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1112610926224422009'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2012/02/auto-show.html' title='Auto Show!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-c8LW7SmeRhQ/T0saOk3trnI/AAAAAAAAAEk/H7uz8jyB0_w/s72-c/IMAG0162.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8306719815727392177</id><published>2012-02-14T00:39:00.000-05:00</published><updated>2012-02-14T00:39:06.120-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cars'/><title type='text'>2 Free Car Challenge</title><content type='html'>So here's the game. Someone will give you any two cars of your choice, under the condition that you can't sell them for money. What two cars would you get?&lt;br /&gt;&lt;br /&gt;The first car is a no brainer for me:&amp;nbsp;&lt;a href="http://www.astonmartin.com/cars/rapide"&gt;Aston Martin Rapide&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.dieselstation.com/pics/Aston-Martin-Rapide-Concept-car-wallpapers.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://www.dieselstation.com/pics/Aston-Martin-Rapide-Concept-car-wallpapers.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;This is easily one of the most aesthetically pleasing cars I've ever seen, and it has 4 doors so it's practical. About as practical as a V12, 470bhp car can be. You can drive the kids to school in it! When you're not comfortably driving back and forth to work, you can do 0-100km/h in 5.2 seconds. Not the fastest thing in the world, but good enough. Astons were never really fast (especially for their price), but they look fantastic and are probably fast enough if you are racing your friends home from a&amp;nbsp;restaurant to reclaim the good parking space.&lt;br /&gt;&lt;br /&gt;So that's one down, what about the second car? Well I have something somewhat&amp;nbsp;reasonable&amp;nbsp;for day-to-day driving, so I thought about something really fun and a little&amp;nbsp;outrageous. A sporty roadster comes to mind. Unfortunately I had a problem choosing a roadster that I actually liked.&amp;nbsp;Originally&amp;nbsp;I thought about an SLK, but that seemed too boring. Then there's the Aston Martin Vantage Roadster and the Jaguar XKR Convertable. Both seem too&amp;nbsp;similar&amp;nbsp;to the Rapide, and a little too tame. I wanted something more&amp;nbsp;ridiculous, but not Aventator&amp;nbsp;ridiculous.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://www.audi.ca/ca/brand/en/models/2011_Audi_R8_Spyder.html"&gt;R8 Spyder&lt;/a&gt;:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/e/e5/R8_Spyder.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://upload.wikimedia.org/wikipedia/commons/e/e5/R8_Spyder.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;While it's not as beautiful as the normal R8, it still looks fantastic in my books. It certainly seems fun, and it's&amp;nbsp;definitely&amp;nbsp;a little outrageous. It has a V10 that produces 525bhp, and it can do 0-100km/h in 4.1 seconds. Seems like almost the perfect track car, and it's ideal for that European road trip I'm planning (It's less suited for the Colombian one).&lt;br /&gt;&lt;br /&gt;I think this is better (though probably less practical) than &lt;a href="http://surrealcubicle.blogspot.com/2012/02/solved.html"&gt;a friend&lt;/a&gt;, who picked some of the ugliest cars I've seen. &lt;a href="http://porschebahn.files.wordpress.com/2009/11/100_5434.jpg"&gt;D=&lt;/a&gt; and &lt;a href="http://image2.paultan.org/image/m3-april-1-500x222.jpg"&gt;D=&lt;/a&gt;. What would you choose?&lt;br /&gt;&lt;br /&gt;I spent too much time one this, and not enough time studying for Databases. Oh well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8306719815727392177?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8306719815727392177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2012/02/2-free-car-challenge.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8306719815727392177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8306719815727392177'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2012/02/2-free-car-challenge.html' title='2 Free Car Challenge'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7994012711443153720</id><published>2012-01-03T14:23:00.001-05:00</published><updated>2012-01-03T14:23:09.468-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='tv'/><title type='text'>New Semester</title><content type='html'>I just finished my first day of classes with Security and DB. Both sound pretty good, but security should be particularly interesting, educational, and useful. I'm really looking forward to it. Security has course readings, which is somewhat unusual for CS classes, but at least the material is interesting (and very relevant). Here's an example of the first one we need to read: &lt;a href="http://insecure.org/stf/smashstack.html"&gt;Smashing The Stack&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;DB is apparently pretty much a course on making an&amp;nbsp;optimizing&amp;nbsp;compiler, which also sounds pretty promising. :)&lt;br /&gt;&lt;br /&gt;Also, I really need to watch the new Sherlock episode soon. If you haven't watched the &lt;a href="http://en.wikipedia.org/wiki/Sherlock_(TV_series)"&gt;BBC Sherlock mini-series&lt;/a&gt;&amp;nbsp;yet, I very highly recommend it!&lt;br /&gt;&lt;br /&gt;All in all, this is shaping up to be a great term. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7994012711443153720?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7994012711443153720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2012/01/new-semester.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7994012711443153720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7994012711443153720'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2012/01/new-semester.html' title='New Semester'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-215930910476607849</id><published>2011-12-29T12:09:00.000-05:00</published><updated>2011-12-29T12:09:06.528-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exotic pets'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Little Tiger Purchase</title><content type='html'>Dani recently purchased a &lt;a href="http://en.wikipedia.org/wiki/Cat"&gt;little tiger&lt;/a&gt;. She's 6 months old and is named Juno. Pretty much the cutest thing ever. I'm looking forward to living with a pet. :) She's very affectionate and likes exploring our apartment. I promise I won't turn into one of those crazy people that only talks (or blogs) about their pets. Probably.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/392154_10151099254975354_654650353_22313462_1515548390_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/392154_10151099254975354_654650353_22313462_1515548390_n.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/404841_10151099255890354_654650353_22313468_158532221_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/404841_10151099255890354_654650353_22313468_158532221_n.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In other news, I am finally watching the original Doctor Who episodes. Turns out I over estimated video quality in 1963. It's pretty much just static. :P The episodes themselves aren't so hot either, but I think they'll get much better soon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-215930910476607849?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/215930910476607849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/12/little-tiger-purchase.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/215930910476607849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/215930910476607849'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/12/little-tiger-purchase.html' title='Little Tiger Purchase'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2688190195316359661</id><published>2011-12-24T22:19:00.003-05:00</published><updated>2011-12-24T22:20:50.190-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><title type='text'>A Term In Review</title><content type='html'>After a 4 month hiatus, I think it's time to start blogging again. I've had a great term working for &lt;a href="http://www.rlsolutions.com/"&gt;RL Solutions&lt;/a&gt;, a company that makes risk and feedback&amp;nbsp;management software&amp;nbsp;for hospitals. It is inevitable that healthcare practitioners will make some mistakes. These incidents can range from very serious(think: adverse drug reactions), or very mild (patient left without checking out). Several studies report around 1 000 000 injuries a year, with anywhere from 45 000 to 90 000 deaths from medical errors (&lt;a href="http://en.wikipedia.org/wiki/Patient_safety#To_Err_is_Human"&gt;more info here&lt;/a&gt;&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Medical_error#Impact"&gt;here&lt;/a&gt;). The idea is that health care institutions use software to log their errors, and run reports to learn and find ways to improve patient safety. For example, one study found that there were roughly 10% more medical incidents in the month of July. This so-called &lt;a href="http://en.wikipedia.org/wiki/July_effect"&gt;July effect&lt;/a&gt;&amp;nbsp;seemed to be caused by new&amp;nbsp;hospital&amp;nbsp;staff starting in July.&lt;br /&gt;&lt;br /&gt;The specific stuff I worked on was several .NET applications that take this incident information in our system, convert them to something similar to the &lt;a href="http://en.wikipedia.org/wiki/Health_Level_7#HL7_standards"&gt;HL7 CDA&lt;/a&gt;, and then send them securely to &lt;a href="http://en.wikipedia.org/wiki/Patient_safety_organization"&gt;Patient Safety Organizations&lt;/a&gt;(PSOs). These PSOs then do some more powerful data mining and&amp;nbsp;analysis&amp;nbsp;on this data and give more detailed reports to the senders. There's also some more boring legal reasons why hospitals might want to send data to PSOs, but I won't talk about them now (Short story: incidents reported to PSOs can't be used against the hospitals in law).&lt;br /&gt;&lt;br /&gt;This term, I had the&amp;nbsp;privilege&amp;nbsp;of reading through more massive spec documents that make little sense. I really wish they were better written. :/ Another new thing this term was using &lt;a href="http://www.w3schools.com/xsl/"&gt;XSLT&lt;/a&gt; to do data conversions, and practice writing very thorough automated tests. The term itself was really fun, since this is the first time I got to work with a bunch of co-ops in a "co-op pen". The&amp;nbsp;environment&amp;nbsp;is also mega relaxed and fun, with PMs handing out beers once a week for no reason during work. :) There was also a &lt;a href="http://www.davidstea.com/"&gt;David's Tea&lt;/a&gt;&amp;nbsp;close by where everyone got to know us very well. :P All in all, it was a very fun and educational term.&lt;br /&gt;&lt;br /&gt;Other notable things this term include me finishing Doctor Who. It's easily become my favorite show, and I'm disappointed that it took me this long to watch it. I'm currently downloading all the old episodes to see how&amp;nbsp;comparatively&amp;nbsp;awful they are. :P I also finally watched all of Arrested Development. I should have checked out that show much earlier too.&lt;br /&gt;&lt;br /&gt;Next term should also be quite busy. I have 4 courses this semester (Testing, Requirements, Security :) , and DB Implementations), as well as part time development work for &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt; and maybe even&amp;nbsp;&lt;a href="http://uwreap.com/"&gt;REAP&lt;/a&gt; too. Hopefully I'm not too busy with all that. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2688190195316359661?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2688190195316359661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/12/term-in-review.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2688190195316359661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2688190195316359661'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/12/term-in-review.html' title='A Term In Review'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6538439324848182418</id><published>2011-09-12T21:18:00.000-04:00</published><updated>2011-09-12T21:18:24.197-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>First Day</title><content type='html'>It's been a while between updates. Frosh week kept me very busy, but mostly I've been lazy. I'll be better this semester, promise.&lt;br /&gt;&lt;br /&gt;Today was my first day at &lt;a href="http://www.rlsolutions.com/"&gt;RL Solutions&lt;/a&gt;. It was quite exciting. Basically the company makes a suite of software that prevents medical errors. I am still learning how everything works.&lt;br /&gt;&lt;br /&gt;I am a little surprised how complicated some of the features are. For example, if a patient has some accident, say they fall inside the hospital for whatever reason, the hospital staff fill out a form. The form is very long and requires a lot of information (who, when, how, what happened, what happened after, who did you contact, etc...). It takes like 20 minutes to go through, and that doesn't include any insurance information (which is&amp;nbsp;notoriously more&amp;nbsp;complicated). This makes UI design an important priority for the software, since there is a lot of room for speeding up this data entry. Should be an interesting project. In general, the software's UI is pretty well built. It's a pleasure to use. :)&lt;br /&gt;&lt;br /&gt;Development will be web-based .NET, something I've never done, so I'm excited to learn more about it.&lt;br /&gt;&lt;br /&gt;My coworkers are all very nice. It should be a fun semester. There is a pool table. I look forward to using it. :P&lt;br /&gt;&lt;br /&gt;Should be another great semester. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6538439324848182418?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6538439324848182418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/09/first-day.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6538439324848182418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6538439324848182418'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/09/first-day.html' title='First Day'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3838933802262053432</id><published>2011-08-19T20:17:00.001-04:00</published><updated>2011-08-19T20:26:29.851-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Visualization'/><title type='text'>American Health Care Cost Inforgraphs</title><content type='html'>I found a great info graph talking about healthcare costs in America. Check it out:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.medicalbillingandcoding.org/medical-costs-1"&gt;&lt;img alt="Why Your Stitches Cost $1,500 - Part One" border="0" src="http://images.medicalbillingandcoding.org.s3.amazonaws.com/Medical-Costs-1.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;Via: &lt;a href="http://www.medicalbillingandcoding.org/"&gt;Medical Billing And Coding&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.medicalbillingandcoding.org/medicals-costs-2"&gt;&lt;img alt="Why Your Stitches Cost $1,500 - Part Two" border="0" src="http://images.medicalbillingandcoding.org.s3.amazonaws.com/Medical-Costs-2.jpg" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;Via: &lt;a href="http://www.medicalbillingandcoding.org/"&gt;Medical Billing And Coding&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I thought the expensive outpatient care reason was odd. From what I&amp;nbsp;understand, outpatient care should be less expensive than inpatient care. I still have a lot to learn about the healthcare fields, I guess. Or maybe America is derping hard.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3838933802262053432?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3838933802262053432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/08/american-health-care-cost-inforgraphs.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3838933802262053432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3838933802262053432'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/08/american-health-care-cost-inforgraphs.html' title='American Health Care Cost Inforgraphs'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7746866287088978769</id><published>2011-08-18T18:33:00.000-04:00</published><updated>2011-08-18T18:33:26.587-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Machine Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Education'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>Stanford CS courses!</title><content type='html'>&lt;a href="http://www.stanford.edu/"&gt;Stanford University&lt;/a&gt; is offering a few courses next semester for free online. Here are the classes:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.ml-class.com/"&gt;Machine Learning&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.ai-class.com/"&gt;Artificial Intelligence&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.db-class.com/"&gt;Databases&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've enrolled in the Machine Learning and AI courses for this Fall. Classes start on October 10th. I'm pretty excited. The courses will include lectures, assignments, and evaluations, just like any other course. It sounds very promising. I'd like to see how Stanford's education compares to Waterloo's. I will be taking AI in my final semester at Waterloo, so I'll be able to compare those two classes directly. Although I might not want to take Waterloo's AI course if I'm going to learn the material from this online course... I guess we'll see. You should consider registering in some of these courses if you aren't too busy next Fall. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In other news, I finished exams well and I'm enjoying a few weeks of relaxing before Frosh Week hits. After that, I start work at &lt;a href="http://www.rlsolutions.com/"&gt;RL Solutions&lt;/a&gt; on September 12th. I'm also excited to start working there, as well as go back to the Microsoft development stack, that I love so much. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7746866287088978769?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7746866287088978769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/08/stanford-cs-courses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7746866287088978769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7746866287088978769'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/08/stanford-cs-courses.html' title='Stanford CS courses!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7462499929084087056</id><published>2011-08-08T18:05:00.001-04:00</published><updated>2011-08-08T18:41:51.195-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Software Engineering All-Star Topics: Redundancy</title><content type='html'>There are a few very&amp;nbsp;prominent&amp;nbsp;topics in all fields. I think redundancy is one of the biggest ones in the field of software engineering.&amp;nbsp;Redundancy in the context of software means having duplicated services or data.Why would you want to do this? Well there are many reasons.&lt;br /&gt;&lt;br /&gt;First, redundancy is a very powerful way of creating fault tolerant applications. If there are two identical copies of some services, it's okay if one temporarily goes down. While this may seem like a rather&amp;nbsp;inelegant&amp;nbsp;(and expensive) solution, it works&amp;nbsp;extraordinarily well. Scared about your web service going down? Make two of them. Or N of them. Worried about data corruption? Replicate it on separate&amp;nbsp;hard drives (on potentially&amp;nbsp;separate&amp;nbsp;machines).&lt;br /&gt;&lt;br /&gt;Got scalability&amp;nbsp;problems? The solution might be to use&amp;nbsp;redundancy&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;load balancing. This is commonly done to&amp;nbsp;implement&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Scalability#Scale_horizontally_.28scale_out.29"&gt;horizontal scaling&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Redundancy&amp;nbsp;can also be used to solve a huge subset of performance problems through caching. Caching is just a form of data&amp;nbsp;redundancy. In practice, caching is one of the biggest reasons computers are so fast today. The internet has many great examples of this. Your browser caches web pages to&amp;nbsp;achieve&amp;nbsp;huge performance boosts. Want to see the difference? Check out &lt;a href="http://www.stumbleupon.com/home/"&gt;StumbleUpon&lt;/a&gt;. Start stumbling and notice how slow it is compared to refreshing your Facebook page. That's because the data you are accessing needs to be accessed from a web server, instead of (mostly) from your browser's local cache. DNS records are also cached by many machines on their way to you. Without this caching, loading every single page on the internet would take ~200ms longer to load, simply because DNS would have to redo all name resolution queries every time. File caching on your OS is another good example of this. Without system file caching, your OS would also run&amp;nbsp;noticeably&amp;nbsp;(and painfully) slower. Caching is responsible for some of the biggest performance leaps we've seen in computers. Interestingly enough, caching is usually implemented through &lt;a href="http://en.wikipedia.org/wiki/Hash_table"&gt;hash tables&lt;/a&gt;, which is a computer science all-star topic.&lt;br /&gt;&lt;br /&gt;This practice is not unique to software engineering. Redundancy has been used in most other engineering&amp;nbsp;disciplines&amp;nbsp;to establish fault tolerance for years. For example, Boeing 747s are&amp;nbsp;equipped&amp;nbsp;with 4 engines, but are designed to run with just 3.&lt;br /&gt;&lt;br /&gt;Guess something useful came out of that Distributed Systems class after all. Want exam to be over though. :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7462499929084087056?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7462499929084087056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/08/software-engineering-all-star-topics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7462499929084087056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7462499929084087056'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/08/software-engineering-all-star-topics.html' title='Software Engineering All-Star Topics: Redundancy'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4277806871264184052</id><published>2011-07-31T16:36:00.000-04:00</published><updated>2011-07-31T16:36:24.725-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>How to write unmaintainable code</title><content type='html'>Here's a fun read on &lt;a href="http://freeworld.thc.org/root/phun/unmaintain.html"&gt;how to write unmaintainability&amp;nbsp;code&lt;/a&gt;. For job security, of course. :)&lt;br /&gt;This is probably the best thing that came out of my Architecture class. &amp;gt;_&amp;lt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4277806871264184052?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4277806871264184052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/how-to-write-unmaintainable-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4277806871264184052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4277806871264184052'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/how-to-write-unmaintainable-code.html' title='How to write unmaintainable code'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5449160065593091294</id><published>2011-07-27T15:32:00.000-04:00</published><updated>2011-07-27T15:32:51.968-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><title type='text'>REAP Review</title><content type='html'>The client presentation for &lt;a href="http://uwreap.com/"&gt;REAP&lt;/a&gt; were yesterday. The various teams presented their ideas to the REAP exec team, as well as to some stakeholders that might be using the products of our research. All the presentations that I saw were very interesting. I'm looking forward to seeing what that subsequent REAP teams do with the progress made so far.&lt;br /&gt;&lt;br /&gt;Our presentation on the &lt;a href="http://kommerz.at/en/Produkte/MRI.html"&gt;Mixed Reality Interface&lt;/a&gt;&amp;nbsp;(MRI)&amp;nbsp;went fairly smoothly(Note to self: avoid making last minute demo changes. &amp;gt;_&amp;lt;). We talked about our plans of using the MRI table to create virtual&amp;nbsp;museum&amp;nbsp;exhibits&amp;nbsp;to enhance user go-ers experiences in&amp;nbsp;museums. Because of the&amp;nbsp;playful and tactile nature of the table, kids would be quite attracted to this sort of&amp;nbsp;exhibit. We are currently working with the Earth Sciences&amp;nbsp;museum&amp;nbsp;on campus to create a mining exhibit as a proof of concept. The&amp;nbsp;museum&amp;nbsp;is currently converting a hallway in the building to be a mini mining exhibit. We hope to be able to get a virtually&amp;nbsp;enhanced&amp;nbsp;exhibit to go along with the physical one&amp;nbsp;by around the end of October. One of the subsequent REAP teams will be putting in a lot of game design effort into making this project happen.&lt;br /&gt;&lt;br /&gt;After the presentations, we all went to celebrate with lunch at the University Club. I always wondered what was in that building, and now I know. :P Weee!&lt;br /&gt;&lt;br /&gt;In general, REAP was a great&amp;nbsp;opportunity. We got to meet some great people in the digital projection industry, as well as work with some really bright people.&amp;nbsp;We also got a chance to meet with people from all sorts of industries, like museum curators and home designers.&amp;nbsp;The REAP members also got to play with all sorts of cool technologies. Other than the MRI table, we got to play with &lt;a href="http://www.christiedigital.com/en-us/digital-signage/pages/default.aspx"&gt;Microtiles&lt;/a&gt;, &lt;a href="http://unity3d.com/"&gt;Unity&lt;/a&gt;, and&amp;nbsp;&lt;a href="http://sketchup.google.com/"&gt;Sketch Up&lt;/a&gt;, all while getting paid. &amp;nbsp;To top things off, we also got a lot of training throughout the semester, including a few sessions on Agile project management. :) As far as part time jobs go, this was a very rewarding one. :)&lt;br /&gt;&lt;br /&gt;If' you're interested in joining REAP in a future term, you can &lt;a href="http://uwreap.com/"&gt;apply on the REAP site&lt;/a&gt;, but I should mention that hiring for the September term is finished. They still might need people for on-demand work (especially people with game design or game development background). If you are interested in one of those positions, you can email REAP or myself. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5449160065593091294?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5449160065593091294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/reap-review.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5449160065593091294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5449160065593091294'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/reap-review.html' title='REAP Review'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-9046049696746673446</id><published>2011-07-20T12:07:00.001-04:00</published><updated>2011-07-22T16:54:13.772-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cars'/><title type='text'>Car Futures</title><content type='html'>The most productive thing I've done this summer is plan out my car owning future.&lt;br /&gt;&lt;br /&gt;Currently, 1999 Chrysler Intrepid, Black (value &amp;lt; $100 at this point)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.classycars.org/Dodge/DodgeIntrepid.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="174" src="http://www.classycars.org/Dodge/DodgeIntrepid.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sadly, this car is almost dead. Thankfully, my parents are replacing their red 1999 Chrysler Intrepid soon, and are planning to give it to me. :) It has about half the kilometers and is in much better shape (value ~$500)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://redriderbob.homestead.com/files/2002_Dodge_Intrepid_RT_in_Flame_Red.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" src="http://redriderbob.homestead.com/files/2002_Dodge_Intrepid_RT_in_Flame_Red.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After I drive this car to death, it'll be time for my first &lt;i&gt;real &lt;/i&gt;car purchase.&lt;br /&gt;Jaguar XF (value ~$60 000)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.speedlux.com/wp-content/uploads/2010/11/Jaguar-XF-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://www.speedlux.com/wp-content/uploads/2010/11/Jaguar-XF-3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think I will feel obligated to to take up golf as a hobby at this point.&lt;br /&gt;Then I'll upgrade to a Jaguar XK (value ~$100 000)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tVHLQWiSmoQ/Tb8UX9tvYWI/AAAAAAAAAj0/0wIUHilSEuA/s1600/2011-Jaguar-XKR2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-tVHLQWiSmoQ/Tb8UX9tvYWI/AAAAAAAAAj0/0wIUHilSEuA/s320/2011-Jaguar-XKR2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The red brake discs pictured above will be replaced (and burned &amp;gt;_&amp;lt;).&lt;br /&gt;Finally, the holy grail of my car&amp;nbsp;journey, Aston Martin DB9 (~ $200 000)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://theapeonline.com/wp-content/uploads/2011/04/Aston-Martin-Db9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://theapeonline.com/wp-content/uploads/2011/04/Aston-Martin-Db9.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yay!&lt;br /&gt;&lt;br /&gt;This might be a little ambitious. I feel like I might need a reasonably priced sedan between the Red intrepid and the XF. Not sure what that might be yet. :/&lt;br /&gt;&lt;br /&gt;This list will also probably change very soon. Specifically, the next time I watch Top Gear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-9046049696746673446?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/9046049696746673446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/car-futures.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/9046049696746673446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/9046049696746673446'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/car-futures.html' title='Car Futures'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-tVHLQWiSmoQ/Tb8UX9tvYWI/AAAAAAAAAj0/0wIUHilSEuA/s72-c/2011-Jaguar-XKR2.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2052521158258269577</id><published>2011-07-11T14:18:00.000-04:00</published><updated>2011-07-11T14:18:47.720-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><title type='text'>Spring Terms and Unity</title><content type='html'>With two weeks of classes left, I've decided that Spring school terms are a bad idea. I don't feel very academic during Spring terms. All my other Spring terms have be work terms, and I really enjoyed those, but school terms are different. I have to constantly be thinking about what I have to do for my other classes. I'm just not in the mood for it. I just want to sleep in and watch TV (currently, Top Gear and Dr. Who). That doesn't help that 8:30am class. :P Thankfully, I have only three courses this semester, one of which is very interesting. Unfortunately, the others are pretty disappointing. One more assignment rush, then exams, then a few weeks of real summer before I start work in the Fall. Thankfully, this is my last Spring school term.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On another note, I got a chance to play with &lt;a href="http://unity3d.com/"&gt;Unity&lt;/a&gt;&amp;nbsp;over the weekend. Unity is a 3D game engine with a powerful editor that minimizes the amount of code you need to write to get something to work. We will be using Unity during the final few weeks of REAP, as we try to create a demo of a&amp;nbsp;museum&amp;nbsp;exhibit on mining. I'm really glad that I got a chance to get paid to learn Unity. :P&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My first impressions is that Unity is very powerful and simple to use. You can get a remarkable amount done without knowing how to program. Scripting is very important, but a lot of it is already done for you. For example, you can just drag-and-drop a collider mesh onto an object, and it instantly inherits collision physics. It's a very powerful tool. I'm looking forward to using it in the next few weeks. :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2052521158258269577?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2052521158258269577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/spring-terms-and-unity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2052521158258269577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2052521158258269577'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/spring-terms-and-unity.html' title='Spring Terms and Unity'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1357416609676528942</id><published>2011-07-07T22:49:00.000-04:00</published><updated>2011-07-07T22:49:50.007-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>The Human Aspect Of Software Engineering</title><content type='html'>As a computer scientist/software engineer, it's easy to forget about the human&amp;nbsp;aspect&amp;nbsp;of what we do. We are often so immersed in very&amp;nbsp;technical&amp;nbsp;parts of the software&amp;nbsp;that we forget that everything we do is for a human. If we don't keep that human in mind, the product really suffers. No matter how&amp;nbsp;technologically&amp;nbsp;innovative&amp;nbsp;a piece of software might be, if there isn't a real, useful human connection, the software will ultimately fail. In that sense, considering the human&amp;nbsp;aspect&amp;nbsp;is the most important aspect to consider when writing software.&lt;br /&gt;&lt;br /&gt;Modern development treads seem to be making steps to consider end users more during the development process. For example, agile development stresses getting early involvement from users, to ensure that the human&amp;nbsp;aspect&amp;nbsp;of software is always addressed. They also encourage frequent updates and demos to customers to ensure that they are always satisfied by the product.&lt;br /&gt;&lt;br /&gt;I suspect that a lot of usability issues stem from not considering the squishy thing between the chair and monitor. Most of user interface work seems to be figuring out the best way to create that connection between the cool techy thing the developers did and the human using it.&lt;br /&gt;&lt;br /&gt;It's easy to forget that most people are not very technologically savvy. You'd be surprised at the amount of people who don't know that you can right click. I think it's really cool that&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Interpolation_search"&gt;Interpolation&amp;nbsp;search&lt;/a&gt;&amp;nbsp;is O(log(log(n)).. Most people, however, don't care about this at all. They do care about reducing their search time in your software though.&lt;br /&gt;&lt;br /&gt;It's important to always keep this human aspect of software engineering in the back of your head at all times. It can really improve the software you produce.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1357416609676528942?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1357416609676528942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/human-aspect-of-software-engineering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1357416609676528942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1357416609676528942'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/human-aspect-of-software-engineering.html' title='The Human Aspect Of Software Engineering'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7147412306611446951</id><published>2011-07-05T20:27:00.001-04:00</published><updated>2011-07-16T03:56:11.300-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Character Encoding Fun!</title><content type='html'>Let's talk about character encoding. This seems to be a common blank area of knowledge for a lot of developers.&lt;br /&gt;&lt;br /&gt;Joel Spolsky found this to be true, so he wrote this great article about &lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;character&amp;nbsp;encoding&amp;nbsp;and Unicode&lt;/a&gt;. I really recommend that you give it a read. It's a little old (2003), but still completely&amp;nbsp;relevant.&lt;br /&gt;&lt;br /&gt;If you are feeling too lazy to read his summary (I blame summer), you can read my even shorter summary.&lt;br /&gt;&lt;br /&gt;1) There is no such thing as "plain text strings". You should not assume any given string is in ASCII. You, in fact, have no idea what the string means until you know how it's encoded.&lt;br /&gt;&lt;br /&gt;2) &lt;a href="http://en.wikipedia.org/wiki/Unicode"&gt;Unicode&lt;/a&gt; is a character set that to hopes include characters from almost all languages. Unicode is not an encoding though. Older character sets, like &lt;a href="http://en.wikipedia.org/wiki/ASCII"&gt;ASCII&lt;/a&gt;, mapped characters ('A') to numbers (65), which got encoded as the binary representation of that number. Unicode maps characters to something called &lt;a href="http://en.wikipedia.org/wiki/Code_point"&gt;code points&lt;/a&gt;. These code points look something like U+0065. These code points are then encoded using some encoding system. There are many ways to do this encoding, but perhaps the most common is &lt;a href="http://en.wikipedia.org/wiki/UTF-8"&gt;UTF-8&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3) Unicode is not always encoded as 2 bytes. &lt;a href="http://en.wikipedia.org/wiki/UTF-16/UCS-2"&gt;UTF-16&lt;/a&gt; is a specific encoding that encodes Unicode in (at most) 2 bytes. This is not true in general. For example, UTF-8 can be up to 4-bytes long, and &lt;a href="http://en.wikipedia.org/wiki/UTF-32/UCS-4"&gt;UTF-32&lt;/a&gt; is always 4-bytes.&lt;br /&gt;&lt;br /&gt;4) UTF-8 is backwards compatible with ASCII for the first 8 bits. This means that UTF-8 is backwards compatible with ASCII.&lt;br /&gt;&lt;br /&gt;5) Code points can be encoded any many ways. You can even encode Unicode code points using old-school ASCII encoding. What happens to code points that ASCII encoding doesn't define? They show up as ?. If you've ever seen international data that appears as ????????, it means that the encoding they are using doesn't support those code points.&lt;br /&gt;&lt;br /&gt;I hope this fills in some of these character set and encoding knowledge holes. :) Now I should probably do one of those assignments I have due this week (&amp;gt;_&amp;lt;). School terms in the summer suck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7147412306611446951?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7147412306611446951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/character-encoding-fun.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7147412306611446951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7147412306611446951'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/character-encoding-fun.html' title='Character Encoding Fun!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8291493866687250478</id><published>2011-07-04T12:44:00.002-04:00</published><updated>2011-07-04T13:20:29.023-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Google+ (and -)</title><content type='html'>Google's attempt at the social market, Google+, came out the other day. It's an interesting application.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first thing that strikes me is the UI. I think Google+ has a fantastic user interface. It's simple, clear, and easy to learn. One thing that I really like is Google's attention to details in their user interfaces. Whenever you click "+1", there's a little animation of the number rolling up. If you delete a "circle", there's a little animation of it rolling away off the screen. These little things contribute to a great user interface.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Compared to the Facebook UI, Google+'s UI is a breath of fresh air. However, Google+ only has a tiny (really tiny) subset of Facebook's features. This probably contributes heavily to Google+'s simple UI. I suspect that when (if?) Google+ gets all the features that Facebook has, the user interface will become a lot more cluttered. With that said, it's not hard to beat Facebook's user interface.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This sort of leads me to one Google+'s biggest drawbacks. They really offer a very limited subset of Facebook's features. There are no events, messages, chat(EDIT: Just kidding. They have chat), or even "wall-to-wall" posts. An application API is also missing (Farmville+!). Granted Google+ is still at a very early stage, so it might get a lot of those features later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other big drawback is userbase. It is very hard to have a successful social networking application without a lot of users. People won't switch to Google+ until their friends switch. Of course, their friends are thinking the same thing. I think Google can overcome this problem fairly easily though. Perhaps we'll see migration tools that let you quickly populate your Google+ account using your Facebook data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a few neat features in Google+. The one that impresses me the most is the idea of Circles. With Circles, Google+ lets you place your "friends" into various groups. Then you can choose which groups, or circles, can see what content. This is a nice way to keep your family from seeing your status updates about drinking and partying.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another benefit&amp;nbsp;is that Google has a much more sensible TOS than Facebook. They also have a better history of protecting things like privacy. I know for a lot of people, this is a very big deal. I personally don't care too much about this one. When you put things on the internet (especially on a social networking site), you always risk that everyone might be able to read it. This is why I never post things like my phone number on Facebook (even if its just for "Friends"). The only information I have on Facebook is information that I would feel comfortable telling strangers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A huge problem I've had with Facebook is their rollout strategy. They seem to be fans of &lt;a href="http://oleksiderkatch.blogspot.com/2011/05/release-early-release-oftencarefully.html"&gt;release early, release often, but they suck at it.&lt;/a&gt;&amp;nbsp;It is almost a weekly&amp;nbsp;occurrence&amp;nbsp;when a major piece of functionality is broken. Facebook doesn't take enough time to do regression testing before they push updates and it really bugs me. Just because you can fix it fast doesn't mean you can ship it in a broken state. &amp;gt;_&amp;lt; I've found Google to be much better in this area. They also&amp;nbsp;progressively&amp;nbsp;add to their software, but it isn't crippled every week by stupid release strategies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll keep an eye on Google+ going forward, but they have a lot to do before they can&amp;nbsp;realistically&amp;nbsp;hope to beat out Facebook.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8291493866687250478?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8291493866687250478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/google-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8291493866687250478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8291493866687250478'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/google-and.html' title='Google+ (and -)'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1889016948048640710</id><published>2011-07-01T17:01:00.000-04:00</published><updated>2011-07-01T17:01:53.907-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java is Always Pass-By-Value</title><content type='html'>This is probably the biggest common misconception in Java. It's starting to become a minor pet-peeve of mine. :P People say things like "Java is pass-by-value for&amp;nbsp;primitives,&amp;nbsp;but pass-by-reference for Objects.". This is not true.&lt;br /&gt;&lt;br /&gt;In fact, Java always uses pass-by-value. The trick is that Java always stores references to Objects. When you pass in an object to a method, the object reference is passed by value. This is different than pass-by-reference. Java makes a copy of the reference variable and that's what the method uses. While a lot of the time you won't be able to tell the difference, there are some important cases where this makes a difference.&lt;br /&gt;&lt;br /&gt;Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=YK04EuUA" style="border: none; height: 345px; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The output of this program is:&lt;br /&gt;&lt;br /&gt;a: 5&lt;br /&gt;b: 10&lt;br /&gt;&lt;br /&gt;This is unexpected behaviour if you think that Java is really pass-by-reference. What this code really did was swap two copies of references, not the references themselves. This caused me a few headaches in the past.&lt;br /&gt;&lt;br /&gt;This is a&amp;nbsp;misconception&amp;nbsp;has been around for way too long. Spread the word. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1889016948048640710?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1889016948048640710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/java-is-always-pass-by-value.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1889016948048640710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1889016948048640710'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/07/java-is-always-pass-by-value.html' title='Java is Always Pass-By-Value'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-143398144749194420</id><published>2011-06-27T22:03:00.000-04:00</published><updated>2011-06-27T22:03:22.607-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Commenting: The Lazy Way Out</title><content type='html'>I'm a big believer in self documenting code. That is, code that is structured to be readable without comments. There are a lot of problems with comments. First, they are notorious for getting out of date. If you've ever been bitten by a misleading comment, you will know that no comment is much better than a false one. I see most comments as crutches. You have this bad code, and you try to "fix" it by just adding comments to the code, since&amp;nbsp;that's&amp;nbsp;the easiest way to make the whole package somehow understandable. Unfortunately, at the end of the day, the code is still awful. In this way, comments are the lazy way to make code readable. In fact, most of the time I treat comments as a potential code smell. It is almost always better to refactor the code to be more clear, instead of annotating the code.&lt;br /&gt;&lt;br /&gt;I've heard other developers say things like self-documenting code is a lazy excuse for not adding comments. I disagree. Writing self-documenting code is orders of&amp;nbsp;magnitudes&amp;nbsp;harder than writing descriptive comments. It also requires a lot more time and effort than just commenting your code. However, it is also much more effective at making code readable. When your code only makes sense in the presence of comments, you are making that code much harder to use in other areas. Are you going to include the comments wherever the bad code is used? Copy-pasta?&lt;br /&gt;&lt;br /&gt;There are, however, a few cases where comments are the way to go. They are much easier and quicker to write than actually refactoring the code. This makes them preferable when you have to write code under a very tight deadline. However, I would treat them like any other "hack" developers do in the heat of a release; do it now, and fix it as soon as possible when the deadlines loosen up.&lt;br /&gt;&lt;br /&gt;There are also some times where refactoring the code will lead to a lot more code for little&amp;nbsp;readability&amp;nbsp;benefit. In these cases, a comment might be a better solution. Having too much code, however clean, is also a very big problem, because it makes the overall project harder to understand. However, to me this seems like a rare case. It is almost always better to refactor than to add a comment.&lt;br /&gt;&lt;br /&gt;As an exercise, take a look at some old code you wrote and find the lines of code with comments. Can you think of a way to refactor it to be cleaner? I think in 90% of those cases, you will be able to refactor the code to make it much more readable without comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-143398144749194420?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/143398144749194420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/commenting-lazy-way-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/143398144749194420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/143398144749194420'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/commenting-lazy-way-out.html' title='Commenting: The Lazy Way Out'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1503162764421021646</id><published>2011-06-24T14:02:00.000-04:00</published><updated>2011-06-24T14:02:34.457-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Why Agile Development is More Fun</title><content type='html'>I just read this &lt;a href="http://blog.pseudocodice.com/2011/06/why-i-dislike-agile-development.html"&gt;article claiming that Agile is "boring"&lt;/a&gt;. I'm not sure how this person got to that conclusion. He also claims that Agile is very rigid and strict, although it's probably one of the most relaxed project management&amp;nbsp;methodologies&amp;nbsp;out there. It's certainly more dynamic and flexible than Waterfall models are.&lt;br /&gt;&lt;br /&gt;From the article, it seems that this person works somewhere where they don't have any concept of project management at all. He talks as if he doesn't have deadlines to meet for his organization. Not sure where he's working where he can get away with this. Almost all projects have deadlines. It's very useful for business people to know things like estimates and set deadlines. Pretending they don't exist is no way to professionally develop software. Certainly not a realistic way to grow as an organization.&lt;br /&gt;&lt;br /&gt;The writer says that Agile development gets boring after you do it for a couple projects. Not sure where that's coming from. I find that Agile development environments are much more interesting, because there is much less&amp;nbsp;repetition. From iteration to iteration, you could be working on very different projects. Agile allows (and even encourages!) developers to explore other areas of the software and cross-train. You are also much less likely to be pegged as the "Database guy" or "UI guy" in an Agile project. While you might have a lot of experience with UI, your task is really whatever the project needs. If that means moving outside of your domain, so be it.&lt;br /&gt;&lt;br /&gt;When I worked at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;&amp;nbsp;we practiced Scrum, a form of Agile, and I found it to be very flexible. While most of the time I was developing UI code, I also participated in all the other sections of the applications. I got to see&amp;nbsp;all the parts of the application.&lt;br /&gt;&lt;br /&gt;Also, Agile teams are encouraged to work very closely together. This interaction creates a very interesting working environment where you are constantly learning. This is certainly more interesting than working your way down an ad-hoc todo list by yourself, conversing with other developers only when&amp;nbsp;absolutely&amp;nbsp;necessary.&lt;br /&gt;&lt;br /&gt;I suspect that the author has never worked in an Agile company (or at least one that's practicing Agile correctly), because his comments seem to be the opposite of what Agile development encourages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1503162764421021646?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1503162764421021646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/why-agile-development-is-more-fun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1503162764421021646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1503162764421021646'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/why-agile-development-is-more-fun.html' title='Why Agile Development is More Fun'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1356643194558694871</id><published>2011-06-20T22:46:00.000-04:00</published><updated>2011-06-20T22:46:24.897-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Improving Performance</title><content type='html'>Coding Horror updated today, &lt;a href="http://www.codinghorror.com/blog/2011/06/performance-is-a-feature.html"&gt;talking about the importance of performance&lt;/a&gt;&amp;nbsp;for web applications. He cites some studies that show significant drops in website usage as the speed slows down. While this is&amp;nbsp;definitely&amp;nbsp;important, you have to be very careful to not get carried away. Unless you're Google, you probably don't need to shave off a few milliseconds off your page load times. My basic rule of thumb is to only optimize things if it will make a&amp;nbsp;noticeable&amp;nbsp;difference to the performance of your applications. Humans can't detect differences of a few milliseconds.&lt;br /&gt;&lt;br /&gt;Of course, there are always times when you do need to optimize for performance. Doing this in a smart way can save a lot of developer time. Apparently,&amp;nbsp;&lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;Yahoo has a well-cited set of tips for improving site performance&lt;/a&gt;. Some of these are really easy to do, and have a major impact on load times. Minimizing HTTP requests is a big one. It's fairly easy merge all you JS files into one, optimized file. There are plenty of tools that do this for you automatically (like &lt;a href="http://code.google.com/closure/"&gt;Closure Tools&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;80-90% of the user's time is spent downloading "stuff" to the client. Minimizing the "stuff" is a very powerful way to improve response time. For example, take a look at&amp;nbsp;&lt;a href="http://www.google.ca/"&gt;http://www.google.ca/&lt;/a&gt;. Look at the source code. You won't see "wasteful" things like spaces and linebreaks! Granted, this is a pretty extreme example and Google probably needs it to be this optimized.&lt;br /&gt;&lt;br /&gt;You can get another huge performance boost by using your cache better. HTTP has built in cache using Conditional Gets, but it requires websites to set response headers intelligently. &amp;nbsp;Using a longer expire time can notably improve performance. In general, caching is perhaps the biggest thing keeping things running fast. If your computer didn't have a cache it would barely be able to function. If our DNS name servers didn't cache anything, the internet would crawl.&lt;br /&gt;&lt;br /&gt;Another simple thing you can change is the order of your information on web pages. You want to put your CSS files at the very top of the HTML file. Once your browser gets this data, it can start&amp;nbsp;progressively&amp;nbsp;rendering the page. You also want all the scripts at the bottom, because they take a (relatively) long time to download, and might block concurrent downloads of other things.&lt;br /&gt;&lt;br /&gt;A very powerful tool here is your profiler. Some browsers (like Chrome) have this built in. A profiler can tell you exactly where the bottlenecks in your system are. You should never optimize something before consulting your profiler. Often, you might find that the thing you were going to optimize is&amp;nbsp;negligible&amp;nbsp;compared to something else.&lt;br /&gt;&lt;br /&gt;I thought these were some&amp;nbsp;interesting&amp;nbsp;things to know in the few cases where you need to spend time optimizing for performance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1356643194558694871?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1356643194558694871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/improving-performance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1356643194558694871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1356643194558694871'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/improving-performance.html' title='Improving Performance'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1822736985631766900</id><published>2011-06-18T16:22:00.000-04:00</published><updated>2011-06-18T16:22:00.397-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Driven Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>TDD and YAGNI</title><content type='html'>&lt;a href="http://beust.com/weblog/2008/03/03/tdd-leads-to-an-architectural-meltdown-around-iteration-three/"&gt;Here's an interesting read&lt;/a&gt;. It talks about how if you practice &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt; (TDD) in an Agile environment, there is a lot of pressure to adhere to &lt;a href="http://en.wikipedia.org/wiki/You_ain't_gonna_need_it"&gt;YAGNI&lt;/a&gt;. YAGNI stands for "you ain't gonna need it". Developers often try to predict what features the code might need in the future, and try to build it in right away.&lt;br /&gt;&lt;br /&gt;The problem is that most of the time, you won't actually need that feature that you predicted you would. &amp;nbsp;To avoid this problem, supporters of YAGNI try to write the smallest amount of code possible to accomplish something. TDD has a similar belief in that they stress writing the smallest amount of code possible to satisfy a test.&lt;br /&gt;&lt;br /&gt;This seems like an extreme to me. While I agree that future proofing every part of your application is a silly idea, I don't think that this sort of TDD and YAGNI is very scalable. It's not really about doing the simplest thing possible, it's about the simplest thing possible that doesn't code you into a corner. You want to make reasonable assumptions about what will change, and future proof that. It's important to be pretty conservative with your guesses here, though.&lt;br /&gt;&lt;br /&gt;A good developer will be able to draw on past experiences to predict that some things &lt;i&gt;will&lt;/i&gt; happen. If they think it's easier to build it in now, they should. I would trust the&amp;nbsp;judgement&amp;nbsp;of an experienced developer over a best practice.&lt;br /&gt;&lt;br /&gt;I feel like YAGNI is&amp;nbsp;overcompensating&amp;nbsp;for developers who apply design patterns to everything ever because they learned to do that in school. This is obviously the other extreme.&lt;br /&gt;&lt;br /&gt;It's like software development practices are following a pendulum, going for&amp;nbsp;extreme(Waterfall, design patterns everywhere) to&amp;nbsp;extreme(Extreme Programming, YANGI). It's still a very volatile field because it's so young. Hopefully the industry will settle down somewhere in the middle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1822736985631766900?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1822736985631766900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/tdd-and-yagni.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1822736985631766900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1822736985631766900'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/tdd-and-yagni.html' title='TDD and YAGNI'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2735456147003171752</id><published>2011-06-16T18:58:00.000-04:00</published><updated>2011-06-16T18:58:15.952-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Ignite Waterloo</title><content type='html'>Yesterday, I got a chance to go to &lt;a href="http://www.ignitewaterloo.ca/2011/06/our-speakers-for-ignite-6/"&gt;Ignite Waterloo 6&lt;/a&gt;, a community event where people give 5 minute talks on topics they're passionate about.&lt;br /&gt;&lt;br /&gt;As always, it was an excellent event. It's fun to see some of the same faces at all the community events in Waterloo.&lt;br /&gt;&lt;br /&gt;There were some notable talks. Cate Huston gave a talk entitled "&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Helvetica, Sans, FreeSans, Jamrul, Garuda, Kalimati; font-size: 12px; line-height: 18px;"&gt;Why Do Programmers Have to Lie to Get Dates?&lt;/span&gt;", where she claimed software developers have a communication problem that we need to address. There is a lot of confusion about what software developers actually do, and it leads to some interesting questions like "So you work for the&amp;nbsp;internet?". If we figure out how to communicate better, not only will be create better software, but people will understand what we actually do. :P&lt;br /&gt;&lt;br /&gt;Syd Bolton talked about cool uses of old computers. He is one of the founders of &lt;a href="http://www.pcmuseum.ca/"&gt;The Personal Computer Museum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bob Rushby, ex-CTO of Christie Digital, gave a talk on the how the future will be full of pixels. He imagined a world where everything analog will be replaced with something digital. Cool stuff.&lt;br /&gt;&lt;br /&gt;Ben Brown gave an&amp;nbsp;interesting&amp;nbsp;talk about getting rid of all road signs.&amp;nbsp;Apparently&amp;nbsp;some places in Europe have done this with great success. I'm not convinced that this would work in Canada, especially in larger cities.&lt;br /&gt;&lt;br /&gt;Steven Scott debunked the "I've got nothing to hide" argument on Privacy. Also an interesting&amp;nbsp;discussion.&lt;br /&gt;&lt;br /&gt;To finish the night, my good friend Amal Isaac gave a great talk on &lt;a href="http://en.wikipedia.org/wiki/Technological_singularity"&gt;The Technological Singularity&lt;/a&gt;. He talked about an interesting future when, inevitably, computers&amp;nbsp;surpass&amp;nbsp;our intelligence.&lt;br /&gt;&lt;br /&gt;All-in-all, it was another great event in the KW community! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2735456147003171752?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2735456147003171752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/ignite-waterloo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2735456147003171752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2735456147003171752'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/ignite-waterloo.html' title='Ignite Waterloo'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6804358492887463035</id><published>2011-06-14T13:32:00.000-04:00</published><updated>2011-06-14T13:32:18.040-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Interviews'/><title type='text'>Resumes for Programmers</title><content type='html'>How useful are resumes for programmers? I've read a few articles now (including this one entitled &lt;a href="http://codeulate.com/2011/06/programmer-resumes-are-deprecated/"&gt;"Programmer Resumes Are Deprecated"&lt;/a&gt;) that claim&amp;nbsp;employers&amp;nbsp;are much more interested in artifacts and evidence of your programming. Things like &lt;a href="https://github.com/"&gt;github&lt;/a&gt; accounts, personal projects, and development blogs.&lt;br /&gt;&lt;br /&gt;I think part of the problem is when someone writes "Experienced with C#" on a resume, employers don't really know what that means. Without hard evidence to back you up, it's hard for employers to believe you. Perhaps more importantly, these skill levels are relative. I might think that I know C++ really well, when in reality, I only know a small part of the language well. I think these differences in perception are a pretty big problem in hiring developers.&lt;br /&gt;&lt;br /&gt;Some skills are also really hard to "prove" on a resume. Sure if you put "Proficient&amp;nbsp;in C#" and then list a bunch of jobs where you used C#, they are more likely to&amp;nbsp;believe&amp;nbsp;you, but how do you prove good object oriented design &amp;nbsp;skills? Or knowledge of the &lt;a href="http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle"&gt;SDLC&lt;/a&gt;? Or processes like &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;Scrum&lt;/a&gt;? You could try to force some&amp;nbsp;sentences&amp;nbsp;about all these skills, but it will make your resume really long, and you'd still have to worry about the problem of what does&amp;nbsp;proficient&amp;nbsp;really mean?&lt;br /&gt;&lt;br /&gt;A better solution might be to have a bunch of links to things like blogs and personal projects in your resume. This way when you say "Experienced with C#", your employer can check out what your "experienced C#" code actually looks like. Then they can make their own decision on your skill level, instead of trusting that what you mean by "experienced" is the same as what they mean.&lt;br /&gt;&lt;br /&gt;I don't think we should just sack resumes all together, since I think it's a good way to summarize your skills for someone without a lot of time. However, I think the hiring decision should focus more on tangible projects that employers can see for themselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6804358492887463035?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6804358492887463035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/resumes-for-programmers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6804358492887463035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6804358492887463035'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/resumes-for-programmers.html' title='Resumes for Programmers'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-9216745194139618830</id><published>2011-06-12T16:07:00.000-04:00</published><updated>2011-06-12T16:07:31.514-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><title type='text'>More on Mixed Reality Interfaces</title><content type='html'>Here's a few videos showing how the Mixed Reality Interfaces (MRI) work. &lt;a href="http://oleksiderkatch.blogspot.com/search/label/REAP"&gt;As I mentioned before&lt;/a&gt;, our REAP team this term is exploring interesting uses for this&amp;nbsp;technology.&lt;br /&gt;&lt;br /&gt;This is the best video, I think:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/hmG61K3r_j0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hmG61K3r_j0&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/hmG61K3r_j0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;There's a few more &lt;a href="http://www.youtube.com/watch?v=kzGljuievpM&amp;amp;feature=related"&gt;here&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=u0V-fbuF5M4&amp;amp;feature=related"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pretty cool stuff. Our REAP team is currently looking into getting a sample museum exhibit built using this&amp;nbsp;technology, so we can demo it to some real users and see what they think.&lt;br /&gt;&lt;br /&gt;In other news, rankings come out on Friday! Yay! I have 6 interviews before then, so it'll be a busy week. Other notable things next week include &lt;a href="http://www.ignitewaterloo.ca/"&gt;Ignite Waterloo&lt;/a&gt; (so stoked!) and an interesting sounding talk at &lt;a href="http://www.uxwaterloo.org/"&gt;uxWaterloo&lt;/a&gt;. There might be a midterm somewhere in there too, but that's considerably less interesting. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-9216745194139618830?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/9216745194139618830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/more-on-mixed-reality-interfaces.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/9216745194139618830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/9216745194139618830'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/more-on-mixed-reality-interfaces.html' title='More on Mixed Reality Interfaces'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-966597013576452744</id><published>2011-06-08T18:14:00.000-04:00</published><updated>2011-06-08T18:14:51.314-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Interviews'/><title type='text'>Common Interview Question: Abstract Classes vs. Interfaces</title><content type='html'>I had an interview today where, yet again, I got asked the difference between an abstract class and an interface. In fact, I would estimate about 50% of the job interviews I've had for Java development have asked this exact question.&lt;br /&gt;&lt;br /&gt;The answer is pretty straight forward. An interface defines some behaviour that can be added to an existing class. The class can choose how to implement that behaviour, but by implementing the interface, they are saying that they have some capability.&lt;br /&gt;&lt;br /&gt;And abstract class isn't used to add capabilities to an existing class. Instead, it's meant to be a basis for future classes. Abstract classes can also do some things that interfaces can't, specifically have state and default method implementations.&lt;br /&gt;&lt;br /&gt;If you have a job interview for a Java developer position, I recommend that you know how to answer this question.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-966597013576452744?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/966597013576452744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/common-interview-question-abstract.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/966597013576452744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/966597013576452744'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/common-interview-question-abstract.html' title='Common Interview Question: Abstract Classes vs. Interfaces'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6507860338484501505</id><published>2011-06-08T01:21:00.001-04:00</published><updated>2011-06-08T01:34:58.251-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cars'/><title type='text'>Ugly Concept Cars</title><content type='html'>Why is it that most concept cars that I see look just awful. Like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.seriouswheels.com/pics-jkl/Lamborghini-Ankonian-Concept-Design-by-Slavche-Tanevski-Rendering-9-1280x960.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://www.seriouswheels.com/pics-jkl/Lamborghini-Ankonian-Concept-Design-by-Slavche-Tanevski-Rendering-9-1280x960.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;Lamborghini Ankonian Concept&lt;/div&gt;&lt;br /&gt;Or this&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cdn.theatlantic.com/static/mt/assets/science/assets_c/2011/06/GeneralMotors-Post-thumb-615x300-53353.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://cdn.theatlantic.com/static/mt/assets/science/assets_c/2011/06/GeneralMotors-Post-thumb-615x300-53353.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;Pontiac&amp;nbsp;Solstice&amp;nbsp;Concept&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;Or &lt;a href="http://www.google.ca/search?q=Concept+Cars&amp;amp;hl=en&amp;amp;safe=off&amp;amp;rlz=1C1CHMD_enCA401CA401&amp;amp;prmd=ivns&amp;amp;tbm=isch&amp;amp;tbo=u&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=lgXvTdn4D8nw0gGGtK32DA&amp;amp;ved=0CDkQsAQ&amp;amp;biw=1920&amp;amp;bih=995"&gt;most of these!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;They even managed to make an Aston Martin look bad! :(&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://chrisescars.com/wp-content/uploads/2010/01/2009-Aston-Martin-One-77-Front-Angle-Tilt-1280x960-500x375.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://chrisescars.com/wp-content/uploads/2010/01/2009-Aston-Martin-One-77-Front-Angle-Tilt-1280x960-500x375.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Aston Martin one-77&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6507860338484501505?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6507860338484501505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/ugly-concept-cars.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6507860338484501505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6507860338484501505'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/ugly-concept-cars.html' title='Ugly Concept Cars'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6064155165223136883</id><published>2011-06-04T17:52:00.000-04:00</published><updated>2011-06-04T17:52:52.121-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>REAP Projects</title><content type='html'>I thought that I'd update on what we are doing for the &lt;a href="http://reaponline.igloocommunities.com/"&gt;REAP&lt;/a&gt; project this term. We are working with Mixed Reality Interface (&lt;a href="http://kommerz.at/en/Produkte/MRI.html"&gt;MRI&lt;/a&gt;) technology. Check out the videos (entitled&amp;nbsp;MRI - demo) on their site for a quick demo of it's capabilities. It is&amp;nbsp;essentially&amp;nbsp;an interactive table that connects to an external display. Actions on this table are reflected on the external display. You can imagine having a "character" (think: lego man) moving&amp;nbsp;around the surface of the table. In this context, the character's point of view would be displayed on the external monitor. If the table displays a floor plan, you can imagine the external monitor showing the point of view of the lego man in the room. Turning the the character on the table is&amp;nbsp;equivalent&amp;nbsp;to looking around the "room".&lt;br /&gt;&lt;br /&gt;The table offers some other nice features. The table reads "barcodes" (really, just pieces of paper with patterns) placed on the table and then takes some action in the table or external monitor view. This lets us dynamically change what's happening on either the table or the display.&lt;br /&gt;&lt;br /&gt;Our REAP project involves trying to find uses for this&amp;nbsp;technology. We are mostly approaching this from a &lt;a href="http://oleksiderkatch.blogspot.com/2011/05/design-strategies.html"&gt;techonlogy-first design&lt;/a&gt; point of view.&lt;br /&gt;&lt;br /&gt;The first business case we are exploring is home design. Imagine being to visualize and experience a 3D view of your house before it's even built. The barcode system allows for very quick customization, so it can really help home buyers/designers visualize various design combinations. For example, if you wanted to see what marble cabinets with a red paint room look like, you would simply throw those two barcodes on the table, and would be able to actually visualize how it looks from&amp;nbsp;different&amp;nbsp;points of view. Currently, home buyers have to do all this combination visualizing in&amp;nbsp;their&amp;nbsp;head. Needless to say, this is much less effective (especially&amp;nbsp;if you're someone like me :S).&lt;br /&gt;&lt;br /&gt;The second case we are pursuing is virtual museum exhibits. Imagine modeling an entire roman city and letting people walk through it and explore it any way they wanted. There would be various points in the virtual world where information could be displayed. Better yet, one could imagine rendering animations and movies, instead of just a static world. With a system like that, you could watch two dinosaurs fight, and then choose where to go next in the virtual world. How about making a shared world between many table? That way a whole class could be experiencing the same world in their own way, almost like an MMO game. We even played around with making your own exhibits by placing figures (with the barcodes on the bottom) on the table. The system would then interpret the objects on the table and make them interact.&lt;br /&gt;&lt;br /&gt;In the future, we might want to switch up that external monitor for something like 3D cave&amp;nbsp;technology. This would let us project a 3D world around the users to create an even more&amp;nbsp;immersion&amp;nbsp;experience. For now we are focusing on starting small though.&lt;br /&gt;&lt;br /&gt;These are just some of the fields we are looking at right now. Technology like this is fairly general, so we can really apply this to&amp;nbsp;literally&amp;nbsp;almost every field. For that reason, we decided to pick a few and run with them. If we talk to the business users and find that they don't think it's useful, we can just move on to one of the other&amp;nbsp;umpteen&amp;nbsp;ideas we have. It's a fun way to work.&lt;br /&gt;&lt;br /&gt;The people on the REAP project are all very cool (and talented!) people, so it's a lot of fun to work with them. There's also a bunch of free training (Agile training, presentation training, etc). All-in-all, it's a pretty great part time job. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6064155165223136883?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6064155165223136883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/reap-projects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6064155165223136883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6064155165223136883'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/reap-projects.html' title='REAP Projects'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7837699069216271725</id><published>2011-06-03T10:14:00.001-04:00</published><updated>2011-06-03T16:15:38.106-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Sony Hacked Again</title><content type='html'>So it looks like &lt;a href="http://www.ctv.ca/CTVNews/TopStories/20110602/sony-probes-possible-hacker-attack-passwords-110602"&gt;Sony was hacked again&lt;/a&gt;. Things are not looking good for Sony. It's been almost two months since the original hack in April. Why does Sony still have unencrypted databases? Didn't they hire a bunch of security consultants after that first security&amp;nbsp;compromise? I would imagine that "Encrypt your freakin' data" wouldn't have been one of the first things that these security experts would have said. So then why is this still a problem?&lt;br /&gt;&lt;br /&gt;One of my friends thinks its a size problem. Sony has a lot of systems to fix, and the hackers are working faster than Sony developers. I'm told that things work very slowly in huge companies. While this might be part of the problem, I feel like there must be something else at play here. Sure protecting against &lt;a href="http://en.wikipedia.org/wiki/SQL_injection"&gt;SQL injections&lt;/a&gt; is hard (&lt;a href="http://en.wikipedia.org/wiki/Prepared_statements#Parameterized_statements"&gt;ish&lt;/a&gt;), but hashing data shouldn't be that bad. Perhaps there code is poorly written, and adding in data encryption is very hard to do. In any good system, there should just be one layer talking to the data directly. In such a system, making this change wouldn't be that hard. They would also have to hash all the existing data, but that is also easy script work.&lt;br /&gt;&lt;br /&gt;Maybe it's an IT infrastructure problem. That is, encrypting data makes things much slower (conceivably&amp;nbsp;twice as slow for data access), and maybe the Sony servers can't handle that extra load.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also think about why this was such a huge security hole in the first place. Is it really because Sony doesn't have any security-conscious&amp;nbsp;developers? I doubt it. It's a pretty popular subtopic in Software Engineering, so I'm sure someone on their payroll took the time to learn about it. It's not like your need a Masters in Security to know to encrypt&amp;nbsp;sensitive&amp;nbsp;data.&lt;br /&gt;&lt;br /&gt;I think the developers were just lazy. It's certainly easier to develop and test a system without encryption. It was probably put on some todo list for later, but that later never came. The development team was probably more interested in starting on new projects or features, and they assumed no-one was really trying to break their system anyway. Maybe the developers wanted to implement these security features, but management didn't think it was worth the time and money.&lt;br /&gt;&lt;br /&gt;I would really like to know how this all happened, but I don't think Sony will ever reveal the real reasons. I do know that it must be..."fun"...to be working at Sony right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7837699069216271725?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7837699069216271725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/sony-hacked-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7837699069216271725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7837699069216271725'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/06/sony-hacked-again.html' title='Sony Hacked Again'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8089515957549495352</id><published>2011-05-26T13:46:00.001-04:00</published><updated>2011-05-26T19:33:42.992-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>EHR Usability</title><content type='html'>I just read this article that talks about &lt;a href="http://www.fastcodesign.com/1663849/what-wayne-gretzky-can-teach-us-about-fixing-our-health-care-system"&gt;usability with EHRs&lt;/a&gt;. The writer says that &lt;a href="http://en.wikipedia.org/wiki/Electronic_health_record"&gt;EHR&lt;/a&gt; systems are too difficult for non-technical&amp;nbsp;physicians to pick up and use on a daily basis. He claims that a lot of older physicians aren't using EHR systems because they don't know how to use computers well enough. He also claims that the government shouldn't force EHR systems on physicians.&lt;br /&gt;&lt;br /&gt;While I agree that usability should be a huge concern for software developers, I think that the writer is a little extreme in thinking that the software is too hard to use. There's&amp;nbsp;isn't&amp;nbsp;much you can do at the software level if your user isn't&amp;nbsp;comfortable&amp;nbsp;with a mouse. At &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;, we put a lot of effort in creating easy to use software that would be&amp;nbsp;intuitive&amp;nbsp;for all users, with some good feedback from a lot of people. It's clear that there are plenty of&amp;nbsp;physicians&amp;nbsp;that have no problem with using software&lt;br /&gt;&lt;br /&gt;We can't just let doctors do things the "stupid" way just because they don't want to learn something new. If they didn't learn new things we wouldn't have any medical imaging and we'd still be using&amp;nbsp;whiskey&amp;nbsp;as an&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Anesthesia"&gt;anesthesia&lt;/a&gt; agent. Clearly this isn't the case.&lt;br /&gt;&lt;br /&gt;So the question is should we allow physicians do things one way, when there is a better way?&amp;nbsp;Especially&amp;nbsp;if the better solution can reduce serious errors. There are &lt;a href="http://oleksiderkatch.blogspot.com/2011/05/emrs-and-privacy.html"&gt;other reasons&lt;/a&gt; why some doctors might not want to use EHRs, but should a learning curve be one of them?&lt;br /&gt;&lt;br /&gt;I don't think so. I think it's very important for physicians to keep up with the times. Systems like EHRs are allowing physicians to do things that were once very difficult or impossible. They save lots of time and money, which ultimately leads to better service. The cost of an EHR is quickly made up when you consider the money you save by not hiring someone to collate paper charts and dealing with rooms full of paper files. It's also provides more security and helps reduce errors.&lt;br /&gt;&lt;br /&gt;I agree with mandating use of EHRs, but I also think that software designers need to think more closely about usability, especially for less&amp;nbsp;technical&amp;nbsp;users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8089515957549495352?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8089515957549495352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/ehr-usablity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8089515957549495352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8089515957549495352'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/ehr-usablity.html' title='EHR Usability'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8665924688247768385</id><published>2011-05-25T18:19:00.000-04:00</published><updated>2011-05-25T18:19:12.421-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Design Strategies</title><content type='html'>I see two ways of designing a product.&lt;br /&gt;&lt;br /&gt;The first is Technology-first design. This is where the group has a specific technology that provides some capabilities. The team takes a lot of time to flesh out exactly what the system is capable of doing, and how. This discussion gets pretty detailed (like talking about UX or implementation details). Once the team has a very good idea of how the technology can be used, they try to find a market for it. They try to "shop" around for problems in any industry that might be served well by this technology.&lt;br /&gt;&lt;br /&gt;The other is User-first design. Here the group knows the overall&amp;nbsp;capabilities&amp;nbsp;of a&amp;nbsp;technology, but they don't discuss the all the details. Instead, they focus on finding users first and then adapt the&amp;nbsp;technology&amp;nbsp;to the problem (instead of the other way around). Here, the group spends a lot of time discussing various markets and their problems. They talk to customers before they conduct in depth research into the&amp;nbsp;technology&amp;nbsp;itself.&lt;br /&gt;&lt;br /&gt;Obviously, a successful project will need to consider both the use cases and the&amp;nbsp;technological&amp;nbsp;details, but the question is which one should a team consider first. In REAP, it seems that we are doing Technolgy-first design. That is, we are trying to fit a problem to our technology instead of the other way around.&lt;br /&gt;&lt;br /&gt;While this approach is fine in general, I find that it might cause comprises in the final solution. If the team is focused on the details of the technology, they might be more inclined to morph the problem (and solution) to match the technology. A better solution would be to morph the&amp;nbsp;technology&amp;nbsp;to match the problem. This creates a better solution to the problem, since it is focused on user needs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8665924688247768385?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8665924688247768385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/design-strategies.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8665924688247768385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8665924688247768385'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/design-strategies.html' title='Design Strategies'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1681298559162433018</id><published>2011-05-23T23:12:00.000-04:00</published><updated>2011-05-23T23:12:55.297-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><title type='text'>New York!</title><content type='html'>I went to &lt;a href="http://maps.google.ca/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Sackets,+New+York&amp;amp;aq=&amp;amp;sll=49.891235,-97.15369&amp;amp;sspn=49.555967,135.263672&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Sackets+Harbor&amp;amp;t=h&amp;amp;z=15"&gt;Sackets, New York&lt;/a&gt; with Dani this long weekend! I got to go to my very first wedding! It was so much fun!&lt;br /&gt;&lt;br /&gt;I had &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;scrum&lt;/a&gt; training with &lt;a href="http://dpwhelan.com/"&gt;Declan Whelan&lt;/a&gt; as part of REAP on Friday. It ended at 7pm, so we had to leave pretty late to New York. The training was great! I'm very&amp;nbsp;interested&amp;nbsp;in seeing how the REAP team can apply Scrum, and it's concepts, to a non-software project. The whole team seemed to be very interested in pursing the idea of using Scrum for the project, so we'll probably get more training in the future. Awesome!&lt;br /&gt;&lt;br /&gt;Anyway, we left Waterloo pretty late. We stopped by Toronto to get my passport (border laws &amp;gt;_&amp;lt;), and then chugged along to our hotel in Watertown, NY. We got there around 1:30am. I learned (slash remembered) that King sized beds are not a little bigger than a Queen sized bed. They are much, much bigger. It was awesome. Of course the first thing we did was jump on the bed. Go us.&lt;br /&gt;&lt;br /&gt;Next morning, we went to the wedding in Sackets. They had a small (40 people)&amp;nbsp;ceremony under a gazebo overlooking the&amp;nbsp;harbor. It was quite pretty! The whole thing only lasted about 10 minutes. A good introduction to weddings for me. :P&lt;br /&gt;&lt;br /&gt;After that, Dani and I sneaked off to eat some food, while everyone else took buttloads of pictures. It was good. &amp;nbsp;Then we went to the reception...somewhere. lol. That was also fun. We actually got a chance to talk with the bride and groom. It was nice of them to take time to talk to all the guests. :)&lt;br /&gt;&lt;br /&gt;After the wedding, we were both exhausted, so we went back to the hotel to relax. Dani fell asleep for 2 hours and then couldn't get to bed until 5am. Sweet deal.&lt;br /&gt;&lt;br /&gt;Sunday was mostly uneventful. In the morning (well, "morning" = noon), we went for a drive around Sackets. It's a really nice city. It&amp;nbsp;reminds&amp;nbsp;me of cottage country. It's fun to see how american flags there are in that city. Literally every pole has a flag on it. You never see that in Canada.&lt;br /&gt;&lt;br /&gt;After our morning joy ride, we went back to the hotel, watched a movie (My Big Fat Greek Wedding!), and then went on another late night joy ride! We went on a quest to find an open Dunkin' Dodo's (tm). We got lost. Surprise. It was another fun drive though.&lt;br /&gt;&lt;br /&gt;All in all, it was a great weekend. My first wedding was excellent! Yay! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1681298559162433018?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1681298559162433018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/new-york.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1681298559162433018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1681298559162433018'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/new-york.html' title='New York!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6886735685266936425</id><published>2011-05-16T23:40:00.000-04:00</published><updated>2011-05-16T23:40:20.749-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Release Early, Release Often...Carefully</title><content type='html'>There's a lot of talk about the idea of releasing software early and often. The idea is that you get software out to your users faster, so you can get their feedback faster. Releasing software often also has the&amp;nbsp;benefit&amp;nbsp;of keeping your users constantly&amp;nbsp;involved&amp;nbsp;in the development of the&amp;nbsp;application. In general, "Release early, release often" is a great idea... if you do it well.&lt;br /&gt;&lt;br /&gt;The caveat is that people need to be really careful with what they release. It is okay to release a new version of your software with just one new feature. Releases lacking features are fine. Quality, on the other hand, should never be&amp;nbsp;compromised. That is, you should never release untested software or software with major known problems. You should never think "That's okay, we'll just fix the bugs in the next release. We release often anyways". I find this&amp;nbsp;incredibly&amp;nbsp;annoying behaviour from software companies. Not only is it very frustrating, but it also makes me question the professionalism of the company. Releasing untested programs is never acceptable. It makes a very negative impact on the user's view on the company's stance on application quality. Users understand when your program is still in it's&amp;nbsp;infancy&amp;nbsp;and is missing features, but they shouldn't have to deal with bug-filled applications.&lt;br /&gt;&lt;br /&gt;Keep that in mind when you are considering a release of your software. Quality should never be something that is put off for a later release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6886735685266936425?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6886735685266936425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/release-early-release-oftencarefully.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6886735685266936425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6886735685266936425'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/release-early-release-oftencarefully.html' title='Release Early, Release Often...Carefully'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-40736932369097799</id><published>2011-05-16T23:04:00.000-04:00</published><updated>2011-05-16T23:04:44.880-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='RT'/><title type='text'>Schedule Changes!</title><content type='html'>Some of you may or may not know that my schedule has been really messed up this semester. I started with 4 courses, one of which was Real-Time. I switched CO 480 (History of Mathematics) for CS 456 (Networks), because history of math was really interesting, but a lot of work. I am currently sitting in on the course though. Steven Furino, the history professor, is a very interesting person to listen to.&lt;br /&gt;&lt;br /&gt;Then I realized that taking 4, fourth year CS courses including RT was stupid. Some of my friends in RT were only taking 2-3 other classes, all bird-y like History of Film. When I realized that 4 CS courses was silly, I dropped Distributed.&lt;br /&gt;&lt;br /&gt;Then the weekend came. RT A0 was due Monday, and I spent most of my spare time in the RT lab. This is after spending 5-10 hours in there per day since the first day of classes.&amp;nbsp;&amp;gt;_&amp;lt; &amp;nbsp;I got most of A0 done, which was rewarding, I guess.&lt;br /&gt;&lt;br /&gt;While Real-Time is very interesting and&amp;nbsp;satisfying, the amount of work is unreal. It's sort of hard to convey. I suspect that it's more work than I did in all of first and second year&amp;nbsp;combined. I could do the course, but I would have to give up literally everything else in my life, including other classes (and sleep!). I am also more interested in the material in my other courses (especially Networks/Distributed) than the Real-Time material. It &amp;nbsp;seemed weird that I would miss out of learning that material for a subject that I didn't really care about in the first place. I didn't think it was worth it, so I dropped Real-Time.&lt;br /&gt;&lt;br /&gt;Instead of Real-Time, I decided to pick up Distributed (again) and UI. Unfortunately UI was full, so I only got into Distributed.&lt;br /&gt;&lt;br /&gt;So my final schedule, after 2 weeks of shuffling and being on wait lists, is Architecture, Networks, and Distributed.&lt;br /&gt;&lt;br /&gt;I would have liked to take 4 courses, but it feels sort of nice to take only 3. I will pretty much treat this as a summer vacation. :P I could use a break, and I'd like to have time to actually enjoy summer for the first time in 3 years. I also have REAP, so I'll still be busy enough, but after that week of real-time, my other course loads seem pretty light.&lt;br /&gt;&lt;br /&gt;I am a little sad about dropping Real-Time, but I'm also very relieved. I will actually learn stuff in my other courses now, and enjoy my semester. I think that I made the right choice.&lt;br /&gt;&lt;br /&gt;Now if you'll excuse me, I have a sushi date with the Girl.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-40736932369097799?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/40736932369097799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/schedule-changes.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/40736932369097799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/40736932369097799'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/schedule-changes.html' title='Schedule Changes!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1142545579390907976</id><published>2011-05-11T18:50:00.000-04:00</published><updated>2011-05-11T18:50:16.729-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><title type='text'>EMRs and Privacy</title><content type='html'>Today I got the chance to talk with a doctor at UW. I asked him what he though of &lt;a href="http://en.wikipedia.org/wiki/Electronic_health_record"&gt;EHR&lt;/a&gt;s that enabled data sharing between health care providers. He brought up some&amp;nbsp;interesting&amp;nbsp;points.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Basically, he didn't think it would be that useful for doctors. In fact, he thought that it would have some negative consequences. Specifically, he claimed that people would not be truthful if they knew a lot of people might have access to that information. Would you answer truthfully if someone asked you how many sexual partners you've had, if you knew a lot of people might have access to that information? Apparently, people are hesitant to give out that information even when they know that only the doctor will know about it. He thought that a more available EHR would just create more falsified records. This would make the EHRs unreliable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He brought up another point about logistics. Where do you store this EHR? Do you associate it with your health card? Well in our case, that would only work in Ontario. Further, what happens when you lose your health card? I think the industry uses &lt;a href="http://en.wikipedia.org/wiki/Enterprise_Master_Patient_Index"&gt;EMPI&lt;/a&gt;s for this right now.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is coming from a doctor that's been working with these healthcare systems for over 30 years. It's an&amp;nbsp;interesting&amp;nbsp;point of view.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think a lot of these problems can be solved by thinking carefully about the privacy concerns with EHRs. Patients should have the power to specify which information is available for others to see. I think a lot of these concerns may be solved by storing all the information with the patients. That way, patients are in control of their health care records.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In any case, I'm very curious to see how this pans out. I certainly don't have a solution for how to solve these problems, but I'm sure something interesting will emerge within the next 5-10 years.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1142545579390907976?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1142545579390907976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/emrs-and-privacy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1142545579390907976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1142545579390907976'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/emrs-and-privacy.html' title='EMRs and Privacy'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3785228822955862274</id><published>2011-05-03T15:22:00.000-04:00</published><updated>2011-05-03T15:22:10.616-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><category scheme='http://www.blogger.com/atom/ns#' term='RT'/><title type='text'>Start Of The Term</title><content type='html'>The term started yesterday, and things are already getting busy. I think my blogging frequency is going to be much, much lower this semester. :/&lt;br /&gt;&lt;br /&gt;The first Real-Time assignment is out, and it's very&amp;nbsp;intimidating: 7 days to create a command line interface for the trains, including real-time displays for a lot of data about the train system. All this without an operating system. This is going to be a hell of a semester. Lessons learned so far:&lt;br /&gt;1) makefiles suck&lt;br /&gt;2) operating systems are useful&lt;br /&gt;&lt;br /&gt;I changed my schedule a little. For one, I dropped History of Mathematics. Although it seems very interesting, I don't think that I could handle the work load with RT.&amp;nbsp;Apparently&amp;nbsp;the course involves a lot of researching and&amp;nbsp;writing. I will however, sit in on the class. Listening to Steven Furino lecture is a pleasure, and I have a lot of time to kill between classes on those days. I also might pick up Networks. I'm currently on the waiting list for it, but I don't know if I actually want to take 4 courses or not. I've heard that networks is a pretty easy course, so we'll see.&lt;br /&gt;&lt;br /&gt;The first REAP&amp;nbsp;meeting&amp;nbsp;is today too. I'm looking forward to meeting the whole team. I'm also looking&amp;nbsp;forward&amp;nbsp;to playing with these Microtiles. I watch about an hour long training video on them yesterday, but that's not as fun (or educational) as actually playing with them.&lt;br /&gt;&lt;br /&gt;Looks like this will be a very busy, but fun, semester!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3785228822955862274?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3785228822955862274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/start-of-term.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3785228822955862274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3785228822955862274'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/05/start-of-term.html' title='Start Of The Term'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2843489353814972892</id><published>2011-04-30T11:25:00.002-04:00</published><updated>2011-04-30T11:27:12.312-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><category scheme='http://www.blogger.com/atom/ns#' term='RT'/><title type='text'>Spring!</title><content type='html'>Yesterday was my last day at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;. It was an excellent term with amazing people, and innovative software and technology. I'll&amp;nbsp;definitely&amp;nbsp;miss working there. They gave me a remote controlled helicopter as a parting gift.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://s3.amazonaws.com/twitpic/photos/large/287362687.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&amp;amp;Expires=1304176888&amp;amp;Signature=On0Jkbs5NWiMt8OOOMYtbyhu0KE%3D" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://s3.amazonaws.com/twitpic/photos/large/287362687.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&amp;amp;Expires=1304176888&amp;amp;Signature=On0Jkbs5NWiMt8OOOMYtbyhu0KE%3D" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;How cool is that!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In other news, I'm quite excited to start my next semester. It'll be my first Spring school semester, and I hear the campus is awesome this time of year. I'll try to enjoy as much of it as I can with Real-Time. :P I will be taking:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;-&amp;nbsp;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;Software Design &amp;amp; Architecture&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;-&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;History of Mathematics&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;-&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;Real-Time Programming&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;-&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;Distributed Systems&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;Should be a fun semester. :) I found out that one of my co-workers taught my&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;Distributed Prof. :P&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;I also have &lt;/span&gt;&lt;a href="http://uwreap.com/" style="white-space: nowrap;"&gt;REAP&lt;/a&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;&amp;nbsp;next semester, which should help me meet my&amp;nbsp;excitement&amp;nbsp;quota for&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;the semester.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;In other news, the &lt;a href="http://www.ignitewaterloo.ca/2011/04/ignite-waterloo-6-is-a-go-on-june-8th/"&gt;Ignite Waterloo&lt;/a&gt; for Spring has been announce. I went to the one in Winter,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;&amp;nbsp;and it was&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;excellent&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;I highly recommend that you check it out, if you get the chance.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2843489353814972892?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2843489353814972892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/spring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2843489353814972892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2843489353814972892'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/spring.html' title='Spring!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7460388476849794305</id><published>2011-04-26T23:56:00.000-04:00</published><updated>2011-04-26T23:56:34.947-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Importance of Data Visualization In Agile Teams</title><content type='html'>I went to an Agile P2P meeting after work today. The speaker was &lt;a href="http://agilecoach.ca/"&gt;Jason Little&lt;/a&gt;, an agile coach. He seems like a very interesting guy. I like how he doesn't seem to get bogged down by what "agile" says you should do, but rather he focuses on getting actual results. It's refreshing to see.&lt;br /&gt;&lt;br /&gt;Anyway, he was talking about the importance of data visualization in agile teams. By displaying data in concise and intelligent ways, major problems become much more evident. Problems that are hidden by poor data presentation can become glaringly obvious when you display the information in the "right" way. Uncovering these problems is a huge part of improving what you do as an organization. For example, take stories in your electronic issue tracker. If you have a lot of bugs in your issue tracker, you might not see it right away because of the way they're organized. If instead you put all your issues on coloured sticky notes on a board, and you see a clump of red tickets, it becomes&amp;nbsp;immediately&amp;nbsp;obvious that your software development process might have serious quality gaps. If you further organize those tickets by time, you can visually see when a lot of those bugs were discovered (and can guess when they were introduced).&lt;br /&gt;&lt;br /&gt;The importance of data visualizations doesn't only apply to agile though. Data visualization is important in a lot of fields. Humans suck at looking a unorganized data and making sense of it. &lt;a href="http://en.wikipedia.org/wiki/Machine_learning"&gt;Computers are much better at this&lt;/a&gt;. Data&amp;nbsp;visualization&amp;nbsp;will be very important in the future to help humans make sense of the immense amount of knowledge available in some fields. Like in the agile example above, some problems might become glaringly obvious if you organize and display the information in the "correct" way. The cure to cancer might be hiding in the data, and it's just a matter of showing it the right way before it jumps out to someone.&lt;br /&gt;&lt;br /&gt;Okay. I'll stop procrastinating now and finish off that work report.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;or watch Community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7460388476849794305?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7460388476849794305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/importance-of-data-visualization-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7460388476849794305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7460388476849794305'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/importance-of-data-visualization-in.html' title='Importance of Data Visualization In Agile Teams'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5648543403666003607</id><published>2011-04-25T22:45:00.000-04:00</published><updated>2011-04-25T22:45:42.552-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>SOAP And REST</title><content type='html'>For my work report this semester, I decided to talk about &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;RESTful&lt;/a&gt; web &lt;a href="http://en.wikipedia.org/wiki/API"&gt;API&lt;/a&gt;s&amp;nbsp;and how they compare to &lt;a href="http://en.wikipedia.org/wiki/SOAP"&gt;SOAP&lt;/a&gt; based APIs. Conclusion: SOAP sucks. Here's a pretty interesting,&amp;nbsp;&lt;a href="http://wanderingbarque.com/nonintersecting/2006/11/15/the-s-stands-for-simple/"&gt;fictional conversation&lt;/a&gt; that pretty much summarizes why SOAP is generally awful.&amp;nbsp;Basically, SOAP rebuilds a lot of what's in HTTP from scratch. And to top it off, they use HTTP just as a transportation protocol,&amp;nbsp;ignoring&amp;nbsp;all the application level protocol stuff.&lt;br /&gt;&lt;br /&gt;This is one of the&amp;nbsp;biggest&amp;nbsp;reasons why RESTful APIs are better than SOAP&amp;nbsp;equivalents. For one, they use more than just HTTP PUT, so they get some free perks from HTTP (like&amp;nbsp;cache-able&amp;nbsp;GET calls). Because RESTful APIs are build as a thin layer over HTTP, you can even use your browser for testing. In practice, this has saved me loads of time. RESTful APIs also tend to actually use things like &lt;a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes"&gt;HTTP status codes&lt;/a&gt;, instead of reinventing error handling like SOAP does. SOAP just returns HTTP 200 (which indicates success &amp;nbsp;in HTTP world), but the response body might contain an error. What? Who thought that was a good idea?&lt;br /&gt;&lt;br /&gt;In general, RESTful APIs are simpler (partially because they reuse parts of HTTP) than SOAP. They don't have to have every&amp;nbsp;aspect&amp;nbsp;XML-encoded, and there's no need to for something like &lt;a href="http://en.wikipedia.org/wiki/Web_Services_Description_Language"&gt;WSDL&lt;/a&gt; (which, I should mention, is a clusterfuck).&lt;br /&gt;&lt;br /&gt;So when you have a choice, always go with RESTful APIs. There are occasionally times where you &lt;i&gt;might&lt;/i&gt; need to use SOAP (like when you need something like &lt;a href="http://en.wikipedia.org/wiki/WS-Security"&gt;WS-Security&lt;/a&gt;), but for almost all applications, RESTful APIs are a much smarter choice.&lt;br /&gt;&lt;br /&gt;So here's the 200-word version of my 2000-word work report (and I got to use the work "clusterfuck"!). :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5648543403666003607?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5648543403666003607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/soap-and-rest.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5648543403666003607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5648543403666003607'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/soap-and-rest.html' title='SOAP And REST'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6038031368152704466</id><published>2011-04-16T17:11:00.000-04:00</published><updated>2011-04-16T17:11:03.572-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><title type='text'>How I spend my 9-5</title><content type='html'>For the last two weeks at work, I've been working on a &lt;a href="http://oleksiderkatch.blogspot.com/2011/04/new-projects-at-work.html"&gt;new team&lt;/a&gt;, developing an application called &lt;a href="http://www.karoshealth.com/products/rialto-consult/"&gt;Rialto Consult&lt;/a&gt;. For those of you that are curious, you can &lt;a href="http://www.karoshealth.com/2011/04/12/open-standards-and-real-time-teleradiology-workflow/"&gt;read about&amp;nbsp;it here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Basically, the application allows physicians in one physical location to create radiology orders at a different location. One typical use case could be something like this: Hospital A runs a 24/7 radiology reading service. Hospital B, C, ... , Z have 24/7 emergency response departments, but unfortunately they don't have any radiologists on site overnight. So while these hospitals can capture radiology images, they do not have anyone to read them. Thankfully,&amp;nbsp;Hospital&amp;nbsp;A wants to offer their radiology reading service to these other hospitals. Right now, the workflow goes something like this: Someone comes into Hospital B at 2AM with some emergency. The hospital decides that they need some images taken and read. Once the hospital captures the images, they will fax an order over to Hospital A. Assuming&amp;nbsp;Hospital&amp;nbsp;A gets the order without any problems (fax machines suck), their radiologists will start reading the images. Often, having access to previous images ("relevant priors") is very useful, so the radiologist calls Hospital B and requests some images. These are sent over. Once the radiologist has enough information, they'll read the images and write(or more likely, dictate) a report summarizing their findings. That report gets faxed back to Hosptial A, where they decided what to do next. The whole process is complex, unreliable, and slow.&lt;br /&gt;&lt;br /&gt;Now with Rialto Consult, the workflow becomes much more seamless. In many ways, the experience is&amp;nbsp;indistinguishable&amp;nbsp;from both parties being in the same physical building, even if they're in different cities (or even countries!). Essentially Consult offers a shared worklist. Both hospitals see the same worklist of radiology orders and their states in the workflow. When Hospital B wants a read done, they simply create an order in the system. That order is automatically sent electronically to Hospital A, along with a summary of the patient's history (including those very useful relevant prior images). Hospital A can then view the images, see the patient's medical history, and get relevant prior images. The radiologist can do all this from&amp;nbsp;their&amp;nbsp;workstation without having to call anyone. The radiologist's report is also automatically transfered to the original hospital, where they are notified of the results&amp;nbsp;immediately. The entire process is much simpler, more reliable, and more cost effective.&lt;br /&gt;&lt;br /&gt;The software is very cool and solves a real problem in the industry. The specific section I've been working has to do with audit records. When anyone does anything with the system or your patient information, an audit record is generated. There might be as many as 40 audit records generated for one patient to go through the workflow I described above, so you can imagine that there are&amp;nbsp;literally&amp;nbsp;millions of these records to deal with. I was working on a system to store and display these records in an intelligent way.&lt;br /&gt;&lt;br /&gt;Okay. Maybe I should actually work on that work report now instead of randomly blogging. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6038031368152704466?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6038031368152704466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/how-i-spend-my-9-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6038031368152704466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6038031368152704466'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/how-i-spend-my-9-5.html' title='How I spend my 9-5'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8619191483510223474</id><published>2011-04-15T19:13:00.000-04:00</published><updated>2011-04-15T19:13:59.864-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='REAP'/><category scheme='http://www.blogger.com/atom/ns#' term='RT'/><title type='text'>Life Dilemma #8</title><content type='html'>Today was FedEx day at work. Basically, It's a free day (24 hours) to work on whatever you want. The motto is "Deliver Overnight", hence the name. I started by playing with &lt;a href="http://code.google.com/p/smartgwt/"&gt;SmartGWT&lt;/a&gt;, a very comprehensive &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;&amp;nbsp;framework. Check out their &lt;a href="http://www.smartclient.com/smartgwt/showcase/"&gt;showcase&lt;/a&gt;. It's pretty impressive. Has anyone ever used it before? I'd love to hear your thoughts. At some point I took a break from SmartGWT and helped a&amp;nbsp;colleague&amp;nbsp;work on the software the validates the software licenses. That was a very interesting and different project. I feel sorry for the compiler that had to compile the code I produced. There was some effort to obfuscate the code. It was a fun project, but I feel dirty for violating every coding&amp;nbsp;practice&amp;nbsp;I've ever learned. :P&lt;br /&gt;&lt;br /&gt;This last week got me thinking about what I want to do next co-op term. Working at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt; has been an amazing&amp;nbsp;opportunity. I enjoy working with all my co-workers, and I have a lot of fun at work. The people are all very passionate and skilled at what they do, so it's a real pleasure to work with them. There's a lot of support for professional development. For one, everyone at the company seems immensely talented, so just working with everyone on a daily basis&amp;nbsp;provides&amp;nbsp;a lot of&amp;nbsp;opportunity&amp;nbsp;for learning. On top of that, the company invests a lot in professional development in the form of lunch and learns, book clubs, and trips to various UX and Agile P2P meetings. The actual software that we build is also very cool. We are&amp;nbsp;coming&amp;nbsp;out with products that don't exist in the market yet! It's very exciting stuff.&lt;br /&gt;&lt;br /&gt;The dilemma is&amp;nbsp;whether&amp;nbsp;or not I want to go back there for my next co-op term. I think co-op is really awesome because you get a chance to work for up to 6 different organizations, all with different people, using different tools, and in different business markets. This is an&amp;nbsp;incredible&amp;nbsp;learning&amp;nbsp;opportunity. I thought that I would learn more if I were to work somewhere else, but now I'm not so sure. I'll certainly get a chance to work with a brand new group of people, but I don't know if it's worth leaving such a fun job behind. If I do go back to Karos, I would like to work on server-side code. If I do that, I would be able to work with a (slightly) different group of people in the company, and use different tools. I guess I'll have to think about this a lot more in the upcoming months. I guess this isn't really a bad dilemma to have.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In other news, I got an offer for a&amp;nbsp;&lt;a href="http://uwreap.com/"&gt;UW REAP&lt;/a&gt;&amp;nbsp;position today. I am very excited to work on that project next semester. It will be an incredibly busy semester with Real-Time, but it should be one of the most interesting semesters so far. I'm excited (and scared).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8619191483510223474?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8619191483510223474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/life-dilemma-8.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8619191483510223474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8619191483510223474'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/life-dilemma-8.html' title='Life Dilemma #8'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1460672844379940085</id><published>2011-04-07T23:05:00.000-04:00</published><updated>2011-04-07T23:05:06.741-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Source Control'/><title type='text'>Git &gt;:@</title><content type='html'>While git is a very cool and powerful version control tool, it's command line UI is just&amp;nbsp;awful. The fact that there are no fully-featured GUI alternatives(that don't suck) makes things even worse.&lt;br /&gt;&lt;br /&gt;Let's talk about staging. I would say that a staging area is not useful in the majority of cases. Why is the default behaviour to force a staging process? Most of the time it's just an annoying "durr. stage everything please" step before you commit.&lt;br /&gt;&lt;br /&gt;Then there's the actual commands. Want to add a file to be tracked?&lt;br /&gt;git add &amp;lt;file&amp;gt;&lt;br /&gt;Want to stage an already tracked file?&lt;br /&gt;git add &amp;lt;file&amp;gt;&lt;br /&gt;&lt;br /&gt;Why is it&amp;nbsp;necessary&amp;nbsp;to overload this command? At least these make some sense. How about&amp;nbsp;unstaging?&lt;br /&gt;git reset HEAD &amp;lt;file that's staged&amp;gt;&lt;br /&gt;&lt;br /&gt;Really? reset? Why would you choose that instead of, you know, unstage!&lt;br /&gt;&lt;br /&gt;Want to revert back to the previous commit? git revert would make sense... Too bad it's&lt;br /&gt;git checkout -- .&lt;br /&gt;&lt;br /&gt;Checking out previous commits makes sense, but the fact that you have to do it by copying and pasting an SHA-1 hash code sucks.&lt;br /&gt;&lt;br /&gt;How about untracking and removing files. Well there's:&lt;br /&gt;git rm &amp;lt;file&amp;gt;&lt;br /&gt;which will remove the file from your working directory, and untrack it. There's also&lt;br /&gt;git rm --cached &amp;lt;file&amp;gt;&lt;br /&gt;which will just remove the file from git, but keep the actual file in your working directory. Why --cached is the flag they choose, I'll never know. What's wrong with --tracked?&lt;br /&gt;&lt;br /&gt;I could go on and on. I like git because of how powerful it is, but I hate how many usability problems it has. It makes the learning curve much steeper. I've been using it for 4 months at work now, and it still throws me off every once in a while because of how&amp;nbsp;unintuitive&amp;nbsp;it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1460672844379940085?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1460672844379940085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1460672844379940085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1460672844379940085'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/git.html' title='Git &gt;:@'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3104173542456357136</id><published>2011-04-07T18:47:00.000-04:00</published><updated>2011-04-07T18:47:19.794-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><title type='text'>New Projects At Work</title><content type='html'>I haven't been posting as often as I usually do, mostly because I've been extra busy at work. I started working on a &lt;a href="http://www.karoshealth.com/2010/11/25/karos-health-introduces-rialto-consult-at-rsna-2010/"&gt;different project&lt;/a&gt; this week with my team. It's very exciting, since this is a production application that will be used by real institutions very very soon. The previous project I was working on was a research project, so obviously the quality and&amp;nbsp;usability&amp;nbsp;requirements are very different. I can't say things like "We'll deal with that later" anymore. :P Not too mention it has to play nice with other vendors. Let me tell you. This is not an easy thing to accomplish. The &lt;a href="http://www.ihe.net/Technical_Framework/upload/IHE_ITI_TF_Rev7-0_Vol2a_FT_2010-08-10.pdf"&gt;standards&lt;/a&gt; that exist are not as useful as I would expect.&lt;br /&gt;&lt;br /&gt;I also need to start working on that silly work term report soon. I'm writing it on &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;RESTful&lt;/a&gt; API design. I've worked on half a dozen of these APIs this work term, so I think it should be fairly straightforward to write. Hopefully it won't be too painful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3104173542456357136?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3104173542456357136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/new-projects-at-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3104173542456357136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3104173542456357136'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/new-projects-at-work.html' title='New Projects At Work'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6608154528783219284</id><published>2011-04-01T23:49:00.001-04:00</published><updated>2011-04-02T00:15:42.504-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Education'/><title type='text'>A Lot To Learn</title><content type='html'>Today at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;, we had a retrospection with &lt;a href="http://dpwhelan.com/"&gt;Declan Whelan&lt;/a&gt;, an Agile coach in the Waterloo area. I thought that it was very interesting. I came out feeling like I still have so much to learn about this industry. I pretty much feel this way every couple months. :P It's a weird feeling. I think I'll come out of university feeling much stupider than I felt when I came in. I guess having an awareness of what you need to learn is pretty important though.&lt;br /&gt;&lt;br /&gt;So here's a list of things I would like to work on; my personal improvement backlog. :P Priority to be determined.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt;. I feel like won't really understand it until I actually spend a few weeks doing that. I am still&amp;nbsp;unconvinced&amp;nbsp;of it's&amp;nbsp;benefits, but I think the best way to really decide its effectiveness is to actually practice it.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;Pair Programming&lt;/a&gt;. I've already done a little bit of this at work and for school projects, but I think the cross-training that it provides is really useful, and I'd love to try it for longer periods of time.&lt;br /&gt;&lt;br /&gt;- Language Expertise. I still want to learn some language really really well. I think C# is a good candidate for this. It's still my favorite language.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;Technical&amp;nbsp;Expertise. There's just so many technical things I don't know about. How do you do secure network communication? How can you ensure high&amp;nbsp;availability? How can you&amp;nbsp;efficiently&amp;nbsp;do *? What standard libraries exist for doing *? I would like to know so much more about these topics.&lt;br /&gt;&lt;br /&gt;- Agile. All my agile knowledge comes from many different informal sources. I think I should try to learn it more formally by reading through a book, or taking a course or something. There are a lot of fundamental things that I'm still trying to figure out, and I think that formal training would be very useful.&lt;br /&gt;&lt;br /&gt;- Healthcare. There's so much to learn about the being a developer for the healthcare industry. There's various&amp;nbsp;protocols: &lt;a href="http://en.wikipedia.org/wiki/Health_Level_7"&gt;HL7&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Digital_Imaging_and_Communications_in_Medicine"&gt;DICOM&lt;/a&gt;, and frameworks for working with them like &lt;a href="http://en.wikipedia.org/wiki/Cross_Enterprise_Document_Sharing"&gt;XDS&lt;/a&gt;. I know very little about how these&amp;nbsp;protocols&amp;nbsp;work. I know even less about the interoperability problems that arise from having many&amp;nbsp;different&amp;nbsp;protocols.&lt;br /&gt;&lt;br /&gt;This list is a little overwhelming. I don't know where to start. Instead of doing a "breadth-first search" into these&amp;nbsp;topics&amp;nbsp;like I have in the past, I'd like to dive into one of them and get to know them very very well. Too bad I'll have Real-Time next semester. :/ I guess I'll make time after that. :/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6608154528783219284?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6608154528783219284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/lot-to-learn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6608154528783219284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6608154528783219284'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/04/lot-to-learn.html' title='A Lot To Learn'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2273111382547104628</id><published>2011-03-28T19:37:00.000-04:00</published><updated>2011-03-28T19:37:32.956-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming Languages'/><title type='text'>C++0x: Dead Horse With Jetpacks</title><content type='html'>So you may have heard that the newest&amp;nbsp;version&amp;nbsp;of C++ (&lt;a href="http://en.wikipedia.org/wiki/C%2B%2B0x"&gt;C++0x&lt;/a&gt;) has been finalized. I finally took a look over most of the changes they made. You can find a nice, &lt;a href="http://www2.research.att.com/~bs/C++0xFAQ.html#0x"&gt;comprehensive list here&lt;/a&gt;.&amp;nbsp;God dammit. I can honestly say that I've never seen a language with syntax this ugly. It's much more complicated than it has to be, mostly because it has to retain backwards&amp;nbsp;compatibility. They took an already complex language and added even more complexity to it. I think they should have just let C++ die, and waited for C# to take over. This standard is trying to&amp;nbsp;desperately&amp;nbsp;revive a dieing language by adding random features that other languages have had for years (decades in some cases!). It's like adding&amp;nbsp;jetpacks&amp;nbsp;to a dead horse and saying 'Eh. That should work'.&lt;br /&gt;&lt;br /&gt;Should you use C++0x? Well, if for some reason you &lt;i&gt;have &lt;/i&gt;to write C++, you should use the features introduced in 0x. Otherwise, I don't see why someone would choose C++0x over something like C# or Java. If you are writing something very low-level, object oriented C++ is the wrong language, and if you're writing almost anything higher level, C# and Java are much better choices. The only possible market for C++ I've ever seen is game design, where the language needs objects, as well as low level access for speed.&lt;br /&gt;&lt;br /&gt;So, what do you think of C++0x?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2273111382547104628?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2273111382547104628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/c0x-dead-horse-with-jetpacks.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2273111382547104628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2273111382547104628'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/c0x-dead-horse-with-jetpacks.html' title='C++0x: Dead Horse With Jetpacks'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6118305071311664123</id><published>2011-03-27T16:27:00.000-04:00</published><updated>2011-03-27T16:27:30.378-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source Software'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Why Linux Won't Be A Popular OS Any Time Soon</title><content type='html'>Yesterday, I went out with a few friends for some billiards. Of course, since we're all nerds, we got to talking about open source software for 3 hours at Tim Hortons. This happens pretty much&amp;nbsp;every time&amp;nbsp;I'm in Toronto and hang out with these people. I love it. We play pool, drink coffee, and talk about technology. I enjoy having a group of friends that I can have these conversations with. :)&lt;br /&gt;&lt;br /&gt;Anyway, yesterday we touched on the topic of Linux becoming a popular operating system for the masses. One friend thought that Linux was on it's way to become a popular OS for the average computer user. I disagree. Linux still has the image of an operating system made for&amp;nbsp;experienced&amp;nbsp;computer users. Until &amp;nbsp;they break this image, they will never be&amp;nbsp;accessible&amp;nbsp;to the average user. For example, look at troubleshooting in Linux. &lt;a href="http://www.google.ca/search?rlz=1C1CHMD_enCA401CA401&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=mount+a+harddrive+in+Ubuntu"&gt;Google any common problem&lt;/a&gt; you might have in Linux, and the first page of results will all be&amp;nbsp;cryptic&amp;nbsp;command line tricks to get something to work. The language used is often way over the head of a lot of computer users. The average computer user will be&amp;nbsp;intimidated&amp;nbsp;by this. Until Linux changes this culture of just encouraging people to use command line to solve any problem, they're never going to become popular with average users.&lt;br /&gt;&lt;br /&gt;So is this command line culture ever going to change? Maybe. But not anytime soon. A lot of members in the Linux community probably don't consider making GUIs on top of a few simple commands. Even though this is exactly what it would take to get people to use Linux more. I would argue that this community is not thinking about usability as much as they should be.&lt;br /&gt;&lt;br /&gt;What do you guys think? Do you see this as a problem for Linux? Do you see it being solve any time soon?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6118305071311664123?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6118305071311664123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/why-linux-wont-be-popular-os-any-time.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6118305071311664123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6118305071311664123'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/why-linux-wont-be-popular-os-any-time.html' title='Why Linux Won&apos;t Be A Popular OS Any Time Soon'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6835825786564858293</id><published>2011-03-23T18:14:00.001-04:00</published><updated>2011-03-27T16:28:14.833-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Education'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Should UI be required for a CS degree?</title><content type='html'>Yesterday, I went to a &lt;a href="http://www.uxwaterloo.org/"&gt;uxWaterloo&lt;/a&gt; event. There were a bunch of 7 minute talks on various topics in&amp;nbsp;usability. One of the topics that caught my interest was the question if UI should be a required course for CS degrees?&lt;br /&gt;&lt;br /&gt;Based on the&amp;nbsp;discussion&amp;nbsp;that followed the talk, the majority of people seemed to like the idea of including UI courses in CS degrees as a required component. After all, a lot of people with CS degrees go into the workforce as software developers working on user interfaces. However, CS isn't really about developing usable software. It's not really about developing software period. CS is more about the&amp;nbsp;theoretical&amp;nbsp;study of mathematical computation and information processing.&lt;br /&gt;&lt;br /&gt;Software engineering is the program about developing software.&amp;nbsp;I think that UI should&amp;nbsp;definitely&amp;nbsp;be a core part of a software engineering degree, but I don't think it's a good idea to included it as a core course in CS. CS is already this murky field that's half theoretical and half practical. I think a good solution is to make the theoretical courses required for CS degrees, but offer a wide&amp;nbsp;variety&amp;nbsp;of optional, practical&amp;nbsp;courses. UI, of course, should be in that optional list of courses. Promoting these optional courses is also very important&amp;nbsp;aspect&amp;nbsp;of getting people more&amp;nbsp;interested&amp;nbsp;in UX.&lt;br /&gt;&lt;br /&gt;So what do you guys think? Should UI be a core component of CS degrees?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6835825786564858293?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6835825786564858293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/should-ui-be-required-for-cs-degree.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6835825786564858293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6835825786564858293'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/should-ui-be-required-for-cs-degree.html' title='Should UI be required for a CS degree?'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4371709120698531431</id><published>2011-03-22T00:29:00.000-04:00</published><updated>2011-03-22T00:29:17.165-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Testing with Real Data</title><content type='html'>It's really important to test your applications with real data. I learned this when I worked in QA for &lt;a href="http://www.ramsoft.com/"&gt;Ramsoft Inc&lt;/a&gt;. I found it much easier to spot problems with the product when there were real data values in the application. Certainly you don't need real values to spot glaring errors like segfaults or something, but to find the more subtle&amp;nbsp;bugs, having real data really helps. Some&amp;nbsp;usability&amp;nbsp;problems become very transparent when you use real data instead of "ksodaguhkudhgau".&lt;br /&gt;&lt;br /&gt;When you use real data, you put yourself in your user's shoes. Having this&amp;nbsp;perspective&amp;nbsp;on the application really helps create a better application. You can solve a lot of&amp;nbsp;usability&amp;nbsp;issues by using real data during development and testing, instead of discovering them when you put the application in front of your users for the first time.&lt;br /&gt;&lt;br /&gt;To this end, when I do user interface development at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;, I try to use real data as much as possible. This helps me find ways to improve the UI to make it more usable, and&amp;nbsp;helps me understand the high level purpose of the application better.&amp;nbsp;It also makes for much better demos at the end of our sprints. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4371709120698531431?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4371709120698531431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/testing-with-real-data.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4371709120698531431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4371709120698531431'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/testing-with-real-data.html' title='Testing with Real Data'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1951366427447353338</id><published>2011-03-15T17:46:00.002-04:00</published><updated>2011-03-15T17:47:35.418-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>&lt;3 Software Engineering (and Mockito)</title><content type='html'>At work today, I took a lot of time to write unit tests properly. There was a lot of refactoring,&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;dependency&amp;nbsp;injection&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Mock_object"&gt;mocking&lt;/a&gt;. I was using &lt;a href="http://mockito.org/"&gt;Mockito&lt;/a&gt;&amp;nbsp;as a mocking framework, and I am very impressed so far. The syntax is simply beautiful. Simple, to-the-point,&amp;nbsp;elegant. Check it out:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=5jcBmzCV" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Wow. This is so clean! Look at line 7. It reads like an English sentence. Or Ruby. Go figure. Certainly not like most noisy Java code.&lt;br /&gt;&lt;br /&gt;Today I remembered why I really love software development. It's so cool to see such complicated modules of code working together in such elegant ways. Things like&amp;nbsp;dependency&amp;nbsp;injection and programming to modular interfaces all come together to let you do some really powerful things, like unit testing. I'm so impressed that you can take any random&amp;nbsp;component&amp;nbsp;in a huge, complex system, and be able to run it in isolation. The amount of software engineering it takes to get that to work in a huge system is quite impressive. It reminds me why I'm so&amp;nbsp;fascinated&amp;nbsp;by software engineering.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1951366427447353338?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1951366427447353338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/at-work-today-i-took-lot-of-time-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1951366427447353338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1951366427447353338'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/at-work-today-i-took-lot-of-time-to.html' title='&amp;lt;3 Software Engineering (and Mockito)'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2479486287184092276</id><published>2011-03-14T18:42:00.001-04:00</published><updated>2011-03-14T18:42:31.966-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Object Oriented Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Functional Programming'/><title type='text'>Functional and Object Oriented Programming</title><content type='html'>In the past, I've talked about&amp;nbsp;&lt;a href="http://oleksiderkatch.blogspot.com/2011/02/functional-programming-in-object.html"&gt;integrating functional and object oriented programming&lt;/a&gt;. I still feel like that's a great way to produce clean code.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://squirrel.pl/blog/2011/03/14/two-worlds-learning-functional-thinking-after-oo/"&gt;This article&lt;/a&gt; addresses a few more&amp;nbsp;aspect&amp;nbsp;of functional and object oriented programing, including&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design"&gt;Bottom up vs Top down&lt;/a&gt;&amp;nbsp;design.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Object Oriented programming often encourages thinking about code in a top down way. On the other hand, functional programs tend to be bottom up. I've found this to be pretty accurate in the past when I work with both paradigms.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One particularly interesting point made in the article is about&amp;nbsp;reusability. Specifically, the article claims that bottom up code is&amp;nbsp;inherently&amp;nbsp;more generic because they are built before their exact uses are explicitly planned and encoded. I've never really thought about it like that, but it makes sense. In general, functional languages provide you with a lot of resources to create cleaner, more reusable code. First-class functions are probably the biggest&amp;nbsp;convince&amp;nbsp;they offer for creating clean code. Of course, &lt;a href="http://oleksiderkatch.blogspot.com/2010/11/code-reuse-myth.html"&gt;reusability&amp;nbsp;isn't always the best goal&lt;/a&gt; anyway. Reusable code just happens to also have a lot of other very desirable properties.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2479486287184092276?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2479486287184092276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/function-and-object-oriented.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2479486287184092276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2479486287184092276'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/function-and-object-oriented.html' title='Functional and Object Oriented Programming'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4151972264050709113</id><published>2011-03-10T01:11:00.000-05:00</published><updated>2011-03-10T01:11:49.750-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><title type='text'>J3WAO update</title><content type='html'>It's been a while since I talked about our progress with J3WAO. The biggest update is that we changed the scope of the project. Originally, we were planning on making an RPG with a music-driven battle engine. Instead, we are making more of an action game with the same battle engine. Instead of advancing the story through RPG elements like map exploration, the story will be advanced more like a fighting game. Specifically, the story will be developed through cut scenes or dialog that is between planned battles.&lt;br /&gt;&lt;br /&gt;The reason we decided on this change was to because of time constraints. Our team is more busy than we originally thought, so we don't have time to implement everything that we wanted. We changed the project so that we could release a complete, polished, and content-filled game for the end of the course.&lt;br /&gt;&lt;br /&gt;However, we are still planning to create an RPG version of the game. We will have two complete games to release to market when we are done. That should be very cool. :)&lt;br /&gt;&lt;br /&gt;As for progress, our team is mostly done the battle engine. After we get a few more features ironed out, we can move onto our game engine that will transition between stories and battles. Once that's done, we will focus on content generation, testing, and deployment. It should be an exciting few weeks. There's only 4 more weeks until the course is done, so we're working hard to get this thing out. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4151972264050709113?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4151972264050709113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/j3wao-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4151972264050709113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4151972264050709113'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/j3wao-update.html' title='J3WAO update'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2147067959433652391</id><published>2011-03-04T19:10:00.000-05:00</published><updated>2011-03-04T19:10:40.426-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Driven Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>What Test Driven Development Is Really About</title><content type='html'>This article talks about how &lt;a href="http://drdobbs.com/229218691?cid=RSSfeed_DDJ_All"&gt;Test-Driven Development (TDD) isn't really about testing&lt;/a&gt;; it's about&amp;nbsp;design.&lt;br /&gt;&lt;br /&gt;The goal of TDD is to design the structure of the code before you start programing. Getting better test coverage is really just a side-effect of that. Writing the tests is more of a design activity than a testing activity. It helps you create code that is easier to work with, because you are constantly thinking about how to test your code. And of course, testable code often has other very desirable properties like loose coupling and modular components.&lt;br /&gt;&lt;br /&gt;This new&amp;nbsp;perspective&amp;nbsp;on TDD makes a lot more sense to me. It makes more sense to me that TDD is about design, and up-front thinking about code, instead of following rules on how and when you write your tests and code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2147067959433652391?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2147067959433652391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/what-test-driven-development-is-really.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2147067959433652391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2147067959433652391'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/what-test-driven-development-is-really.html' title='What Test Driven Development Is Really About'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4645377669182835102</id><published>2011-03-03T23:14:00.000-05:00</published><updated>2011-03-03T23:14:38.630-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Swarming!</title><content type='html'>Our project manager at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;&amp;nbsp;shared a link with us the other day about &lt;a href="http://www.infoq.com/news/2011/01/swarming"&gt;Swarming&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is the first time I've heard of this technique and it sounds quite interesting. The idea is that you get all the developers to work (swarm) on a single story, instead of having each developer working on a&amp;nbsp;separate&amp;nbsp;story. The goal is to get more stories fully completed. It's better to have 80% of the features 100% done, instead of having 100% of the features 80% done.&lt;br /&gt;&lt;br /&gt;I also think having many developers focused on a single story encourages&amp;nbsp;collaboration&amp;nbsp;and teamwork. It forces everyone to work together very closely, and this probably leads to getting the story done faster.&lt;br /&gt;&lt;br /&gt;Of course, the story in question needs to be big enough to allow multiple developers to work on it together without stepping on each other's toes. If our J3WAO stories weren't so small, I think it would be interesting to try it there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4645377669182835102?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4645377669182835102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/swarming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4645377669182835102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4645377669182835102'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/swarming.html' title='Swarming!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6051676205144615926</id><published>2011-03-02T23:21:00.000-05:00</published><updated>2011-03-02T23:21:30.201-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RT'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><category scheme='http://www.blogger.com/atom/ns#' term='Education'/><title type='text'>UW REAP</title><content type='html'>Now here's something cool: &lt;a href="http://uwreap.com/"&gt;UW REAP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Basically, companies give students an&amp;nbsp;opportunity&amp;nbsp;to find new, innovative uses for their&amp;nbsp;technology. Students do it as a part time job on top of their course load. Not only do the students get great experience working with very cool technology and companies, they also get paid! The program also contains project management training for the students. Getting this sort of hands-on experience in industry is invaluable for students.&lt;br /&gt;&lt;br /&gt;I think it's a fantastic&amp;nbsp;opportunity&amp;nbsp;and I'm really happy to see Waterloo do something like this. I will definitely be applying for next semester. My only concern is doing this with Real-Time. :S&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6051676205144615926?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6051676205144615926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/uw-reap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6051676205144615926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6051676205144615926'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/uw-reap.html' title='UW REAP'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2589277523302323252</id><published>2011-03-01T00:41:00.000-05:00</published><updated>2011-03-01T00:41:51.166-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Good Software Architects</title><content type='html'>Do you have to be a good software developer to be a good software architect?&lt;br /&gt;&lt;br /&gt;This is an&amp;nbsp;interesting question that came up in a random conversation with a friend. He was of the opinion that a person can be great at high level design, but be bad at actually programming. He claimed that the two activities are far enough apart that someone could be good at one and poor at the other. I'm not sure that I agree.&lt;br /&gt;&lt;br /&gt;Part of high level design is thinking about how the implementation will actually work. A lot of the time, something looks great on paper, but it's a major pain to implement. Sometimes it's not even worth the effort to implement. A good architect should be able to balance these factors, and being a good programmer helps identify these potentially troublesome design choices.&lt;br /&gt;&lt;br /&gt;Further, to be a good software designer, you need to a lot of experience working with growing applications. You need to know how each design decision effects the project as a whole, as well as the developers working on the project. I think the best way to get this experience is from working as a developer. That way, you get to see the good (and bad) ramifications of design decisions first hand.&lt;br /&gt;&lt;br /&gt;Being a good developer also gives the architect a better view of any software project. They know how every detail might work, regardless of whether it's a high level design choice, or a how that design choice might be implemented. This gives the architect a more complete view of the project, and allows them to make a more informed decision.&lt;br /&gt;&lt;br /&gt;I am very curious about what you guys think. Comment to let me know what "camp" you're in and why. I'd love to hear everyone's take on this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2589277523302323252?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2589277523302323252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/good-software-architects.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2589277523302323252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2589277523302323252'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/03/good-software-architects.html' title='Good Software Architects'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3994343279573983023</id><published>2011-02-23T21:21:00.001-05:00</published><updated>2011-02-23T23:18:10.761-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Product Sashimi</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Yesterday, I had a chance to go to my first Agile P2P meeting. The talk was on&amp;nbsp;&lt;a href="http://waterlooagilelean.wordpress.com/2011/02/14/agile-lean-p2p-feb-22-product-sashimi-simple-techniques-to-slice-products-thinly/"&gt;Product Sashimi&lt;/a&gt;, and how to "slice a thin product" by&amp;nbsp;&lt;a href="http://www.jbrains.ca/"&gt;J.B. Rainsberger&lt;/a&gt;. The main point Rainsberger was making was that there are&amp;nbsp;benefits&amp;nbsp;to be had by breaking up a large project into several smaller projects.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;He started by defining 3 values of software. The first is features. This is what most business people refer to when they talk about business value. The second value of software is design. If a piece of software is poorly designed, the cost to add features to the system increases very quickly. Eventually, the cost of adding new features surpasses the cost to simply rewrite the software from scratch! Rainsberger&amp;nbsp;affectionately&amp;nbsp;refers&amp;nbsp;to this as "Product heat death". I lol'd. The third, and main value Rainsberger talked about was how long before a customer can say "not what I wanted".&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The sooner we get to that point, the sooner we know that the project is off track. He also mentioned the&amp;nbsp;80/20 rule for software features. Essentially, 80% of users will only use 20% of the features. The version&amp;nbsp;that he stated was that only 20% of your features will be used often. The other 80% will be used rarely.&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Rainsberger says that if you "slice" thin products, you are more likely to get to the "not what I wanted" stage sooner. If you get to the "not what I want" stage sooner, you can catch those 80% less useful features earlier, and redirect your developers to the other 20%. Now this isn't to say that those 80% aren't important, but it does mean that you shouldn't put as much priority and emphasis on them.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;He went over a few interesting techniques for breaking a product up into independent project regions. He also talked about how important it is to skin use-cases/examples into the simplest versions possible. Usually this involves reasonable (and sometimes&amp;nbsp;unreasonable) sacrifices in&amp;nbsp;usability. These simplifications let you skin stories into their simplest versions. The extra&amp;nbsp;usability features can be added in later, once they're prioritized by the software users. They key is to get a full, working piece of software out to the users so they can tell you that you did it wrong. Although the software might be short on features, it covers the full breadth of the project. I thought this was one of the most useful things I learned that night. I&amp;nbsp;definitely&amp;nbsp;think we could have applied these techniques to j3wao, but I'm sure we will in the future.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;In general, it was a great first Agile P2P. I'll be sure to be involved in more of these sorts of events in the future. In particular, &lt;a href="http://www.uxwaterloo.org/"&gt;uxWaterloo&lt;/a&gt; sounds quite interesting. I am really glad I discovered these community events. :)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Also, 528&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3994343279573983023?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3994343279573983023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/product-sashimi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3994343279573983023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3994343279573983023'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/product-sashimi.html' title='Product Sashimi'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4379219220971907581</id><published>2011-02-21T12:01:00.001-05:00</published><updated>2011-02-21T12:45:40.290-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>Comparing IBM's Watson with Wolfram|Alpha</title><content type='html'>&lt;a href="http://blog.stephenwolfram.com/2011/01/jeopardy-ibm-and-wolframalpha/"&gt;Here's an interesting&amp;nbsp;comparison&amp;nbsp;of Watson and Wolfram|Alpha&lt;/a&gt;. The article is by Stephen Wolfram, one of the designers of &lt;a href="http://www.wolframalpha.com/"&gt;Wolfram|Alpha&lt;/a&gt;.&amp;nbsp;It's interesting to see how they try to tackle the same problem in different ways.&lt;br /&gt;&lt;br /&gt;Here's a great visual summary of the process:&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://blog.stephenwolfram.com/data/uploads/2011/01/watsonalpha.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="350" src="http://blog.stephenwolfram.com/data/uploads/2011/01/watsonalpha.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://blog.stephenwolfram.com/2011/01/jeopardy-ibm-and-wolframalpha/"&gt;source&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4379219220971907581?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4379219220971907581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/comparing-ibms-watson-with-wolframalpha.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4379219220971907581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4379219220971907581'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/comparing-ibms-watson-with-wolframalpha.html' title='Comparing IBM&apos;s Watson with Wolfram|Alpha'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5231387296099663849</id><published>2011-02-20T15:47:00.000-05:00</published><updated>2011-02-20T15:47:24.492-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android vs iPhone development</title><content type='html'>I stumbled upon &lt;a href="http://www.paullegato.com/blog/iphone-android/"&gt;this article&lt;/a&gt; talking about the pros and cons of developing for the Android and iPhone platforms. It's an interesting read, especially if you've had some experience developing mobile apps. I agree with most of the points made in the article.&lt;br /&gt;&lt;br /&gt;In the 2 months I've been working on j3wao, I've already encounter a bunch of the Android issues the article talks about. Probably the biggest complication we've hit so far is the huge disparity of device screen resolutions. Targeting all Android phones is a nightmare for this reason alone. Another major issue is the emulator. It takes something like 2-3 minutes to start up and load the home screen. Every operation on the phone is incredibly&amp;nbsp;laggy, even basic things like doing the unlock slide. We might have a lot of issues testing our game on the emulator because of this issue.&lt;br /&gt;&lt;br /&gt;Unfortunately, we are (realistically) stuck with Android-based development and testing for j3wao. While we plan to deploy to iOS devices, Android will probably be the primary target for development and testing. There's more financial commitment to developing for iPhone. At the very least, we need a $99 licence fee. &amp;nbsp;There's also the fact that we need Macs to develop and test on. This is a major inconvenience when we have 4 developers for this project. You get what you pay for, I guess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5231387296099663849?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5231387296099663849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/android-vs-iphone-development.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5231387296099663849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5231387296099663849'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/android-vs-iphone-development.html' title='Android vs iPhone development'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1869397077051413627</id><published>2011-02-16T18:36:00.000-05:00</published><updated>2011-02-16T18:36:55.192-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>An Insight Into Watson's Brain</title><content type='html'>I found a neat &lt;a href="http://theswimmingsubmarine.blogspot.com/2011/02/how-ibms-deep-question-answering.html"&gt;article&lt;/a&gt;&amp;nbsp;briefly discussing how Watson derives solutions. A much more&amp;nbsp;in-depth&amp;nbsp;analysis can be found &lt;a href="http://www.stanford.edu/class/cs124/AIMagzine-DeepQA.pdf"&gt;here&lt;/a&gt;. It's amazing to see so many different&amp;nbsp;aspects&amp;nbsp;of computer science come together to create something like Watson. Most, if not all, the techniques used by Watson have been around for years now, but Watson is probably one of the first to combine them all in such a powerful way. It probably helps that it runs on specialized (and expensive) IBM hardware. The impressive performance of Watson is a great milestone in artificial intelligence and computer science. It's a good time to be in CS. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1869397077051413627?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1869397077051413627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/insight-into-watsons-brain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1869397077051413627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1869397077051413627'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/insight-into-watsons-brain.html' title='An Insight Into Watson&apos;s Brain'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3889142610358313654</id><published>2011-02-15T18:01:00.001-05:00</published><updated>2011-02-15T18:01:23.267-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Machine Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><title type='text'>Medical Applications of Watson</title><content type='html'>After last night's impressive performance from Watson, a lot of people are talking about future applications of a system like Watson. I am excited to see how it does today. Hopefully it will do even better this time around.&lt;br /&gt;&lt;br /&gt;A particularly interesting application of an AI system like Watson is medical diagnosis. Watson could be used as a comprehensive medical dictionary, capable of matching a set of symptoms to a condition. This sort of "diagnosis suggestion" to physicians could prove to be very useful. It would ensure that every possible disease is checked against, and nothing is overlooked.&lt;br /&gt;&lt;br /&gt;Of course, a huge problem would be information filtering. There are a lot of possible causes to a soar throat and a cough.&amp;nbsp;&lt;a href="http://oleksiderkatch.blogspot.com/2011/01/healthcare-data-management.html"&gt;I've mentioned a this a few times &lt;/a&gt;before now. Health care practitioners usually don't have time to do a comprehensive scan of everything that may or may not be relevant to a case. I've been told that most&amp;nbsp;physicians prefer something like "history of cancer" over a huge record of medical history. I think one of the largest goals of technology in healthcare will be to deliver&amp;nbsp;concise, valuable information to medical practitioners, while ensuring that nothing important is missed.&lt;br /&gt;&lt;br /&gt;A system like Watson might also be used as a filtering system to&amp;nbsp;alleviate&amp;nbsp;this problem. The system could query for potential causes, and then filter them based on probability. Doctor's could then walk down the list, checking for the possible problems. &amp;nbsp;Of course, this system wouldn't be put to use every time someone goes to the doctor. It would be reserved for "harder" cases, where the doctor doesn't have an&amp;nbsp;immediately&amp;nbsp;obvious idea of how to proceed.&lt;br /&gt;&lt;br /&gt;It'll be interesting to see how long before we see ramifications of Watson show up in the healthcare field. I, for one, am looking forward to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3889142610358313654?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3889142610358313654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/medical-applications-of-watson.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3889142610358313654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3889142610358313654'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/medical-applications-of-watson.html' title='Medical Applications of Watson'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7403987052668919553</id><published>2011-02-13T00:16:00.000-05:00</published><updated>2011-02-13T00:16:36.776-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Object Oriented Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Functional Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Functional Programming In Object Oriented Development</title><content type='html'>In first year, we learned about functional programming. We learned about the evils of mutation, and the power of stateless programming. Unfortunately, everyone abandoned functional programming the second they got the chance. They picked Java (or C++ (OR EVEN C!)) instead of Scheme because they were more comfortable with imperative programming.&lt;br /&gt;&lt;br /&gt;The problem is that most functional languages don't have great support for industry-strength development. They don't let you quickly build GUIs, or have built in support for design patterns. Granted they don't need a lot of support for design patterns, since the language itself makes them obsolete. All this really means though, is that functional programming languages shouldn't be your base language for your application. It is still a good idea to have small functional modules, or even better, to just code with functional programming in mind when you write your imperative code.&lt;br /&gt;&lt;br /&gt;I realize that imperative and functional are somewhat conflicting paradigms. One revolves around&amp;nbsp;modifying&amp;nbsp;state, and the other tries to avoid it as much as possible. Like most things, it's a balance. Not every object needs to be mutable, and not every function needs to be recursive.&lt;br /&gt;&lt;br /&gt;Here's a few things that I have found useful in imperative programing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Immutable Variable&lt;/b&gt;&lt;br /&gt;It really helps to have variables that don't change their values after initialization. If you need to change a variable's value, you can make a new variable. This makes debugging much simpler, and it's easier to think about your code. However, this doesn't always make sense in imperative programming. If you are making a counter, this obviously doesn't apply, and making counters the "functional" way is&amp;nbsp;unintuitive. On the other hand, if you are&amp;nbsp;modifying&amp;nbsp;a string in several ways, several immutable variables might make sense:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=cK1fqpJr" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Code like this is much simpler to test, since you can easily see the progress of the transformation of your string.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Immutable Objects&lt;/b&gt;&lt;br /&gt;It makes sense for some object to be immutable. This applies well to plain data objects, or objects that simply aggregate related information. Immutable objects are&amp;nbsp;inheritable&amp;nbsp;thread-safe&amp;nbsp;and simpler to code. You don't need to worry about coding complicated methods like clone (in Java). However, if you make every object immutable, you end up with really awkward looking object oriented code. Again, it's a&amp;nbsp;balance.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=APZMFpD4" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Use Recursion&lt;/b&gt;&lt;br /&gt;Some objects are naturally recursive, so it makes sense that operations on them should be recursive. This makes the code very natural. However, you shouldn't use tail recursion in imperative programming. You are essentially writing an awkward for loop. In fact, some compilers will optimize tail recursion and for loops into the same thing.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://pastebin.com/embed_iframe.php?i=Kvp3uPY0" style="border: none; width: 100%;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Avoid side-effects&lt;/b&gt;&lt;br /&gt;Functions that don't modify state are much simpler to think about. They also make&amp;nbsp;multi-threading&amp;nbsp;those functions much simpler, since you minimize the amount of ways to change values. This is a hard rule to follow gracefully in a paradigm that revolves around methods changing state. The key is that not every function needs to change state. You have to choose side-effect free methods carefully. Static functions are usually great candidate for this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Referential&amp;nbsp;Transparency&lt;/b&gt;&lt;br /&gt;This is just a fancy word for a function that doesn't depend on anything other than it's parameters. If I call the function with the same parameters, I should get back the same result, regardless of the outside circumstances. Writing functions like this makes threading much simpler, since these functions don't depend on outside state. Functions like these are also very simple to test since they don't have any external&amp;nbsp;dependencies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are just a few things to keep in mind when you are writing code in object oriented code. It'll make your imperative code much cleaner and simpler to code, test, and debug.&lt;br /&gt;&lt;br /&gt;&amp;lt;/somewhat productive&amp;gt;&lt;br /&gt;&amp;lt;Watching Troll 2&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7403987052668919553?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7403987052668919553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/functional-programming-in-object.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7403987052668919553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7403987052668919553'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/functional-programming-in-object.html' title='Functional Programming In Object Oriented Development'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3394538085407448756</id><published>2011-02-11T18:46:00.002-05:00</published><updated>2011-02-11T18:46:53.423-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Interviews'/><title type='text'>More Interview Questions!</title><content type='html'>For all you co-op kids, &lt;a href="http://www.programminginterview.com/content/practice-questions"&gt;here's &lt;/a&gt;a nice list of interview questions. Hope this helps you get that dream job! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3394538085407448756?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3394538085407448756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/more-interview-questions.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3394538085407448756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3394538085407448756'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/more-interview-questions.html' title='More Interview Questions!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2865428292649592408</id><published>2011-02-10T00:42:00.001-05:00</published><updated>2011-02-10T00:42:56.869-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones'/><title type='text'>Smartphone Medical Devices</title><content type='html'>Check &lt;a href="http://gizmodo.com/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+gizmodo/full+(Gizmodo)#!5756462/soon-your-doctor-will-pull-out-his-phone-to-give-you-an-ultrasound"&gt;this&lt;/a&gt; out. A company called MobiUS released a very cool, and very portable, ultrasound system. The system is primarily comprised of the wand and a smartphone. Because both of these components are so small and portable, the entire system is very mobile and inexpensive to use. Further, because the device stores the data &amp;nbsp;in a phone, it makes sharing the data very easy.&lt;br /&gt;&lt;br /&gt;I think it's really interesting to see all the new applications coming out of smartphones. I'd like to see what other innovations we might see from smartphones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2865428292649592408?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2865428292649592408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/smartphones-medical-devices.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2865428292649592408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2865428292649592408'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/smartphones-medical-devices.html' title='Smartphone Medical Devices'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2970831703902096691</id><published>2011-02-08T23:18:00.000-05:00</published><updated>2011-02-08T23:18:26.604-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Ignite Waterloo</title><content type='html'>I just got back from &lt;a href="http://www.ignitewaterloo.ca/"&gt;Ignite Waterloo&lt;/a&gt;, a set of 5-minute talks on everything and anything "geek culture"(whatever that means). The variety of topics was excellent. We went from &lt;a href="http://en.wikipedia.org/wiki/Steampunk"&gt;Steampunk&lt;/a&gt;&amp;nbsp;monsters, to problems in Africa, to &lt;a href="http://en.wikipedia.org/wiki/Craniometry"&gt;Craniometry&lt;/a&gt;, to homelessness, to&amp;nbsp;tequila. The breadth of topics was great. &lt;a href="http://www.ignitewaterloo.ca/2011/02/ignite-5-presentations/"&gt;Here's&lt;/a&gt; a full list. If you didn't like a topic, a new one was just 5 minutes away. It was a fantastic event, and I strongly encourage that everyone go to the next one (probably June-ish).&lt;br /&gt;&lt;br /&gt;Also, they had a live twitter wall and a marshmallow sculpting contest. Awesome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2970831703902096691?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2970831703902096691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/ignite-waterloo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2970831703902096691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2970831703902096691'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/ignite-waterloo.html' title='Ignite Waterloo'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2359414203393182939</id><published>2011-02-07T19:00:00.001-05:00</published><updated>2011-02-09T19:21:24.168-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='RT'/><title type='text'>More on GWT</title><content type='html'>I've been using &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;&amp;nbsp;for over a month now at work. It really saves time when it comes to creating AJAX applications because it handles so much for you. For example, it can handle page transition and history very gracefully for you. It also has support for things like RPC and using JSON data.&lt;br /&gt;&lt;br /&gt;However, if you are building an application that needs to be heavily styled, GWT might not be your best choice. First, the selection of GWT widgets are quite limited. Last time I checked, they only had 20ish standard widgets. Although there seem to be plenty of 3rd party widgets, I am unimpressed with their general quality and &lt;a href="http://oleksiderkatch.blogspot.com/2011/02/pet-peeve-582-bad-documentation.html"&gt;documentation&lt;/a&gt;. To make things worse, styling GWT widgets is a more complicated because not everything gets translated to native HTML tags. Some of the widgets are implemented as nested divs, and this certainly seems to make styling much harder. In general, the HTML output of GWT code is less clean than hand-coded HTML. At work, I had to take the style sheets made by the designer and try to apply them to the GWT-generated HTML and it was sort of a pain. I think part of the problem is that I'm not a web designer by any means. I had to basically (re)learn HTML and CSS. :/&lt;br /&gt;&lt;br /&gt;In other news, course enrollment is tomorrow. I am currently pre-enrolled in &lt;a href="http://www.student.cs.uwaterloo.ca/~cs452/"&gt;CS 452: Real-time&lt;/a&gt;, but I don't know if I want to do it or not. The course load is&amp;nbsp;ridiculous, but you learn a lot. If I do choose to take it, I would be able to take 4 courses that term thanks to Arts 304 this semester.&amp;nbsp;Unfortunately, next semester in the only time I can take it for the rest of my academic career. :/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2359414203393182939?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2359414203393182939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/more-on-gwt.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2359414203393182939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2359414203393182939'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/more-on-gwt.html' title='More on GWT'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2897801809530929413</id><published>2011-02-03T23:35:00.000-05:00</published><updated>2011-02-03T23:35:03.093-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones'/><title type='text'>J3WAO Game</title><content type='html'>So I realize that I haven't talked about the actual game we want to create for J3WAO.&lt;br /&gt;&lt;br /&gt;Our game is a music driven RPG. The player's attack are linked to music and interactive cues on the screen. The player needs to tap (or swipe!) the screen at the right time and place, based on the music. The attack&amp;nbsp;mechanics&amp;nbsp;are very much &lt;a href="http://osu.ppy.sh/"&gt;osu!&lt;/a&gt; inspired. We are also working on a storyline and a&amp;nbsp;&lt;a href="http://www.ffshrine.org/ffta/mapthumb.jpg"&gt;Final Fantasy Tactics style map&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We are planning to release to both iPhone and Android. We also have plans to release a desktop (web-based) version. We are using &lt;a href="http://en.wikipedia.org/wiki/Adobe_Integrated_Runtime"&gt;Adobe AIR&lt;/a&gt;&amp;nbsp;to give us the&amp;nbsp;flexibility&amp;nbsp;to deploy to all these platforms with&amp;nbsp;minimal effort. We get to use &lt;a href="http://en.wikipedia.org/wiki/Adobe_Flash"&gt;Adobe Flash&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/ActionScript"&gt;Actionscript 3&lt;/a&gt; for development. These tools have great support for game design, so using this platform will probably save us a lot of development time.&lt;br /&gt;&lt;br /&gt;Our first milestone release (of the three scheduled for the course) is next Thursday. Our goal is to have a simple proof of concept demo out by then. I'll try to post some screenshots of the game when it gets more presentable. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2897801809530929413?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2897801809530929413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/j3wao-game.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2897801809530929413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2897801809530929413'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/j3wao-game.html' title='J3WAO Game'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7726476548390529422</id><published>2011-02-02T18:02:00.000-05:00</published><updated>2011-02-02T18:02:16.259-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source Software'/><title type='text'>Pet Peeve #582: Bad Documentation</title><content type='html'>At work, I've been using &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;, and for the most part I've really enjoyed it. Occasionally though, I get frustrated by some things. For example&amp;nbsp;&lt;a href="http://code.google.com/p/google-web-toolkit/wiki/AutoBean"&gt;AutoBean&lt;/a&gt;, a JSON-to-Java object parser for GWT, has almost no documentation. The&amp;nbsp;&lt;a href="http://code.google.com/p/google-web-toolkit/wiki/AutoBean"&gt;Google Code wiki page&lt;/a&gt;&amp;nbsp;is&amp;nbsp;literal&amp;nbsp;one of the only pieces of documentation out there, and it's quite bare. :/&lt;br /&gt;&lt;br /&gt;Today I had to parse JSON lists using AutoBean. Here is the only relevant statement I was able to find:&lt;br /&gt;&lt;br /&gt;&lt;div style="max-width: 65em;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: x-small;"&gt;List and Set properties are encoded as JSON lists. For example, a&amp;nbsp;&lt;tt&gt;List&amp;lt;Person&amp;gt;&lt;/tt&gt;&amp;nbsp;would be encoded as:&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="pun"&gt;[&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str"&gt;"name"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str"&gt;"John Doe"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str"&gt;"name"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str"&gt;"Jim Smith"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun"&gt;}]&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;No information on how to go the other. Not cool. I had to do a lot of experimenting to find out that AutoBean only accepts something like this right now:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 3px; font-size: 12px; margin-bottom: 0px; margin-left: 2em; margin-right: 0px; margin-top: 0px; padding-bottom: 0.5em; padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.5em;"&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span class="pun" style="color: #666600;"&gt;{ people=[&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"name"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"John Doe"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;,&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;{&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"name"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;:&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="str" style="color: #008800;"&gt;"Jim Smith"&lt;/span&gt;&lt;span class="pln" style="color: black;"&gt; &lt;/span&gt;&lt;span class="pun" style="color: #666600;"&gt;}]}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Hopefully this will be improved for the next release.&lt;br /&gt;&lt;br /&gt;Also, there were very few code examples online. Open source software can be really cool in that they provide a lot of really useful tools, but their lack of support is quite frustrating. This is not to say that all open source software has horrible documentation, but in my&amp;nbsp;experience, it is usually worse than the Proprietary&amp;nbsp;equivalents. Just take a look at &lt;a href="http://msdn.microsoft.com/en-ca/default"&gt;MSDN&lt;/a&gt;&amp;nbsp;vs &lt;a href="http://download.oracle.com/javase/"&gt;Oracle's Java documentation&lt;/a&gt;.&amp;nbsp;Thankfully, a co-worker helped me find a workaround that he had used in a different project.&lt;br /&gt;&lt;br /&gt;Anyway, time to learn everything to there is to learn about Flash/AIR/ActionScript 3. Our J3WAO sprint ends tomorrow, and we still have a lot (all) of our development left to do. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7726476548390529422?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7726476548390529422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/pet-peeve-582-bad-documentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7726476548390529422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7726476548390529422'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/02/pet-peeve-582-bad-documentation.html' title='Pet Peeve #582: Bad Documentation'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6048525755227615127</id><published>2011-01-30T01:38:00.000-05:00</published><updated>2011-01-30T01:38:22.157-05:00</updated><title type='text'>Lumosity and Brain Training</title><content type='html'>I've decided to start doing &lt;a href="http://www.lumosity.com/"&gt;Lumosity&lt;/a&gt;,&amp;nbsp;a brain train program. Partially because it's fun, and partially because I would love to sharpen my brain for certain things. In particular, my short term memory sucks sometimes. We'll see how it goes. I wonder if I'll be able to notice a difference in my day-to-day life after doing their daily 10 minute "brain workouts" for a month or so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6048525755227615127?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6048525755227615127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/lumosity-and-brain-training.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6048525755227615127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6048525755227615127'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/lumosity-and-brain-training.html' title='Lumosity and Brain Training'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-688488019372051550</id><published>2011-01-27T23:33:00.000-05:00</published><updated>2011-01-27T23:33:12.756-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><title type='text'>Introduction to Actionscript 3</title><content type='html'>I am doing a crash course in Actionscript 3 for J3WAO. It's fun. It's going to be a challenge to learn the language this fast. We will also need to know a good amount of the language features to implement our somewhat ambitious game.&lt;br /&gt;&lt;br /&gt;First impression with the language are not very good. Where are my abstract classes? Dammit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-688488019372051550?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/688488019372051550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/introduction-to-actionscript-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/688488019372051550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/688488019372051550'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/introduction-to-actionscript-3.html' title='Introduction to Actionscript 3'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4283132607142251253</id><published>2011-01-26T18:30:00.000-05:00</published><updated>2011-01-26T18:30:08.233-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Lesson Of The Day</title><content type='html'>The "A" in &lt;a href="http://en.wikipedia.org/wiki/Ajax_(programming)"&gt;AJAX&lt;/a&gt; is important. Don't design an AJAX user interface thinking in terms of synchronized calls to servers. :P Bad things will happen when you actually connect your UI to that server. :P I learned this at work today. Apparently this is a fairly common problem for people writing AJAX code for the first time. Luckily, it didn't take long to fix.&lt;br /&gt;&lt;br /&gt;On a related, the user interface I'm writing at work is now driving part of the&amp;nbsp;backed. I am satisfied. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4283132607142251253?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4283132607142251253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/lesson-of-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4283132607142251253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4283132607142251253'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/lesson-of-day.html' title='Lesson Of The Day'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1839035352744415963</id><published>2011-01-25T18:08:00.000-05:00</published><updated>2011-01-25T18:08:11.685-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Programming Achievements</title><content type='html'>This is a pretty funny article: &lt;a href="http://blog.whiletrue.com/2011/01/what-if-visual-studio-had-achievements/"&gt;What if Visual Studio had&amp;nbsp;achievements&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Here are the ones I have:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;Shotgun Debugging&lt;/b&gt;&amp;nbsp;– 5 Consecutive Solution Rebuilds with a single character change&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;The Portal&lt;/b&gt;&amp;nbsp;– Created a circular project dependency &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&amp;lt;- This was a silly mistake and I fixed it. :)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;Pasta Chef&lt;/b&gt;&amp;nbsp;– Created a class with more than 100 fields, properties or methods &amp;lt;- Auto-generated LINQ code. :P&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;The Poet&lt;/b&gt;&amp;nbsp;– Written a source file with more than 10,000 lines &amp;lt; - Again, auto-generated LINQ code.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;Highway to Hell&lt;/b&gt;&amp;nbsp;– Successfully created a WCF service&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;The Right Way&lt;/b&gt;&amp;nbsp;– Test method is longer than the tested method&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;The Defender&lt;/b&gt;&amp;nbsp;– Checked every argument for null exceptions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 24px;"&gt;&lt;b&gt;The Cloner&lt;/b&gt;&amp;nbsp;– Copy-pasted more than 50 lines&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 24px;"&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Which ones do you have (and are willing to admit :P)?&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1839035352744415963?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1839035352744415963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/programming-achievements.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1839035352744415963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1839035352744415963'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/programming-achievements.html' title='Programming Achievements'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-124137103918898438</id><published>2011-01-23T18:44:00.000-05:00</published><updated>2011-01-23T18:44:32.589-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>Healthcare Data Management</title><content type='html'>&lt;a href="http://dkopec.blogspot.com/2011/01/future-i-can-see-it.html"&gt;A friend&lt;/a&gt; showed me this video about&amp;nbsp;visualizing&amp;nbsp;medical data:&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/pqTkuaAykBw" title="YouTube video player" type="text/html" width="500"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Some very cool images. I wasn't aware that CT scanners were &lt;i&gt;that&lt;/i&gt; powerful. Also, that virtual table is pretty sick. Screw the iPad.&lt;br /&gt;&lt;br /&gt;I think that the speaker in the video brings up very interesting problem hitting healthcare informatics right now: too much information. I've &lt;a href="http://oleksiderkatch.blogspot.com/2011/01/watson-continues-to-kick-ass.html"&gt;mentioned before&lt;/a&gt; that&amp;nbsp;physicians&amp;nbsp;don't have time to look at every detail in your medical record. They need concise summaries of all this data. I think that filtering this data in an intelligent way will be a great application of computer science in the future. I think that'd be a cool area for me to pursue later in career.&lt;br /&gt;&lt;br /&gt;I'm going to go buy a CT scanner and scan some lions now. ttyl.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-124137103918898438?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/124137103918898438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/healthcare-data-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/124137103918898438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/124137103918898438'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/healthcare-data-management.html' title='Healthcare Data Management'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/pqTkuaAykBw/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4358902606027147666</id><published>2011-01-21T12:45:00.000-05:00</published><updated>2011-01-21T12:45:43.256-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genetic Algorithms'/><title type='text'>Another Cool Genetic Algorithm</title><content type='html'>Here's another one of those &lt;a href="http://megaswf.com/serve/102223/"&gt;"car" genetic algorithm&lt;/a&gt;. I should really get on that GA challenge with Mike. Any ideas for a challenge for us to solve with a GA? &amp;nbsp;Perhaps we can do something like this car example. We could have a&amp;nbsp;predetermined&amp;nbsp;"track" and see which algorithm can generate a car that can complete that track faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4358902606027147666?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4358902606027147666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/another-cool-genetic-algorithm.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4358902606027147666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4358902606027147666'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/another-cool-genetic-algorithm.html' title='Another Cool Genetic Algorithm'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5902329004830630699</id><published>2011-01-18T18:40:00.000-05:00</published><updated>2011-01-18T18:40:26.919-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='J3WAO'/><title type='text'>Introducing J3WAO</title><content type='html'>The Arts 304 project is coming along very nicely. We have a few really great ideas out there, and we should be deciding on one on Thursday. I am really impressed with the ideas we came up with so far. I also really like how our team is interacting. Everyone has an important contribution to the project, and everyone seems to be interacting really well. Things like duets in the Comfy! :P Our group even has an unofficial name: J3WAO (initials of the members). I am really excited to see how this project unfolds! :)&lt;br /&gt;&lt;br /&gt;There are a lot of interesting challenges from a&amp;nbsp;technical&amp;nbsp;point of view.&amp;nbsp;Specifically, one of our main goals is to deploy to multiple platforms. Jesse and I and currently doing research on possible platforms and tools that would make this easier. Part of the problem is that neither of us have ever developed for mobile devices before. We also need to look at available game frameworks. Since we are on a very tight timeline, we don't have time to reinvent too many things. Lots of stuff to learn! Wooo! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5902329004830630699?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5902329004830630699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/introducing-j3wao.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5902329004830630699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5902329004830630699'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/introducing-j3wao.html' title='Introducing J3WAO'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8150999591335823847</id><published>2011-01-15T15:30:00.000-05:00</published><updated>2011-01-15T15:30:52.757-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><title type='text'>Watson continues to kick ass</title><content type='html'>During a practice jeopardy round, &lt;a href="http://www.wired.com/epicenter/2011/01/ibm-watson-jeopardy/"&gt;IBM's Watson kicked some human ass.&lt;/a&gt;&amp;nbsp;This some very impressive stuff. I hope to see Watson continue to do this well in the official round in&amp;nbsp;February.&lt;br /&gt;&lt;br /&gt;I was particularly intrigued by the healthcare applications of a system like this. According to Dr. John Kelly, IBM VP, this is exactly where they will take this technology next. Watson is capable of scanning millions of pages of text into it's "brain" in seconds. They could use this to scan every medical text in the world, and make it available through one resource. Of course, presenting that much information in a sensible and meaningful way is the real problem. Doctors don't need to see that much information at once. They simply don't have time to filter through that much knowledge, even if it's potentially useful. It's like if I have a problem with Java, and you give me every book ever written on Java. The information can certainly help solve my problem, but it's not a very&amp;nbsp;efficient&amp;nbsp;way to find the solution.&lt;br /&gt;&lt;br /&gt;I think a future application of AI will be to filter through this information and present it in a concise and meaningful way. I think that would an awesome direction for AI, though I think we might be a few years away from something like that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8150999591335823847?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8150999591335823847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/watson-continues-to-kick-ass.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8150999591335823847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8150999591335823847'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/watson-continues-to-kick-ass.html' title='Watson continues to kick ass'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5515065783540200936</id><published>2011-01-14T18:14:00.000-05:00</published><updated>2011-01-14T18:14:26.802-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>UI Driven Architecture</title><content type='html'>At few days ago at work, my coworkers and I realized how powerful UI driven architecture can be. We had back end code (partially) written, but once we started designing the UI, we discovered that a lot of it had to be changed. That cost us a lot of time. It's really hard to design a system unless you know&amp;nbsp;precisely&amp;nbsp;how it will be used. Designing the back end first can create all sorts of problems when moving on to the UI work. Sometimes you find that the back end doesn't interact with the UI in a clean way. Instead, you should design the UI first (even if it's just a prototype), and let that inform the back end development. This is&amp;nbsp;essentially&amp;nbsp;an argument for top-down, user interface driven design. This seems to be especially important if your UI has a lot of workflow based interaction. Thinking about validation can also save a lot of time. You have to make sure your API can handle whatever the UI wants to do in a natural way. It's certainly an interesting approach to designing&amp;nbsp;software, and I think I'll be doing it in the future.&lt;br /&gt;&lt;br /&gt;In other news, I am really excited for ARTS 304. There is going to be a lot of learning going on in the next few weeks. I don't think anyone in our team has ever done mobile development before. This should be fun. :)&lt;br /&gt;&lt;br /&gt;I also just finished my first sprint at work. Exciting stuff! I am really enjoying my time at &lt;a href="http://www.karoshealth.com/"&gt;Karos&lt;/a&gt;. The software we're working on is super cool, and the people are hilarious. Good times to be had all around.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5515065783540200936?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5515065783540200936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/ui-driven-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5515065783540200936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5515065783540200936'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/ui-driven-architecture.html' title='UI Driven Architecture'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5131915619636760915</id><published>2011-01-12T00:36:00.000-05:00</published><updated>2011-01-12T00:36:45.095-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Oranges</title><content type='html'>Who do they think they are? I eat one god damn orange and my fingers smell like&amp;nbsp;citrus&amp;nbsp;for weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5131915619636760915?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5131915619636760915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/oranges.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5131915619636760915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5131915619636760915'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/oranges.html' title='Oranges'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1386332045898766309</id><published>2011-01-11T18:34:00.000-05:00</published><updated>2011-01-11T18:34:57.610-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><title type='text'>GWT And Why It's Awesome</title><content type='html'>I am enjoying using &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt; at work. GWT basically takes Java code and compiles it into AJAX-capable Javascript. GWT lets you use nice Eclipse features (like code completion and various wizards) and gives you a lot more compiler&amp;nbsp;safety&amp;nbsp;(like type safety).Of course if you want to handwrite some Javascript, you can do so using the &lt;a href="http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html"&gt;Javascript Native Interface&lt;/a&gt;&amp;nbsp;(JSNI). One particularly useful feature of GWT is &lt;a href="http://code.google.com/p/google-web-toolkit/wiki/AutoBean"&gt;AutoBean&lt;/a&gt;. AutoBean lets you automatically create Java objects from &lt;a href="http://en.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt; input. It handles all the parsing details for you. :)&lt;div&gt;&lt;br /&gt;&lt;div&gt;When you're ready to deploy, GWT will compile your Java into optimized, cross-browser(!) Javascript. It actually creates a&amp;nbsp;separate version of the code for every browser, and then loads the correct one at runtime.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;GWT is still quite young, so there are still a few bugs hiding. Today we found a (minor) bug that forced us to change our JSON format. Apparently, AutoBean doesn't handle '-'(dash) characters in JSON very well, even though it's a legal JSON character. GWT will try to create a Java/Javascript variable name with a '-' in it, and this causes parsing exceptions. I'll report this at some point soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even with a few rough edges, GWT seems like it really accelerates web development. You should give it a try.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1386332045898766309?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1386332045898766309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/gwt-and-why-its-awesome.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1386332045898766309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1386332045898766309'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/gwt-and-why-its-awesome.html' title='GWT And Why It&apos;s Awesome'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6908272819452300636</id><published>2011-01-10T17:42:00.002-05:00</published><updated>2011-01-10T17:44:04.059-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming Languages'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><category scheme='http://www.blogger.com/atom/ns#' term='Algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>Sorting Algorithms In Your Favorite Languages</title><content type='html'>I found this cool &lt;a href="http://stringoftheseus.com/blog/2011/01/10/api-sorting-algorithms/"&gt;article&lt;/a&gt; about which sorting algorithms are used by the major development languages. It's an interesting read. During most development you don't actually need to care, but it's interesting to know. There are a few times where it actually matters though.&lt;br /&gt;&lt;br /&gt;For example, if your real-time application requires something to run in O(n*log(n)), you can't rely on your language's built-in &lt;a href="http://en.wikipedia.org/wiki/Quicksort"&gt;quick sort&lt;/a&gt;. If sorting is the bottle-neck in your code, and you know something about the input(say that the numbers are bounded by some number, k), then you can optimize that code by implementing a non-comparison model sorting algorithm, like &lt;a href="http://en.wikipedia.org/wiki/Counting_sort"&gt;counting sort&lt;/a&gt; (O(n+k)). Probably the most useful thing I learned in CS 241 is that if you know something about your input, you can usually do much better than the generic algorithms.&lt;br /&gt;&lt;br /&gt;In other news, work is going really well. I am learning a lot about user interfaces and web development. It's a different and fun way to approach development. I'm enjoying the breadth of new technology I get to work with on a day-to-day basis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6908272819452300636?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6908272819452300636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/sorting-algorithms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6908272819452300636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6908272819452300636'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/sorting-algorithms.html' title='Sorting Algorithms In Your Favorite Languages'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2012482713206926515</id><published>2011-01-07T23:38:00.000-05:00</published><updated>2011-01-07T23:38:09.182-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interface'/><title type='text'>User Interfaces On The Web</title><content type='html'>At &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;, I've been doing a lot of user interface development for the web. I am learning a lot about designing user friendly interfaces that provide business users with the best user experience. This seems like a very challenging and rewarding problem, and certainly an interesting way to spend my 9-5. There's a lot to consider when designing usable systems, and I'm starting to appreciate all the intricacies of UI design. I am looking forward to the UI course in summer even more now.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I found this &lt;a href="http://sixrevisions.com/user-interface/10-tips-for-optimizing-web-form-submission-usability/"&gt;article on designing good web forms&lt;/a&gt;, and thought it was pretty good. I will have to remember to apply some of these things to my user interfaces for Karos.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2012482713206926515?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2012482713206926515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/user-interfaces-on-web.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2012482713206926515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2012482713206926515'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/user-interfaces-on-web.html' title='User Interfaces On The Web'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3725298658105102898</id><published>2011-01-06T21:38:00.001-05:00</published><updated>2011-01-06T21:58:50.538-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones'/><title type='text'>Mobile Development</title><content type='html'>Looks like I'm getting my foot in the mobile development door with &lt;a href="http://www.ucalendar.uwaterloo.ca/1011/COURSE/course-DAC.html#DAC304"&gt;ARTS/DAC 304&lt;/a&gt;. For our first assignment, we are making an iPhone game that is aimed to educate people on &lt;a href="http://www.hc-sc.gc.ca/fn-an/food-guide-aliment/index_e.html"&gt;Canada's Food Guide&lt;/a&gt;. We have a lot of control on what goes into the game. Jesse and I are partnering for this, so it should be fun. :) This probably means we'll overkill the software architecture. :P We only have a week to get this project ready to demo (for the next lecture). Should be a fun course. Time to go learn ObjectiveC .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3725298658105102898?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3725298658105102898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/mobile-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3725298658105102898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3725298658105102898'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/mobile-development.html' title='Mobile Development'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2562923087826706115</id><published>2011-01-05T18:14:00.000-05:00</published><updated>2011-01-05T18:14:29.595-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>Sloppy Arithmetic Chips</title><content type='html'>Recent &lt;a href="http://web.mit.edu/newsoffice/2010/fuzzy-logic-0103.html"&gt;research from MIT&lt;/a&gt; has come up with imprecise CPU chips. These chips can perform some calculations much faster, but at the cost of accuracy. The results it would generate can be +- 1% of the correct value. Of course, the uses for such a device are somewhat specific. Obviously they won't be used to calculate how much radiation to deliver to cancer patients, but they can be used for things like video and audio processing. Pretty cool. It would be nice to see these sorts of chips integrated with more traditional ones. Apparently there are a lot of difficulties with that. I can imagine.&lt;br /&gt;&lt;br /&gt;In other news, I realized that I use the three most popular operation systems on a day-to-day basis now. I have my Windows-Ubuntu dualboot at home, and Macs at work. Neat. Hopefully, I can get Ubuntu to not hate me though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2562923087826706115?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2562923087826706115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/sloppy-arithmetic-chips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2562923087826706115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2562923087826706115'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/sloppy-arithmetic-chips.html' title='Sloppy Arithmetic Chips'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-686573571301702946</id><published>2011-01-04T18:21:00.001-05:00</published><updated>2011-01-04T19:33:14.342-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones'/><title type='text'>Smartphones And Your Health</title><content type='html'>I've recently seen a few new smartphone apps dedicated to your health. In the past, I've seen things like &lt;a href="http://runkeeper.com/"&gt;Runkeeper&lt;/a&gt;&amp;nbsp;that help you keep track of your fitness. More recently, I've seen things like this: an &lt;a href="http://gizmodo.com/5723609/hands+on-with-the-ihealth-blood-pressure-dock"&gt;iPhone add-on&lt;/a&gt;&amp;nbsp;that can measure and monitory your blood pressure. The iHealth dock is even capable of taking that information and sending it directly to your doctor. They have plans to expand to support various other monitors (like&amp;nbsp;glucose monitors).&lt;br /&gt;&lt;br /&gt;I think that making these sorts of checks less scary is a great idea. Being able to do this sort of stuff at home, using a device that you are already comfortable with, will certainly lower the anxiety associated with going to a hospital. It can simplify doing these checks, and increase accuracy by preventing things like the &lt;a href="http://en.wikipedia.org/wiki/White_coat_hypertension"&gt;white-coat effect&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm not sure about this whole "sending data to your doctor" thing, though. I don't think healthcare providers have time to log every single blood pressure reading you take, nor do they really care. Your day-to-day blood pressure&amp;nbsp;fluctuation&amp;nbsp;is not that important. They really care about things like averages. This is something you can do on your own, and then just submit an average to the physician. As I'm learning at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;, healthcare providers already have enough problems organizing all the available data in a secure and&amp;nbsp;accessible&amp;nbsp;way. Having random iPhone data thrown at them is only going to complicate the&amp;nbsp;situation. While self-reporting is generally a good idea, it needs to be implemented very carefully to be effective.&lt;br /&gt;&lt;br /&gt;In any case, I would like to see what other ways smartphones can make healthcare more&amp;nbsp;accessible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-686573571301702946?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/686573571301702946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/smartphones-and-your-health.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/686573571301702946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/686573571301702946'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/smartphones-and-your-health.html' title='Smartphones And Your Health'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5753535539011140630</id><published>2011-01-03T19:19:00.000-05:00</published><updated>2011-01-03T19:19:34.168-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><title type='text'>First Day!</title><content type='html'>I just finished my first day at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;! It was a lot of fun. I did a lot of reading on all their software and how it works. I also got to participate in a sprint planning meeting. It was certainly a fast introduction into the company and their products! I even got to play &lt;a href="http://www.planningpoker.com/"&gt;planning poker&lt;/a&gt;! Very cool! I've always wanted to do that. I&amp;nbsp;will be working on really cool networking software that connects healthcare vendors, though I can't talk about all the details. :P&lt;br /&gt;&lt;br /&gt;I got to use Mac's OS X for a decent amount of&amp;nbsp;consecutive&amp;nbsp;time. I've learned that Expose is really, really awesome, although I wouldn't switch to OS X for it. I like Windows more in general, though I wish it had expose.&lt;br /&gt;&lt;br /&gt;After work, I got sushi with &lt;a href="http://2.bp.blogspot.com/_P9itjAnRWIU/SjgNoDR7Y_I/AAAAAAAAAFs/hnyx9RhDIIA/s400/Llama1UpsetCIMG7621.JPG"&gt;Dani&lt;/a&gt;. She met me outside my office. :) Yummyaki gets our coveted sushi seal of approval!&lt;br /&gt;&lt;br /&gt;Now time to do some more research on work stuff, so I'm not completely dumb for tomorrow. :P&lt;br /&gt;&lt;br /&gt;I hope your first day of work/school went well (if applicable :P)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5753535539011140630?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5753535539011140630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/first-day.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5753535539011140630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5753535539011140630'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/first-day.html' title='First Day!'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7577690102737160945</id><published>2011-01-02T00:30:00.001-05:00</published><updated>2011-01-04T19:33:25.544-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smartphones'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source Software'/><title type='text'>Why Android Sucks</title><content type='html'>Check out this &lt;a href="http://www.engadget.com/2010/12/31/android-still-has-horrible-text-messaging-bugs-thatll-get-you-f/"&gt;article&lt;/a&gt; talking about a well-known messaging issue with Android phones. Essentially, this bug can result in sending your text to the wrong contact. I've personally experienced this problem. Thankfully, I only texted Keyar instead of another friend about something generally unimportant("When are you coming over?"). I was quite confused when Keyar said, "Why did you ask me when I was coming over?" from the same room as me.&lt;br /&gt;&lt;br /&gt;Really, Android?! You can't even get basic messaging working correctly? Really? How the hell did this slip through their QA? Not impressed. You can't release a program with a serious issue like this. To make things even worse, this bug has been a &lt;a href="http://code.google.com/p/android/issues/detail?id=9392"&gt;known issue in since July&lt;/a&gt;, and until yesterday(!) it was marked as a 'medium' priority fix! What the hell? Thankfully, it's now reassigned as a 'critical' priority bug. That only took 6 months. This certainly doesn't look very good on open source development.&lt;br /&gt;&lt;br /&gt;I have no idea how Android is doing so well in sales with issues like this. A phone that can't reliably communicate is useless. I can only imagine how many problems this bug has caused for Android users everywhere.&lt;br /&gt;&lt;br /&gt;Dear Google, be better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7577690102737160945?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7577690102737160945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/why-android-sucks.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7577690102737160945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7577690102737160945'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/why-android-sucks.html' title='Why Android Sucks'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2833807185869873666</id><published>2011-01-01T13:11:00.001-05:00</published><updated>2011-01-02T00:40:46.648-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Karos Health'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source Software'/><title type='text'>End Of The Open-Source Curse?</title><content type='html'>Some of you might know that I have a history of bad luck with open source software. Some would say that it hates me. Open source software tends to fail in interesting ways for me. For instance, my last two installations of Ubuntu had lame driver issues. I seem to have a lot of problems with Android, too.&lt;br /&gt;&lt;br /&gt;However, yesterday I installed Ubuntu without any problems! I didn't have to do any driver fiddling to get anything to work! I was quite happy. Perhaps my curse with open source software is over. Maybe it doesn't hate me anymore! :) What a way to welcome in the new year!&lt;br /&gt;&lt;br /&gt;Speaking of which, happy new year everyone! I had a relaxed new year's party with &lt;a href="http://2.bp.blogspot.com/_cqNbjz0gMoY/RejS_sZ5YJI/AAAAAAAAAXk/huxayik1aNk/s400/bunny1.jpg"&gt;Dani&lt;/a&gt; and &lt;a href="http://jcmcginnis.com/"&gt;Jesse&lt;/a&gt;. We enjoyed some wine and watched movies. It was a great night. You should check out Jesse's newly redesigned site. It looks quite pretty! :)&lt;br /&gt;&lt;br /&gt;I am excited for all the interesting things this year. First, I have work starting on the 3rd with &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;. I am really excited to start working there, although I'm also quite nervous. I have never done web development on this scale before, so I think I will be learning a lot in my first couple weeks. My next school semester also seems pretty exciting. I am taking History of Mathematics with my favorite professor, Steven Furino. I have been looking forward to this class since first year. Yay!&lt;br /&gt;&lt;br /&gt;Hopefully you all had a fun new year's party. Stay classy. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2833807185869873666?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2833807185869873666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/end-of-open-source-curse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2833807185869873666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2833807185869873666'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2011/01/end-of-open-source-curse.html' title='End Of The Open-Source Curse?'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4145582491382753876</id><published>2010-12-29T20:31:00.002-05:00</published><updated>2010-12-29T20:31:23.804-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>It's Time</title><content type='html'>I spent all day watching Golden Girls. Don't judge me. I think it's time to go back to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4145582491382753876?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4145582491382753876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/its-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4145582491382753876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4145582491382753876'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/its-time.html' title='It&apos;s Time'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1112378095809264827</id><published>2010-12-28T19:26:00.001-05:00</published><updated>2011-01-02T00:41:40.990-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><title type='text'>The Joys Of The Craft</title><content type='html'>Perhaps my favorite programming quote is this one by Fred Brooks, author of &lt;a href="http://www.amazon.ca/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959"&gt;The Mythical Man-Month&lt;/a&gt;:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;"...There is delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures..."&lt;/i&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;- Fred Brooks in The Mythical Man-Month&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;If you haven't read The Mythical Man-Month, I really recommend you do. It's a fantastic read for software engineers. It's funny that it was first published in 1975, and yet its completely relevant today. The problems Brooks describes in the book can still be encountered in the software development world today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1112378095809264827?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1112378095809264827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/joys-of-craft.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1112378095809264827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1112378095809264827'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/joys-of-craft.html' title='The Joys Of The Craft'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4176795954650258276</id><published>2010-12-25T23:59:00.001-05:00</published><updated>2010-12-26T00:00:43.485-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Christmas Upgrades</title><content type='html'>I spent a good chunk of Christmas installing Windows 7 on my parent's&amp;nbsp;ancient&amp;nbsp;machine. In hindsight, putting Windows 7 on a machine this old was probably a bad idea. The&amp;nbsp;Ethernet&amp;nbsp;controller didn't have drivers for Windows 7, so we couldn't connect to the internet for a while.&amp;nbsp;I had to do a lot of sketchy things with drivers to get it to work. After we got internet, Microsoft Updates downloaded all of the other missing drivers, and this fixed most of the issues. Unfortunately, one of those updates also screwed up the boot disk image. :/ Not impressed. After a little more black magic from the recovery disk, I think we're back up and mostly working. Hopefully, I can figure out all the outstanding issues tomorrow. I hope my Ubuntu install goes smoother.&lt;br /&gt;&lt;br /&gt;In other news, &lt;a href="http://caveviews.blogs.com/.a/6a00d8341bffd953ef0128779b711d970c-800wi"&gt;Dani&lt;/a&gt; visited with her family this morning for brunch. It was nice. :) I am going boxing day shopping with them at 7am tomorrow. Crazy, I know. Maybe I'll pick up a new USB stick or something.&lt;br /&gt;&lt;br /&gt;Anyways, Merry Christmas! I hope you have a great holiday season!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4176795954650258276?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4176795954650258276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/christmas-upgrades.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4176795954650258276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4176795954650258276'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/christmas-upgrades.html' title='Christmas Upgrades'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4065927541280481820</id><published>2010-12-25T03:25:00.001-05:00</published><updated>2010-12-25T03:29:48.692-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming Languages'/><title type='text'>Exceptions in Java</title><content type='html'>Java has two types of exceptions: checked and unchecked. Unchecked exceptions are the traditional exceptions you see in languages like C++ and C#. Checked&amp;nbsp;exceptions are essentially more explicit versions of unchecked exceptions. Checked&amp;nbsp;exceptions&amp;nbsp;require that the developer explicitly declare&amp;nbsp;what exceptions a method could throw. The compiler will then enforce methods higher in the call stack to either catch the exception, or&amp;nbsp;propagate&amp;nbsp;it to a higher level.&lt;br /&gt;&lt;br /&gt;Checked exceptions are a feature specific to Java. It was introduced into Java as an experiment, and the general&amp;nbsp;consensus&amp;nbsp;from developers is that the experiment failed. This is probably why no newer languages support them.&lt;br /&gt;&lt;br /&gt;What's the problem with checked exceptions? They seem like a great idea in theory. They allow the code to be explicit with all error handling code, and make it impossible to forget to catch an exceptions. Unfortunately there are a lot more drawbacks with checked exceptions.&lt;br /&gt;&lt;br /&gt;My main issue with them is that they clutter the code quite a bit. There is a lot of extra noise that goes into your code when you use checked exceptions. Not only does this make the code less&amp;nbsp;readable, but it slows down development. For instance, you should not have to catch every single exception when you are writing test code or quick prototypes. A lot of the time, developers will just "swallow" the exceptions with empty catch blocks, because there is no intelligent way to recover. Does your tiny app really need to catch OutOfMemoryExceptions around every statement that might allocate memory? Even if you do catch it, how will you gracefully recover? The extra verbosity becomes noise that clutters the program's logic.&lt;br /&gt;&lt;br /&gt;This argument reminds me of static typing vs. dynamic typing. If you choose static typing, you lose some flexibility, but gain some extra static analysis from your compiler. The same thing applies with checked exceptions, however the&amp;nbsp;benefit&amp;nbsp;they offer isn't worth the inflexibility.&lt;br /&gt;&lt;br /&gt;What are your&amp;nbsp;opinions&amp;nbsp;on checked and unchecked exceptions in Java?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4065927541280481820?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4065927541280481820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/exceptions-in-java.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4065927541280481820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4065927541280481820'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/exceptions-in-java.html' title='Exceptions in Java'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6755321015821640992</id><published>2010-12-24T04:55:00.000-05:00</published><updated>2010-12-24T04:55:44.413-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genetic Algorithms'/><title type='text'>Introduction to Genetic Algorithms</title><content type='html'>Here's a nice little &lt;a href="http://www.puremango.co.uk/2010/12/genetic-algorithm-for-hello-world/"&gt;introduction&lt;/a&gt;&amp;nbsp;to &lt;a href="http://en.wikipedia.org/wiki/Genetic_algorithm"&gt;Genetic Algorithms&lt;/a&gt;. Although the problem they solve (generating "hello world") is rather silly, it's a good introduction to the world of Genetic&amp;nbsp;Algorithms. If you are interested in the topic, you should check it out.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is another &lt;a href="http://www.coderprofile.com/networks/articles/109/n-queens-series-part-i-only-the-fittest-survive"&gt;good article&lt;/a&gt;. Again, this problem (solving N-Queens) isn't the best. A deterministic algorithm can solve the problem much faster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The best problems for Genetic Algorithms are ones that don't have known optimal solutions. Another important property is that partial solutions can be crossed over to make a better solution. Without this property, your genetic algorithm will essentially degenerate to randomly guessing at the solution. In fact, I'm curious to see how much better some Genetic Algorithms perform when compared to a random algorithm. You can generate a lot of random guesses while a Genetic Algorithm goes through a generation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It would be cool to make an app that allowed you to encode genetic algorithms without using a traditional programming&amp;nbsp;language. Instead, the user would use a simple, domain specific language to encode the genetic algorithm. Then the program would be able to automatically calculate and display run statistics. Perhaps this should go on my Pet Projects queue.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6755321015821640992?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6755321015821640992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/introduction-to-genetic-algorithms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6755321015821640992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6755321015821640992'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/introduction-to-genetic-algorithms.html' title='Introduction to Genetic Algorithms'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6374230936555689896</id><published>2010-12-22T00:39:00.001-05:00</published><updated>2010-12-22T00:39:35.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Genetic Algorithms'/><title type='text'>End of Exam Plans</title><content type='html'>Tomorrow is my last exam. DB can die. Rawr!&lt;br /&gt;&lt;br /&gt;Plans for Dec 22 6:30pm - Jan 03 9:00am&lt;br /&gt;- Clean Roslin House.&lt;br /&gt;- Play a lot of video games. :)&lt;br /&gt;- Play with Toronto friends.&lt;br /&gt;- New Years with &lt;a href="http://caveviews.blogs.com/.a/6a00d8341bffd953ef0128779b72e4970c-800wi"&gt;Girl&lt;/a&gt;.&lt;br /&gt;- Do Christmas-y type things with my parents.&lt;br /&gt;- Play with &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;&amp;nbsp;more. It would be awesome if I could apply it to some project, but I don't have any pet projects to work on right now. :/&lt;br /&gt;- Finish that &lt;a href="http://progit.org/book/"&gt;git book&lt;/a&gt;. Git seems pretty nice, after reading all the literature. Before I was blindly using it without knowing any of the theory.&lt;br /&gt;- Finish that &lt;a href="http://sweng.epfl.ch/schedule"&gt;SE course&lt;/a&gt;.&lt;br /&gt;- Find a nice little&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Genetic_algorithm"&gt;genetic algorithm&lt;/a&gt; challenge for Willis and I to do. We want to see who can create a better GA for some problem. Should be a fun little project during our work terms. Any ideas?&lt;br /&gt;&lt;br /&gt;What are you guys going to do after exams? Presumably a lot of you are already done. Waterloo drags on with exams forever. *Sigh*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6374230936555689896?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6374230936555689896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/end-of-exam-plans.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6374230936555689896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6374230936555689896'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/end-of-exam-plans.html' title='End of Exam Plans'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-5627636049265442611</id><published>2010-12-19T15:34:00.000-05:00</published><updated>2010-12-19T15:34:06.545-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Inheritance vs. Composition</title><content type='html'>For a while, I've heard people say things like, "always prefer composition to inheritance". Today I looked into this argument more. Turns out the real argument should have been "Don't use&amp;nbsp;inheritance&amp;nbsp;at the wrong times". Durr. Essentially, this boils down to the "Is-a" vs. "Has-a" relationships we all learned in whatever Object Oriented 101 course you took. If two things share an "is-a" relationship, you can use inheritance. If it's a "has-a" relationship, it should be included through composition. For example, a patient has an ID, and a patient is a person. Following this rule will get you out of most of the problems with using inheritance wrong.&lt;br /&gt;&lt;br /&gt;Another, perhaps more important, thing to consider is the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle"&gt;Liskov substitution principle&lt;/a&gt;. It basically says if I have class D derive from class B, I should be able to replace all instances of B with D anywhere in my program. The program should behave &lt;i&gt;exactly&amp;nbsp;&lt;/i&gt;as before. If it doesn't, D should not have inherited from B. An implication of the Liskov substitution principle is that "is-a" really means that &lt;i&gt;every&lt;/i&gt;&amp;nbsp;method in the base class applies to the derived class. That is, if all birds can fly(), and a penguin cannot fly(), it shouldn't derive from a bird. For development purposes, a penguin is not a bird.&lt;br /&gt;&lt;br /&gt;Another place where inheritance is probably inappropriate, is when you create linear inheritance chains. This is simply there to anticipate change someday, but it complicates code&amp;nbsp;unnecessarily&amp;nbsp;today. Merging the classes would be simpler (and by&amp;nbsp;extension, safer) today. You can break them up again when you actually need the&amp;nbsp;hierarchy, and it will cost just as much then. The difference is that you pay the price (in both time and complexity) only when you need it. I've &lt;a href="http://oleksiderkatch.blogspot.com/2010/11/code-reuse-myth.html"&gt;talked about this issue before&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, I should probably go back to studying for exams, instead of watching &lt;a href="http://sweng.epfl.ch/schedule"&gt;Software Engineering lectures at French&amp;nbsp;universities&lt;/a&gt;. La la la.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-5627636049265442611?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/5627636049265442611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/inheritance-vs-composition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5627636049265442611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/5627636049265442611'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/inheritance-vs-composition.html' title='Inheritance vs. Composition'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1263021828119546115</id><published>2010-12-18T01:44:00.000-05:00</published><updated>2010-12-18T01:44:20.813-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Machine Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='Healthcare'/><title type='text'>Health Analytics Challenge</title><content type='html'>&lt;a href="http://www.heritageprovidernetwork.com/"&gt;The Heritage Provider Network&lt;/a&gt;&amp;nbsp;is offering a $3 million prize for an algorithm that can predict future&amp;nbsp;hospitalizations&amp;nbsp;based on patient data. This seems like a very cool application of machine learning. If I knew more about machine learning (or anything, really :P), I would totally participate. This sort of application would be invaluable to the health care field. Imagine having the ability to predict future problems with a patient, years in advance. That would cause a huge improvement in the quality of life.&lt;br /&gt;&lt;br /&gt;If any of you know anything about machine learning, you should try out this challenge. It's set to start around next year. You could make a huge difference in the quality of life of people. I suppose $3 million would be nice as well. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1263021828119546115?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1263021828119546115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/health-analytics-challenge.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1263021828119546115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1263021828119546115'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/health-analytics-challenge.html' title='Health Analytics Challenge'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-1897021734715125359</id><published>2010-12-17T01:48:00.001-05:00</published><updated>2010-12-17T01:57:40.910-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Education'/><title type='text'>A Good Software Engineering Course</title><content type='html'>I found this &lt;a href="http://sweng.epfl.ch/schedule"&gt;SE course&lt;/a&gt;&amp;nbsp;recently. It seems very good. I sincerely hope Waterloo's Software Engineering courses are this good. I guess I'll find out in my next two academic semesters.&lt;br /&gt;&lt;br /&gt;You should take a look at the&amp;nbsp;&lt;a href="http://sweng.epfl.ch/lectures/1"&gt;introduction lecture&lt;/a&gt;. It is a fantastic&amp;nbsp;description&amp;nbsp;of what Software Engineering is, and why it's important.&lt;br /&gt;&lt;br /&gt;EDIT: "We will have a project, and we WILL be changing requirements on you." Well done. This is a fantastic way to learn about Software Engineering.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-1897021734715125359?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/1897021734715125359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/good-software-engineering-course.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1897021734715125359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/1897021734715125359'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/good-software-engineering-course.html' title='A Good Software Engineering Course'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-8697700884171748576</id><published>2010-12-16T14:26:00.001-05:00</published><updated>2010-12-16T15:46:56.912-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Source Control'/><title type='text'>Version Control Models</title><content type='html'>I've started reading &lt;a href="http://progit.org/book/"&gt;Pro Git&lt;/a&gt;, a book on how to use git correctly. I figured it would be good to know all the ins and outs of git, since I'll be using it at &lt;a href="http://www.karoshealth.com/"&gt;Karos Health&lt;/a&gt;. The book does a pretty good job at summarizing the differences between the various version control methodologies. It certainly cleared up some things in my mind. &lt;a href="http://progit.org/book/ch1-1.html"&gt;Here's the page&lt;/a&gt; that talks about it.&lt;br /&gt;&lt;br /&gt;To be honest, distributed source control systems seem like overkill, but that might be just because I haven't worked on projects big enough (ie. not a Linux kernel). At &lt;a href="http://www.bbm.ca/"&gt;BBM&lt;/a&gt;&amp;nbsp;we used &lt;a href="http://en.wikipedia.org/wiki/Team_Foundation_Server"&gt;TFS&lt;/a&gt;&amp;nbsp;for source control and everything seemed to work smoothly. The project I worked on was only around 300 KLOC though.&lt;br /&gt;&lt;br /&gt;In other news, I probably passed Physics. Here's hoping. Now I get to relax for a bit and do all my "easy" exams. :)&lt;br /&gt;&lt;br /&gt;Do any of you guys have experience with git? How do you like it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-8697700884171748576?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/8697700884171748576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/version-control-models.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8697700884171748576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/8697700884171748576'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/version-control-models.html' title='Version Control Models'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-6952427531923694447</id><published>2010-12-15T20:11:00.004-05:00</published><updated>2010-12-15T20:55:26.998-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Lies'/><title type='text'>Crisis</title><content type='html'>I've decided my true calling is in the arts now.&lt;br /&gt;&lt;br /&gt;I'm going to write a novel.&lt;br /&gt;&lt;br /&gt;This post brought to you by PWU.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-6952427531923694447?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/6952427531923694447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/crisis.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6952427531923694447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/6952427531923694447'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/crisis.html' title='Crisis'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-4484213078276080520</id><published>2010-12-15T01:06:00.001-05:00</published><updated>2010-12-15T03:28:44.393-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><title type='text'>IBM AI Jeopardy</title><content type='html'>IBM has created a supercomputer AI system named "Watson" that will challenge&amp;nbsp;all-star winners &lt;a href="http://en.wikipedia.org/wiki/Ken_Jennings"&gt;Ken Jennings&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Brad_Rutter"&gt;Brad Rutter&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Jeopardy!"&gt;Jeopardy&lt;/a&gt;. &lt;a href="http://mediadecoder.blogs.nytimes.com/2010/12/14/i-b-m-supercomputer-watson-to-challenge-jeopardy-stars/?hpw"&gt;This article&lt;/a&gt; talks a little more about it.&lt;br /&gt;&lt;br /&gt;I am very curious as to how this will turn out. Apparently "Watson" will use natural language parsing to&amp;nbsp;interpret&amp;nbsp;the questions. If "Watson" wins, it will represent a huge leap in AI. We've already seen some very impressive natural language parsing from&amp;nbsp;&lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt;. I want to see &amp;nbsp;how much farther this concept can go with a budget from IBM.&lt;br /&gt;&lt;br /&gt;So? Place your bets! Human or Computer? My money is on the AI killing the Jeopardy veterans. I guess we'll find out in&amp;nbsp;February. What do you guys think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-4484213078276080520?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/4484213078276080520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/ibm-ai-jeopardy.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4484213078276080520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/4484213078276080520'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/ibm-ai-jeopardy.html' title='IBM AI Jeopardy'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-7722172073129473374</id><published>2010-12-14T20:09:00.000-05:00</published><updated>2010-12-14T20:09:19.841-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Algorithms'/><title type='text'>Note To Self</title><content type='html'>Note to self: Do not completely neglect a course&amp;nbsp;throughout&amp;nbsp;the term just because it's a first year course and it seems much less challenging (and interesting) than your other courses. This makes exam period 204% less fun. Damn you, Physics! Why did you have to be so much less&amp;nbsp;interesting&amp;nbsp;than my other courses this semester? A lot of times I was like "Go to physics" or "Work on OS for an extra hour". Guess what I choose to do most of the time. :P&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In other news, algorithms went pretty well! The hardest course I've take so far in my university career is over! Woo! They were nice on the exam. They could have killed us (much like they did on the assignments), but instead they gave us tons of marks for doing simple things like tracing algorithms we had to know.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If I survive Physics (Thursday), It should be smooth sailing for the rest of my exams. I am not too worried about the OS and DB finals. After that, I will have time to do some more preparation for my work term. Specifically, learning as much as possible about &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;, and learning the ins-and-outs of &lt;a href="http://en.wikipedia.org/wiki/Git_(software)"&gt;git&lt;/a&gt; using this &lt;a href="http://progit.org/book/"&gt;book&lt;/a&gt;&amp;nbsp;(Jesse should be happy :P).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-7722172073129473374?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/7722172073129473374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/note-to-self.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7722172073129473374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/7722172073129473374'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/note-to-self.html' title='Note To Self'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-3667176523240835714</id><published>2010-12-13T14:35:00.000-05:00</published><updated>2010-12-13T14:35:05.641-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Math'/><title type='text'>Japanese Multiplication Method</title><content type='html'>I just saw this video through &lt;a href="http://gizmodo.com/5713010/this-bewildering-japanese-multiplication-method-just-multiplied-my-brain-by-zero?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+gizmodo/full+(Gizmodo)"&gt;Gizmodo&lt;/a&gt;:&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/e-P5RGdjICo?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/e-P5RGdjICo?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Very cool way to multiply numbers. Don't think it's more&amp;nbsp;efficient&amp;nbsp;than the traditional method we were taught, but cool nonetheless.&lt;br /&gt;&lt;br /&gt;Anyone want to prove it's correctness? :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-3667176523240835714?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/3667176523240835714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/japanese-multiplication-method.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3667176523240835714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/3667176523240835714'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/japanese-multiplication-method.html' title='Japanese Multiplication Method'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7972214731683804743.post-2846358904118084319</id><published>2010-12-11T20:45:00.001-05:00</published><updated>2010-12-11T20:45:53.838-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Science'/><category scheme='http://www.blogger.com/atom/ns#' term='Algorithms'/><title type='text'>The Sound Of Sorting</title><content type='html'>This is a little old, but it's cool nonetheless. The sounds of various sorting algorithms.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/t8g-iYGHpEA?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/t8g-iYGHpEA?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I am in exam study mode. Bleh. Starting Tuesday, I have an exam every two days until the end (22nd).&amp;nbsp;Unfortunately,&amp;nbsp;my two hardest exams are first. I have to learn first year physics by Thursday. Woo! At least it should be smooth sailing after that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7972214731683804743-2846358904118084319?l=oleksiderkatch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oleksiderkatch.blogspot.com/feeds/2846358904118084319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/sound-of-sorting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2846358904118084319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7972214731683804743/posts/default/2846358904118084319'/><link rel='alternate' type='text/html' href='http://oleksiderkatch.blogspot.com/2010/12/sound-of-sorting.html' title='The Sound Of Sorting'/><author><name>Oleksi Derkatch</name><uri>http://www.blogger.com/profile/00304588000327101991</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
