Thursday, June 16, 2011

IBM Centennial

June 16th, 1911 - Three small companies merge and become the Computing Tabulating Recording Corporation (CTR). 13 years later, their President, Thomas J. Watson, renames them to IBM.

One of the most innovative companies in the world has turned 100 years today. And what a century it has been. IBM has made a huge technological impact on the way our world functions today. It's hard to summarize how huge it really is... I can guarantee that everyday, every one of us interacts with technology that was invented by IBM.

For example, the Universal Product Code and barcode scanners used in every store around the world today. And Online Transaction Processing Systems, technology used for real-time online transactions in banking, airlines, order processing, e-commerce, and manufacturing systems. The magnetic stripe technology, used in credit cards, debit cards, and many other cards. The Selectric typewriter. The laser printer.

Their computing inventions do not get any less impressive. Dynamic Random Access Memory (DRAM), RISC Architecture, Relational Databases, Data Encryption Standard.... IBM System/360The IBM PC... And the list goes on.

IBM made a really cool short video showcasing their greatest inventions over the last 100 years. You can also check out their Icons of Progress page to see more.





Here is also a short movie if you have some time to kill, "They Were There", told by IBMers who were involved in some of those innovative projects that shaped our lives.





You can also check out their IBM 100 site to see how they have changed the world.
I'm excited to see what IBM will bring us in the next century.

Happy 100th Birthday International Business Machines!

Wednesday, June 15, 2011

Inside Search 2011

Google hosted an Inside Search media event yesterday, to announce some of their latest features and technologies that are coming to Google search. The new feature I'm most interested in is the next step for Google Instant:

Instant Pages

We all know Google is obsessed with speed. They are now introducing a new prerendering technology into Chrome, which will start loading the page you are most likely to click on in the background, cutting down or even eliminating the time it will take for the page to load once you click it.



Google said that the pages will only preload if the algorithm has a very high confidence that the user will click on that specific link. They did talk about the fact that they don't want to use up bandwidth for no reason.

I think Google can pull this one off, after all, the amount of search data they receive on a daily basis is enormous. They definitely should be able to figure out what pages users click on most often. Think about how often you search something and go to look at it's definition on Wikipedia, or the popularity of Google's I'm Feeling Lucky. I think Google's algorithms should be able to do a good job predicting our next click.

I've always liked Google Instant which searches while you type, and paired up with Instant Pages, it can save us that annoying period of time between clicking on the link and starting to interact with the page. I'm looking forward to seeing how well this feature will perform.





Google is also bringing some of the unique features mobile search features to the desktop. Android users should already be familiar with both of them.

Voice Search will now allow you to search by speaking. During the demo, it seemed to recognize words really well, even a word the presenter didn't know how to spell. Google is also supposed to learn through voice searches to recognize words better, so it can be quite effective. This feature will only be available on Chrome.

Image search now will also allow you to use images to search. You can drag and drop images or provide links and Google will then analyze the image and search using the information retrieved. This one is already rolled out for me and works really well, can be pretty useful too.





Google also discussed how much mobile browsing has grown in the recent years. They showed this graph which compares the growth of mobile search over the last 3 years compared to how desktop Google search grew in it's early days.


They also showed how the two compare over a regular workweek. During the week desktop search dominates but start falling on Friday and is much lower, while mobile search rises during the weekend. Obviously, mobile search is growing really fast, so Google also added a few helpful new features for Google Mobile to save you some keystrokes.





From the new desktop features, search by image can be pretty useful in some cases. I doubt I'll use voice search any time soon but it is the next step in being able to interact with your computer by talking to it and I suspect it will be much better then the voice recognition that is currently built into Windows (I've seen some fail videos, heh).

Instant Pages should be really useful though. I hate waiting for pages to load, so if this feature is effective, cutting down that page load time will make me happy :)

Ok, lunch break over, back to work! Also:

GO CANUCKS GO!
 

Tuesday, June 7, 2011

Internship!

I am officially employed full-time for the next 11 months!

Yesterday, I accepted a job offer for an 8-month internship at the Ministry of Health and Long Term Care. I am currently on my 16-month co-op term, so I will not be taking any classes until Fall 2012.

