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