Sunday, August 11, 2013

Arduino Workshop - Project 4 Errata

This is an errata for Arduino Workshop, Project 4, Page 67 (PDF version).

The instructions for the push button do not include running a cable from Arduino 5V pin to the pushbutton. Without it, no voltage runs to pin 7 and the example does not work.

Below you can see the photo of a working circuit:

Arduino Workshop - Project 2 Errata

This is an errata for Arduino Workshop, Project 2, Page 47 (PDF version).

Replace this code:

for ( int a = 5 ; a > 1 ; a-- )
 digitalWrite(a, HIGH);
 digitalWrite(a, LOW);


for ( int a = 6 ; a > 1 ; a-- )
 digitalWrite(a, HIGH);
 digitalWrite(a, LOW);

Note "int a = 6". Without this update, one of the LEDs will not blink.

Sunday, April 28, 2013

Google Plus and Blogger

It's been a while since my last post here and I wanted to share what is going on.

The primary reason for fewer posts is that I've been experimenting with Google Plus and posting most of the links I find interesting over there.

Blogger and Google Plus belong to the same company, so obviously I'm not mitigating any risks of having any service shut down by posting mostly to Google Plus. But the lines between blog posts and Google Plus posts are definitely blurring, especially with Google Plus comments enabled for Blogger now. Pretty much anyone can see my public posts on Google Plus, in the same way as on Blogger, and only logged in people can post comments (just like here as well).

The nice thing about Google Plus is that it is very convenient, very well integrated with other apps on my Android device, so it makes the process very simple - especially if I just want to share links and make short comments, which is typically what I do.

I believe Google Plus could evolve into a platform that allows longer posts, with better formatting capabilities, and it could simply start eating into the Blogger space as well, as the sweep spot of posting longer texts.

The concern I'd have about using Google Plus is the mix of anything very personal with more technical posts that I want to share with the world. I do that by limiting the audience when the posts are more personal, but in the future Google Plus could allow multiple "channels" for one's posts.

Finally, I trust that Google will honor their takeout policy and, should anything happen with any of these platforms, they will allow users to download their posts and material.

Comments are welcome - I'd love to hear more about your experience and view of Google Plus.

This is my Google Plus profile if you want to follow or friend me:

Friday, January 25, 2013

Surface and USB devices/printers

A few weeks back I had posted on my experience with Surface and recently I noticed another issue that was also quite disappointing: USB devices (in particular printers) and Windows RT.

For anyone with a Surface (Windows RT), having a USB port would mean that you can use your printer or scanner, but not necessarily! Check this out:

  • First attempt: I went to the manufacturers' sites, but simply there are no drivers compatible with Windows RT. Not a good sign, but not all hopes are lost.
  • Second attempt: I went and plugged my device in to see what would happen. Windows RT detected the device and installed the drivers, so my impression is that everything would worked out. BUT, when you try to scan or print out using your device, the device isn't displayed among the available devices. After going to the desktop control panel, I realized that the device is actually listed, but with a warning sign saying what? That the driver is incompatible with this version of Windows!

On the second point, how does Windows detect and install a device if the driver is not compatible with Windows RT? This is a horrible experience, especially if we're talking about someone who would expect Surface to work seamlessly as another table - not requiring knowledge of how regular Windows works in order to troubleshoot an issue like that.

Wednesday, January 09, 2013

Chrome Tab Syncing

If there's a feature that I've been very pleased to learn that it already exists, this feature is Google Chrome Tab Sync. I have a tendency of keeping a lot of tabs open, on all computers I use. It got to the point that friends were joking that I was the tester for browsers, as not rarely I'd have more than 100 tabs open. Now combine this with multiple computers and with tabs that I keep open to read later. Put it simply: it is a recipe for disaster.

If you use Chrome, consider signing into it, so it can sync your tabs. I've been using this feature for a month or so and have been very happy with it.

Learn more in the video below.

Hard Work: keep learning and know when to quit

I read a career advice answer on Quora that was really amazing. This is the question and answer:

Read Quote of John Morrow's answer to Career Advice: Why don't I achieve success in spite of working so hard? on Quora

