Showing posts with label Life. Show all posts
Showing posts with label Life. Show all posts

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

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

Tuesday, July 5, 2011

Character Encoding Fun!

Let's talk about character encoding. This seems to be a common blank area of knowledge for a lot of developers.

Joel Spolsky found this to be true, so he wrote this great article about character encoding and Unicode. I really recommend that you give it a read. It's a little old (2003), but still completely relevant.

If you are feeling too lazy to read his summary (I blame summer), you can read my even shorter summary.

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.

2) Unicode is a character set that to hopes include characters from almost all languages. Unicode is not an encoding though. Older character sets, like ASCII, mapped characters ('A') to numbers (65), which got encoded as the binary representation of that number. Unicode maps characters to something called code points. 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 UTF-8.

3) Unicode is not always encoded as 2 bytes. UTF-16 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 UTF-32 is always 4-bytes.

4) UTF-8 is backwards compatible with ASCII for the first 8 bits. This means that UTF-8 is backwards compatible with ASCII.

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.

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.

Tuesday, June 14, 2011

Resumes for Programmers

How useful are resumes for programmers? I've read a few articles now (including this one entitled "Programmer Resumes Are Deprecated") that claim employers are much more interested in artifacts and evidence of your programming. Things like github accounts, personal projects, and development blogs.

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.

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 SDLC? Or processes like Scrum? 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?

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.

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.

Sunday, June 12, 2011

More on Mixed Reality Interfaces

Here's a few videos showing how the Mixed Reality Interfaces (MRI) work. As I mentioned before, our REAP team this term is exploring interesting uses for this technology.

This is the best video, I think:

There's a few more here and here.

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.

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 Ignite Waterloo (so stoked!) and an interesting sounding talk at uxWaterloo. There might be a midterm somewhere in there too, but that's considerably less interesting. :P

Monday, May 23, 2011

New York!

I went to Sackets, New York with Dani this long weekend! I got to go to my very first wedding! It was so much fun!

I had scrum training with Declan Whelan 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 interested 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!

Anyway, we left Waterloo pretty late. We stopped by Toronto to get my passport (border laws >_<), 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.

Next morning, we went to the wedding in Sackets. They had a small (40 people) ceremony under a gazebo overlooking the harbor. It was quite pretty! The whole thing only lasted about 10 minutes. A good introduction to weddings for me. :P

After that, Dani and I sneaked off to eat some food, while everyone else took buttloads of pictures. It was good.  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. :)

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.

Sunday was mostly uneventful. In the morning (well, "morning" = noon), we went for a drive around Sackets. It's a really nice city. It reminds 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.

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.

All in all, it was a great weekend. My first wedding was excellent! Yay! :)

Monday, May 16, 2011

Schedule Changes!

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.

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.

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. >_<  I got most of A0 done, which was rewarding, I guess.

While Real-Time is very interesting and 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 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  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.

Instead of Real-Time, I decided to pick up Distributed (again) and UI. Unfortunately UI was full, so I only got into Distributed.

So my final schedule, after 2 weeks of shuffling and being on wait lists, is Architecture, Networks, and Distributed.

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.

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.

Now if you'll excuse me, I have a sushi date with the Girl.

Tuesday, May 3, 2011

Start Of The Term

The term started yesterday, and things are already getting busy. I think my blogging frequency is going to be much, much lower this semester. :/

The first Real-Time assignment is out, and it's very 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:
1) makefiles suck
2) operating systems are useful

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. Apparently the course involves a lot of researching and 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.

The first REAP meeting is today too. I'm looking forward to meeting the whole team. I'm also looking forward 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.

Looks like this will be a very busy, but fun, semester!

Saturday, April 30, 2011

Spring!

Yesterday was my last day at Karos Health. It was an excellent term with amazing people, and innovative software and technology. I'll definitely miss working there. They gave me a remote controlled helicopter as a parting gift.


How cool is that!










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:
Software Design & Architecture
History of Mathematics
Real-Time Programming
Distributed Systems


Should be a fun semester. :) I found out that one of my co-workers taught my 
Distributed Prof. :P


I also have REAP next semester, which should help me meet my excitement quota for 
the semester.


In other news, the Ignite Waterloo for Spring has been announce. I went to the one in Winter,
 and it was excellentI highly recommend that you check it out, if you get the chance.

Friday, April 15, 2011

Life Dilemma #8

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 SmartGWT, a very comprehensive GWT framework. Check out their showcase. 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 colleague 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 practice I've ever learned. :P

This last week got me thinking about what I want to do next co-op term. Working at Karos Health has been an amazing 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 provides a lot of opportunity 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 coming out with products that don't exist in the market yet! It's very exciting stuff.

The dilemma is whether 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 incredible learning 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.


In other news, I got an offer for a UW REAP 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).

Thursday, April 7, 2011

New Projects At Work

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 different project 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 usability 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 standards that exist are not as useful as I would expect.

I also need to start working on that silly work term report soon. I'm writing it on RESTful 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.

Friday, February 11, 2011

More Interview Questions!

For all you co-op kids, here's a nice list of interview questions. Hope this helps you get that dream job! :)

Tuesday, February 8, 2011

Ignite Waterloo

I just got back from Ignite Waterloo, a set of 5-minute talks on everything and anything "geek culture"(whatever that means). The variety of topics was excellent. We went from Steampunk monsters, to problems in Africa, to Craniometry, to homelessness, to tequila. The breadth of topics was great. Here's 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).

Also, they had a live twitter wall and a marshmallow sculpting contest. Awesome.

Monday, February 7, 2011

More on GWT

I've been using GWT 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.

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

In other news, course enrollment is tomorrow. I am currently pre-enrolled in CS 452: Real-time, but I don't know if I want to do it or not. The course load is 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. Unfortunately, next semester in the only time I can take it for the rest of my academic career. :/

Wednesday, January 12, 2011

Oranges

Who do they think they are? I eat one god damn orange and my fingers smell like citrus for weeks.

Monday, January 3, 2011

First Day!

I just finished my first day at Karos Health! 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 planning poker! Very cool! I've always wanted to do that. I will be working on really cool networking software that connects healthcare vendors, though I can't talk about all the details. :P

I got to use Mac's OS X for a decent amount of consecutive 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.

After work, I got sushi with Dani. She met me outside my office. :) Yummyaki gets our coveted sushi seal of approval!

Now time to do some more research on work stuff, so I'm not completely dumb for tomorrow. :P

I hope your first day of work/school went well (if applicable :P)!

Saturday, January 1, 2011

End Of The Open-Source Curse?

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.

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!

Speaking of which, happy new year everyone! I had a relaxed new year's party with Dani and Jesse. 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! :)

I am excited for all the interesting things this year. First, I have work starting on the 3rd with Karos Health. 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!

Hopefully you all had a fun new year's party. Stay classy. :)