<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkAAQns7eyp7ImA9WhRUF0U.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486</id><updated>2012-01-28T16:05:43.503-05:00</updated><category term="data recovery" /><category term="fiber optic" /><category term="rental" /><category term="prophet" /><category term="master reset" /><category term="rtl" /><category term="cable" /><category term="pvr" /><category term="dopod" /><category term="rights" /><category term="network manager" /><category term="free" /><category term="sad faces" /><category term="unrar" /><category term="privacy" /><category term="word" /><category term="opus" /><category term="desktop customization" /><category term="service" /><category term="fiber" /><category term="phone" /><category term="norton" /><category term="bell sympatico" /><category term="train" /><category term="windows 7" /><category term="firefox" /><category term="audio" /><category term="applications" /><category term="cell phones" /><category term="windows xp" /><category term="wpa_supplicant" /><category term="mpeg" /><category term="spam" /><category term="peerguardian" /><category term="video" /><category term="repair" /><category term="email" /><category term="tv" /><category term="xbox" /><category term="windows mobile" /><category term="review" /><category term="bus" /><category term="winff" /><category term="laptop" /><category term="fraud" /><category term="broken" /><category term="malicious" /><category term="facebook" /><category term="paint" /><category term="amt" /><category term="diy" /><category term="google maps" /><category term="metro pass" /><category term="wifi" /><category term="engineering" /><category term="security" /><category term="putty" /><category term="metro" /><category term="ffmpeg" /><category term="happy faces" /><category term="802.1x" /><category term="adware" /><category term="wpa" /><category term="networking" /><category term="winrar" /><category term="itunes card generator.rar" /><category term="isp" /><category term="Windows Phone 7" /><category term="guy kawasaki" /><category term="dns" /><category term="challenge your world" /><category term="software" /><category term="funny music." /><category term="Concordia" /><category term="university of cambridge" /><category term="contactless smart card" /><category term="mp3" /><category term="bixi" /><category term="cutiemish" /><category term="fix" /><category term="ubuntu" /><category term="scam" /><category term="vista" /><category term="green party" /><category term="google" /><category term="windows vista" /><category term="yahoo" /><category term="wireless bridge" /><category term="superuser" /><category term="game access" /><category term="cd-rom" /><category term="dd-wrt" /><category term="converter" /><category term="spybot" /><category term="opendns" /><category term="amr" /><category term="forums" /><category term="iso" /><category term="dvd-rom" /><category term="securew2" /><category term="conference" /><category term="phish" /><category term="OS X" /><category term="daemon tools" /><category term="WRT54G" /><category term="compression" /><category term="network neutrality" /><category term="surfing habits" /><category term="sound" /><category term="opensource" /><category term="stores" /><category term="mcaffee" /><category term="telnet" /><category term="macbook" /><category term="internet" /><category term="spyware" /><category term="videotron" /><category term="domain" /><category term="lock up" /><category term="opus cards" /><category term="dual boot" /><category term="firewall" /><category term="HP TX1000" /><category term="thunderbird" /><category term="opus card" /><category term="rar" /><category term="7z" /><category term="rfid" /><category term="linux" /><category term="arduino" /><category term="radar gun" /><category term="hack" /><category term="sansa express" /><category term="vwindows vista" /><category term="shell script" /><category term="bell tv" /><category term="mouse pointers" /><category term="magnetic cards" /><category term="internet explorer" /><category term="cookies" /><category term="politics" /><category term="tutorial" /><category term="htc" /><category term="stm" /><category term="ssh" /><category term="avast" /><category term="blog" /><category term="activesync" /><category term="robotshop" /><category term="818 pro" /><category term="electronics" /><category term="folding money" /><category term="m" /><category term="outlook" /><category term="phishing" /><category term="game rental" /><category term="terminal" /><category term="3gp" /><category term="google earth" /><category term="safe surfing" /><category term="wireless" /><category term=".com" /><category term="hard drive" /><category term="encs" /><category term="microsoft" /><category term="Panther" /><category term="capstone" /><category term="montreal transit" /><category term="startup sound" /><category term="failure" /><category term="university" /><category term="10.4" /><title>Ask a Geek!</title><subtitle type="html">Technology inside</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ask.jaimeyu.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>247</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/jaimeyu/gbPa" /><feedburner:info uri="jaimeyu/gbpa" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEIFRH0yfCp7ImA9WhRWFEo.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1407456139136588743</id><published>2011-12-23T22:14:00.000-05:00</published><updated>2012-01-01T22:55:15.394-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-01T22:55:15.394-05:00</app:edited><title>Possible Downtime</title><content type="html">For reasons I won't talk about right now, jaimeyu.com may go down for a few days. This is merely a warning as I'm hoping nothing goes wrong over the holidays. I am switching domain name providers and there is a small chance you may not be able to get to the site but I think this scenario won't happen. So Happy New Year!&lt;br /&gt;
&lt;br /&gt;
Update: Had things go awry with my domain proxy so it looks like I'm locked for 60 days before I can move my domain again. Very annoying. I'm still planning the move nonetheless but it will be sometime in spring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1407456139136588743?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wjMD65IPlN7nhmX8fjpoZolKJzw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wjMD65IPlN7nhmX8fjpoZolKJzw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wjMD65IPlN7nhmX8fjpoZolKJzw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wjMD65IPlN7nhmX8fjpoZolKJzw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=iO19ohbCaDM:SoODMNAcpJs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=iO19ohbCaDM:SoODMNAcpJs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=iO19ohbCaDM:SoODMNAcpJs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=iO19ohbCaDM:SoODMNAcpJs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=iO19ohbCaDM:SoODMNAcpJs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/iO19ohbCaDM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1407456139136588743/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/12/possible-downtime.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1407456139136588743?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1407456139136588743?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/iO19ohbCaDM/possible-downtime.html" title="Possible Downtime" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/12/possible-downtime.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EMR3kzeCp7ImA9WhRXFko.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-4939987946437711049</id><published>2011-12-23T17:34:00.002-05:00</published><updated>2011-12-23T17:34:46.780-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T17:34:46.780-05:00</app:edited><title>Last day at Tyco</title><content type="html">Wow. Today was my last day at Tyco. It's A bitter sweet feeling leaving the company. Luckily, I've gotten good projects and pretty much had a good time. Leaving a lot of good co workers behind is probably the hardest part. I also feel bad beside I left my colleagues with a significant amount of work that i was responsible of. I was partitioning my time today for helping them out so they can have a head start. Especially one where the code size ib gave was much too big in comparison to another prototype I had built. I have no idea why the prototype I gave doesn't work. Most likely something broke as I scrambled to get it packed up for someone else to work on. Sadly, I was one of the last people to leave the office today. I wasn't counting on it being a half day so I actually spent the morning running a test and helping a colleague. Oups. Maybe it's a message I'm working too much. 

But now it's time to move on to a new job and a new city. I will be working at Thales and it sounds like I will get a chance to continue working with embedded software and other fields. I'm looking forward to working with them and expand my experience and skill sets. 

In other news, i now have a bunch of free time. I'm wounding what I'm going to do Monday morning with no work. I will definitely be packing my stuff in preparation of the move. But that shouldn't be to bad. I don't have a lot of stuff to begin with. 

Maybe I will get on that serial sniffer application I've been meaning to write. Would have been nice to have. More extensible version than the one I wrote at work. Plus it would be open source so I don't have to hide it like my other stuff because it was created at work. 

