3D Printing Nuances

I learned yesterday a lot about the nuances of 3D printing. A few things I learned:

  • Masking tape + glue isn't nearly as good of an adhesive as double sided tape.
  • How to change the filament. At first I was inserting the filament in the wrong hole.
  • How to command the 3D printer to extrude or retract the filament.
  • Carbon fiber prints are so much better than plastic prints (more expensive as well)
  • How to handle a filament jam.

I spent a full hour waiting for the index finger of the inmoov robot to print, but then the filament got jammed near the end. Frustrating.

On a more positive note, I printed a shoelace lock - basically something that keeps the shoe laces tight, so you don't have to tie your shoe laces again.

Taiwan! (aka “I’m still alive”)

It's been well over a year since I last blogged. Now that I am forced to write a blog post for my school, I might as well update you (and myself) with what I've been up to the past 15 months.

So many events happened since my last blog post in October of 2012. Here are the highlights:

  • November & December 2012: Worked at the Evernote office in Beijing, China
  • January 2013 - April 2013: My 4B semester at the University of Waterloo in Canada
  • May 2013 - August 2013: Started kottab.org, an initiative dedicated to improving the quality of education in the Arab World
  • September 2013 - January 2014: On exchange for my final semester of school at National Taiwan University in Taipei, Taiwan

In addition to the highlights above, I managed to squeeze in trips to Jordan, Korea, Japan, California, Germany, Austria, and the Philippines.

The reason I am writing this blog post is because NTU, the school I have been studying at for my last semester, requires me to write a blog post to document my experience. Therefore, my exchange experience in Taiwan will be the primary focus of this post. I won't be writing anything too personal, but I'll rather focus on observations I have made about this beautiful place.

Taiwan is now a place that's very near and dear to my heart. I fell in love with my university, the people I met there, the culture, the landscape, and even the weather!

The Education

My exchange to Taiwan is the second exchange experience I have. My first exchange experience was in Singapore in early 2011 at National University of Singapore (NUS). While I immensely enjoyed my exchange experience in Singapore, I was very disappointed by the quality of education that I received at NUS. Aside from the Mandarin course that I took there, the technical courses were way too easy and I benefited little from them. This is a huge contrast compared to my experience at NTU. All the courses at NTU, be it Mandarin or computer science related courses, were top notch. The courses were very demanding, well structured, and I benefited a lot from them. In fact, the quality of the courses that I took at NTU is better than most of the courses that I took during my fourth year at the University of Waterloo, my home university.

Two of the three technical courses that I took at NTU were taught in Mandarin. Assessments and lecture slides, however, were in English. This was a bit challenging, but was a very interesting experience. I realized it's actually doable to take these courses without being terribly fluent in Mandarin. The English slides, combined with the few words that I can understand from what the instructor is saying, I can imagine in my head the context and the general message the instructor is trying to convey.

One thing I really admire at NTU was how seriously they take sports and art. You can take courses there in, say, Rumba dancing or ping pong, and you'd be given credit that can count towards your degree.

The People

I found the Taiwanese very hospitable and welcoming. I had two language exchange partners there and one of them, 彭新韵, I spent a considerable amount of time with. A friend of mine was a Taiwanese Canadian and she also introduced me to her family, whom had generously invited me over dinner and took me on a trip to Jiufen, a beautiful gold mining town off the northern coast of Taiwan.

A couple of other observations:

  • Honesty: I found the people in Taiwan a lot more honest and direct than those in Mainland China. When I was in markets in China, I usually had to bargain down to one third of the price initially proposed. In Taiwan, although more expensive, sellers propose reasonable prices and leave little room for bargaining.
  • Beauty ideal: I observed that the Taiwanese adopt the Western beauty ideal and it was something that I, an Arab, was able to experience up close. Whenever I am accompanying Westerners, I very often notice how the Taiwanese would often give them a more "special" treatment compared to the way they would treat me. That's not to say that they weren't super friendly to me, but that a slight disparity in treatment (compared with those who are tall, blue-eyed and/or blonde) was noticeable.

With Mainland China

How the Taiwanese and Chinese perceived each other was a matter I was really curious about, but it was something very difficult to observe first-hand. My Mandarin was not good enough to tell apart Mainlanders from Taiwanese. From what I have gathered though, the Taiwanese didn't think very highly of Mainlanders and consider them less developed. On the flip side, I have seen several cars driving around Taipei with a huge flag of mainland China. They had large microphones mounted on top and giving speeches that are presumably trying to persuade the Taiwanese to be part of China again.

For the Taiwanese, it's easy for them to visit China. China even offers big incentives and high salaries to those who wish to move and live in mainland China. The Chinese, on the other hand, need a visa to visit Taiwan and, from what I heard, might need to be part of a tour group to visit.

Cleanliness

I found the streets of Taipei very clean (or, at least relatively, given that I moved there after months of living in Cairo, Egypt). It didn't take me very long to notice though that there are very few trash cans. From what I understood, the reason is they don't want households and shops abusing it for disposing their own waste. It ends up being a slight inconvenience having to carry an empty cup for an hour after you finish a drink, but you quickly get used to it. Recycling is a big thing in Taiwan as well, and that's something I highly admired.

