tag:blogger.com,1999:blog-79722147316838047432024-02-19T02:35:01.036-05:00- Developers Anonymous -Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.comBlogger133125tag:blogger.com,1999:blog-7972214731683804743.post-11126109262244220092012-02-27T01:20:00.001-05:002012-02-27T01:21:31.467-05:00Auto Show!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:<br />
<br />
<b>Best Reasonably Priced Car</b><br />
Our definition of reasonably priced car is < $30 000<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVw3TzcMsuo_FbBd5Fy00WB3IqiUMCmtju_Z5CjbMRE3iiOMMV9xe1mVzXYh8Dhc0gUsjAz4LS3FIX8QU26Spcd9PdJAkPUK69G_HljF5UwW6E9mQWX2PFjnqqTzM46zxNa6CdWVu3e2nD/s1600/IMAG0162.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVw3TzcMsuo_FbBd5Fy00WB3IqiUMCmtju_Z5CjbMRE3iiOMMV9xe1mVzXYh8Dhc0gUsjAz4LS3FIX8QU26Spcd9PdJAkPUK69G_HljF5UwW6E9mQWX2PFjnqqTzM46zxNa6CdWVu3e2nD/s320/IMAG0162.jpg" width="320" /></a></div>
<br />
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 Hyundai Sonata, but you get more stuff with the Kia, and the Sonata feels somewhat "cheaper".<br />
<br />
<b>Best Reasonably Priced Roadster</b><br />
Our definition of reasonably priced roadster was < $50 000<br />
<div class="separator" style="clear: both; text-align: center;">
<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;"><img border="0" height="212" src="http://www.blogcdn.com/www.autoblog.com/media/2009/09/370zroadsterfd_01_opt.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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 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 convertible 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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Best Car</b></div>
<div class="separator" style="clear: both; text-align: left;">
This is basically "If you could drive any car out of the Auto Show, which would it be". Not surprisingly, my choice coincides with <a href="http://oleksiderkatch.blogspot.com/2012/02/2-free-car-challenge.html">this</a>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqgP6CRH6plSpApTfWP_Rwlq_mZTB7jQCoTVHfgL5kqr52uutq56CH70uq7EYQ7jttTAUPaDYaVdW_JhlE1yKGwxyG53C_Pa4_39n6bQQxKH0bR7P1jdwZbJoPpyyvrXs1PyD-QNilJlwH/s1600/IMAG0159.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqgP6CRH6plSpApTfWP_Rwlq_mZTB7jQCoTVHfgL5kqr52uutq56CH70uq7EYQ7jttTAUPaDYaVdW_JhlE1yKGwxyG53C_Pa4_39n6bQQxKH0bR7P1jdwZbJoPpyyvrXs1PyD-QNilJlwH/s320/IMAG0159.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Aston Martin Rapide. Even better looking in person. It was the second best looking car in the show (after the better proportioned Virage) </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9K5FVVTzVKrGAhquFPhU3KLGOKQ6VP98j6BLxx_gtZaNY8oSMw8RptT58YWPuA0wnFPb6SoPL_wzvYsGWPBvfMGPdmBcksLQijguYSy22kG59QGBRSb5ryktTSa-H4d-4JWKjq5R9yeeV/s1600/IMAG0164.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9K5FVVTzVKrGAhquFPhU3KLGOKQ6VP98j6BLxx_gtZaNY8oSMw8RptT58YWPuA0wnFPb6SoPL_wzvYsGWPBvfMGPdmBcksLQijguYSy22kG59QGBRSb5ryktTSa-H4d-4JWKjq5R9yeeV/s320/IMAG0164.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I would say that the new Ford Fusion is the best looking reasonably 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 equipped for ~30K)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
All in all, the auto show was great fun as usual. Now back to real life (and school. boo). Remember the time I blogged about programming. Yup...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com16tag:blogger.com,1999:blog-7972214731683804743.post-83067198157273921772012-02-14T00:39:00.000-05:002012-02-14T00:39:06.120-05:002 Free Car ChallengeSo 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?<br />
<br />
The first car is a no brainer for me: <a href="http://www.astonmartin.com/cars/rapide">Aston Martin Rapide</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.dieselstation.com/pics/Aston-Martin-Rapide-Concept-car-wallpapers.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://www.dieselstation.com/pics/Aston-Martin-Rapide-Concept-car-wallpapers.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
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 restaurant to reclaim the good parking space.<br />
<br />
So that's one down, what about the second car? Well I have something somewhat reasonable for day-to-day driving, so I thought about something really fun and a little outrageous. A sporty roadster comes to mind. Unfortunately I had a problem choosing a roadster that I actually liked. Originally 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 similar to the Rapide, and a little too tame. I wanted something more ridiculous, but not Aventator ridiculous.<br />
<br />
Enter <a href="http://www.audi.ca/ca/brand/en/models/2011_Audi_R8_Spyder.html">R8 Spyder</a>:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/e/e5/R8_Spyder.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://upload.wikimedia.org/wikipedia/commons/e/e5/R8_Spyder.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
While it's not as beautiful as the normal R8, it still looks fantastic in my books. It certainly seems fun, and it's definitely 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).<br />
<br />
I think this is better (though probably less practical) than <a href="http://surrealcubicle.blogspot.com/2012/02/solved.html">a friend</a>, who picked some of the ugliest cars I've seen. <a href="http://porschebahn.files.wordpress.com/2009/11/100_5434.jpg">D=</a> and <a href="http://image2.paultan.org/image/m3-april-1-500x222.jpg">D=</a>. What would you choose?<br />
<br />
I spent too much time one this, and not enough time studying for Databases. Oh well.<br />
<br />
<br />
<br />
<br />Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com7tag:blogger.com,1999:blog-7972214731683804743.post-79940127114431537202012-01-03T14:23:00.001-05:002012-01-03T14:23:09.468-05:00New SemesterI 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: <a href="http://insecure.org/stf/smashstack.html">Smashing The Stack</a>.<br />
<br />
DB is apparently pretty much a course on making an optimizing compiler, which also sounds pretty promising. :)<br />
<br />
Also, I really need to watch the new Sherlock episode soon. If you haven't watched the <a href="http://en.wikipedia.org/wiki/Sherlock_(TV_series)">BBC Sherlock mini-series</a> yet, I very highly recommend it!<br />
<br />
All in all, this is shaping up to be a great term. :)Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com1tag:blogger.com,1999:blog-7972214731683804743.post-2159309104766078492011-12-29T12:09:00.000-05:002011-12-29T12:09:06.528-05:00Little Tiger PurchaseDani recently purchased a <a href="http://en.wikipedia.org/wiki/Cat">little tiger</a>. 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.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<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;"><img border="0" height="320" src="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/392154_10151099254975354_654650353_22313462_1515548390_n.jpg" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<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;"><img border="0" height="320" src="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/404841_10151099255890354_654650353_22313468_158532221_n.jpg" width="240" /></a></div>
<br />
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.<br />
<br />
<br />Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com2tag:blogger.com,1999:blog-7972214731683804743.post-26881901953163596612011-12-24T22:19:00.003-05:002011-12-24T22:20:50.190-05:00A Term In ReviewAfter a 4 month hiatus, I think it's time to start blogging again. I've had a great term working for <a href="http://www.rlsolutions.com/">RL Solutions</a>, a company that makes risk and feedback management software 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 (<a href="http://en.wikipedia.org/wiki/Patient_safety#To_Err_is_Human">more info here</a> and <a href="http://en.wikipedia.org/wiki/Medical_error#Impact">here</a>). 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 <a href="http://en.wikipedia.org/wiki/July_effect">July effect</a> seemed to be caused by new hospital staff starting in July.<br />
<br />
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 <a href="http://en.wikipedia.org/wiki/Health_Level_7#HL7_standards">HL7 CDA</a>, and then send them securely to <a href="http://en.wikipedia.org/wiki/Patient_safety_organization">Patient Safety Organizations</a>(PSOs). These PSOs then do some more powerful data mining and analysis 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).<br />
<br />
This term, I had the privilege 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 <a href="http://www.w3schools.com/xsl/">XSLT</a> 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 environment is also mega relaxed and fun, with PMs handing out beers once a week for no reason during work. :) There was also a <a href="http://www.davidstea.com/">David's Tea</a> close by where everyone got to know us very well. :P All in all, it was a very fun and educational term.<br />
<br />
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 comparatively awful they are. :P I also finally watched all of Arrested Development. I should have checked out that show much earlier too.<br />
<br />
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 <a href="http://www.karoshealth.com/">Karos Health</a> and maybe even <a href="http://uwreap.com/">REAP</a> too. Hopefully I'm not too busy with all that. :)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com1tag:blogger.com,1999:blog-7972214731683804743.post-65384393248481824182011-09-12T21:18:00.000-04:002011-09-12T21:18:24.197-04:00First DayIt'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.<br />
<br />
Today was my first day at <a href="http://www.rlsolutions.com/">RL Solutions</a>. It was quite exciting. Basically the company makes a suite of software that prevents medical errors. I am still learning how everything works.<br />
<br />
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 notoriously more 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. :)<br />
<br />
Development will be web-based .NET, something I've never done, so I'm excited to learn more about it.<br />
<br />
My coworkers are all very nice. It should be a fun semester. There is a pool table. I look forward to using it. :P<br />
<br />
Should be another great semester. :)Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com2tag:blogger.com,1999:blog-7972214731683804743.post-38389338022620534322011-08-19T20:17:00.001-04:002011-08-19T20:26:29.851-04:00American Health Care Cost InforgraphsI found a great info graph talking about healthcare costs in America. Check it out:<br />
<br />
<a href="http://www.medicalbillingandcoding.org/medical-costs-1"><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" /></a><br />
Via: <a href="http://www.medicalbillingandcoding.org/">Medical Billing And Coding</a><br />
<br />
<a href="http://www.medicalbillingandcoding.org/medicals-costs-2"><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" /></a><br />
Via: <a href="http://www.medicalbillingandcoding.org/">Medical Billing And Coding</a><br />
<br />
I thought the expensive outpatient care reason was odd. From what I 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.<br />
<br />
Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com1tag:blogger.com,1999:blog-7972214731683804743.post-77468662870889787692011-08-18T18:33:00.000-04:002011-08-18T18:33:26.587-04:00Stanford CS courses!<a href="http://www.stanford.edu/">Stanford University</a> is offering a few courses next semester for free online. Here are the classes:<br />
<br />
- <a href="http://www.ml-class.com/">Machine Learning</a><br />
- <a href="http://www.ai-class.com/">Artificial Intelligence</a><br />
- <a href="http://www.db-class.com/">Databases</a><br />
<br />
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. :)<br />
<br />
<br />
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 <a href="http://www.rlsolutions.com/">RL Solutions</a> 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. :)Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-74624999290840870562011-08-08T18:05:00.001-04:002011-08-08T18:41:51.195-04:00Software Engineering All-Star Topics: RedundancyThere are a few very prominent topics in all fields. I think redundancy is one of the biggest ones in the field of software engineering. Redundancy in the context of software means having duplicated services or data.Why would you want to do this? Well there are many reasons.<br />
<br />
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 inelegant (and expensive) solution, it works 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 hard drives (on potentially separate machines).<br />
<br />
Got scalability problems? The solution might be to use redundancy to implement load balancing. This is commonly done to implement <a href="http://en.wikipedia.org/wiki/Scalability#Scale_horizontally_.28scale_out.29">horizontal scaling</a>.<br />
<br />
Redundancy can also be used to solve a huge subset of performance problems through caching. Caching is just a form of data 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 achieve huge performance boosts. Want to see the difference? Check out <a href="http://www.stumbleupon.com/home/">StumbleUpon</a>. 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 noticeably (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 <a href="http://en.wikipedia.org/wiki/Hash_table">hash tables</a>, which is a computer science all-star topic.<br />
<br />
This practice is not unique to software engineering. Redundancy has been used in most other engineering disciplines to establish fault tolerance for years. For example, Boeing 747s are equipped with 4 engines, but are designed to run with just 3.<br />
<br />
Guess something useful came out of that Distributed Systems class after all. Want exam to be over though. :(Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-42778068712641840522011-07-31T16:36:00.000-04:002011-07-31T16:36:24.725-04:00How to write unmaintainable codeHere's a fun read on <a href="http://freeworld.thc.org/root/phun/unmaintain.html">how to write unmaintainability code</a>. For job security, of course. :)<br />
This is probably the best thing that came out of my Architecture class. >_<Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-54491600655930912942011-07-27T15:32:00.000-04:002011-07-27T15:32:51.968-04:00REAP ReviewThe client presentation for <a href="http://uwreap.com/">REAP</a> 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.<br />
<br />
Our presentation on the <a href="http://kommerz.at/en/Produkte/MRI.html">Mixed Reality Interface</a> (MRI) went fairly smoothly(Note to self: avoid making last minute demo changes. >_<). We talked about our plans of using the MRI table to create virtual museum exhibits to enhance user go-ers experiences in museums. Because of the playful and tactile nature of the table, kids would be quite attracted to this sort of exhibit. We are currently working with the Earth Sciences museum on campus to create a mining exhibit as a proof of concept. The museum is currently converting a hallway in the building to be a mini mining exhibit. We hope to be able to get a virtually enhanced exhibit to go along with the physical one 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.<br />
<br />
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!<br />
<br />
In general, REAP was a great opportunity. We got to meet some great people in the digital projection industry, as well as work with some really bright people. We also got a chance to meet with people from all sorts of industries, like museum curators and home designers. The REAP members also got to play with all sorts of cool technologies. Other than the MRI table, we got to play with <a href="http://www.christiedigital.com/en-us/digital-signage/pages/default.aspx">Microtiles</a>, <a href="http://unity3d.com/">Unity</a>, and <a href="http://sketchup.google.com/">Sketch Up</a>, all while getting paid. 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. :)<br />
<br />
If' you're interested in joining REAP in a future term, you can <a href="http://uwreap.com/">apply on the REAP site</a>, 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. :)Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-90460496967466734462011-07-20T12:07:00.001-04:002011-07-22T16:54:13.772-04:00Car FuturesThe most productive thing I've done this summer is plan out my car owning future.<br />
<br />
Currently, 1999 Chrysler Intrepid, Black (value < $100 at this point)<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.classycars.org/Dodge/DodgeIntrepid.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="http://www.classycars.org/Dodge/DodgeIntrepid.jpg" width="320" /></a></div><br />
<br />
<br />
<br />
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)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://redriderbob.homestead.com/files/2002_Dodge_Intrepid_RT_in_Flame_Red.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="http://redriderbob.homestead.com/files/2002_Dodge_Intrepid_RT_in_Flame_Red.jpg" width="320" /></a></div><br />
<br />
After I drive this car to death, it'll be time for my first <i>real </i>car purchase.<br />
Jaguar XF (value ~$60 000)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.speedlux.com/wp-content/uploads/2010/11/Jaguar-XF-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.speedlux.com/wp-content/uploads/2010/11/Jaguar-XF-3.jpg" width="320" /></a></div><br />
<br />
<br />
I think I will feel obligated to to take up golf as a hobby at this point.<br />
Then I'll upgrade to a Jaguar XK (value ~$100 000)<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVALnTTRsXVg9iXyXX2V78WmhF-q1VkKfTGvwczT-9z-AyjDIeor-sNsZ7K4RqSGUF8YU5QC2HqO1hqaSWRU0cYB7_NllJ1zJihVcWaFu0AdkUGzJdLqxagwwFJbKZiqYHXMV6U9Ci8ph/s1600/2011-Jaguar-XKR2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVALnTTRsXVg9iXyXX2V78WmhF-q1VkKfTGvwczT-9z-AyjDIeor-sNsZ7K4RqSGUF8YU5QC2HqO1hqaSWRU0cYB7_NllJ1zJihVcWaFu0AdkUGzJdLqxagwwFJbKZiqYHXMV6U9Ci8ph/s320/2011-Jaguar-XKR2.jpg" width="320" /></a></div><br />
<br />
<br />
<br />
The red brake discs pictured above will be replaced (and burned >_<).<br />
Finally, the holy grail of my car journey, Aston Martin DB9 (~ $200 000)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://theapeonline.com/wp-content/uploads/2011/04/Aston-Martin-Db9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://theapeonline.com/wp-content/uploads/2011/04/Aston-Martin-Db9.jpg" width="320" /></a></div><br />
<br />
<br />
<br />
Yay!<br />
<br />
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. :/<br />
<br />
This list will also probably change very soon. Specifically, the next time I watch Top Gear.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com4tag:blogger.com,1999:blog-7972214731683804743.post-20525211582582695772011-07-11T14:18:00.000-04:002011-07-11T14:18:47.720-04:00Spring Terms and UnityWith 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.<br />
<div><br />
</div><div>On another note, I got a chance to play with <a href="http://unity3d.com/">Unity</a> 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 museum exhibit on mining. I'm really glad that I got a chance to get paid to learn Unity. :P</div><div><br />
</div><div>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. :)</div>Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-13574166096765289422011-07-07T22:49:00.000-04:002011-07-07T22:49:50.007-04:00The Human Aspect Of Software EngineeringAs a computer scientist/software engineer, it's easy to forget about the human aspect of what we do. We are often so immersed in very technical parts of the software 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 technologically innovative 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 aspect is the most important aspect to consider when writing software.<br />
<br />
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 aspect of software is always addressed. They also encourage frequent updates and demos to customers to ensure that they are always satisfied by the product.<br />
<br />
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.<br />
<br />
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 <a href="http://en.wikipedia.org/wiki/Interpolation_search">Interpolation search</a> 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.<br />
<br />
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.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-71474123066114469512011-07-05T20:27:00.001-04:002011-07-16T03:56:11.300-04:00Character Encoding Fun!Let's talk about character encoding. This seems to be a common blank area of knowledge for a lot of developers.<br />
<br />
Joel Spolsky found this to be true, so he wrote this great article about <a href="http://www.joelonsoftware.com/articles/Unicode.html">character encoding and Unicode</a>. I really recommend that you give it a read. It's a little old (2003), but still completely relevant.<br />
<br />
If you are feeling too lazy to read his summary (I blame summer), you can read my even shorter summary.<br />
<br />
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.<br />
<br />
2) <a href="http://en.wikipedia.org/wiki/Unicode">Unicode</a> is a character set that to hopes include characters from almost all languages. Unicode is not an encoding though. Older character sets, like <a href="http://en.wikipedia.org/wiki/ASCII">ASCII</a>, mapped characters ('A') to numbers (65), which got encoded as the binary representation of that number. Unicode maps characters to something called <a href="http://en.wikipedia.org/wiki/Code_point">code points</a>. 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 <a href="http://en.wikipedia.org/wiki/UTF-8">UTF-8</a>.<br />
<br />
3) Unicode is not always encoded as 2 bytes. <a href="http://en.wikipedia.org/wiki/UTF-16/UCS-2">UTF-16</a> 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 <a href="http://en.wikipedia.org/wiki/UTF-32/UCS-4">UTF-32</a> is always 4-bytes.<br />
<br />
4) UTF-8 is backwards compatible with ASCII for the first 8 bits. This means that UTF-8 is backwards compatible with ASCII.<br />
<br />
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.<br />
<br />
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 (>_<). School terms in the summer suck.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com2tag:blogger.com,1999:blog-7972214731683804743.post-82914938666872504782011-07-04T12:44:00.002-04:002011-07-04T13:20:29.023-04:00Google+ (and -)Google's attempt at the social market, Google+, came out the other day. It's an interesting application.<br />
<div><br />
</div><div>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.</div><div><br />
</div><div>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.</div><div><br />
</div><div>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.</div><div><br />
</div><div>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.</div><div><br />
</div><div>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.</div><div><br />
</div><div>Another benefit 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.</div><div><br />
</div><div>A huge problem I've had with Facebook is their rollout strategy. They seem to be fans of <a href="http://oleksiderkatch.blogspot.com/2011/05/release-early-release-oftencarefully.html">release early, release often, but they suck at it.</a> It is almost a weekly occurrence 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. >_< I've found Google to be much better in this area. They also progressively add to their software, but it isn't crippled every week by stupid release strategies.</div><div><br />
</div><div>I'll keep an eye on Google+ going forward, but they have a lot to do before they can realistically hope to beat out Facebook.</div><div><br />
</div><div><br />
</div>Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com1tag:blogger.com,1999:blog-7972214731683804743.post-18890169480486407102011-07-01T17:01:00.000-04:002011-07-01T17:01:53.907-04:00Java is Always Pass-By-ValueThis 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 primitives, but pass-by-reference for Objects.". This is not true.<br />
<br />
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.<br />
<br />
Here's an example:<br />
<br />
<iframe src="http://pastebin.com/embed_iframe.php?i=YK04EuUA" style="border: none; height: 345px; width: 100%;"></iframe><br />
<br />
The output of this program is:<br />
<br />
a: 5<br />
b: 10<br />
<br />
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.<br />
<br />
This is a misconception has been around for way too long. Spread the word. :POleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com1tag:blogger.com,1999:blog-7972214731683804743.post-1433981447491944202011-06-27T22:03:00.000-04:002011-06-27T22:03:22.607-04:00Commenting: The Lazy Way OutI'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 that's 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.<br />
<br />
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 magnitudes 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?<br />
<br />
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.<br />
<br />
There are also some times where refactoring the code will lead to a lot more code for little readability 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.<br />
<br />
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.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-15031627644210216462011-06-24T14:02:00.000-04:002011-06-24T14:02:34.457-04:00Why Agile Development is More FunI just read this <a href="http://blog.pseudocodice.com/2011/06/why-i-dislike-agile-development.html">article claiming that Agile is "boring"</a>. 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 methodologies out there. It's certainly more dynamic and flexible than Waterfall models are.<br />
<br />
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.<br />
<br />
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 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.<br />
<br />
When I worked at <a href="http://www.karoshealth.com/">Karos Health</a> 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 all the parts of the application.<br />
<br />
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 absolutely necessary.<br />
<br />
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.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-13566431945586948712011-06-20T22:46:00.000-04:002011-06-20T22:46:24.897-04:00Improving PerformanceCoding Horror updated today, <a href="http://www.codinghorror.com/blog/2011/06/performance-is-a-feature.html">talking about the importance of performance</a> for web applications. He cites some studies that show significant drops in website usage as the speed slows down. While this is definitely 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 noticeable difference to the performance of your applications. Humans can't detect differences of a few milliseconds.<br />
<br />
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, <a href="http://developer.yahoo.com/performance/rules.html">Yahoo has a well-cited set of tips for improving site performance</a>. 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 <a href="http://code.google.com/closure/">Closure Tools</a>).<br />
<br />
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 <a href="http://www.google.ca/">http://www.google.ca/</a>. 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.<br />
<br />
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. 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.<br />
<br />
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 progressively 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.<br />
<br />
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 negligible compared to something else.<br />
<br />
I thought these were some interesting things to know in the few cases where you need to spend time optimizing for performance.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-18227369856317669002011-06-18T16:22:00.000-04:002011-06-18T16:22:00.397-04:00TDD and YAGNI<a href="http://beust.com/weblog/2008/03/03/tdd-leads-to-an-architectural-meltdown-around-iteration-three/">Here's an interesting read</a>. It talks about how if you practice <a href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a> (TDD) in an Agile environment, there is a lot of pressure to adhere to <a href="http://en.wikipedia.org/wiki/You_ain't_gonna_need_it">YAGNI</a>. 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.<br />
<br />
The problem is that most of the time, you won't actually need that feature that you predicted you would. 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.<br />
<br />
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.<br />
<br />
A good developer will be able to draw on past experiences to predict that some things <i>will</i> happen. If they think it's easier to build it in now, they should. I would trust the judgement of an experienced developer over a best practice.<br />
<br />
I feel like YAGNI is overcompensating for developers who apply design patterns to everything ever because they learned to do that in school. This is obviously the other extreme.<br />
<br />
It's like software development practices are following a pendulum, going for extreme(Waterfall, design patterns everywhere) to 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.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-27354561470031717522011-06-16T18:58:00.000-04:002011-06-16T18:58:15.952-04:00Ignite WaterlooYesterday, I got a chance to go to <a href="http://www.ignitewaterloo.ca/2011/06/our-speakers-for-ignite-6/">Ignite Waterloo 6</a>, a community event where people give 5 minute talks on topics they're passionate about.<br />
<br />
As always, it was an excellent event. It's fun to see some of the same faces at all the community events in Waterloo.<br />
<br />
There were some notable talks. Cate Huston gave a talk entitled "<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;">Why Do Programmers Have to Lie to Get Dates?</span>", 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 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<br />
<br />
Syd Bolton talked about cool uses of old computers. He is one of the founders of <a href="http://www.pcmuseum.ca/">The Personal Computer Museum</a>.<br />
<br />
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.<br />
<br />
Ben Brown gave an interesting talk about getting rid of all road signs. Apparently some places in Europe have done this with great success. I'm not convinced that this would work in Canada, especially in larger cities.<br />
<br />
Steven Scott debunked the "I've got nothing to hide" argument on Privacy. Also an interesting discussion.<br />
<br />
To finish the night, my good friend Amal Isaac gave a great talk on <a href="http://en.wikipedia.org/wiki/Technological_singularity">The Technological Singularity</a>. He talked about an interesting future when, inevitably, computers surpass our intelligence.<br />
<br />
All-in-all, it was another great event in the KW community! :)Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-68043584928874630352011-06-14T13:32:00.000-04:002011-06-14T13:32:18.040-04:00Resumes for ProgrammersHow useful are resumes for programmers? I've read a few articles now (including this one entitled <a href="http://codeulate.com/2011/06/programmer-resumes-are-deprecated/">"Programmer Resumes Are Deprecated"</a>) that claim employers are much more interested in artifacts and evidence of your programming. Things like <a href="https://github.com/">github</a> accounts, personal projects, and development blogs.<br />
<br />
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.<br />
<br />
Some skills are also really hard to "prove" on a resume. Sure if you put "Proficient in C#" and then list a bunch of jobs where you used C#, they are more likely to believe you, but how do you prove good object oriented design skills? Or knowledge of the <a href="http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle">SDLC</a>? Or processes like <a href="http://en.wikipedia.org/wiki/Scrum_(development)">Scrum</a>? You could try to force some sentences 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 proficient really mean?<br />
<br />
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.<br />
<br />
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.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-92167451941396188302011-06-12T16:07:00.000-04:002011-06-12T16:07:31.514-04:00More on Mixed Reality InterfacesHere's a few videos showing how the Mixed Reality Interfaces (MRI) work. <a href="http://oleksiderkatch.blogspot.com/search/label/REAP">As I mentioned before</a>, our REAP team this term is exploring interesting uses for this technology.<br />
<br />
This is the best video, I think:<br />
<div class="separator" style="clear: both; text-align: center;"><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"><param name="movie" value="http://www.youtube.com/v/hmG61K3r_j0&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/hmG61K3r_j0&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><br />
There's a few more <a href="http://www.youtube.com/watch?v=kzGljuievpM&feature=related">here</a> and <a href="http://www.youtube.com/watch?v=u0V-fbuF5M4&feature=related">here</a>.<br />
<br />
Pretty cool stuff. Our REAP team is currently looking into getting a sample museum exhibit built using this technology, so we can demo it to some real users and see what they think.<br />
<br />
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 <a href="http://www.ignitewaterloo.ca/">Ignite Waterloo</a> (so stoked!) and an interesting sounding talk at <a href="http://www.uxwaterloo.org/">uxWaterloo</a>. There might be a midterm somewhere in there too, but that's considerably less interesting. :POleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com0tag:blogger.com,1999:blog-7972214731683804743.post-9665970135764527442011-06-08T18:14:00.000-04:002011-06-08T18:14:51.314-04:00Common Interview Question: Abstract Classes vs. InterfacesI 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
If you have a job interview for a Java developer position, I recommend that you know how to answer this question.Oleksi Derkatchhttp://www.blogger.com/profile/00304588000327101991noreply@blogger.com1