I really love the answer, but in particular the first two points. First, focus on constantly learning and pushing yourself is absolutely my tenet. Not only that, but remember that you're only competing with yourself - don't compare to others. Good things will happen if you keep learning and improving.

The second point in the answer above is about when to quit. I read The Dip: A Little Book That Teaches You When to Quit (and When to Stick) while on vacation last year and it does give us some good recommendations when to consider pursuing what you've been doing so far as opposed to when you should quit. In my opinion, given my professional experiences, I believe that people tend to keep pushing more than they should - and although I could speculate the reasons they don't quit, the point is just that they don't realize or decide not to quit early enough.

4 weeks with Microsoft Surface

After 4 weeks with Microsoft Surface RT, including some of them as my only device, I'd like to share my experience and provide Microsoft some suggestions for improvements.

Before I begin, though, the context is that I had never had a tablet before. I can't compare it to an iPad or Android tablets.

  • Performance: the first and foremost issue with Surface is with its performance. I've been using it to browse the web and mostly to read email/news on sites like Gmail and Google Reader. The perceived performance is bad for things like: click/touch to open a new table, time to launch/render web sites (as compared to other computers on the same network), time for the typed characters to show up on the screen (you probably saw reports that Microsoft Word did not keep up with the user typing a document and it's no different for me on sites like Gmail). I tried other applications, mostly Kindle, and its rendering time is bearable, but I expected more (especially as you compare it to smartphones that have much better perceived performance). And, as a last example, rotating the screen from landscape to portrait mode is quite slow in my opinion.
  • Multi-tasking: as Windows 8 doesn't have that many applications (in my case, especially a good Gmail client), one needs to use Internet Explorer to launch the web versions to be able to accomplish one's tasks. If you want to launch something to keep running in the background, like an internet radio or YouTube, you should try for yourself to switch away for IE metro version. It stops running! But the irony is that, if you go to the Desktop and launch its IE version, it keeps running in the background as you switch away to Metro apps.
  • Touch interface: I don't know if the problem is with my inexperience with touch interfaces, but it doesn't respond as well as I'd expect. I find myself having to touch it multiple times to get something done. Sometimes it confuses a touch with press-and-hold and selects the text or shows up some option. I confess I lose patience with this touch interface.
  • Keyboard: I have one of those Surface touch keyboards. My productivity with it, combined with all the performance problems I mention above, is way low compared to an actual keyboard. And note, I do touch typing on any keyboard, but even after 4 weeks I couldn't get used to the touch keyboard. I plug my regular keyboard into Surface to be able to reply to emails or write any longer texts.
  • Desktop/Metro mix: enough has been said about Windows 8 inconsistencies, but I have to say that they do bother me. Just two examples: (1) you connect your Bluetooth headset to the Surface and do partially through the Metro UI, but in order to really know and troubleshoot if it's connected, you need to go back to the desktop and launch the control panel; (2) I wanted to prevent Surface from sleeping automatically when it's charging, so I could continue to listen to music, and in order to do that, you need to go back to the control panel and find the options with your keyboard and mouse, just like any regular Windows 8 device. Not to mention that touching on the help options in the Metro UI sometimes takes you back to a help dialog on the desktop.
  • IE lack of configuration options: IE Metro and Desktop have different configuration options. If you want to change your search provider, for instance, or set a proxy or even see the source code (as I was troubleshooting an issue), you can't do any of these things in the Metro version - but you can in the desktop version. Not only that, but I'd love to have Microsoft allowing other browsers on Surface, as oftentimes some sites don't work well with one browser, but work well with another. In terms of features, IE doesn't seem to be the only one, as Skype (Metro) is also a stripped down version of the desktop version.

After this experience with Surface, I went back to an old laptop (5.5+ years old, also running Win 8) and I was absolutely amazed at how the old laptop was blazing fast compared to Surface. And we're talking about a laptop with a mechanical hard disk, as compared to Surface with a flash drive. The performance must be definitely improved so I can justify the Surface cost. At this point, it's a better to purchase a low end laptop, as it will give a better performance.

Data Immutability

Pat Helland (ex-Microsoft/Amazon, currently at Salesforce) gave a good talk on data immutability at Ricon 2012, which refers to the distributed systems challenges and solutions, like NoSQL, replication, big data.