I had a phone interview with them almost 3 weeks ago (my first interview of the term too). This is kind of unfortunate, I hate phone interviews. I always feel more comfortable with face-to-face interviews because I get to meet the people and see the environment I will be working in.
I have a friend from class who works there right now though, and he is enjoying it. He said they give him time to learn and understand what he needs, everyone gets dual screen and there's other co-op students working there. No free coffee though :( That's a real minus.

I do not know exactly what I will be working on while there. There are various projects I could be assigned to and I'm expected to work with a few technologies. I could also be moved to different projects depending on project progress and completion. They said the work is mainly done in C#, Java and SQL. The key is that I will be exposed to a full software development life-cycle. Should be a great experience.

So I will be working here at Centre for Learning Education until end of August, and then move over to the Ministry of Health from September 2011 to April 2012.
Looks like I do not have to look for a job for quite a bit. :)

11 months! Crazy!
 

Monday, June 6, 2011

Summer Job!

Last week I started my summer job at Ryerson's Centre for Learning Technologies (CLT), a research and development lab at Ryerson, with its projects focusing on accessibility for all users, including those with disabilities.

There are currently a few interesting projects in the works at the CLT, and all of them attempt to make social and cultural experiences more accessible and entertaining for users who are deaf, hard-hearing, blind and visually-impared.



I am a part of the project called SignLink Studio.
This project focuses on bringing a better online experience and accessibility for deaf and hearing-impaired users. There are already techniques used around the web to improve access for the deaf to online media and content, however most of them are text-based approaches such as closed captioning. This works, but it is not the optimal way for deaf people to communicate, especially not for those who are born deaf or suffer from it very early.

Deaf people communicate primarily in sign language. This is their first language, the one they think in, the one they translate everything into inside their head. For them, having to communicate in text is much like having to communicate in a second language for the rest of us. This is not something we do seamlessly, we will translate things to ourselves in our head to our first language to have a better understanding of it.

I have this kind of experience myself. I may think and be really comfortable with English now, but it was much different when I first came to Canada. Communicating was difficult, because I constantly had to switch between English and Polish. Doing this over a long period of time can be very tiring for someone who is not used to it.

The goal is to create an online environment which is designed and more comfortable to use for the deaf community.



Our project has 2 parts to it: A software called SignLink Studio (SLS) and a Content Management System (CMS) associated with it.