So I wish you all a happy holiday and a new year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-4939987946437711049?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EZA9sVyR9Y4OwfS7lBK0j88tuhw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EZA9sVyR9Y4OwfS7lBK0j88tuhw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EZA9sVyR9Y4OwfS7lBK0j88tuhw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EZA9sVyR9Y4OwfS7lBK0j88tuhw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=i1mMvf7UA9g:C0k3k5aUu0k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=i1mMvf7UA9g:C0k3k5aUu0k:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=i1mMvf7UA9g:C0k3k5aUu0k:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=i1mMvf7UA9g:C0k3k5aUu0k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=i1mMvf7UA9g:C0k3k5aUu0k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/i1mMvf7UA9g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/4939987946437711049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/12/last-day-at-tyco.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4939987946437711049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4939987946437711049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/i1mMvf7UA9g/last-day-at-tyco.html" title="Last day at Tyco" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/12/last-day-at-tyco.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMHR30_eip7ImA9WhRQGUw.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1929380565568025056</id><published>2011-12-14T21:00:00.001-05:00</published><updated>2011-12-14T21:00:36.342-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-14T21:00:36.342-05:00</app:edited><title>Source Code</title><content type="html">Just a heads up on some code I'm working on. I'm working on some Arduino code for myself and my friend and I will be posting it here:&amp;nbsp;&lt;a href="http://code.google.com/p/arduinotutorials/w/list"&gt;http://code.google.com/p/arduinotutorials/&lt;/a&gt;&amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
There isn't much but I will start using that for all my source code snippets from now on.&lt;br /&gt;
&lt;br /&gt;
In other news, I'm moving to Ottawa for a job opportunity so I probably won't be updating the blog with new tutorials or code for a while. I was hoping to take the vacation to do some coding but it looks like it will be replaced with trying to move my life to a new city :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1929380565568025056?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6460kVAuKWwwNmuOKzRsj1I35GQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6460kVAuKWwwNmuOKzRsj1I35GQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6460kVAuKWwwNmuOKzRsj1I35GQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6460kVAuKWwwNmuOKzRsj1I35GQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=88gDQ4LNCQA:ddEKSrsEcLI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=88gDQ4LNCQA:ddEKSrsEcLI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=88gDQ4LNCQA:ddEKSrsEcLI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=88gDQ4LNCQA:ddEKSrsEcLI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=88gDQ4LNCQA:ddEKSrsEcLI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/88gDQ4LNCQA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1929380565568025056/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/12/source-code.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1929380565568025056?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1929380565568025056?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/88gDQ4LNCQA/source-code.html" title="Source Code" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/12/source-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QARH08eCp7ImA9WhRTEk0.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-5240144178613291287</id><published>2011-11-02T00:49:00.000-04:00</published><updated>2011-11-02T00:49:05.370-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-02T00:49:05.370-04:00</app:edited><title /><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0-vPLXrhHwM/TrDDjPp6PuI/AAAAAAAABjc/KhTYULmKAT8/s1600/IMG_1163.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="426" src="http://4.bp.blogspot.com/-0-vPLXrhHwM/TrDDjPp6PuI/AAAAAAAABjc/KhTYULmKAT8/s640/IMG_1163.JPG" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The Brains&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
I just received my &lt;a href="http://www.st.com/internet/evalboard/product/252419.jsp"&gt;STM32F4Discovery &lt;/a&gt;evaluation board from ST Microelectronics. My colleague at work gave me the heads up that STm was shipping the free sample so I jumped on the opportunity. The deal is unfortunately over right now but you can still pick the baby up at&lt;a href="http://parts.digikey.com/1/parts/2484058-eval-kit-stm32f-discovery-stm32f4discovery.html"&gt; Digikey for ~20$&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The particular reason I got this board was the built in accelerometers. I've been trying to save up and justify for some accelerometers + gyroscopes but they're either ridiculously expensive (I live in Canada, shipping and import duties are not cool, often cost more than what I want) or ridiculously difficult to solder. So a pre-built accelerometer was a no brainer for me. Anyways, the name of the game is cheap and so far,&lt;a href="http://www.youtube.com/watch?feature=player_detailpage&amp;amp;v=IbjflbfI-eg#t=45s"&gt; free is the best price&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I also ordered some free samples for some CAN bus transceivers and controllers. Hopefully, I will get them by next week but we'll see. I'm going to be putting it all together as a vehicle telematics system. I would have love to have gotten some gyroscopes for some better twist data but I will have to live with what I got.&lt;br /&gt;
&lt;br /&gt;
Basically my car is going to be outfitted with a real time suspension geometry sensors, radars for both front, rear, and blind spots, maybe a chassis flex sensor if I can figure out how to hide the sensors, as well as a CAN bus interpreter for engine telemetry, GPS for location (if I can find my old GPS unit for a Palm Pilot). Everything will be fed into my laptop for now for display. I doubt the chip has enough power for a straight up Linux with OpenGL driving a large 5 inch screen so whenever I get the time, the board's screen will have to be completely home brew which is a waste of time for what I want. For now, I will run it on my laptop which lets me code 3D models which is way more useful than black on grey numbers. Is there a point to this? Probably not but my passion is in real time telematics and that's enough for me.&lt;br /&gt;
&lt;br /&gt;
The hard part will be seeing what hardware I can install while its -15C during winter. Oh well. Hopefully it will go quick and the CAN bus will get done fast.&lt;br /&gt;
&lt;br /&gt;
Side note: STm doesn't ship the product with a free GCC toolchain that works with their USB to JTAG interpreter. I'm having a ton of problems trying to get my Ubuntu running but &lt;a href="https://github.com/whitequark/stlink"&gt;I found one possible GCC toolchain here&lt;/a&gt;. I'm going to try it when I figure out what I'm going to do with my Virtual Machines thrashing my hard drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-5240144178613291287?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yWZ91A8bF6Agiu1wo5FvlA_lQQw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yWZ91A8bF6Agiu1wo5FvlA_lQQw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yWZ91A8bF6Agiu1wo5FvlA_lQQw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yWZ91A8bF6Agiu1wo5FvlA_lQQw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=92nOCjHrCyI:qEdtJwsn2Fk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=92nOCjHrCyI:qEdtJwsn2Fk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=92nOCjHrCyI:qEdtJwsn2Fk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=92nOCjHrCyI:qEdtJwsn2Fk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=92nOCjHrCyI:qEdtJwsn2Fk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/92nOCjHrCyI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/5240144178613291287/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/11/brains-i-just-received-my.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/5240144178613291287?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/5240144178613291287?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/92nOCjHrCyI/brains-i-just-received-my.html" title="" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-0-vPLXrhHwM/TrDDjPp6PuI/AAAAAAAABjc/KhTYULmKAT8/s72-c/IMG_1163.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/11/brains-i-just-received-my.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IMSX4yfSp7ImA9WhdaFU0.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-3536719689714134406</id><published>2011-10-24T21:19:00.001-04:00</published><updated>2011-10-24T21:19:48.095-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T21:19:48.095-04:00</app:edited><title>Zune Music Pass Mini Review</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SBstyNxYl0k/TqYJwPmPjRI/AAAAAAAABjM/A__XTkR9hhE/s1600/zune_player.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="244" src="http://1.bp.blogspot.com/-SBstyNxYl0k/TqYJwPmPjRI/AAAAAAAABjM/A__XTkR9hhE/s320/zune_player.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The Zune Music Player doubles as a nice screensaver.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
For the last two weeks, I've been enjoying the &lt;a href="http://www.zune.net/en-us/products/zunepass/default.htm"&gt;Microsoft Zune Music Pass&lt;/a&gt;&amp;nbsp;on both my PC and Windows Phone 7... phone. It is an all-you-can-stream-&amp;amp;-download music service. They have a two week trial that you can try out before buying into it. I'm not going to be buying it just yet since I'm currently in the midst of acquiring parts for a large build up. &lt;b&gt;Priorities&lt;/b&gt;. But I certainly would buy it if I had 10$ lying around every month or if Microsoft wants to throw me a free subscription cough cough.&lt;br /&gt;
&lt;br /&gt;
Basically, I was enjoying unlimited music downloads and streams to both my PC and my phone. I actually ate my entire monthly mobile quota within a week because I was streaming tracks and when I found a song I liked, I immediately hit the download button. Boom, it was on my phone. Great for downloading but wasn't great for my monthly quota :( It is really well integrated with Zune on Windows Phone 7, a bit too integrated. My one suggestion, sign up using your phone to quickly register your phone to the service. Doing it online and then attaching it to your phone isn't as straight forward as one would hope.&lt;br /&gt;
&lt;br /&gt;
Music selection? Pretty good. I found most of what I wanted but I wasn't searching that hard for obscure bands like the Metric's bonus tracks. Impressively, I found a few k-pop (rap?) groups on it, like &lt;a href="http://social.zune.net/artist/2ne1/536b1800-0200-11db-89ca-0019b92a3933?cache=true"&gt;2NE1&lt;/a&gt;. To each their own but at least you can navigate their entire selection using the web based GUI. Hate downloading apps just to check for "selection."&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Pros&lt;/b&gt;&lt;br /&gt;
Good music selection&lt;br /&gt;
Good quality music (bit rates, not tastes)&lt;br /&gt;
Very good integration with your devices, covers your PC, Windows Phone, and Silverlight capable browsers for online streaming. Maybe Xbox too?&lt;br /&gt;
Unlimited downloads and streaming&lt;br /&gt;
Nice DJ service to help find new music. Wish it would tie in with&lt;a href="http://www.last.fm/"&gt; last.fm&lt;/a&gt; or &lt;a href="http://www.pandora.com/"&gt;pandora&lt;/a&gt;.&amp;nbsp;&lt;span id="goog_718886873"&gt;&lt;/span&gt;&lt;span id="goog_718886874"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;br /&gt;
Supposedly can buy 10 free songs a month DRM-free. Haven't tried this. Definitely a nice bonus if it does work.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cons&lt;/b&gt;&lt;br /&gt;
It isn't free. 10$/month or 100$/year.&lt;br /&gt;
Songs comes with DRM so you will be unable to play said songs when you stop paying for the service (doesn't apply to songs you actually purchase.)&lt;br /&gt;
Will eat up your bandwidth quotas if you stream a lot. So if you're Canadian, 10$/month + overage fees are not that appetizing. It is very easy to download everything.&lt;br /&gt;
Doesn't have that song from that indie band that I never heard of or care about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-3536719689714134406?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zTy6KxFZRM8vH1pP_oC-8whKkdg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zTy6KxFZRM8vH1pP_oC-8whKkdg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zTy6KxFZRM8vH1pP_oC-8whKkdg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zTy6KxFZRM8vH1pP_oC-8whKkdg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=mpTqPJ2zIWs:w-pUgvZiyFY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=mpTqPJ2zIWs:w-pUgvZiyFY:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=mpTqPJ2zIWs:w-pUgvZiyFY:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=mpTqPJ2zIWs:w-pUgvZiyFY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=mpTqPJ2zIWs:w-pUgvZiyFY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/mpTqPJ2zIWs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/3536719689714134406/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/10/zune-music-pass-mini-review.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/3536719689714134406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/3536719689714134406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/mpTqPJ2zIWs/zune-music-pass-mini-review.html" title="Zune Music Pass Mini Review" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-SBstyNxYl0k/TqYJwPmPjRI/AAAAAAAABjM/A__XTkR9hhE/s72-c/zune_player.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/10/zune-music-pass-mini-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcFRHw-cCp7ImA9WhdbGE8.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-8355825783336511597</id><published>2011-10-17T00:02:00.001-04:00</published><updated>2011-10-17T01:06:55.258-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-17T01:06:55.258-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arduino" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><title>Arduino Tutorial: Communication Protocol</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yCMhaZJCIRE/S3T8hUEI4dI/AAAAAAAAAlY/k8xXXjd5p6o/s1600/DSC02817.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-yCMhaZJCIRE/S3T8hUEI4dI/AAAAAAAAAlY/k8xXXjd5p6o/s640/DSC02817.JPG" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Two Arduinos talking over a TWI bus.&lt;br /&gt;
Picture taken from my CAPSTONE project&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
My friend Jon has a cool project he is working on. He has two Arduinos at home and he has one controlling some motors that points a camera around. Now he wants to network that Arduino with another so he can manually control the motors and share information.&lt;br /&gt;
&lt;br /&gt;
He didn't find any good easy examples on how to write a network protocol for inter-Arduino communications, so this is why I'm writing this tutorial.&lt;br /&gt;
&lt;br /&gt;
It will cover the basics and try to stay high level. As well, I tried to "future proof" the code so that it can be used as a baseline for other people.&lt;br /&gt;
&lt;br /&gt;
I will make improvements over the week to clean it up but generally, not much in terms of logic will be changed.&lt;br /&gt;
&lt;br /&gt;
Is this the best tutorial you will find? No, far from it. I would never use this code in production code. But I hope that it is written clearly enough that a novice programmer can learn something from this.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.travvik.com/portfolio/Tutorials/serialProtocol/serial_protocol_tutorial.pde"&gt;[COMPLETE SOURCE HERE]&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;The Problem&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
How to define and implement a serial communication protocol from scratch.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Background&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
I have written many different implementation for a serial network communication. So in this scenario, my friend wanted to make a communication protocol for his 2 Arduinos but wanted it to be portable. He noticed a lot of the protocols examples he found online were too specific for a particular project. So I decided to help him out and write this tutorial for him.&lt;br /&gt;
&lt;br /&gt;
Let's lay down our requirements:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;The protocol must be expandable. This means that it should not require a huge rewrite to add or remove variables.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The protocol must be able to send at least one byte of necessary information. In my friend's project, this the X-Y coordinates his motors are using. So this means the protocol must be able to send one byte of X values at a time.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Must be written in C and reuse as much standard Arduino libraries as possible.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Be understandable for a novice programmer. Bet you will never see this on any corporate project's requirements.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Specifics, aka specifications&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
The message will be called the data packet, or packet for short and we will be using fixed size packets for simplicity sake.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The packet will be 3 bytes large.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BYTE 1: COMMAND BYTE&lt;/div&gt;
&lt;div&gt;
BYTE 2: VARIABLE 1&lt;/div&gt;
&lt;div&gt;
BYTE 3: VARIABLE 2&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Why 3 bytes? Because this is the perfect amount to explain some key concepts about communication protocols. At the end of this tutorial, I will explain the short comings of this protocol but because of&amp;nbsp;modularity, you should be able to add the missing features. Those features are explicitly omitted in order to make the tutorial clearer.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
What is ... BYTE 1? This is the command byte. This byte will tell the receiving Arduino what the 2 other bytes in the message contain. So if we send a command, SAVE_LOC_X, the receiving Arduino will understand that it needs store BYTE 2, or VARIABLE 1, as a 1 byte variable. In my friend's setup, this will be location X along a 2D plane.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
SAVE_LOC_Y, will then complimentary mean that the receiving Arduino will need to save BYTE 2 as its Y location along a 2D plane.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now, this can be a problem. Why do we want to send 2 packets for this data? It is rather inefficient because for every 1 update of X-Y locations, you will need to send 2 packets, with 2 different command bytes.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So we can simplify it by making a new command variable: SAVE_ALL. This will tell the receiving Arduino that BYTE 2 contains the X variable, and BYTE 3 contains the Y variable.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This means we can now update both locations using 1 packet! We're much more efficient now!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now, for practical purposes, my friend will want to send larger variables, such as 16 bit integers or even 32 bit floating point variables. Obviously, this won't fit in a single byte and needs to be simplified.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In my implementation, I have the Arduino split a 16 bit variable into two 8 bit variables. There is an important note to why I did it this way. When dealing with binary variables, different micro controllers handle the storage of variables in different ways. This is called &lt;a href="http://en.wikipedia.org/wiki/Endianness"&gt;Endianness&lt;/a&gt;. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Some Intel chips will store a 16 bit integer in memory as such: [LOW BYTE] [HIGH BYTE]&lt;/div&gt;
&lt;div&gt;
In other chips, it will be: [HIGH BYTE] [LOW BYTE]&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Doesn't seem like a big deal but it is when you need to pass this information along a network. Different implementation of libraries will send the lower byte first and then send the high byte second. So this can cause us problems in the future. Luckily, we're only dealing with Arduino but from habit, I want to make the order it sends the bytes as part of the specifications. This is important for ensuring that when you implement this protocol on another chip, it has the expected behaviour.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So for this project, the HIGH byte of a 16 bit variable will always be sent before the lower byte.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We'll call this command as SAVE_LONG_X.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Implementation&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A quick note about my implementation. I choose some rather interesting values for my constants because I wanted to make my protocol human readable. This is very important when debugging. So almost all my hard constant will use a letter from the alphabet so a person can sniff the serial bus and be able to understand what is going on when the two Arduinos are talking. There is a size cost associated to this but luckily, my protocol only has 3 commands so I really have nothing to worry about. It means I'm limiting myself to only 26-52 (if you include capitals) possible commands by keeping them in the alphabet range.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We will be using a button on the Arduino to trigger the messages. The button should be on pin 3 and triggers on a LOW to HIGH transition.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A response to a correct message transmission will be when a 'z' is sent out by the receiving Arduino. To make this better, an LED should can be used instead but I didn't bother in my implementation. The point is not to see it working, but how it is working. So when you see a 'z' on the serial bus at the end of a message, it means the receiving Arduino validated the message.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lets initialize our variables and defines.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
const int baudRate = 9600;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
I am defining the speed of the serial bus to 9600 using a const int instead of a #define. This is because of habit. #define is a compiler definition and tells the compiler to replace said variables with the value. The problem with this is that it is not type safe. What happens if I wanted to store the data into an 8 bit variable? 9600 wouldn't fit and it would get truncated. If you're unlucky, the compiler won't even throw a warning about this.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Using const int ensure that the compiler can never make that mistake. It will definitely throw an error because you're trying to store an int into a byte. To be even safer, I should be using uint16_t instead of int as this is the correct way to specify the amount of bits I want for an int. This is important as a double is the same size as a long on an Arduino so using this template will make sure we can't&amp;nbsp;accidentally&amp;nbsp;create a 32 bit double when you meant to make a 64 bit double.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now for simplicity sake, I need to define my command bytes. I use an enum to do this because it is safer and easier to work with. Enum is short for enumerate and its function is to automatically assign values to a list of variables.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
enum COMMANDS {&lt;br /&gt;
&amp;nbsp; SAVE_LOC_X = 'a',&lt;br /&gt;
&amp;nbsp; SAVE_LOC_Y,&lt;br /&gt;
&amp;nbsp; SAVE_ALL,&lt;br /&gt;
&amp;nbsp; SAVE_LONG_X&lt;br /&gt;
};&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
The enum automatically assigned values to my constants as such.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;SAVE_LOC_X = 'a'&lt;/li&gt;
&lt;li&gt;SAVE_LOC_Y = 'b'&lt;/li&gt;
&lt;li&gt;SAVE_ALL = 'c'&lt;/li&gt;
&lt;li&gt;SAVE_LONG_X = 'd'&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is useful because if I want to add new commands, I can add them to this list and it will assign them for me. The disadvantage to this method is that the assigned value can be larger than the destination size. Again, not a problem for our implementation.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now here is an interesting snippet,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
enum PACKET_DETAILS{&lt;br /&gt;
&amp;nbsp; CMD_LOC = 0,&lt;br /&gt;
&amp;nbsp; ITEM_1,&lt;br /&gt;
&amp;nbsp; ITEM_2,&lt;br /&gt;
};&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
What I did here was create some small helper variables for me to use. Since I know BYTE 1 will always be the location for the command byte, I assigned I a value of 0 (remember, 0 is a number in the computer and mathematical world). And so forth for the other byte locations. This is completely unnecessary but I like to do it this way to help keep the code clean. Plus, if I decide to increase the packet size, I can modify this enum and a lot of the code will still work as is. Ahhh, modularity.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now the data packet. This is important, so I created a structure to hold the data packet.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
struct&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; byte data[BUFFER_LIMIT]; //this is where we will store the data we receive from the serial&lt;br /&gt;
&amp;nbsp; byte curLoc; //this is the counter to keep track of how many bytes we've received&lt;br /&gt;
} dataPacket;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
Notice that the structure contains two item. An array buffer of 3 rows (BUFFER_LIMIT = 3) and a curLoc byte. data is an array of 3 bytes and this is where we will store our incoming packets into. The curLoc byte is used by the Arduino to track which byte it is currently processing from the serial bus. It does not need to be here but for clarity sake, I put it into this structure so you can see that this variable is closely related to the data buffer.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now we will have some state control bytes to keep track of what the Arduino is doing.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
bool correctPacket = false;&lt;br /&gt;
bool myButtonState = false;&lt;br /&gt;
unsigned long lastTimerHit;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
correctPacket will turn true if the packet the Arduino receives is correct. myButtonState is just a simple state variable for the button to track when it goes from LOW to HIGH. And lastTimerHit is used to invalidate data if there is a gap in the transmission. If the receiving Arduino receives 2 bytes and then had to wait 760ms for the next byte, the Arduino will drop the old 2 bytes and use the latest byte as the beginning of a new packet. Again not necessary but useful when you are hand typing commands into the Arduino serial window. If you make a mistake, you can just wait for the Arduino to invalidate the message and begin anew.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Function setup() is pretty much straight forward and initializes some variables to 0.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Function loop() is really simple, well... to keep things simple.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Function&amp;nbsp;checkButton() checks the button transitions and if it catches a LOW to HIGH transition, it will send a message over the serial bus.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Every time the button is pressed, I increment variable&amp;nbsp;example_counter so the next message sent is of a different command.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For the first case:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 0:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; curCommand = SAVE_LOC_X;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //add custom code here if wanted.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(curCommand);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(var1);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print('\n');&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
You can see that I first send the command, then the variable. Since we have to send exactly 3 bytes per packet, I filled the next variable with a new line character. The receiving Arduino will just ignore it but it cleans up the Arduino serial communication window when debugging.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case 1:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; curCommand = SAVE_LOC_Y;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //add custom code here if wanted.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(curCommand);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(var2);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print('\n');&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case 2:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; curCommand = SAVE_ALL;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //add custom code here if wanted.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(curCommand);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(var1);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(var2);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case 3:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; curCommand = SAVE_LONG_X;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 16 bit integers need to be conditioned for transfer.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // we have to split the 16 bit variable into multiple (2) 8 bit messages.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Yes, we can cheat and use Serial.print("string") to send multi-byte variables.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // I don't like doing this because of endian issues you may encounter when&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // porting this code to another microcontroller.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print(curCommand);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print( (byte)(long_X &amp;gt;&amp;gt; 8) ); //only send the upper byte of the integer&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.print( (byte)(longX &amp;amp; 0xFF) ); //isolate just the lower byte now.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //the (byte) is a typecase to ensure that we only print 8 bits and not 16 by accident.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
I don't think I need to explain the next few cases as they are basically the same but inserting different variables.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Just some quick notes about the operators I used.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;gt;&amp;gt; is used to bit shift a variable's bit by n amount to the right.&lt;/div&gt;
&lt;div&gt;
&amp;lt;&amp;lt; is to shift by n amount to the left.&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://en.wikipedia.org/wiki/Bitwise_operation#OR"&gt;|= is a bitwise OR'ing operation.&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://en.wikipedia.org/wiki/Bitwise_operation#AND"&gt;&amp;amp; is a bitwise AND operation.&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://en.wikipedia.org/wiki/C_operators"&gt;More information can be gathered here for C.&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now it's time for&amp;nbsp;checkIncomingSerial() function. This one is tricky and the one my friend wanted the most. We only call this function when the Arduino Serial library detects that its buffer has some data in it. When we first enter the function, I check if the message has timed out.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
if ( (lastTimerHit + 500) &amp;lt; millis() )&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; //if here, we hit the timeout, reset the packet counter&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; dataPacket.curLoc = 0; //reset counter&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; correctPacket = false;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; //Serial.println("timeout hit");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
If we hit the time out, then we reset the curLoc to 0 for our data array. This means we will start storing the data into data[0] on the next step.&lt;/div&gt;
&lt;blockquote&gt;
dataPacket.data[dataPacket.curLoc] = Serial.read();&lt;/blockquote&gt;
&lt;div&gt;
If we didn't time out, curLoc would contain the byte number we are at.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now we want to check if we collected 3 bytes by doing&lt;/div&gt;
&lt;blockquote&gt;
if ( dataPacket.curLoc == BUFFER_LIMIT)&lt;/blockquote&gt;
&lt;div&gt;
If we've received 3 bytes, then we can start processing the message. I use a switch function to check if the command byte matches&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
switch ( dataPacket.data[CMD_LOC] )&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case SAVE_LOC_X:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; locX = dataPacket.data[ITEM_1];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case SAVE_LOC_Y:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; locY = dataPacket.data[ITEM_1];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case SAVE_ALL:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; locX = dataPacket.data[ITEM_1];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; locY = dataPacket.data[ITEM_2]; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; case SAVE_LONG_X: //special case for 16 bit integers&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //WATCH OUT FOR ENDIANS!&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; longLocX = 0;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; longLocX |= dataPacket.data[ITEM_1];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; longLocX &amp;lt;&amp;lt; 8; //move over 1 byte&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; longLocX |= dataPacket.data[ITEM_2];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; default:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //if here, the command byte is wrong&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //so dump the current dataPacket by&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // resetting the counter&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; correctPacket = false;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dataPacket.curLoc = 0;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Serial.println("Err!");&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
So depending on the command byte, the Arduino will store the received data in the appropriate variables, such a locX. Notice that because I wrote it in a switch case statement, we can easily add more commands to process. Another really awesome feature of the switch case is that because I used an enum to generate the command values, the switch case will likely be optimized into a jump table which is small and fast. &lt;a href="http://ask.jaimeyu.com/2010/11/introduction-to-hash-table-jump-table.html"&gt;Check my old post about jump tables here&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
That is basically it for the explanation. I hope it was clear enough.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Epilogue&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here are some things I omitted from the protocol: variable length packets, addressing, and error detection. If you want to add more than one Arduino on the network and be able to transmit directly to one, you can assign each Arduino an address and have them add their address somewhere at the start of the message. Since its location will be fixed, every Arduino will be able to compare it to their address when a complete packet is transmitted.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Error detection is a bit more tricky and I will cover that in another tutorial. This can be an extra byte in the message and is usually appended at the end of the packet.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As an exercise, try to modify my code to add 2 more bytes to the message to be able to send 4 variables or a single 32 bit variable between Arduinos. As an advance exercise, you can try implementing addressing or error detection. Another simple exercise is to add support for the 'z'&amp;nbsp;acknowledge&amp;nbsp;message that I send out after every validated message. This can be quite useful, if the sender notices that he hasn't received an acknowledge, it can then repeat the message until it the receiver finally validates the message.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Comments and fixes are welcomed. I wrote the code in about an hour so it isn't exactly fully tested.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.travvik.com/portfolio/Tutorials/serialProtocol/serial_protocol_tutorial.pde"&gt;[COMPLETE SOURCE HERE]&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-8355825783336511597?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eeXFtGSH5D7BdLdmwI2_nDe2dYU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eeXFtGSH5D7BdLdmwI2_nDe2dYU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eeXFtGSH5D7BdLdmwI2_nDe2dYU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eeXFtGSH5D7BdLdmwI2_nDe2dYU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=0BrsJAJYmEY:sM0hSJVmGjw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=0BrsJAJYmEY:sM0hSJVmGjw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=0BrsJAJYmEY:sM0hSJVmGjw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=0BrsJAJYmEY:sM0hSJVmGjw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=0BrsJAJYmEY:sM0hSJVmGjw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/0BrsJAJYmEY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/8355825783336511597/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/10/arduino-tutorial-communication-protocol.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/8355825783336511597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/8355825783336511597?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/0BrsJAJYmEY/arduino-tutorial-communication-protocol.html" title="Arduino Tutorial: Communication Protocol" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-yCMhaZJCIRE/S3T8hUEI4dI/AAAAAAAAAlY/k8xXXjd5p6o/s72-c/DSC02817.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/10/arduino-tutorial-communication-protocol.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cBSH8_eip7ImA9WhdXFkk.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1464761445335685630</id><published>2011-08-29T14:04:00.000-04:00</published><updated>2011-08-29T14:04:19.142-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T14:04:19.142-04:00</app:edited><title>Quick tip: Improve battery life</title><content type="html">I've been controlling my PC remotely with my laptop and I'm noticing a large improvement in battery usage. Looks like it requires a lot less processing power to remotely control my PC than I thought. I'm using the Mac OS X RDP client from Microsoft to connect to a Win7 machine.&lt;br /&gt;
&lt;br /&gt;
The biggest problem is bandwidth, I can't play video at full speed but audio is perfectly fine. I'm running a 54mbps wireless network which probably explains the video limitation.&lt;br /&gt;
&lt;br /&gt;
Has anyone else seen an improvement in their battery life when they use their remote PC exclusively?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1464761445335685630?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/srZtfEGyanRkiDmC49ZduNjIGG4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/srZtfEGyanRkiDmC49ZduNjIGG4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/srZtfEGyanRkiDmC49ZduNjIGG4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/srZtfEGyanRkiDmC49ZduNjIGG4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=KkrJ4oOTb88:FB_du1c04v0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=KkrJ4oOTb88:FB_du1c04v0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=KkrJ4oOTb88:FB_du1c04v0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=KkrJ4oOTb88:FB_du1c04v0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=KkrJ4oOTb88:FB_du1c04v0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/KkrJ4oOTb88" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1464761445335685630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/08/quick-tip-improve-battery-life.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1464761445335685630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1464761445335685630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/KkrJ4oOTb88/quick-tip-improve-battery-life.html" title="Quick tip: Improve battery life" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/08/quick-tip-improve-battery-life.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMFR3c-cCp7ImA9WhdXFUs.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1296439337479319111</id><published>2011-08-28T16:13:00.000-04:00</published><updated>2011-08-28T16:13:36.958-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-28T16:13:36.958-04:00</app:edited><title>2012 Ford Focus Mini-Review</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/2/27/2012_Ford_Focus_Titanium_hatchback_--_07-09-2011_front.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="180" src="http://upload.wikimedia.org/wikipedia/commons/2/27/2012_Ford_Focus_Titanium_hatchback_--_07-09-2011_front.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Source: Wikipedia&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
I got to try out my dad's new 2012 Ford Focus hatchback last night. It is a pretty cool car. I really enjoyed driving it but it has a few flaws.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exterior&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I don't like this generation Ford Focus' exterior. I think the front end is super ugly with any bright colours. The dark colours at least hide the ugly giant vents. As well, it doesn't come with HID head lights which is a strange omission. The fog lights are ugly as well and don't look very aerodynamic. The rear end is very nice though. The only gripe I have is the tacky rear brake lights. Otherwise, the side profile and rear profile is pretty nice. Still think they should have gone the Fiesta route and just made a bigger Fiesta. Now that is a sexy car.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Interior&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
This interior is simply amazing. The interior amazing in comparison to other cars. My Mazda3 shares a lot of the chassis with the new Focus and I can spot the similarities easily. I find the Focus makes better use of the space. The AC vents are large yet unobtrusive, the giant touch screen is placed high but not in the way of your sight lines, and all the AC controls are within easy reach.&lt;br /&gt;
&lt;br /&gt;
The downsides? Why is the fan speed button the tiniest thing ever. I accidentally turned on max AC and couldn't figure out how to disable it. It has climate control but it's not as intuitive to use. It was designed more to be set once and not played with ever again, the car knows best.&lt;br /&gt;
&lt;br /&gt;
Interior lighting is cute (thankfully it's not standard on all models) and is a nice touch to light up the seat belt so you can find them in the dark.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Electronics&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
I was really looking forward to playing with the car's electronics. It has myFord Touch and Microsoft Sync which was lauded to be amazing. In reality, myFord Touch is a complete let down. The response of the system can be measured in seconds which feels like an eternity.&lt;br /&gt;
&lt;br /&gt;
Otherwise, it is very well organized and when you do figure out what you're supposed to do, does it well. But to live with it? I would trade it in for an old 2006 iPod because it is way too confusing and complicated. Microsoft Sync is supposed to allow you to control it but it was a total miss for me. It was slow to register my speech and was slow in general. We'll find out how it goes with my family but I bet they won't use the majority of the features. Honestly, I don't know how Ford can drop the ball on this. If you are going to put a touch screen into anything, you need to prioritize response rate since there is zero tactile feedback.&lt;br /&gt;
&lt;br /&gt;
The speedometer LCD is very nice. That one is done right. Very responsive, clear messages, and shows the status of the car. I wish all cars would put LCDs into their speedometer area to print out diagnostic messages or driving tips when you start the car.&lt;br /&gt;
&lt;br /&gt;
The steering wheel is laden with buttons. Too much in my opinion. When you have to put a giant dedicated CANCEL button on the steering wheel, it doesn't say much about the electronics of the car. The audio control buttons are in a terrible position. They placed the volume up button on the curving part of the column so its hard to reach with your thumb. In the middle of the layout is also a small joystick-like button... Seriously? They could have easily compromised the buttons into the joystick and left it at that.&lt;br /&gt;
&lt;br /&gt;
Summary of electronics... a total miss. They tried too hard and ended up making the system slow and complicated. Considering the technology used, they had a lot of potential to kill it here. My brother said that the issue is the processor chosen to power myFord and I would agree with him. It really just feels like the system can't keep up to user inputs.&lt;br /&gt;
&lt;br /&gt;
Although there is a saving grace to all the electronics, the parking camera. Parking assist is simply awesome. It did a great job parallel parking and was very precise. I was shocked how well it can parallel park and how quickly it can do it. If I find a tight spot that I would find challenging, I would definitely try the parking assist. I think it does a better job than most drivers. As well, the parking camera is great for reverse parking/driving. It tells you where you will end up according to your inputs. Definitely a well thought out feature and I wish it was an option on the lower end models without the LCD.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Drive&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Another feature I was really looking forward to. My dad has the 2007 Ford Focus and that was a great car to drive. It was automatic but the suspension and light weight paid out in spades. It had go kart like steering and was easy to&amp;nbsp;maneuver&amp;nbsp;in tight urban streets. Long distance trips were comfortable and the car would track straight and true. It wasn't refined like a Honda Civic but I don't think anyone could complain about how the Focus drove. It was down on power but that is an individual preference. No one needs more power but there is a reason you can buy a bigger engine.&lt;br /&gt;
&lt;br /&gt;
For the 2012 model, the Focus is still a great drive. It loses its toy car feel and trades it up for refinement. It has electric steering which dulls the steering feel a bit but not by much. It felt comfortable and easy to drive. The only issue I found with the steering was the amount of slack the wheel had when stationary. Luckily, the slack disappears when you start to drive, one of the flaws of electric steering. I found it more responsive than the 2009 Honda Civic's electric steering. That car's steering is so numb and disconnected to what the car is doing.&lt;br /&gt;
&lt;br /&gt;
The handling is great. I took for some curves that I know well in the area and dove into them to see how the suspension could hold up to double apex turns at speed. This is kind of a double edge sword. While the car handled the turn very well, the suspension is a bit on the stiff side. I wonder if its particular to the model my dad chose but the suspension is definitely toward the sporty side. It doesn't make the car uncomfortable at all but you will be aware of the cracks in the asphalt.&lt;br /&gt;
&lt;br /&gt;
The model I tried had the dual clutch 6 speed and I hated it. It drives like a manual so the throttle response is there. I like that a lot but it was the computer's gearing choices that pissed me off. Driving casually, it's fine and does just as well as a traditional automatic. When I start to drive&amp;nbsp;aggressively&amp;nbsp;(I mean this very loosely), the gear box just couldn't keep up. Turning the car and then getting on the gas returns nothing. You can feel the gear box trying to decide whether to downshift out of 6th gear. I bet it was made this way to improve fuel mileage but I don't know why there isn't a true "sport" setting for the gearbox then.&lt;br /&gt;
&lt;br /&gt;
There is a sport manual setting which I also hated. Apparently, Ford decided put the gear shift buttons on the side of the shifter. Worst, the buttons are on the side so you can't fluidly find the button you want. Not sure what was the thought pattern on this but it is totally useless to call it sport mode. I would call it manual and leave it at that.&lt;br /&gt;
&lt;br /&gt;
If they had put the shifter on the steering wheel, then it could be forgiven to have such an&amp;nbsp;aggressive gear box that likes high gears. I did a quick slalom and it was pathetic in automatic mode. The car just bogged down and lost all speed. In manual mode, the car did a very good job and got through it without losing speed.&amp;nbsp;I'm not doing it at a high speed or even at high RPM.&lt;br /&gt;
&lt;br /&gt;
My thoughts on the gearbox? Buy the real manual with the clutch if you want to feel in control. The suspension is great but the double clutch gear box needs a better manual mode. I went into my Mazda afterwards and was rewarded with a proper gear box. I now understand why magazines always say that dual clutch gear boxes are great but can never replace a manual gear box.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Overall, this is a great car except for the electronics. If you are used to iPads and iPhones, then the electronics will&amp;nbsp;disappoint&amp;nbsp;you. If you like driving compact cars, then get this car with the manual gear box. I wouldn't mind using the car as a daily driver at all. As a car, it is solid. It can only get better over time as they fix the electronics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1296439337479319111?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uY1CYWjphiAp_0GFV-T35Ae_ITQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uY1CYWjphiAp_0GFV-T35Ae_ITQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uY1CYWjphiAp_0GFV-T35Ae_ITQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uY1CYWjphiAp_0GFV-T35Ae_ITQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=6CYDl07eo2U:amPhbTZjR9c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=6CYDl07eo2U:amPhbTZjR9c:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=6CYDl07eo2U:amPhbTZjR9c:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=6CYDl07eo2U:amPhbTZjR9c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=6CYDl07eo2U:amPhbTZjR9c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/6CYDl07eo2U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1296439337479319111/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/08/2012-ford-focus-mini-review.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1296439337479319111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1296439337479319111?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/6CYDl07eo2U/2012-ford-focus-mini-review.html" title="2012 Ford Focus Mini-Review" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/08/2012-ford-focus-mini-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQFQ3c6eCp7ImA9WhdQEE4.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-5278799411947910545</id><published>2011-08-11T00:33:00.001-04:00</published><updated>2011-08-11T00:35:12.910-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-11T00:35:12.910-04:00</app:edited><title>BenQ E2420HD mini review</title><content type="html">I bought a&amp;nbsp;BenQ E2420HD a while ago to replace my aging 17 inch LCD (before that, 19 inch CRT). So here's a quick low down.&lt;br /&gt;
&lt;br /&gt;
Image quality is good but needs a lot of calibration to get it right.&lt;br /&gt;
Insanely bright but useless if you're looking for true blacks (see previous comment).&lt;br /&gt;
Gaming isn't great because it doesn't update the screen fast enough. There is a game mode but it is a terrible setting. Avoid this setting at all cost.&lt;br /&gt;
Audio jack is amplified, which is a bad thing for purists. My Grados picked up the noise from either the amp or the cathode and it sounds like they put a low pass filter in it. I lost a lot of bass which I got back the moment I plugged my headphones directly to my PC.&lt;br /&gt;
Built in speakers are terribly tinny and low volume. I'm totally surprised of the terrible quality of the speakers.&lt;br /&gt;
Otherwise, design is good, high definition video looks crisp, and energy saving modes are useful. First LCD I've used that doesn't take me 5 min to switch inputs. It will switch to whatever is available automatically. So the moment I shut down my Xbox, my PC screen comes right up.&lt;br /&gt;
Connectivity wise, its perfect. Built in USB hub with 2-4 ports (too lazy to check the spec), VGA, DVI, 2xHDMI, and audio.&lt;br /&gt;
USB hub looks like it's powered by the monitor so that is great news if you need to charge gadgets off it.&lt;br /&gt;
&lt;br /&gt;
Verdict? Don't buy this. There are better monitors than this. I got it on sale @ 190$ so that affected my decision to get it over a 22 inch (that may have been of higher quality).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-5278799411947910545?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/__AWqg3x2aRmx5wfQ3e_CzEbW3Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/__AWqg3x2aRmx5wfQ3e_CzEbW3Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/__AWqg3x2aRmx5wfQ3e_CzEbW3Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/__AWqg3x2aRmx5wfQ3e_CzEbW3Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=T8lPrNPavAk:-K_9fyvUGjo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=T8lPrNPavAk:-K_9fyvUGjo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=T8lPrNPavAk:-K_9fyvUGjo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=T8lPrNPavAk:-K_9fyvUGjo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=T8lPrNPavAk:-K_9fyvUGjo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/T8lPrNPavAk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/5278799411947910545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/08/benq-e2420hd-mini-review.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/5278799411947910545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/5278799411947910545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/T8lPrNPavAk/benq-e2420hd-mini-review.html" title="BenQ E2420HD mini review" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/08/benq-e2420hd-mini-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEGQ3c8eSp7ImA9WhdRE0U.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-7680706297455413424</id><published>2011-07-25T13:21:00.001-04:00</published><updated>2011-08-03T12:23:42.971-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-03T12:23:42.971-04:00</app:edited><title>The terrible state of Tablets</title><content type="html">Tablets have been promised for years. Ever since Billy G presented the &lt;a href="http://www.youtube.com/watch?v=xXHKCS28z1s"&gt;Origami prototype&lt;/a&gt;. None have actually come to the market in any significant way other than the iPad. Two tablets I was looking forward to, the HP TouchPad and the BlackBerry PlayBook both managed to miss (edited, wrote meet, which is clearly wrong) expectations according to this &lt;a href="http://www.zdnet.com/blog/perlow/blackberry-playbook-vs-hp-touchpad-a-tale-of-two-failures/17683?tag=mantle_skin;content"&gt;ZDNet article&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It's a shame, I was looking forward to both tablets when they were announced. The PlayBook's hardware and native OS are beautiful. It's also very responsive but I could never justify paying iPad 2 money on a tablet that's smaller and doesn't come with an email client... That was really the killer for me... and a lot of potential buyers too.&lt;br /&gt;
&lt;br /&gt;
The HP TouchPad has the WebOS OS which I like. I used to a have a Palm Pilot and their stuff is very intuitive. When I went to the store to finally try it out, wow... was it bad. The build wasn't impressive and it was sluggish. I was surprised to find it was sluggish since it's based off the WebOS found in the Pre. I never found the Pre slow or difficult to use. Although, I was impressed by the little touches like when you touch the screen, it makes a cute rippling effect. Great, except it doesn't actually help in making multitasking any faster...&lt;br /&gt;
&lt;br /&gt;
So I'm actually sitting out this round of tablets since nothing is really up to anyone's expectations. Even the iPad 2 doesn't bring much compared to the original iPad. I can't wait to see the next generation of tablets though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-7680706297455413424?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rz23Swk-yq2UCmJqrDULAyiRtRc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rz23Swk-yq2UCmJqrDULAyiRtRc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rz23Swk-yq2UCmJqrDULAyiRtRc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rz23Swk-yq2UCmJqrDULAyiRtRc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=EpnX-zE59b4:TU72ikeuqaw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=EpnX-zE59b4:TU72ikeuqaw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=EpnX-zE59b4:TU72ikeuqaw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=EpnX-zE59b4:TU72ikeuqaw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=EpnX-zE59b4:TU72ikeuqaw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/EpnX-zE59b4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/7680706297455413424/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/07/terrible-state-of-tablets.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7680706297455413424?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7680706297455413424?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/EpnX-zE59b4/terrible-state-of-tablets.html" title="The terrible state of Tablets" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/07/terrible-state-of-tablets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEASXo7cSp7ImA9WhdSFEk.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-7880756657492464123</id><published>2011-07-23T13:37:00.000-04:00</published><updated>2011-07-23T13:37:28.409-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-23T13:37:28.409-04:00</app:edited><title>Thwarted by my GPS</title><content type="html">Technology can be both a blessing and a curse. Last weekend, I went out East so my girlfriend can participate in a horse show. We've never been there so I relied on my GPS to get me there.&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The problem that I hadn't realized early on was that the stables were on the farther side of a river. So I followed my GPS all the way up to where I thought was a bridge. It turns out, the path it put on the map was not actually a road but a ferry. So we turned around since the ferry just left and we didn't have any cash on us. That was an annoying glitch.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;So now I learnt my lesson with my GPS, turn off it's ability to route ferry lanes. I can only imagine how much more pissed I would be if this was in the middle of winter.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-7880756657492464123?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NQAuCUQO52C-P9y7sTmAYmL-ipc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NQAuCUQO52C-P9y7sTmAYmL-ipc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NQAuCUQO52C-P9y7sTmAYmL-ipc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NQAuCUQO52C-P9y7sTmAYmL-ipc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=9lURxdL5drM:M6uELr0l6f0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=9lURxdL5drM:M6uELr0l6f0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=9lURxdL5drM:M6uELr0l6f0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=9lURxdL5drM:M6uELr0l6f0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=9lURxdL5drM:M6uELr0l6f0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/9lURxdL5drM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/7880756657492464123/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/07/thwarted-by-my-gps.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7880756657492464123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7880756657492464123?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/9lURxdL5drM/thwarted-by-my-gps.html" title="Thwarted by my GPS" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/07/thwarted-by-my-gps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4MRHwzeyp7ImA9WhZbFE4.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-2687096474687578442</id><published>2011-06-18T17:53:00.000-04:00</published><updated>2011-06-18T17:53:05.283-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-18T17:53:05.283-04:00</app:edited><title>Microsoft to allow homebrew applications on Windows Phone</title><content type="html">Kudos to Microsoft! &lt;a href="http://www.chevronwp7.com/post/6629433362/announcing-chevronwp7-labs"&gt;They're supporting the group that created the original Windows Phone jailbreak/unlocker&lt;/a&gt;. This is great news and is a totally different take to the issue compared to other manufacturers. I think this shows that Microsoft is getting serious at delivering products that both developers and consumers will want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-2687096474687578442?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y15vOUdnbes8cK8BDksRaX8rxbg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y15vOUdnbes8cK8BDksRaX8rxbg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y15vOUdnbes8cK8BDksRaX8rxbg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y15vOUdnbes8cK8BDksRaX8rxbg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=tWVXpxWYvVI:CrJXJxZFqt0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=tWVXpxWYvVI:CrJXJxZFqt0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=tWVXpxWYvVI:CrJXJxZFqt0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=tWVXpxWYvVI:CrJXJxZFqt0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=tWVXpxWYvVI:CrJXJxZFqt0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/tWVXpxWYvVI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/2687096474687578442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/06/microsoft-to-allow-homebrew.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/2687096474687578442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/2687096474687578442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/tWVXpxWYvVI/microsoft-to-allow-homebrew.html" title="Microsoft to allow homebrew applications on Windows Phone" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/06/microsoft-to-allow-homebrew.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkENRH8zfCp7ImA9WhZWFUw.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-4708752689982748975</id><published>2011-05-16T00:04:00.000-04:00</published><updated>2011-05-16T00:04:55.184-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-16T00:04:55.184-04:00</app:edited><title>Fix for early Windows Phone 7 updater using Walsh's method</title><content type="html">Chris &lt;a href="http://www.blogger.com/"&gt;Walsh has put up a fix&lt;/a&gt; to allow people who used his early updater application and can no longer receive Microsoft official updates. &lt;br /&gt;
&lt;br /&gt;
I can confirm this works since I used his method to the get method as early as possible. I think Telus only sends out every second update. My reasoning? I only got the first mini update on the day the second update was sent out. Unacceptable since Windows Phones were supposed to be easily updated unlike Androids. I learnt my lesson. Windows Phone 7 is good in idea, poorly controlled by carriers. Never let carriers decide anything. &lt;br /&gt;
&lt;br /&gt;
At the very least, Microsoft has been very good with the issue and validated Chris Walsh's fix instead of sending him a cease and desist, suing him, arresting him, and just being a jerk. &lt;a href="http://www.blogger.com/"&gt;Its good to know that the Microsoft team knows its better to foster good ideas, rather than shoot them down. &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-4708752689982748975?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qSQ7hd-VfiyHE4-Vgd-PQdOktLM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qSQ7hd-VfiyHE4-Vgd-PQdOktLM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qSQ7hd-VfiyHE4-Vgd-PQdOktLM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qSQ7hd-VfiyHE4-Vgd-PQdOktLM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=BDCSM0O3FYk:bsihWHTfvFk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=BDCSM0O3FYk:bsihWHTfvFk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=BDCSM0O3FYk:bsihWHTfvFk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=BDCSM0O3FYk:bsihWHTfvFk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=BDCSM0O3FYk:bsihWHTfvFk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/BDCSM0O3FYk" height="1" width="1"/&gt;</content><link rel="related" href="http://blog.walshie.me/walshed-phone-support-tool-official-fix-to-get-you-back-on-track" title="Fix for early Windows Phone 7 updater using Walsh's method" /><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/4708752689982748975/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/05/fix-for-early-windows-phone-7-updater.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4708752689982748975?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4708752689982748975?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/BDCSM0O3FYk/fix-for-early-windows-phone-7-updater.html" title="Fix for early Windows Phone 7 updater using Walsh's method" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/05/fix-for-early-windows-phone-7-updater.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMASXc5eip7ImA9WhZQEko.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-8971139388764634884</id><published>2011-04-20T00:24:00.000-04:00</published><updated>2011-04-20T00:24:08.922-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-20T00:24:08.922-04:00</app:edited><title>Dealing with Bell Sympatico Tech Support</title><content type="html">Alright, as I previously said, I did a speed test for my new faux fibre optic and was unimpressed. So I called this morning to get them to send a tech down to the condo.&lt;br /&gt;
&lt;br /&gt;
Oh boy, who knew it would open the most ridiculous flow of conversations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First Level Tech Support&lt;br /&gt;
&lt;br /&gt;
I explained to the first guy that I wasn't getting the speed I bought. So he did some research and said yea, my area and phone line can do Fibe 16 mbps. BUT the office only set me up with a 7 mbps DSL line instead.&lt;br /&gt;
&lt;br /&gt;
Wait, what? They purposely set me up with the wrong product? He was nice about it and said he was going to forward the update and then got a tech on the line to double check the info.&lt;br /&gt;
&lt;br /&gt;
Please Hold.&lt;br /&gt;
&lt;br /&gt;
Your patience is important to us. Please hold.&lt;br /&gt;
&lt;br /&gt;
Second Level Tech&lt;br /&gt;
&lt;br /&gt;
The tech gets on the line. He is totally a disgruntled veteran and did some quick line tests to see whats up. He said my connection is using old technology and needs to be upgraded to new technology to use the new Fibe 16. Thats right, I was using the wrong TECHNOLOGY.&lt;br /&gt;
&lt;br /&gt;
So he did me a big favour and checked out the situation and found out that I can't get it currently. Maybe in the future but not today. My neighbour downstairs has Fibe25 but I don't. Which can only mean that Bell ran out of high speed jacks and just shoved me onto a shit line on another street.&lt;br /&gt;
&lt;br /&gt;
He then told me to call billing to get my account changed because its stupid for me to pay so much for the wrong product. Kudos for being honest.&lt;br /&gt;
&lt;br /&gt;
Billing&lt;br /&gt;
&lt;br /&gt;
So now I'm doing a little bit of research to see what the price is and what I can get for the speed I'm getting. Note, I get less than 5.5 mbps on a 7mbps line. This means that they put me on a really crappy line which routes me to a distant box.&lt;br /&gt;
&lt;br /&gt;
I should have been more aware when I heard the tech installing the modem complain to his TECH that I should be on the same DSLAM as everyone else. I didn't have a PC/laptop (and still don't) so I couldn't check the speeds.&lt;br /&gt;
&lt;br /&gt;
Billing wasn't as painful as it used to be with Bell. I told her the situation and then shes like, oh but it says here your address can get Fibe 16 and 25. Sure, yea, if they decided to get their act together and install the correct amount of jacks per household on the street.&lt;br /&gt;
&lt;br /&gt;
So I reminded her, I just spent time talking to the techs already and confirmed I'm being robbed. So she changed my account to Fibe7 and then tells me the price and quota.&lt;br /&gt;
&lt;br /&gt;
"Its 40$/month with 60 gigs"&lt;br /&gt;
"Wait, the website in front of me says 35$/month"&lt;br /&gt;
&lt;br /&gt;
Turns out the website doesn't tell you the truth outright. The 35$/month is if you have an existing package (like TV or phone). I told her, yea, I have expressvu. I got it the same time as this faux internet.&lt;br /&gt;
&lt;br /&gt;
So then she tells me, she can't give me the discount without redoing my entire account. Instead, she tells me, only the loyalty division can handle that.&lt;br /&gt;
&lt;br /&gt;
Please Hold.&lt;br /&gt;
&lt;br /&gt;
Loyalty&lt;br /&gt;
&lt;br /&gt;
The guy comes on and with little conversation, gives me the 5$ discount. There, its done. I'm not paying for lies any more.&lt;br /&gt;
&lt;br /&gt;
FYI: Bell just fired 100 customer service reps last week. Bell is completely clueless on how to run a business properly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-8971139388764634884?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5QDscKAiIT3DoI3f8dpzISxBP18/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5QDscKAiIT3DoI3f8dpzISxBP18/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5QDscKAiIT3DoI3f8dpzISxBP18/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5QDscKAiIT3DoI3f8dpzISxBP18/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=Ep3mqSWwOTQ:gLcuHS4FjsE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=Ep3mqSWwOTQ:gLcuHS4FjsE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=Ep3mqSWwOTQ:gLcuHS4FjsE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=Ep3mqSWwOTQ:gLcuHS4FjsE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=Ep3mqSWwOTQ:gLcuHS4FjsE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/Ep3mqSWwOTQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/8971139388764634884/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/04/dealing-with-bell-sympatico-tech.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/8971139388764634884?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/8971139388764634884?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/Ep3mqSWwOTQ/dealing-with-bell-sympatico-tech.html" title="Dealing with Bell Sympatico Tech Support" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/04/dealing-with-bell-sympatico-tech.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEMSX48eCp7ImA9WhZQEEw.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-4629636958426322066</id><published>2011-04-17T01:38:00.000-04:00</published><updated>2011-04-17T01:38:08.070-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-17T01:38:08.070-04:00</app:edited><title>Bell Fibe 16 is slow</title><content type="html">This is ridiculous. I'm getting 5mbps with Fibe 16. I'm going to call them tomorrow and complain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I don't get how Bell has any customers by choice. If I can go Videotron right now, I would. Videotron, please come to my neighbourhood and scare the big bad Bell.&lt;br /&gt;
&lt;br /&gt;
Plus, how does buying the contract for this neighbourhood mean you can screw the neighbourhood? How was that even legal?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-4629636958426322066?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-tFvDYeA8eja8Oj3FYouWnx5F2A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-tFvDYeA8eja8Oj3FYouWnx5F2A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-tFvDYeA8eja8Oj3FYouWnx5F2A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-tFvDYeA8eja8Oj3FYouWnx5F2A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=lAx2SITr7Qc:mvYfthlwpMk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=lAx2SITr7Qc:mvYfthlwpMk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=lAx2SITr7Qc:mvYfthlwpMk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=lAx2SITr7Qc:mvYfthlwpMk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=lAx2SITr7Qc:mvYfthlwpMk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/lAx2SITr7Qc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/4629636958426322066/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/04/bell-fibe-16-is-slow.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4629636958426322066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4629636958426322066?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/lAx2SITr7Qc/bell-fibe-16-is-slow.html" title="Bell Fibe 16 is slow" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/04/bell-fibe-16-is-slow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cCQnw_eSp7ImA9WhZRFUo.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-2885975816674548291</id><published>2011-04-11T23:31:00.000-04:00</published><updated>2011-04-11T23:31:03.241-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-11T23:31:03.241-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="service" /><category scheme="http://www.blogger.com/atom/ns#" term="pvr" /><category scheme="http://www.blogger.com/atom/ns#" term="bell sympatico" /><category scheme="http://www.blogger.com/atom/ns#" term="videotron" /><category scheme="http://www.blogger.com/atom/ns#" term="bell tv" /><category scheme="http://www.blogger.com/atom/ns#" term="fiber" /><category scheme="http://www.blogger.com/atom/ns#" term="m" /><category scheme="http://www.blogger.com/atom/ns#" term="fiber optic" /><category scheme="http://www.blogger.com/atom/ns#" term="cable" /><category scheme="http://www.blogger.com/atom/ns#" term="tv" /><title>Quickie; Bell's in-efficiency</title><content type="html">Today, Bell decided to call me to confirm a technician appointment. That sounds nice.&lt;br /&gt;
&lt;br /&gt;
Well no, all it was,&lt;br /&gt;
"We're coming at the time you specified"&lt;br /&gt;
"Yes. Is there a problem?"&lt;br /&gt;
"No"&lt;br /&gt;
"Ok, so you're going to come and install TV and Internet right?"&lt;br /&gt;
"No, we're the TV division. We won't be sending a tech for that. Thats the other division's responsibility."&lt;br /&gt;
"Ok..."&lt;br /&gt;
&lt;br /&gt;
So whats wrong with this picture? WTF Bell. Why are you sending TWO F* TECHNICIANS tomorrow morning?? This is why you throttle and cap my internet? Because your executives are lying bastards who can't manage their divisions properly? Videotron has one technician and he does everything except screw with you.&lt;br /&gt;
&lt;br /&gt;
So if I had gotten Internet, Phone, and TV... would that mean you would have to send 3 techs? (We joked at work that you might actually send 4 if I was a Bell Mobility user... but we all know you don't give a crap about mobility users)&lt;br /&gt;
&lt;br /&gt;
Worst, the satellite dish is already on the roof. So all I had to do was plug it in. Like seriously? I went to school for Computer Engineering only to be told that I need a technician to plug a copper cable into the hole in the wall?&lt;br /&gt;
&lt;br /&gt;
Yea, I know, its a moot point since I can't actually activate the terminal without a tech because Bell wants total control of the situation.&lt;br /&gt;
&lt;br /&gt;
But still, these are the reasons why I left Bell and am begrudgingly signing up for their service. At least I have no contracts with them.&lt;br /&gt;
&lt;br /&gt;
So to top it off, they're offering a promotion where I can get the PVR for cheap (or free, I can't remember) but I wasn't allowed to buy it on my street. Yea, she said I wasn't allowed to buy it. I can buy terminals and a hard drive to do it myself but I can't use their own PVR.&lt;br /&gt;
&lt;br /&gt;
I don't care if there is a physical reason (signal attenuation due to multiple terminals) but I have never heard of a company that advertises products and fail to provide said products. Videotron can and will put a signal booster in your house if needed. All Bell had to do was put another dish on the roof and split the load.&lt;br /&gt;
&lt;br /&gt;
I'm still kind of miffed that I can't get the 25 mbps Fibe service due to their own cock up. Its like they don't want my money? Well they do, because they're going to nickel and dime my service requests from here on out.&lt;br /&gt;
&lt;br /&gt;
Oh, you better send those techs tomorrow. I don't care about TV, just plug in the internet box into the internet hole, okay?&lt;br /&gt;
&lt;br /&gt;
Bell, I dare you to become better and convince me you are not full of shit.&lt;br /&gt;
&lt;br /&gt;
Reference to Bell's horrible ratings: &lt;a href="http://www.bbb.org/kitchener/business-reviews/satellite-equipment-and-supplies/bell-tv-in-north-york-on-19028"&gt;F rating for TV service&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.bbb.org/kitchener/business-reviews/cellular-telephone-equipment-and-supplies/bell-mobility-in-mississauga-on-11370#complaint"&gt;C rating for Mobility&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.dslreports.com/comments/412"&gt;"Pros [to getting Bell service]: I always get my invoices ... Invoices have a nice font... "&lt;/a&gt; &amp;lt;== Those two are the most accurate review of Bell's pros yet. &lt;br /&gt;
These are just examples. Feel free to Google up and find more info.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-2885975816674548291?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cYHyUivBaBlMNT4CKzZIgQ7aUJA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cYHyUivBaBlMNT4CKzZIgQ7aUJA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cYHyUivBaBlMNT4CKzZIgQ7aUJA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cYHyUivBaBlMNT4CKzZIgQ7aUJA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=jqEBX6Dn-tA:78i7sQgnNyA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=jqEBX6Dn-tA:78i7sQgnNyA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=jqEBX6Dn-tA:78i7sQgnNyA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=jqEBX6Dn-tA:78i7sQgnNyA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=jqEBX6Dn-tA:78i7sQgnNyA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/jqEBX6Dn-tA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/2885975816674548291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/04/quickie-bells-in-efficiency.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/2885975816674548291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/2885975816674548291?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/jqEBX6Dn-tA/quickie-bells-in-efficiency.html" title="Quickie; Bell's in-efficiency" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/04/quickie-bells-in-efficiency.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQGQnc6cCp7ImA9WhZRFEQ.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-8801226748485325599</id><published>2011-04-10T23:25:00.000-04:00</published><updated>2011-04-10T23:25:23.918-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-10T23:25:23.918-04:00</app:edited><title>Quickie: Bell's Fibe is not True Fiber to the home</title><content type="html">I'm forced to buy Bell's service because my new condo has some deal with them (cue debate on duopoly in Quebec) and did a little research on their new Fibe service.&lt;br /&gt;
&lt;br /&gt;
Its basically Fiber to the street/building with DSL (technology, but its not the same as the old ones) feeding the last mile.&lt;br /&gt;
&lt;br /&gt;
I feel kind of cheated for many reasons:&lt;br /&gt;
&lt;br /&gt;
1. I can't just move my current Videotron account. It was simple and their bandwidth quota counter works unlike Bell's.&lt;br /&gt;
2. Fiber to the street/building isn't fiber in my books. Build a proper network Bell. (As a side note, Bell/Telus are not running a real 4G mobile network either at the current moment. They will be next year but the current marketing is a lie).&lt;br /&gt;
3. I used to get 30mbps from Videotron for 65$ + 120 gig cap. I tried to get Fibe 25mbps for 65$ + 100 gig cap and was refused because the sales clerk + Bell's own tech support for clerks both couldn't get me an appointment for a tech to install it. This is a triple whammy. I pay more for less bandwidth, lower quota, and the inability to provide said service to my eligible condo. This also brings up more problems because the Fiber 25 modem is different from the rest of their Fibe line up so it makes my life difficult if I need to upgrade.&lt;br /&gt;
&lt;br /&gt;
The sad part was that they didn't educate their sales clerk of Videotron's superior internet speeds.&lt;br /&gt;
"So you're moving. Lets choose your speed. What are you at now?"&lt;br /&gt;
"30 mbps"&lt;br /&gt;
"What?"&lt;br /&gt;
"30 megabits per second for 65$"&lt;br /&gt;
"Who has that?"&lt;br /&gt;
"Videotron and they have 2 speed levels more that are higher. "&lt;br /&gt;
&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, arial, helvetica, sans-serif; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #333333; font-family: verdana, arial, helvetica, sans-serif; font-size: 13px;"&gt;ಠ_ಠ&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
4. Throttling. I am not looking forwarding to them throttling my internet. Sure its only 2x faster (I can only get the 16 mbps until their sales tools work) than their old DSL, but I'm not expecting a large improvement since its Bell. &lt;br /&gt;
5. Pain in the ass service. There is a reason I left Bell 3 years ago. I doubt it has gotten that much better.&lt;br /&gt;
&lt;br /&gt;
I also looked into Fibe TV and it sounds like they give you a 25mbps line but when you start to watch TV on it, the &lt;a href="http://www.dslreports.com/comment/3752/79465"&gt;internet part lowers to 6 mbps to provide a priority on the video stream&lt;/a&gt;. This is the start of Bell's ideal world where they can dictate how you will use the internet. Videotron doesn't do this and they manage to give me 30 mbps, HD channels, VOD, x # of channels, and no throttling.&lt;br /&gt;
&lt;br /&gt;
I am not happy about my downgrade one bit.&lt;br /&gt;
The only PRO to this service is that there is no contract like in the old days. I can only imagine the maze they set up in their retention scripts to compensate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-8801226748485325599?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7r1zthFfzV2C2jyvICUPIVuGhmg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7r1zthFfzV2C2jyvICUPIVuGhmg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7r1zthFfzV2C2jyvICUPIVuGhmg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7r1zthFfzV2C2jyvICUPIVuGhmg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=wzHHsl4VhXE:6FhEooAmQhA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=wzHHsl4VhXE:6FhEooAmQhA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=wzHHsl4VhXE:6FhEooAmQhA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=wzHHsl4VhXE:6FhEooAmQhA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=wzHHsl4VhXE:6FhEooAmQhA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/wzHHsl4VhXE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/8801226748485325599/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/04/quickie-bells-fibe-is-not-true-fiber-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/8801226748485325599?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/8801226748485325599?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/wzHHsl4VhXE/quickie-bells-fibe-is-not-true-fiber-to.html" title="Quickie: Bell's Fibe is not True Fiber to the home" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/04/quickie-bells-fibe-is-not-true-fiber-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGSHg4fip7ImA9Wx9bFE8.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-4806795000307434757</id><published>2011-02-22T21:43:00.000-05:00</published><updated>2011-02-22T21:43:49.636-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T21:43:49.636-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone 7" /><title>Windows Phone 7 Update to update the program that updates your phone on your phone has gone wrong</title><content type="html">&lt;a href="http://arstechnica.com/microsoft/news/2011/02/everything-that-can-go-wrong-with-windows-phone-7-update-does.ars"&gt;Ars &lt;/a&gt;has a nice article explaining the disaster thats going on with Samsung's phones running Windows Phone 7.&lt;br /&gt;
&lt;br /&gt;
The update isn't the update we all wanted, the one with new features but instead has been bricking some Samsung models instead.&lt;br /&gt;
&lt;br /&gt;
Its a small update to update the phone's update software... and it breaks some phones. Thats some bad luck. It looks like its isolated to an old firmware used by Samsung so LG and HTCs seem to be immune to it.&lt;br /&gt;
&lt;br /&gt;
Its kind of funny but also sad that Microsoft screwed this up. Considering that Android updates are often and awesome... actually getting them are few and far between, this could have been an awesome feature of the Windows Phone; regular updates that you can actually install.&lt;br /&gt;
&lt;br /&gt;
I'm still hoping for the OS to become more popular but at the same time, they came to the party late and have a lot to catch up on. I wouldn't bet the farm just yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-4806795000307434757?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9sKqb-C4AfFj3qhZoEQ7Grjwg6I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9sKqb-C4AfFj3qhZoEQ7Grjwg6I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9sKqb-C4AfFj3qhZoEQ7Grjwg6I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9sKqb-C4AfFj3qhZoEQ7Grjwg6I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=FaX26_lIYMo:iHzwJ7-i96Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=FaX26_lIYMo:iHzwJ7-i96Y:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=FaX26_lIYMo:iHzwJ7-i96Y:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=FaX26_lIYMo:iHzwJ7-i96Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=FaX26_lIYMo:iHzwJ7-i96Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/FaX26_lIYMo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/4806795000307434757/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/02/windows-phone-7-update-to-update.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4806795000307434757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/4806795000307434757?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/FaX26_lIYMo/windows-phone-7-update-to-update.html" title="Windows Phone 7 Update to update the program that updates your phone on your phone has gone wrong" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/02/windows-phone-7-update-to-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDR3s8fCp7ImA9Wx9VGU8.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1868525480175890500</id><published>2011-02-05T11:57:00.000-05:00</published><updated>2011-02-05T11:57:56.574-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-05T11:57:56.574-05:00</app:edited><title>Why (Intel 8051) assembly is so awesome: DJNZ</title><content type="html">Need a function to loop 100 times?&lt;br /&gt;
&lt;br /&gt;
In C, we were taught to write it this way,&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;for(int i = 0; i &amp;lt; 100; i++)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; function(); //&lt;br /&gt;
}&lt;/blockquote&gt;&lt;br /&gt;
This would compile to:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;MOV &amp;nbsp; A,#0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;; 2 bytes + 1 cycles&lt;br /&gt;
REPEAT:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;[routine]&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;INC &amp;nbsp; A &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ; 1 byte + 1 cycle&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;CJNE &amp;nbsp; A, #100, REPEAT &amp;nbsp; &amp;nbsp;; 3 bytes + 2 cycles&lt;br /&gt;
DONE:&lt;/blockquote&gt;&lt;br /&gt;
While straight in 8051 assembly...&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;MOV &amp;nbsp;R0, #100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ; 2 bytes + 2 cycle&lt;br /&gt;
REPEAT:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;[routine]&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;DJNZ &amp;nbsp;R0, REPEAT &amp;nbsp; &amp;nbsp; &amp;nbsp; ; 2 bytes + 2 cycles&lt;br /&gt;
DONE:&lt;/blockquote&gt;&lt;br /&gt;
The nice thing about the writing your own assembly version is that it is much faster than unoptimized compiled C. Plus it also teaches that how we learnt C isn't the fastest and most efficient way of thinking.&lt;br /&gt;
&lt;br /&gt;
DJNZ is a nice instruction since it decrements the register and then check if its zero in 2 cycles while only eating 2 byte of memory. CJNE won't do the decrement/increment but will do a comparison to a number, but it eats 3 bytes of memory and it eats up 2 CPU cycles. Note that the amount I used are the worst case numbers.&lt;br /&gt;
&lt;br /&gt;
Since it doesn't do the decrement/increment for you, you have to put an extra instruction to increment the variable, so now the loop takes 3 cycles to process in comparison to the just 2 cycles using DJNZ.&lt;br /&gt;
&lt;br /&gt;
Also, program memory usage increases to 6 bytes in comparison to the 4 bytes we'll need for DJNZ.&lt;br /&gt;
&lt;br /&gt;
Saving two bytes and 1 cycle may not seem much, but it adds up since we like to use recursive functions when we program.&lt;br /&gt;
&lt;br /&gt;
From this, we can adapt our C code to have the compiler make efficient code. Here is an example I use often when trying to force a compiler to use the DJNZ instruction to save on space and time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;for(int i = 100; i &amp;nbsp;&amp;gt; 0; i--)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; function(); //or whatever you can find that would do nothing.&lt;br /&gt;
}&lt;/blockquote&gt;&lt;br /&gt;
This article isn't just for the Intel 8051 CPU, it can be applied to many different CPUs as well. It is often more efficient to compare to 0 than to compare to any other integer so most CPUs will have an instruction like DJNZ for fast looping.&lt;br /&gt;
&lt;br /&gt;
Reference: &lt;a href="http://www.atmel.com/dyn/resources/prod_documents/doc0509.pdf"&gt;Atmel's 8051 Instruction set and timing.&amp;nbsp;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1868525480175890500?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L1CcsoDQ9aniPq7iWp2cd7hGLj4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L1CcsoDQ9aniPq7iWp2cd7hGLj4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L1CcsoDQ9aniPq7iWp2cd7hGLj4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L1CcsoDQ9aniPq7iWp2cd7hGLj4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=QwAWixRv044:jt3fwG5s7G8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=QwAWixRv044:jt3fwG5s7G8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=QwAWixRv044:jt3fwG5s7G8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=QwAWixRv044:jt3fwG5s7G8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=QwAWixRv044:jt3fwG5s7G8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/QwAWixRv044" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1868525480175890500/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/02/why-intel-8051-assembly-is-so-awesome.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1868525480175890500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1868525480175890500?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/QwAWixRv044/why-intel-8051-assembly-is-so-awesome.html" title="Why (Intel 8051) assembly is so awesome: DJNZ" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/02/why-intel-8051-assembly-is-so-awesome.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYDRH04fip7ImA9Wx9VF0Q.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-2153467988701123296</id><published>2011-02-04T00:24:00.002-05:00</published><updated>2011-02-04T00:26:15.336-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-04T00:26:15.336-05:00</app:edited><title /><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tv4oJ7rgKps/TUuLy9ytxZI/AAAAAAAABVI/BwFGMr9ZOos/s1600/photo+%25282%2529.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_tv4oJ7rgKps/TUuLy9ytxZI/AAAAAAAABVI/BwFGMr9ZOos/s320/photo+%25282%2529.JPG" width="239" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;DIY stand for my phone&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;The Windows Phone 7… phones… have been out for a over 6 months now. I’ve had mine for a month now and I’m ready to give you guys a review on it and the LG Optimus 7. Lets do it &lt;a href="http://en.wikipedia.org/wiki/Wikipedia:TLDR"&gt;TL;DR&lt;/a&gt; style. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Display&lt;/b&gt;: The screen is excellent but not as vibrant as the Samsung AMOLED ones. On par with iPhone I find except for the resolution but I’m not convinced on the extra real estate. Text is really clear on the LG Optimus 7. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Audio&lt;/b&gt;: Mediocre. The headphone jack will spit noise out after extended use. This is frustrating and can only be resolved by unplugging and plugging back in your headphones. I can confirm this problem when the phone is plugged into the AC. Note, you might not notice it, it’s a very small amount of noise. Lowest audio volume is too loud for me. Probably not for most people...&amp;nbsp; Also doesn’t keep a separate setting for headphones and speaker volumes. Expect your ears to be blown when you don’t realize it. &lt;/div&gt;&lt;div class="MsoNormal"&gt;Phone: Love it. Easy to dial numbers out and receive calls. Audio quality is clear. Note that I’ve had the phone drop Bluetooth a few times with my 25,000$ Bluetooth headset (&lt;a href="http://en.wikipedia.org/wiki/Mazda3"&gt;Mazda3&lt;/a&gt;). Not sure if it’s the car or the phone’s fault. Address book is easy to use when its syncs up to your Facebook and Google Account but it’s a pain when you realize 90% of your address book is missing phone numbers or has funny names like do-not-email@spam.spam (Gmail likes to autosave...). &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Texting&lt;/b&gt;: Excellent. Just like iPhones. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Email&lt;/b&gt;: Great except that you can't thread emails like in Gmail and on the iPhone. Not a big deal since most threaded emails come back with what you wrote already. Its also easy to spot important emails and attachments. Apparently, iPhones users have to scroll pages of emails to get to the attachments while on the Windows Phone, its right at the top so you can pre-load them while reading the email.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;On screen keyboard&lt;/b&gt;: Other than the lack of copy and paste, its by far the best I’ve used. &lt;a href="http://damnyouautocorrect.com/"&gt;Typing with an iPhone is a chore&lt;/a&gt;. Swype is faster but its only found on the Samsung Androids.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Entertainment&lt;/b&gt;: Pretty good but not complete. The Zune interface will not re-orient for horizontal use. Very annoying. Can’t maximize the album art, large amount of wasted white space above the artist’s name, extra control buttons at the bottom of the screen when only one is needed, no visualizations, etc. Its great as a music player but it doesn’t do anything else visually. &lt;/div&gt;&lt;div class="MsoNormal"&gt;No way easy way of sending files to your phone without Zune and Zune “allowable” files. That means documents, files, etc are not transferable over USB. You will have to email yourself those PDFs, Office files, etc. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Videos are nice and clear. Also supports Youtube but has problems when you’re not navigating on mobile Youtube. iPhone doesn’t have that problem but can’t play Youtube videos natively. You cannot upload videos using email which is annoying. You can upload to Skydrive or Youtube…&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Camera&lt;/b&gt;: Terrible. I hate using it, its total crap for a 5 megapixel. Hear me, LG? So don’t expect many photos from me still unless you like Mr. Blurrycam. Flash only makes the photo worst, either too dark or too white. The dedicated camera button is great to take a photo quickly but its useless when the camera is this bad. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Work device:&lt;/b&gt; Office is a really nice feature. Its unfortunately not full feature but it certainly does the job. Excel on the go is really nice. Its got PowerPoint and Sharepoint too.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Apps&lt;/b&gt;: Not bad. Marketplace is a mess though. No easy way to sort through it and everything is clumped together in long, very long, lists. Search function is your best friend except it doesn’t show you what is free in the results.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Internet&lt;/b&gt;: Amazing considering its based on Internet Explorer 7! Don’t expect miracles though but its fast and easy to use. Plus the screen is very accurate so its easy to hit the right buttons. Oh and pages load in the background, unlike the iPhone which hates multitasking. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Wifi &amp;amp; networking&lt;/b&gt;: A pain in the binary. Can’t connect to hidden networks, can’t connect to VPN, can’t connect to Skype (No commitment for Skype support), not sure if it knows how to use wifi since I seem to use 3G more often considering the router is only 5 meters from it (it turns off the Wifi when it sleeps), no USB/BT tethering (&lt;a href="http://wmpoweruser.com/lg-optimus-7-can-also-usb-tether-also/"&gt;unless you put it engineering test mode and only for USB)&lt;/a&gt;. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;User Interface&lt;/b&gt;: Amazing to use. Ridiculously easy to navigate, fluid animations, good use of screen real estate, and the live tiles tell you immediately what you need to know. Plus the lock screen is clear and tells you how many emails are in your multiple inboxes. Basically, everything is touchable or scrollable. Its very intuitive in that there aren’t buttons littered across the screen. It gets you to press and hold things to get a menu to do stuff you won’t do normally. Plus, that big dedicate hardware back button is awesome to use. It takes some time to get used to it though. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;So if you go from Start -&amp;gt; Game hub -&amp;gt; Game -&amp;gt; webpage 1 -&amp;gt; webpage 2…&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;The back button will travel in reverse of what you did. You’d think the back button in Internet Explorer will be dedicated to just your site history but instead, each webpage is treated like an app that is pushed into the stack. Its fast though, you can get in and out of apps quickly. Whenever a dialog pops up and you’re not sure if you want to send that email, just hit back to cancel which is nice since you know that the back button will always be there to save you. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Bads… all your apps go into the general apps list… which mean you will be scrolling for a while if you have a ton of apps. Its not a big fault and can be remedied in a future update with better application hubs like the Xbox gaming hub which houses all your games instead of shoving them into the general app list. I guess it wasn’t on the developer’s radar since they had zero apps to begin with.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Build quality&lt;/b&gt;: Excellent. Thin and sturdy. It features Gorilla glass which means the packaged screen protector will die long before the screen does (mine has a dent it in already but the screen is fine). It has a nice soft plastic on it and the shape helps you distinguish the phone’s orientation when its in your pocket. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Telus 3G: &lt;/b&gt;Pretty good except for some weird spots downtown where I would lose a signal. Calls are generally clear and data is fast.&amp;nbsp;Surprisingly, I can get service out at the stables where my girlfriend rides which is impressive since their network didn't exist 3 years ago.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;I think that’s it for the quick notes on the phone. There is a Windows Phone update coming up but its not looking too promising in terms of improvements. It’s a great phone but the biggest problems with the phone have nothing to do with its potential. Its going to be a contender but not right now. Its still its in rebellious teenage years.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-2153467988701123296?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZQXtjHp8O8GIb4fZHiDvDB5AMmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZQXtjHp8O8GIb4fZHiDvDB5AMmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZQXtjHp8O8GIb4fZHiDvDB5AMmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZQXtjHp8O8GIb4fZHiDvDB5AMmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=BA1lfoWSA7c:Bmwlx-8Xo54:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=BA1lfoWSA7c:Bmwlx-8Xo54:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=BA1lfoWSA7c:Bmwlx-8Xo54:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=BA1lfoWSA7c:Bmwlx-8Xo54:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=BA1lfoWSA7c:Bmwlx-8Xo54:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/BA1lfoWSA7c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/2153467988701123296/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/02/diy-stand-for-my-phone-windows-phone-7.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/2153467988701123296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/2153467988701123296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/BA1lfoWSA7c/diy-stand-for-my-phone-windows-phone-7.html" title="" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_tv4oJ7rgKps/TUuLy9ytxZI/AAAAAAAABVI/BwFGMr9ZOos/s72-c/photo+%25282%2529.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/02/diy-stand-for-my-phone-windows-phone-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08ASXcyfyp7ImA9Wx9VFk8.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-3102100510918625975</id><published>2011-02-01T23:39:00.005-05:00</published><updated>2011-02-01T23:44:08.997-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-01T23:44:08.997-05:00</app:edited><title>CSN 15$ Giveaway!</title><content type="html">Alright, so who wants to win 15$ by doing almost nothing?&lt;br /&gt;
&lt;br /&gt;
CSN gave me a 15$ gift certificate to give away to a lucky reader. CSN sells just about anything, from &lt;a href="http://www.allmodern.com/"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;&lt;b&gt;modern office furniture&lt;/b&gt;&lt;/span&gt; &lt;/a&gt;to pet beds to literally, the kitchen sink. Going through their site (well a few of their 200+ sites...), it just seems its easier to list what they don't sell. I'm moving to a new condo in the near future and I'm finding a few things here that I want to buy... We're getting 2nd bedroom and I'm really itching to get a proper home office (and laboratory!).&lt;br /&gt;
&lt;br /&gt;
The gift certificate is good for both Canadian and American residents. It can be used on any of CSN's 200+ shopping sites.&lt;br /&gt;
&lt;br /&gt;
The rules? They're easy!&lt;br /&gt;
&lt;br /&gt;
Step 1. Comment below with a valid account that lets me get hold of you in some way. Emails are preferred but you can provide your blogger account as well. Just make sure I can get a hold of you within 1 week.&lt;br /&gt;
&lt;br /&gt;
Optional step. Share with us what you're going to buy. &lt;br /&gt;
&lt;br /&gt;
The contest will end February 28th 2011 and the winner will be picked at random on March 1st using an a really fancy excel sheet. If no one picks up the prize within 1 week, then I will redraw another name. &lt;br /&gt;
&lt;br /&gt;
Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-3102100510918625975?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Qy3uv2F0WM1uLZVbzfv3oUkrOew/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qy3uv2F0WM1uLZVbzfv3oUkrOew/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Qy3uv2F0WM1uLZVbzfv3oUkrOew/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qy3uv2F0WM1uLZVbzfv3oUkrOew/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=JemVE5GdHVE:N3YiDPpUVKM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=JemVE5GdHVE:N3YiDPpUVKM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=JemVE5GdHVE:N3YiDPpUVKM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=JemVE5GdHVE:N3YiDPpUVKM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=JemVE5GdHVE:N3YiDPpUVKM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/JemVE5GdHVE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/3102100510918625975/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/02/csn-15-giveaway.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/3102100510918625975?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/3102100510918625975?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/JemVE5GdHVE/csn-15-giveaway.html" title="CSN 15$ Giveaway!" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>10</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/02/csn-15-giveaway.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcMR3g9eSp7ImA9Wx9WEEg.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1668514388033197189</id><published>2011-01-14T20:48:00.000-05:00</published><updated>2011-01-14T20:48:06.661-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-14T20:48:06.661-05:00</app:edited><title>My free Xbox and Phone</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tv4oJ7rgKps/TTD8TlqS3OI/AAAAAAAABUU/aia_9K_MYxw/s1600/photo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TTD8TlqS3OI/AAAAAAAABUU/aia_9K_MYxw/s320/photo.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Ahhh Telus and Microsoft. It looks like they have a hard time selling Windows Phone 7... so they threw in an Xbox 360 to go with it. And to top it off, the phone was free too.&lt;br /&gt;
&lt;br /&gt;
I heard the West Coast folks got the 250gig Xbox version, so lucky.&lt;br /&gt;
&lt;br /&gt;
I've been using the phone for a month now, will put up a review shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1668514388033197189?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RNLwhIgb6DV6Sv5zc7WDum0EXdQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RNLwhIgb6DV6Sv5zc7WDum0EXdQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RNLwhIgb6DV6Sv5zc7WDum0EXdQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RNLwhIgb6DV6Sv5zc7WDum0EXdQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=LQubp0pGRHU:-Q97eyOosH0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=LQubp0pGRHU:-Q97eyOosH0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=LQubp0pGRHU:-Q97eyOosH0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=LQubp0pGRHU:-Q97eyOosH0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=LQubp0pGRHU:-Q97eyOosH0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/LQubp0pGRHU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1668514388033197189/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2011/01/my-free-xbox-and-phone.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1668514388033197189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1668514388033197189?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/LQubp0pGRHU/my-free-xbox-and-phone.html" title="My free Xbox and Phone" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_tv4oJ7rgKps/TTD8TlqS3OI/AAAAAAAABUU/aia_9K_MYxw/s72-c/photo.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2011/01/my-free-xbox-and-phone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcBQX8-cCp7ImA9Wx9VF0U.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-1940240378974527408</id><published>2010-12-28T17:00:00.001-05:00</published><updated>2011-02-03T21:54:10.158-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-03T21:54:10.158-05:00</app:edited><title>Finally, explanation of the Google Gears prompt on TD's web banking</title><content type="html">I've always wondered why Google Gears asks if TD can use it... I always click no (or the don't ask me again box) because I would have to be quite insane to store any kind of banking information in my browser. Turns out, its just using some fancy cookies (&lt;a href="http://www.amazon.com/Martha-Stewarts-Cookies-Stewart-Magazine/dp/0307394549"&gt;And I don't mean these kinds&lt;/a&gt;) and Google Gears hiccups when it sees it.&lt;br /&gt;
&lt;br /&gt;
In any case, HTML5 will soon&amp;nbsp;supersede&amp;nbsp;Google Gears which originally invented out of&amp;nbsp;necessity&amp;nbsp;back in the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-1940240378974527408?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0FMSF2bR0uGyVS6sL4u_p98HWDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0FMSF2bR0uGyVS6sL4u_p98HWDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0FMSF2bR0uGyVS6sL4u_p98HWDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0FMSF2bR0uGyVS6sL4u_p98HWDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=MkjK5N7llH0:52u4krM9aRE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=MkjK5N7llH0:52u4krM9aRE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=MkjK5N7llH0:52u4krM9aRE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=MkjK5N7llH0:52u4krM9aRE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=MkjK5N7llH0:52u4krM9aRE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/MkjK5N7llH0" height="1" width="1"/&gt;</content><link rel="related" href="http://mnathani.com/mansoor/td-bank-canada-bad-implementation-of-google-gears-on-website/" title="Finally, explanation of the Google Gears prompt on TD's web banking" /><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/1940240378974527408/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2010/12/finally-explanation-of-stupid-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1940240378974527408?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/1940240378974527408?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/MkjK5N7llH0/finally-explanation-of-stupid-google.html" title="Finally, explanation of the Google Gears prompt on TD's web banking" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2010/12/finally-explanation-of-stupid-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UCQ3o9eSp7ImA9Wx9REkw.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-7624776626541118638</id><published>2010-12-12T22:34:00.000-05:00</published><updated>2010-12-12T22:34:22.461-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-12T22:34:22.461-05:00</app:edited><title>FidoCares...</title><content type="html">&lt;a href="http://www.fido.ca/web/content/whyfido/fido_cares"&gt;Fido Cares&lt;/a&gt;...&lt;br /&gt;
&lt;br /&gt;
What a bunch of BS.&lt;br /&gt;
&lt;br /&gt;
So heres the thing. My contract is up and I need a new plan. If I just let this one go, my loyalty credits run out, I have 20$ worth of credits + addons which puts my bill to 33$ with tax.&lt;br /&gt;
&lt;br /&gt;
Basically, its 250 mins, unlim incoming, unlim text, unlim weekend &amp;amp; nights, and I've had the contract for 3 years. Fair enough. So we went back this month to renew the contract. I don't need anything fancy and am willing to keep this plan for another 3 years. Nope, they knocked 10$ off their 35$ plan which is basically a downgrade from my current plan. Instead of 250 min, they're offering 150 minutes.&lt;br /&gt;
&lt;br /&gt;
Sure it comes with everything and I save 3$ but I lose 100 minutes... which I need. So... they're basically telling me; "Oh, thanks for being with us for 10+ years. Now go f' yourself. We're Roger's bitch now and we're not going to help you out." Thanks for not willing to give me my old plan.&lt;br /&gt;
&lt;br /&gt;
Now heres the kicker... Went back to buy a bluetooth headset with my Fido dollars. Nope, you can't do that anymore. I bought 2 already before but now they don't let you anymore. So fine, I will buy their cheapest phone. 50$, ok. Then I read the fine print. There is a 25$ hardware upgrade fee for being LOYAL to the company. I've been a client for 10+ years! Yea, how does that make any sense? Ever since Rogers bought Fido, its been going down hill. Worst, Rogers opened Chatr which has better plans than Fido. So whats Fido good for other than forcing their old clients to jumping ship?&lt;br /&gt;
&lt;br /&gt;
So yea, I'm jumping ship now onto Telus or Bell's 3G network. Yea, Bell. And I really hate Bell (REALLY REALLY HATE BELL). That tells you something Fido.&lt;br /&gt;
&lt;br /&gt;
The sad part, I would be happy with a simple voice plan with my current phone but since Bell/Telus doesn't have old GSM (they use 3G HSPA only or CDMA), I have to buy a new phone. Since they current generation of dumb phones are terrible, I have to get a smartphone. So now I'm trying to lower the damage by not getting screwed into a data plan where I can't switch it to something better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-7624776626541118638?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7sbPBQRDTAvA7XYOTO7wtFVfoZg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7sbPBQRDTAvA7XYOTO7wtFVfoZg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7sbPBQRDTAvA7XYOTO7wtFVfoZg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7sbPBQRDTAvA7XYOTO7wtFVfoZg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=CIaeTdiXezM:YZ1vHNNQNKI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=CIaeTdiXezM:YZ1vHNNQNKI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=CIaeTdiXezM:YZ1vHNNQNKI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=CIaeTdiXezM:YZ1vHNNQNKI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=CIaeTdiXezM:YZ1vHNNQNKI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/CIaeTdiXezM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/7624776626541118638/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2010/12/fidocares.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7624776626541118638?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7624776626541118638?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/CIaeTdiXezM/fidocares.html" title="FidoCares..." /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2010/12/fidocares.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMHRH0yeyp7ImA9WhdbGE8.&quot;"><id>tag:blogger.com,1999:blog-7455490061003058486.post-7741180967374570687</id><published>2010-11-29T22:35:00.002-05:00</published><updated>2011-10-16T23:33:55.393-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-16T23:33:55.393-04:00</app:edited><title>Introduction to a Hash Table &amp; Jump Table</title><content type="html">&lt;span class="Apple-style-span" style="font-size: small;"&gt;My brother came to me about how to quickly sort translate Morse Code into human readable ASCII characters. His prof mentioned Jump Tables which is one way of doing it but I believe I came up with a faster way of doing, plus, its more human readable. This tutorial will not cover much, just the basics and how the code works.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;The problem: You're given a string with dashes (-) and dots (.) which represent a letter of the alphabet. How do you translate that to a letter that can be printed onto a LCD screen attached to an Arduino.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Here is an example of the conversion we want.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;
&lt;table border="0" cellspacing="0" cols="3" frame="VOID" rules="NONE"&gt;&lt;colgroup&gt;&lt;col width="114"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;
&lt;tr&gt;    &lt;td align="LEFT" height="17" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="114"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Memory Address&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="86"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="86"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Letter&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="55" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;55&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;...&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;a&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="56" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;56&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;..-&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;b&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="57" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;57&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.-.&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;c&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="58" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;58&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.--&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;d&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="59" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;59&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-..&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;e&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="60" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;60&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-.-&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;f&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/blockquote&gt;
Secondary problem: Keep the code small because a micro controller has very limited code space. It must not use a lot of CPU clock cycles since a micro controller has very little cycles to spare.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;Solution 1: Recursion&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;Lets start off with the most likely solution to the problem, recursion. This is easy, all you would have to do is make a loop that did a string compare function and check each letter for its string equivalent. Its easy to follow and implement but it eats up RAM and eats up a lot of CPU cycles. Would not consider this unless code space is an issue and you brute strength it.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;Solution 2: Jump Table&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;This one is related to a hash table but is different in execution. I initially explained to my brother that to use a jump table, you would have to convert the String into its numerical equivalent. Basically, convert the dots and dash into machine readable binary.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;So the conversion chart would be&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;          &lt;/span&gt;&lt;br /&gt;
&lt;table border="0" cellspacing="0" cols="4" frame="VOID" rules="NONE"&gt;&lt;colgroup&gt;&lt;col width="114"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="86"&gt;&lt;/col&gt;&lt;col width="147"&gt;&lt;/col&gt;&lt;/colgroup&gt;  &lt;tbody&gt;
&lt;tr&gt;    &lt;td align="LEFT" height="17" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="114"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Memory Address&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="86"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;String&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="86"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Letter&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;" width="147"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Numerical equivalent&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="55" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;55&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;...&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;a&lt;/span&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="4105;" sdval="0" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;0&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="56" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;56&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;..-&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;b&lt;/span&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="4105;" sdval="1" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="57" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;57&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.-.&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;c&lt;/span&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="4105;" sdval="2" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="58" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;58&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.--&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;d&lt;/span&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="4105;" sdval="3" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;3&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="59" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;59&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-..&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;e&lt;/span&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="4105;" sdval="4" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;4&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td align="RIGHT" height="17" sdnum="4105;" sdval="60" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;60&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;-.-&lt;/span&gt;&lt;/td&gt;    &lt;td align="LEFT" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;f&lt;/span&gt;&lt;/td&gt;    &lt;td align="RIGHT" sdnum="4105;" sdval="5" style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: 1px solid #000000;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;5&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;So you can use a Switch-Case to do a quick jump to find the letter equivalent to a String.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;An example:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;
switch ( var )&lt;/blockquote&gt;
&lt;blockquote&gt;
{&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp;case 0: printf( "a" );&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp;case 1: printf( "b" );&lt;/blockquote&gt;
&lt;div&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp;case 2: printf( "c" );&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp;case 3: printf( "d" );&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp;etc...&lt;/blockquote&gt;
&lt;blockquote&gt;
}&lt;/blockquote&gt;
&lt;br /&gt;
This is very fast and it works if the compiler is smart enough to convert the C code into a Jump Table. Its fast because it doesn't need to do recursion to check if var is equal to 0,1,2, etc.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Heres how its done:&lt;/div&gt;
&lt;div&gt;
We know each case is stored in memory and is associated to a letter. We also know that var is an integer that has a letter equivalent. So to do a quick jump, all we have to do is just find the address of 'a' and then jump from there to the letter want.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If the string is '.-.', we know its decimal equivalent is 2. We also know 'a' is located at memory address 55 (done for you by the magical C compiler).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So the Switch-Case adds the base address, 55, with the decimal equivalent, 2, and returns the address we want, 57.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote&gt;
Equation := &amp;nbsp;Base Address + Decimal equivalent = Memory address&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 55 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= 57&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now looking at the table above, we can see that this is accurate. We avoided using recursion and wasting memory space with a large array.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Pretty good but this can get super annoying if you have a lot of variables to take care of. It means you would have to write a case statement for each one. As well, there is an issue that I haven't brought up to keep things simple.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Solution 3: Hash Table&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The problem with converting Morse code to binary is that some decimal numbers are repeated in the conversion. So --.. is the same as ----.. if '-' is ZERO and '.' is ONE. They both equate to 3 in binary. This is a problem with the jump table because it requires a separate jump table for each String size.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is where a Hash table shines in comparison. We can elegantly take care of the above problem with some concise problem solving. We can know how long the String is and we can know the decimal equivalent to the String. We also know the maximum size of the String can be 5.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So why not build a multi dimensional Array that represent this structure?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here is an example of such structure:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
unsigned char lookUpTable[5][5] = {&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; {'a','b','c','d','e'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'f','g','h','i','j'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'k','l','m','n','o'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'p','q','r','s','t'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'u','v','w','x','y'}&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;};&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
You can see that a 5x5 2 dimensional array can hold 25 of the 26 letters. I'm just going to focus on the function, rather than solving my brother's problem. Thats another project. Lets just keep things simple here.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Each line represents the total amount of characters in a String. Each character in a line represents each decimal equivalent to the String.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So, a String with size 3 and decimal equivalent 4, will print out 'm'.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
While a String with a size of 4 and decimal equivalent of 4 will print out 's'.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Notice how the decimal equivalent of the Strings are the same but by knowing the size of the String, we can associate each String to a different letter.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So we know the size of the String and we know its decimal equivalent. We can deduce its memory location and not have to write a ridiculously large Switch-Case function. The function is quite simple, its just:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote&gt;
lookUpTable[ &amp;nbsp;String Size &amp;nbsp;][ &amp;nbsp;Decimal Equivalent &amp;nbsp;]&amp;nbsp;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
From that, we can access the entire array and jump to the parts we need without do recursion. This also ensure that the compiler will create a nice jump table in assembly. The final nice bonus is that this is just one line of code in comparison to a wild Switch-Case operation.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So here is a full C example that I made that shows how a single line can be used to print out the alphabet.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
unsigned char lookUpTable[5][5] = {&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{'a','b','c','d','e'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'f','g','h','i','j'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'k','l','m','n','o'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'p','q','r','s','t'},&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt; &amp;nbsp; {'u','v','w','x','y'}&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;};&lt;/blockquote&gt;
&lt;blockquote&gt;
int main()&lt;/blockquote&gt;
&lt;blockquote&gt;
{&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; unsigned char i = 0;&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; unsigned char j = 0;&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; for( i = 0 ; i &amp;lt; 5; i++)&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; {&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;for ( j = 0; j &amp;lt; 5; j++)&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf("lookUpTable[%d][%d] = %C\n",i,j,lookUpTable[i][j]);&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; }&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;&amp;nbsp; return 0;&lt;/blockquote&gt;
&lt;blockquote&gt;
}&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
I hope I made a scary subject a little less scary for you now.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7455490061003058486-7741180967374570687?l=ask.jaimeyu.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/62_-O-gVDCJmQpE6xu4yeuW4NJs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/62_-O-gVDCJmQpE6xu4yeuW4NJs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/62_-O-gVDCJmQpE6xu4yeuW4NJs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/62_-O-gVDCJmQpE6xu4yeuW4NJs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=63OHPJ4FhpI:yeHyZgDnIQU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=63OHPJ4FhpI:yeHyZgDnIQU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=63OHPJ4FhpI:yeHyZgDnIQU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?a=63OHPJ4FhpI:yeHyZgDnIQU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jaimeyu/gbPa?i=63OHPJ4FhpI:yeHyZgDnIQU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jaimeyu/gbPa/~4/63OHPJ4FhpI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ask.jaimeyu.com/feeds/7741180967374570687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://ask.jaimeyu.com/2010/11/introduction-to-hash-table-jump-table.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7741180967374570687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7455490061003058486/posts/default/7741180967374570687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jaimeyu/gbPa/~3/63OHPJ4FhpI/introduction-to-hash-table-jump-table.html" title="Introduction to a Hash Table &amp; Jump Table" /><author><name>Jaime Yu</name><uri>http://www.blogger.com/profile/08493978720803625586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_tv4oJ7rgKps/TGSs1DhWuiI/AAAAAAAABQE/mZKOpDutbnA/S220/194.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ask.jaimeyu.com/2010/11/introduction-to-hash-table-jump-table.html</feedburner:origLink></entry></feed>