Food

There were tons of food options in Taipei, especially in Gongguan where I was living. Aside from the traditional Taiwanese food, Thai, Vietnamese, Korean, and Japanese cuisines are available in abundance.

Sightseeing

I fell in love with the nature in Taiwan. From hot springs to geological parks to gorgeous little islands, Taiwan has an excellent transportation system that makes all these places easily (and cheaply) accessible.

Here are some quick highlights of places I have seen in Taiwan:

  • Jiufen (九份): A town on the northern coast of Taiwan. Jiufen used to be a gold mining town at the time of the Japanese, but it has now turned into a tourist destination thanks to its scenic views of the Pacific ocean.
  • Yeliu (野柳): A geological park also on the northern coast of Taiwan. The rock formations (known as hoodoo stones) are a very distinctive feature of this place.
  • Taroko (太魯閣): A gorgeous national park with very beautiful nature. There there is a place known as the "Eternal Spring Shrine", a shrine built on top of a waterfall and considered one of the scenic landmarks in the area.
  • Green Island (綠島): An island off the coast of Taidong in Eastern Taiwan. Aside from the beautiful landscape, it is home for some really nice scuba diving spots.

As you can probably tell, I wrote this post in a bit of a hurry 🙂 I'll try to discipline myself to post more updates in the future.

San Francisco Startup Weekend

I participated in a startup weekend event last weekend in San Francisco and, I have to say, I feel like I have learned so much in 54 hours.

Our team originally consisted of five members - myself, Steen Andersson, William Martin, Cyril Dorsaz, and Maurice Mauser. We were set out with a task of creating a digital photo frame. Our differentiator was that, instead of pulling photos from a memory card, we'd pull it wirelessly from Facebook, Picasa, iCloud, or whatever. After doing some market research, however, it turns out that similar products already exists and that the digital photo frame market isn't a particularly growing market.

The bulk of Saturday was spent brainstorming until we settled on an idea in the afternoon. We created GetSlide (www.getslide.co), a tool to help presenters share their slide decks online and helps attendees annotate these notes online. By then, there were three of us left on the team: myself, Steen, and Will.

A few key points:

  • The biggest lesson I learned during that weekend, as obvious as it may sound, is that building the product didn't matter very much. It was the customer validation, surveying, the business model and how to acquire the first key customers that mattered.
  • Worked and met some great people.
  • I pitched three times during the weekend, which was some good practice.
  • I went through the frustrations of pivoting from one idea to another (and another).
  • I did surveying with another team called "Split my tab". We marched down the streets of San Francisco asking people if they had any problems in splitting their bills.

Skiing in Tahoe

In 2009, I put up a tutorial on youtube on how to stitch a gigapixel image. Aside from the fact that the tutorial was really cheesy and that I never actually finished it, the image in the tutorial was of the beautiful lake Tahoe.

Now, almost three years later, I finally made it out to Tahoe with Tim McKague, Sally Lee, and Sean DyStanley Chan, whom I worked with at TellApart last Summer, also managed to join us for about half the trip. We all went to Squaw Valley to ski and snowboard for the entire weekend.

My track in Winter sports isn't really the best. I have only went skiing twice before then and performed so poorly that strangers were yelling at me telling me that I "completely suck". Nevertheless, I decided the "bite the bullet" and see how things go.

On Saturday, the first day of skiing, I think I fell ~50 times. Everyone helped in instructing me, especially Stan. I think Stan was bored enough that he decided to document my struggle. Like this one:


 

And this one:

 

On the second day though, I felt a lot of improvement and I didn't fall nearly as often. I managed to join Tim and Sean on their skiing/snowboarding adventures. Sally decided to snowboard for her first time that day and was left to struggle for the rest of the day on the green hills. I guess Winter sports aren't that bad after all.

Breaking Aljazeera’s CAPTCHA

I was on Aljazeera Arabic's website the other day and, as I was voting on a poll, was presented the following screen:

The CAPTCHA in the screen above immediately caught my attention. The distortions in it seemed very simple, the text was not warped in any form and no overlap between characters.

The following is a URL for one of the CAPTCHAs:

http://www.aljazeera.net/Sitevote/SiteServices/
Contrlos/SecureCAPTCHA/
GenerateImage.aspx?Code=EANmyyXghpajFhOX6rCRKQ==&Length=4

Opening the URL above and refreshing the page a few times gives the following CAPTCHAs:







The dashed grey lines are randomized, while the letters in the CAPTCHAs above are static. The letters are encoded in the Code parameter in the URL. Notice that there are two forms for each character; a straight form and another that is slightly rotated.

Aljazeera's CAPTCHA can easily be broken by doing the following:

  1. Removing the dashed grey lines
  2. Finding the characters in the image
  3. Separating the characters in the image
  4. Classifying each character

