Monday, February 27, 2012

Auto 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:

Best Reasonably Priced Car
Our definition of reasonably priced car is < $30 000

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".

Best Reasonably Priced Roadster
Our definition of reasonably priced roadster was < $50 000

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.

Best Car
This is basically "If you could drive any car out of the Auto Show, which would it be". Not surprisingly, my choice coincides with this.

Aston Martin Rapide. Even better looking in person. It was the second best looking car in the show (after the better proportioned Virage) 

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:

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)

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...

Tuesday, February 14, 2012

2 Free Car Challenge

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?

The first car is a no brainer for me: Aston Martin Rapide.

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.

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.

Enter R8 Spyder:

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).

I think this is better (though probably less practical) than a friend, who picked some of the ugliest cars I've seen. D= and D=. What would you choose?

I spent too much time one this, and not enough time studying for Databases. Oh well.

Tuesday, January 3, 2012

New Semester

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: Smashing The Stack.

DB is apparently pretty much a course on making an optimizing compiler, which also sounds pretty promising. :)

Also, I really need to watch the new Sherlock episode soon. If you haven't watched the BBC Sherlock mini-series yet, I very highly recommend it!

All in all, this is shaping up to be a great term. :)

Thursday, December 29, 2011

Little Tiger Purchase

Dani recently purchased a little tiger. 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.

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.

Saturday, December 24, 2011

A Term In Review

After a 4 month hiatus, I think it's time to start blogging again. I've had a great term working for RL Solutions, 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 (more info here and here). 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 July effect seemed to be caused by new hospital staff starting in July.

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 HL7 CDA, and then send them securely to Patient Safety Organizations(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).

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 XSLT 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 David's Tea close by where everyone got to know us very well. :P All in all, it was a very fun and educational term.

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.

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 Karos Health and maybe even REAP too. Hopefully I'm not too busy with all that. :)

Monday, September 12, 2011

First Day

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.

Today was my first day at RL Solutions. It was quite exciting. Basically the company makes a suite of software that prevents medical errors. I am still learning how everything works.

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. :)

Development will be web-based .NET, something I've never done, so I'm excited to learn more about it.

My coworkers are all very nice. It should be a fun semester. There is a pool table. I look forward to using it. :P

Should be another great semester. :)

Friday, August 19, 2011

American Health Care Cost Inforgraphs

I found a great info graph talking about healthcare costs in America. Check it out:

Why Your Stitches Cost $1,500 - Part One
Via: Medical Billing And Coding

Why Your Stitches Cost $1,500 - Part Two
Via: Medical Billing And Coding

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.

Thursday, August 18, 2011

Stanford CS courses!

Stanford University is offering a few courses next semester for free online. Here are the classes:

- Machine Learning
- Artificial Intelligence
- Databases

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. :)

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 RL Solutions 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. :)

Monday, August 8, 2011

Software Engineering All-Star Topics: Redundancy

There 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.

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).

Got scalability problems? The solution might be to use redundancy to implement load balancing. This is commonly done to implement horizontal scaling.

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 StumbleUpon. 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 hash tables, which is a computer science all-star topic.

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.

Guess something useful came out of that Distributed Systems class after all. Want exam to be over though. :(

Sunday, July 31, 2011

How to write unmaintainable code

Here's a fun read on how to write unmaintainability code. For job security, of course. :)
This is probably the best thing that came out of my Architecture class. >_<

Wednesday, July 27, 2011

REAP Review

The client presentation for REAP 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.

Our presentation on the Mixed Reality Interface (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.

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!

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 Microtiles, Unity, and Sketch Up, 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. :)

If' you're interested in joining REAP in a future term, you can apply on the REAP site, 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. :)

Wednesday, July 20, 2011

Car Futures

The most productive thing I've done this summer is plan out my car owning future.

Currently, 1999 Chrysler Intrepid, Black (value < $100 at this point)

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)

After I drive this car to death, it'll be time for my first real car purchase.
Jaguar XF (value ~$60 000)

I think I will feel obligated to to take up golf as a hobby at this point.
Then I'll upgrade to a Jaguar XK (value ~$100 000)

The red brake discs pictured above will be replaced (and burned >_<).
Finally, the holy grail of my car journey, Aston Martin DB9 (~ $200 000)


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. :/

This list will also probably change very soon. Specifically, the next time I watch Top Gear.

Monday, July 11, 2011

Spring Terms and Unity

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.

On another note, I got a chance to play with Unity 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

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. :)

Thursday, July 7, 2011

The Human Aspect Of Software Engineering

As 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.

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.

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.

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 Interpolation search 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.

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.