These are the takeaways:

  • Things have changed towards immutability
  • Versioning allows a changing view of objects with immutable backing
  • Increasingly, systems are based on writing immutable data
  • Immutability extends consistent relational systems
  • Semantically immutable data may be changed for optimization
  • Immutability is the backbone of emerging "Big Data" systems

For me, with the personal experience of moving a system from a SQL-based data store to NoSQL, it is very interesting to Pat's talking about immutability and versioning because that's essentially the solution we took to get to a more scalable solution.

Also, what killed us when thinking of geo-replication in my experience on a NoSQL store was the linear version, which is strongly consistent, like Pat mentions on the takeaway slide. Going for what he calls a Directed-Acyclic-Graph (eventually consistenty) history is definitely a better approach for scalability.

Tuesday, January 08, 2013

Windows 8 and flaky wifi drivers

I worked with 2 laptops with Windows 8:

- 5+ year old high-end HP laptop DV9620us
- 2 year old Lenovo T420s

One thing that amazed with Windows 8 is how flaky Wifi was for me, in both cases. The worst case is with my HP laptop, but even the Lenovo laptop had issues from time to time.

What happens basically is this: either blue screen of death (BSOD) or the wifi just stops working, which requires a reboot to get it to work again. Sometimes it stops working minutes after a reboot.

I investigated the HP case further. It has a Intel 4965AGN adapter. As it turns out, Intel decided not to support this adapter (among others) on Windows 8. Microsoft provides an driver for it, but that is the drive with the flaky behavior as I mentioned above. Lots of people are having the same issue - and apparently not only with this Intel adapter, but with other as well. Some report that they have to disable 802.11N to get it to be more stable, others tried different techniques (like installing Windows 7 drivers) to get it to work.

I'm amazed that the support for the wifi adapter is dropped, but I'm more amazed that a driver is released by Microsoft that doesn't work properly. Now what can the owners do? I wonder if Intel could open up the spec and allow someone to develop an open source driver for Windows.

Gmail Keyboard Shortcuts

If you use Gmail and are a power user, make sure to turn on keyboard shortcuts to improve your productivity! It reminds me of times when I used (and loved) Mutt email client.

Thursday, December 27, 2012

Geo-replication: MDCC and RedBlue consistency

Below you can find a couple of good posts by Murat on geo-replication for recent academic work. In particular, the first link has good explanation on Paxos optimizations.

MDCC: Multi-Data Center Consistency

Making Geo-Replicated Systems Fast as Possible, Consistent when Necessary

And, if you want to watch the OSDI presentation on the RedBlue consistency (second link above), click on this video link.

Tuesday, December 25, 2012

Go Language at Google

I just read a good article on the Go Language and was pleased to see the efforts to improve build times and code dependencies. Just for the reason of learning what the problems with C/C++ include file have, it's worth reading the article.

The other reasons is to learn that Go is a language without exception, garbage-collected, without type hierarchy (but object-oriented and with interface), with a different concurrency model (it follows Communicating sequential process), among others. And, last but not least, it is an open source language.

Go at Google: Language Design in the Service of Software Engineering


From The Art of Doing Science and Engineering:
I am preaching the message that, with apparently only one life to live on this earth, you ought to try to make significant contributions to humanity rather than just get along through life comfortably - that the life of trying to achieve excellence in some area is in itself a worthy goal for your life. It has often been observed that the true gain is in the struggle and not in the achievement - that a life without a struggle on your part to make yourself excellent is hardly a life worth living. This, it must be observed, is an opinion and not a fact, but it is based on observing many people's lives and speculating on their total happiness rather than the moment to moment pleasures they enjoyed. Again, this opinion of their happiness must be my own interpretation as no one can know another's life. Many reports by people who have written about the "good life" agree with the above opinion. Notice that I leave it to you to pick your goals of excellence, but claim only that a life without such a goal is not really living but it is merely existing - in my opinion. In ancient Greece Socrates (469-399) said, "The unexamined life is not worth living"

Science vs. Engineering

From The Art of Doing Science and Engineering:
In science if you know what you are doing you should not be doing it.
In engineering if you do not know what you are doing you should not be doing it.