I'll be using Octave/Matlab for the above tasks and will be explaining my algorithm using the following CAPTCHA as an example.

Continue reading "Breaking Aljazeera’s CAPTCHA"

Interning at TellApart

My Summer this year was unique in many ways. It was the first time I ever see the Pacific, the North American West Coast, California, and the San Francisco Bay Area. It was also the coldest Summer I ever experienced, having to wear a sweater on most nights. Apparently, this is the "normal" San Francisco Summer. More importantly though, was my Summer internship at TellApart.

TellApart is the fourth company I join for an internship and, over the course of sixteen weeks, my internship at TellApart grew to become the most rewarding and memorable internship I have experienced so far.

One of my main goals in joining TellApart was to experience the startup culture in Silicon Valley. TellApart has a very open and transparent culture; every member of the team knows about everything that goes on in the company. The team, aside from being super-talented, is always willing to listen to ideas, comments and suggestions (even from the intern!) A big portion of my internship was spent working on ideas that I proposed myself, and I started working on them within a week of proposing them!

Being a small company, it was very insightful to see the company evolve over a period of 16 weeks. Continue reading "Interning at TellApart"

El-Tetris in HTML5. See it in action!

Following up on my previous post on the El-Tetris algorithm, a Tetris player that clears 16 million rows on average per Tetris game and, at the time of this writing, is the most performant one-piece Tetris AI out there, I thought I would provide an implementation, rather than just a description of the algorithm.

This algorithm is implemented fully in Javascript and the rendering is done in HTML5 canvas. The rendering is purely for cosmetic reasons (so you can actually see how the game is progressing). If you're only interested in the final score, you can choose to speed up the game by enabling "Hardcore Mode". In that mode, rendering the board will be disabled and the algorithm will run continuously in the background. You can also change the size of the board; the smaller the board, the shorter the game.

Full source code can be found here.

Note: For faster execution, use Google Chrome.

inFormed – A LinkedIn Hackday Project

Last Friday I participated in the LinkedIn Intern Hackday event that was hosted at LinkedIn's headquarters in Mountain View. I joined my classmates from Waterloo Michael Truong, Kenneth Ho and Sumit Pasupalak.

We started a project dubbed "inFormed". The aim of the project is to raise awareness on global issues around the world. Currently, it's a Firefox plugin. As you browse the web, it will analyze the content of the page you are browsing and, based on that content, will show a fact, or a statistic, that is both relevant to the content of the page and related to a global issue. Along with that, it will provide a link to a charity where you can donate and/or get involved.

For example, if you are buying a book online or browsing an educational site, you would see, at the bottom right-hand corner, something like this:

Have a look at the screenshots below for some more examples. Take a close look at the fact displayed at the bottom right-hand corner and notice how it's related to the content of the page.

[nggallery id=informed_screenshots]

To summarize, the goals behind inFormed are the following:

  • Help you stay informed on global issues around the world.
  • Facilitate how you can be involved by providing links to related charities.
  • Provide a seamless and an uninstrusive user experience.

Behind the scenes, inFormed sends the URL of your current page to the server where we fetch the content of that page, extract the text, and run it through a Naive Bayes classifier to select what is likely to be the most relevant fact or statistic on that page, and feed that back to the browser.

This event is the first hackathon we ever participate in, and we are well proud to have made it to the final round! We didn't win the event, but were extremely impressed at the quality of the projects that people presented.

We had some votes on twitter as well:

 

inFormed will need a little more work to be ready to publish. Should we invest the time in doing so? Would you use it? Let us know!

From the Far East to the Far West

So the past few weeks have been quite hectic, having to relocate from the far East (Singapore) to the far West (California) along with starting my internship at TellApart.

Within a span of eight days, I surfed through six cities in five flights over four continents. Here's the timeline:

  • May 7, 2011: Singapore, Singapore ✈ Dubai, UAE ✈ Cairo, Egypt
  • May 14, 2011: Cairo, Egypt ✈ Paris, France ✈ New York, USA
  • May 15, 2011: New York, USA ✈ San Fransisco, USA

My one week visit to Egypt marks my first visit after the January 25th revolution. Traces of the revolution are certainly visible everywhere you go - stickers on street carts saying "January 25", spray painting on walls and bridges denouncing Mubarak and his regime and barbed wires around the Maspiro Television building. There was also a protest to express solidarity with Palestine in Tahrir square on Friday, May 13th. Hopefully political and economical improvement would be as visible in the near future.

For the first ten days in California I stayed at USA Hostels near the Civic Center in San Francisco. The commute time to work was around 75 minutes. One of the weekends the hostel was fully booked and didn't have room to accommodate me. Thankfully, Stan Chen, my workmate, let me stay over at his place then. I have now settled in a house a few blocks away from work.

I am really enjoying my work at TellApart so far. In many ways it was exactly what I was aiming for this work term. It's a great mixture of really smart people to work with, a startup environment, and serious scalability issues to deal with.

Aside from that, I really don't know what else to say. In fact, I have no idea why I am writing this post right now. Off to bed.