SignLink Studio is a software which allows users to record and edit videos and embed annotations, captions and other information right into them. Those annotations are called SignLinks, which allow the user to make a clickable area inside the video, which can link to another website or some other online content (it's like a video hyperlink). You might be familiar with youtube video annotations which have a similar purpose. The software is designed for deaf people to record and edit their sign language videos and then export them onto a website.

The SignLink Studio CMS is a program that supports content from SLS and it optimizes a website for simple navigation for the deaf, by using as little text as possible in favor of visual cues, in majority based on sign language. It`s like an online forum, except unlike a typical forum, most of the text content can be replaced by images and videos. The CMS can be installed onto a website and used by its members.

We also have a deaf person working with us and she gives us feedback on the project and how to improve it. She also demos the project to the deaf community and gets more feedback from them, that way we can make sure the software and CMS are as deaf friendly as possible.



I am working with one other person developing the SignLink Studio Content Management System.

So far, I am really enjoying the job. The job is quite relaxed and I am actually quite interested in the project and I am enjoying working on it (you know I mean it because it's 7:30pm and I am still in the office, heehee). The hours are also really flexible (so todays extra hours can translate into more sleep tomorrow, heehee). The work environment is just fantastic, I felt at home right away. It might have something to do with the fact that I already knew some of the people who work here before. A few of them are from upper years in Computer Science, two of them even used to be my TAs :)

I think this will be a great experience for me. I'll even get to learn some sign language. I already learned a few things, like "I must have coffee now".

Oh, in fact I actually have to demo our project tomorrow. *shrug*
Also, here is how my work station looks like. I love it! :)




And there's more exciting news on my job front today!
I really wanna share it, but I think I'll wait until tomorrow.
I'll write a separate blog post about it (that way I can also blog more often) ;P
So STAY TUNED!

It's time for me to leave my office and head down to The Edge Studios with a few friends. City and Colour (Dallas Green) is celebrating the release of their new album Little Hell, which comes out tomorrow, and they will be performing for free. And I can't miss pretty, free, live music. <3
 

Wednesday, March 16, 2011

Red Hat Interview

Hello! It's been a while since I updated this. I really need to make this a more of a routine for myself...

Anyways, I had an interview for Red Hat Canada today. It was for a 16-month Software Engineering Intern position. I thing working there would be awesome, and give me a lot of experience since I would be exposed to an entire development process of a project.

The two guys that interviewed me were previously interns there, and later came back for full time positions. This was cool, cause I got to hear about their experiences with the company back when they were students.

First, they asked me a few basic questions, software engineering questions and about my past work experience:
  • What do you know about this company? 
  • Why are you interested in working here? 
  • Do you have any experience with Linux and open source software? 
  • What kind of projects have you done in the past? 
  • What are the challenges of working in a team? How did you deal with a member of a team who didn't do his work or put in as much effort as the others?
  • What did you do in your previous job? What did you learn? How was it? 

The interview was going pretty smoothly at that point. I told them that I work in a UNIX environment at school, mentioned the team project I had in my Software Engineering class in second year and used it as an example in a few questions.
I talked about my job last term at CIBC as a Web-Application Developer. I talked about my responsibilities and also the improvements I made to the User Interface based on user feedback (they liked this part).

Then they got into the technical questions.



The interviewer informed me that they don't expect me to know the correct answer for all of the questions but they are more interested in my thought process so I should think-out-loud when answering questions and just try to think of the best solution.

  • What C compiler have you used? - gcc
  • The input to gcc is a source file. What is the output? - binary file
  • What is the machine language in a binary file called? - Assembly
  • Suppose you were writing a compiler. How would you do it? - ...

This is where things started getting tricky. They basically asked what the main parts of a compiler would be, what are the important things it needs to do. Thankfully I have read about compilers in the past so I knew what to say: lexical analysis, parsing source code, generating equivalent machine code and optimization.
  • So, optimization is supposed to make the generated code more efficient. Give us an example of code that would be optimized by a compiler?
: |

This is where I pretty much froze for a second. I have no idea how/when compilers optimize code. I obviously said that it would happen whenever the source code can be rewritten to improve efficiency for execution, but I don't know any examples when that would happen through compilation.

When I said that to them, they answered "Well, that's the point. We wanted to give you a question that you can't answer, and then have you try to answer it. We don't expect to get the right answer from you, we just want to hear how you would approach the problem."

They quickly gave me an example: An if statement that will always evaluate to false.
This is an example of 'unreachable code'. In this case, the compiler would completely remove the if statement and its contents from the binary file, since they will have no impact on the state and execution of the program.
I gave them another example that followed this structure (code after a return statement), but I couldn't think of much else.

Another example is a loop that executes, say, always 3 times. Rather then executing the loop, the compiler might convert the loop into 3 separate blocks of code (using statements from inside the loop), eliminating the need for a loop, because it would be more efficient in assembly to write the same thing 3 times.



1) Another interesting question I was asked:

You have 2 light bulbs. There is a 100-story building and you can drop the bulbs from it, however they will break after being thrown from a specific floor or any floors above it. You can reuse a bulb thrown which does not break. Find the floor where thrown bulbs will start breaking.

I got this one right away. Try to answer it yourself and find the best case solution. Answer is given below.



2) One more:

You have an integer array of up to 1 million unique numbers between 0 and 1'000'000. One of the numbers repeats. Find the number. The solution should minimize time, memory use does not matter.

Unfortunately it took me a while to answer this one, when it shouldn't have. The solution is really easy, and I know I have solved this problem before. I gave 2 different solutions, but I couldn't find the one that minimized time. After a moment, one of the interviewers drew the problem on the board and the best solution hit me right away when I saw the drawing. See if you can figure it out. Answer is below.



ANSWERS: Obviously both problems can be solved iteratively (for #2, array must be sorted first), but that is not very efficient.

1)
Drop the first bulb every 10 floors until it breaks. Then drop the second bulb every floor through the previous 10 floors.
Example:
Bulb 1 dropped from floor 10, 20, 30, breaks after dropped from 40.
Bulb 2 dropped from 31, 32, breaks at 33.
Answer is 33.
2)
Create a second array A of length 1'000'000. For each number n in your main array, increment the value at A[n]. If the value has been incremented before, you found the repeated number. You can use a boolean array too.



There was a few other technical questions, but those were the most interesting. And there ya go, that's my interview. I really didn't expect compiler questions, hehe.
I also had a chance to ask them about their work later on. It sounds like it would be a great work experience.
Well, all I can do now is wait and see what happens. I can expect the final answer some time next week.

Wow, I always make my blog entries long, don't I?  Well, let's hope I at least start posting more often :)

Monday, February 14, 2011

IBM Watson

On May 11, 1997, Deep Blue, an IBM computer, defeated Grandmaster Garry Kasparov in a game of chess. Today, February 14, 2011, IBM is back to make computing history once again... only this time, the challenge is much more complicated.

Watson is a computer designed to play Jeopardy!, or more specifically to answer questions posed in natural language. To many people this might sound quite similar to searching something on Google, but it is much, MUCH different.

When we search on the web, usually we pick 2 or 3 keywords to generalize our search to something specific. What Watson has to do is take a full sentence, and find the important parts, the keywords, on his own and derive a specific meaning, and then of course pick the right answer. Of course the entire process is much more complicated then what I just described.
And if you consider Jeopardy questions, they often involve either puns or irony and can be sometimes very tricky and confusing, even for a human player.

Also, Watson does NOT use the internet to find information. It uses its own, enormous database filled with any information you can imagine. They must have scanned a ton of content for him, hehe.

Natural language Processing has been a huge computer science challenge ever since the dawn of computers. However there has never been a computer as advanced as Watson, which was able to derive meaning from such complicated sentences with such a precision. Of course, it is not perfect, in fact nowhere near.

"The reality is that being able to win a game at Jeopardy!, doesn't mean you've completely conquered the language understanding task; far from it."
 - Dr. David Ferrucci (Watson Research Lead)

It is true, that Watson is far from the reality of people and computers being able to communicate in a human way, but it is quite a milestone in the development of Artificial Inteligence and Natural Language Processing.





Today, the first round of the Jeopardy challenge was held. Watson is going up against Ken Jennings, the record 74-day former Jeopardy champion, and Brad Rutter, the all-time Jeopardy money winnings leader.

I liked the fact that throughout the show, they included some videos explaining the challenges, development and significance of this project.
During the first half of the show Watson dominated, blowing the 2 humans away, but the second half was a little more sloppy. Watson struggled to find answers for some questions, and even got 4 questions wrong, allowing Brad to catch up.

The final day standings are:
  • Ken - $2'000
  • Watson - $5'000
  • Brad - $5'000
Tomorrow, we will see Round 2 and the Final Jeopardy! round. Make sure you tune in!

The IBM Jeopardy! Challenge
February 14, 15, 16 @ 7:30 pm (CBC in Canada)


Also, in case you are interested in some of Watson's specs:
  • 10 Server Cabinets filled with IBM POWER 750 Servers (pictured below)
  • 15 Terabytes of RAM
  • 2'880 Processor Cores
  • Operates at 80 TeraFLOPS (that's 80 trillion operations per second!!!!)



Friday, February 4, 2011

Usage-Based Internet Billing

On January 25, 2011, the Canadian Radio-television and Telecommunications Commission (CRTC) confirmed that Usage-Based Billing (UBB) will be implemented in Canada.

It been only a bit over one week since this happened and Canadians quickly jumped into the fight against CRTC, urging the government to take action. An online petition at http://www.stopthemeter.ca/ has now collected over 400'000 signatures. A lot has happened recently, but right now it looks like consumers will be successful in their campaign against UBB, however we cannot stop there, because we have lost a lot over the last few years and have much more ground to recover.

There are 2 things that I will cover in two separate posts (probably be quite lengthy).
First, this post, about UBB and the impact it may have on our internet lives, as well as why this is just the beginning of our fight. In a few days I will also make a post with worldwide internet statistics and how Canada has been ranking up in the last few years. The truth is not very pretty.

So here we go. Why Usage-Based Billing is a terrible idea.



The decision and how it affects internet in Canada

Only 3 companies in Canada have a network infrastructure: Bell, Rogers and Shaw. (I'll refer to them as Big3). This means that all the smaller ISPs (Teksavvy, Telus, Cogeco etc.) have to use the networks owned by the Big3. Most of those smaller ISPs were known to offer cheaper plans for high speeds and data allowances (including Unlimited), but this is all about to change.

UBB now allows the Big3 to charge the guys that use their networks per gigabyte, and they will be paying 85% of what a regular customer pays. This basically means that the smaller players now have to adapt to the pricing of Bell/Rogers/Shaw and enforce similar caps on their customers. Goodbye unlimited internet...

In fact, Teksavvy sent out this email earlier this week. All of their plans were supposed to be capped at 25GB/mo as of March 1st. That is from Unlimited down to 25GBs...

There's no possible way that the small companies can really make any real money out of that... Their prices will have to be pretty much the same and they will only keep a small fraction of this money since the majority will go to the Big3, whose revenue, by the way, is about to increase by quite a nice amount. And besides, the costs that are now placed on those smaller ISPs are wayyyy beyond what it actually costs for Big3 to deliver those services for them.

In fact, all of us are paying way more for internet then we should be. CRTC imposed a $1.90/GB extra cost for consumers who go over their monthly cap. But the cost of delivering that GB to the consumer is less then $0.01!!!!

And before someone comments "Big3 deserves to be paid by the others since the networks do belong to them": Well of course they do, and they did get paid! But the smaller guys were able to buy bandwidth in-bulk, which made much more sense because it actually allowed them to compete! Now they have to buy per-GB at 85% of regular price, which doesn't really let them compete...

This is just an outrageous attempt at putting the small guys out of business so that Big3 can control the market and have a monopoly. It also pretty much guarantees that no competition will be created because no company in their right mind would come into such a mess. Unless of course they lay down their own network which is not going to happen because it costs way too much...

UBB also will allow the Big3 to drop speeds, drop caps, and raise prices and no one would be able to do a damn thing about it. As long as the Big3 all agree on that issue, they could literally double the prices and can have total control of how consumers use their internet. And the smaller guys... well, they would just have to comply, because they will always have to pay 85% of what the Big3 charge.

It is absolutely ridiculous!



Canada is falling behind

Just 6 years ago, Canada was one of the front runners in broadband internet. Now we are falling behind. Not much has really changed technologically for the last 6 years, but of course number of internet users and internet usage per person has been constantly growing, and then late 2006 or early 2007, Bell Canada implemented usage caps on consumers for the first time. Then things started going downhill...


Canada's overall internet ranking 
(based on speed, access and price)
2006: 6th
2010: 22nd

Today, Canada has around 27 million internet users. That is much less than say France (44 mil) or Germany (65 mil), which have faster, cheaper and totally unlimited internet. 
German ISPs have introduced a 'flat fee' internet access 10 years ago. Those deals get you high-speed unlimited internet of great quality for $50/mo, which continues today. In some cases, you can even find free internet for some consumers in Europe and Asia. And I don't mean like a free wi-fi at your local cafe. I mean legit free internet access at home. And they don't seem to be having problems with congestion or overusage... 

This is because they keep up with the technology! Their ISPs actually care about the quality of services they offer, because the competition keeps the companies looking for ways to gain more consumers. In Canada, there's Bell, Rogers and Shaw who make agreements between each other letting them control the market and take money for their minimum effort, not to mention that they are not willing to spend some money to improve the Canadian internet service.

I will be posting more about statistics of internet around the world and how Canada compares in a few days.



The impact on how consumers use internet

The internet is transforming. The way we use the internet is constantly changing. A few years ago, it might have been in majority to communicate through emails and look at websites or search information on Google. However today, internet is shifting more towards streaming media, downloadable content and online gaming. Usage-Based Billing is simply not a realistic approach to billing the consumers if you want to keep up with the demand and progress of internet.

Maybe in the past, the heavy internet users that dominated the traffic load were the ones downloading illegal, copyrighted content, but this is no longer accurate. You can now purchase games, movies, music and othee content legally online and download it instantly, straight to your digital library. 

Services such as Netflix, Google TV or even YouTube are buzzing around the world as more people turn to their computers for media. Online gaming of course is huge now with many Xbox360, PS3 and PC (we can't forget about Steam) users going online everyday, downloading games and other content. 

The average internet usage per customer will continue growing, and nothing can stop that from happening. The new CRTC rules would prevent our internet in Canada from moving forward!



Government is taking action

Finally, we have managed to convince the government to take action. PM Stephen Harper and MP Tony Clement spoke out against CRTC ruling and all our political parties have also concurred with them.

The government reported that CRTC was expected to overturn the decision, but during yesterdays conference, CRTC announced that for now it will simply delay the decision 60 days, until May 1st, to review its terms. The government however promised that it will overturn the decision on UBB regardless of CRTCs conclusion.

So it looks like a victory for the Canadian internet users, but is it really? This only means that things will go back to the way they were a few months ago, which is much better then having UBB, but it isn't necessarily a good thing. As you saw above, Canadian internet does not fair very well on the world stage and in fact it is constantly getting worse. For this to truly be a victory, it must be taken further.

First of all, something must really be done about the CRTC! This is not the first time that the government was forced to step in to overrule their decision. In late 2009, CRTC refused to let Wind Mobile start up in Canada, because it did not meet the Canadian ownership and control requirements. Clement disagreed and overturned the ruling. Thanks to that move, a few small companies have now come into the picture and provide their service for better prices to Canadians which made many people happy.

And that creates the basis for the second, most important argument: Competition
This entire affair is the perfect opportunity to make the government realize that what the Canadian market really needs to function right now is competition. Time to gradually lift those ridiculous foreign ownership restrictions and chase those big corporate donkeys into a corner. 

This is not a new notion: "without competition there would be no market". This quote is a part of the definition of the word market for crying out loud! For our market to function correctly, we need more competition.Only that can help Canadian consumers in the long run. That is what keeps the innovation high, because it becomes more important for the key players to give something new to the consumer, something that will make them lean towards one ISP more then the others. Competition!

A friend of mine, Mike, wrote the following to me yesterday: "This has just stopped our Internet access from getting worse, but it does nothing to improve the current situation. We have to keep pushing these next few months for actual change in the way the Internet is structured in Canada."

That is exactly right! This is why our fight has just begun. We need to keep pushing, we need to use this opportunity to give Bell/Rogers/Shaw some real competition. Enough of this pushing around! This battle against UBB was caused by the enormous frustration of consumers with our telecom companies. I think we really need to stand up and fight to bring Canada back to the front. We are supposed to be a very technologically innovative country but our internet world rankings do not reflect that. Without change, those kind of things will just keep happening over and over again...

The structure of the Canadian technological market needs a radical change... 
Let's make sure we speak out for it!

Sunday, January 30, 2011

Hello World!

Hello, the internetz!

My name is Dominik Wojtkowiak and I finally decided to make my first post on my new blog. I made the blog a week ago and made it pretty but delayed this posting until now.

Actually, I didn't really make this blog. My friend Oleksi Derkatch kind of created it when he came by my house last week and sat down at my laptop. He probably also posted some strange Facebook or Twitter status for me that was very likely inappropriate. He started pursuing me into making my own blog after creating his back in October 2010, and well... it worked :)
I am glad he did though. I can already tell I will enjoy this and surely learn something new more often.
You should check out his blog at - Developers Anonymous -. It's really interesting!

So, introduction...

I am a 3rd year Computer Science student at Ryerson University in Toronto, Canada. I very much enjoy and have passion for what I do.
I also have a huge passion for music. I sing and play guitar (acoustic and electric) and definitely want to play piano/keyboard and drums in the near future.
I also love coffee. You might have figured this one out by now...
I have many other interests but I'm not gonna list everything, maybe you will see more of them in future posts.

This blog will probably mostly focus on technology, computer science, software engineering and other technology related things. And probably some about music and of course my life :)

I hope you will all enjoy reading about things I enjoy reading about after I write about them here... or something like that... Also, you will find more links to blogs of my friends over on the side. Check them out!!!!

That is it for now. I'm gonna go tell Oleksi that I made my first post now so he doesn't RAGE at me later.

See you on the blogosphere!