Tuesday, October 30, 2012

Google Listens Again

Google is actually a big reader of the Zappable blog, as evidenced by all the Googlebot visits to my site.~ This helps Google figure out what features to develop for their products.   In the past, Gmail only took one week to implement my suggestions, but this time they took a bit longer. Seven months ago, I posted some Suggestions for Improving Google Products, and Google finally got around to implementing an important one. In June they announced offline Google Docs editing, and they now announced an update to Gmail: A new compose box.  Google's explanation of the new feature even sounds similar to Zappable's suggestion:
There are many different tasks people switch between while using email, i.e reading, writing and searching. For example I might be writing an email to someone, and realize I need to do an email search to check a previous email I sent. Gmail should allow people to do these different tasks within one Gmail tab so they do not need to  perform these 3 steps each time: create a new tab, go to Gmail.com, and then go to the task they want. [Zappable]


How many times have you been writing an email and had to reference something in another message? Saving a draft, opening the old email, and then reopening your draft wastes valuable minutes. The new compose pops up in a window, just like chats (only larger). This makes it easy to reference any other emails without ever having to close your draft. You can even do a search or keep an eye on new mail as it comes in. [Gmail Blog]

Monday, October 29, 2012

Learning How to Program - Picking a Langauge

Lately, learning how to program has become quite popular, so I figured I would put together a quick guide to help people get started. As I discuss in The Future of Education II, I think many people should learn some programming. Even if they don't want to do it full-time, they'll still be able to use it for various smaller things in life. In part I of this guide, I'll discuss the different popular languages that one can learn.

The first step is to pick a language. You shouldn't worry to much about this choice, since you can learn the basic programming fundamentals no matter what programming language you choose. However, you might as well pick the language that fits best with your goals. Since the web is the main area of action nowadays, I'll quickly review how websites work before going through different languages.

The webpages you view have been sent over by a server. Sometimes, its just a static page that was just sitting there on the server, but on modern sites, the page is often dynamically created for you. That means some code was being run on the server (the "back-end") to generate the page that it sent over to you. Websites can use any language on their back-end that is supported by their web host. The page that gets displayed is formatted in static HTML (a markup language), but it can contain Javascript that runs in the browser which allow it to do many more things.

Since Javascript runs in all browsers, it can be a good choice of language to learn. No installation is required, since it can immediately be tried out in the browser. Javascript can be used for visual effects, but also for doing things without having to update the entire webpage. Modern web apps require Javascript for many of their features. (For example, try loading Gmail without javascript.) Javascript is also used in many web-related areas, such as creating browser extensions. It is often used for other areas that beginners might be interested in, such as creating AppScripts to work with Google Apps, or On(X) to automate things on Android. If you are interested in any of these purposes, javascript may be a good language to learn. However, Javascript has certain confusing parts, so if you're not planning on using it for one of the above purposes, you can try a more elegant language  such as Python.

PHP is a language built for creating dynamic web pages, and it runs on the server-side. Let's say you just finished building websites without coding and now you want to be able to customize things further. You want to learn how to program the brains of the website, i.e. the back-end. A large number of websites and scripts are built using PHP, and web hosts often come with a list of one-click-install scripts. If you want to create a plugin for Wordpress or work with the same script that runs Wikipedia, then PHP is for you. Practically all dynamic web hosts run PHP, and its very easy to get started with it. However, PHP has some issues, such as a messy syntax and certain inconsistencies and quirks. This means it might be better to learn a different language if just want to learn programming or you want to create an entirely new web app. However, PHP has improved over time, and if it fits your purposes, go ahead and learn it.

If you just want an easy and elegant language to learn programming, Python is a good choice. Unlike PHP and Javascript, which are made for the web, Python is a general-purpose language that can be used outside of websites. Python tries to be a very readable language, so even a beginner should be able to figure out what a sample of Python code accomplish.  Python has the unusual feature of using indentation to mark different parts of code. This makes the code look less cluttered, but can sometimes cause issues when copying code. If you don't have a specific goal that fits with one of the other languages  Python is a good choice to go with.

Ruby is similar to Python in many ways. It is a general-purpose language which is focused more on programmer productivity than running-time on a machine. This 'slowness' isn't really an issue for most cases a beginner will deal with. Ruby has become very popular recently due to the website-building framework written in it - Ruby on Rails. Rails developed certain principles (such as "convention over configuration") that let programmers built websites quickly. If you are interested in creating websites with Rails, then it obviously makes sense to learn some Ruby. While Rails can be used without that much Ruby knowledge, I think a beginner should first learn a simple language before taking on a complex framework.

Java is different than the other languages listed here in a number of ways. All code created in Java needs to be "compiled" into another code before it runs, and all variables need to be "declared" with their name and type. Java also enforces a methodology known as "object-oriented programming", requiring all code to belong to an "object". While there are various benefits to these decisions, they can make it take slightly longer to play around with code and test things out. Java is a heavy-duty language that runs quickly on machines, and it is taught in schools and used in many big companies. People who program in Java use an IDE for programming, which can provide various features to help with programming, such as auto-completion suggestions while they code, and automatic highlighting of certain errors. Java is also the language that Android and Android apps are written in, so if you want to code such apps, you need to learn Java. Java's rules will help you detect certain errors before even running the code, so it does have certain benefits as a first language. However, Java is not the language to pick if if you are interested in quickly creating dynamic websites, or in writing quick scripts for various purposes.


Pick:__      if you want to:__
Javascript - Program front-end webpages, extensions, Appscripts, etc.
PHP - Work with existing PHP scripts
Python - Use a easy general-purpose language
Ruby - Create sites with Ruby on Rails
Java - Program Android apps, Strict rules prevent errors


Monday, October 22, 2012

Dwolla, Tesla, Math Education and Earthquake Prediction

Everyone now and then I post a few recent interesting tech links with some comments. Most of the links usually come from Hacker News. Today, I was able to paste in the 4 links quickly due to Email All Tabs, a life-saving (or second-saving) extension. I may be a bit biased about this extension, since I recently made it and submitted it to the Chrome store. Future version of the extension may include more features (such as the ability to include many long links). Anyways here are the links of the day:

Dwolla, the practically free payment provider, announces a new product for mass-payments. I always thought the fees Paypal and the credit companies charge seem somewhat high. They often take around 3% + transaction fees just for handling the money. I wonder if money changers in medieval times charged that much for providing a similar service that also included currency conversion:
In the market, most large transactions were done not by cash/coins, but by transfer order of funds on the books kept at the local money changer(s). After a market/fair ended, merchants gathered at the local money changers and withdrew their deposit in their own different currencies. The rate of exchange between different foreign currencies and the local one were fixed between the opening and the closing days of the market.


Tesla Motors does not feel its sufficient to invent a new class of electric cars, they also want to create a new model for selling them. They have managed to completely skip the standard car-dealer controlled sales process. Car dealers have too much legal protection from competition, so it's nice to see someone challenging them. In this post, Tesla's CEO diplomatically explains that he understands the protectionist car-dealer laws, but they do not apply to Tesla, which does not deal with car-dealers. 

Obligatory link about math education.~ This somewhat long post says math is about rules that can be used as Lego blocks to build things, while schools just get people to memorize things that have been built. Its true that math education often just consists of memorization, though its often the rules that are memorized. It may be difficult for many people to learn how to wield math, so the educations system just settles on getting them to act like machines (see my early post on this). I think math education needs to be taught in different ways to different people, depending on their aptitude and inclination. 

Italian scientists convicted of manslaughter and sentenced to prison for incorrectly predicting that an earthquake wouldn't be so bad. Seems pretty crazy, but I didn't look into the details.

Thursday, October 11, 2012

Eric Schmidt on Innovation: Patents, Self-Driving Cars and Education

Last night I attended the AllThingsD interview with Eric Schmidt. Yesterday's post focused on smartphones, this post will go through the second half of his discussion.

While Schmidt wasn't willing to discuss specific patent fights, he did emphasize one point: The patent fights harm little companies the most since they don't have the resources to fight patent claims. Small companies have created the most jobs and innovation and so patent disputes can cause great harm by harming them.

This seems true, though patent trolls probably only sue companies that have enough money to be able to pay them. Though perhaps large competitors could sue small companies out of existence, but I don't know if that is too common. No matter what,he current patent system is pretty ridiculous.

Google and Self-Driving Cars
Swisher felt bothered that Google was involved in everything instead of just focusing on organizing information and called Google a Borg. She also said Google Glass is ugly and wasn't so in to self-driving cars. Schmidt replied that they want to be in the center of the information revolution. But he said they should be celebrating innovation instead of dissing it.
He said that people shouldn't really be driving cars and that self-driving cars will save many lives. Car companies will be able to implement components of Google's technology in a few years, but their will still be a driver behind the wheel and a big red button to turn off automated driving. Also, Google Glass will provide new opportunities and experiences for people.

Clearly Google no longer just focuses on making information accessible  but now does all things software. I don't see any reason to be bothered by that, as they seem to be doing a good job and provide basically everything or free.
Schmidt seemed to imply that humans will need to be monitoring the driving. People have a hard-enough time staying focused on the road now when they are driving, so I doubt they will be able to when the computer is doing it. Though maybe the computer will be able to pause the YouTube video when there's an issue that require's human attention.

Innovation & Education
Schmidt said there's low morale in the US, which is a demographic problem, a global problem, and an automation problem. He seemed to be saying there was low unemployment because software and globalization are taking over jobs, but he felt that more innovation was the solution. He said the platforms created by Google and their competitors can create many job opportunities in the US.
The solution is also to improve education to help innovation. Currently, the gap between the elite and everyone else has widened, but it needs to be closed. Mossberg asked if he things online MOOCs like Udacity are the future even for the elite. Schmidt replied that these new initiatives are just version 1 and that they glimmer with possibility, i.e. yes. He said there has been very little innovation and real competition in education but these new online offering are changing that.

If technology is part of the problem of low-employment, perhaps increased innovation will just make things worse? However, improving technology has not caused long-term unemployment, since it has always created new markets for people to spend their money on. So the online platforms may provide many more new jobs. This type of work is not for everyone though, and better education won't necessarily help. However, I don't think there's an immediate risk of widespread unemployment.
I think Schmidt hit the nail on the head about the potential of online education. Who more than the head of Google recognizes the power of software to revolutionize industries? He stressed often how competition drives innovation and lowers prices. This is something the government-backed system of education sorely lacks, but there is now potential for change.

The overall theme that emerged from this discussion was the power of innovation. By allowing competition that isn't restricted by unfair patents or over-reaching unions, great things can be developed that will benefit everyone.

Wednesday, October 10, 2012

Google's Chairman about Apple, Android and Smartphones

Tonight I attended the AllTHingsD event where Eric Schmidt, the executive chairman of Google, was interviewed. An abbreviated transcription is available online. Below I paraphrase Shmidt discussing a few topics and add some comments of my own.

Apple and Google Maps
One of the reasons given for Apple abandoning Google Maps was so Apple could get turn-by-turn navigation. Many people assume that Google wasn't willing to provide that feature for iOS.
However, when asked about this topic, Schmidt said that Google was willing to negotiate, but that Apple decided a long time ago that they wanted to build their own maps. That's why Apple purchased a couple of map-related companies, so there wasn't anything Google could do. Yet Apple didn't realize that it's really hard to make good maps.

This means that Apple probably went ahead with their own maps app not for the users' sake but because  because they  wanted to fight Google. While it may be that they can now provide better integration with the overall OS, it still seems like they made a mistake. However, the main complaints people have is faulty data, so that's not something that the Apple engineers messed up on, but their data provider. That also means it will take a long time to fix. However, I suspect it's not actually a big deal for most people in the US and that the Apple Maps app works fine navigating to almost any place.

Android vs iPhone
Schmidt said the Android-Apple fight is "the defining fight in the industry today" and the biggest platform fight ever. When asked about the PC-Mac fight, he said there are many more people than PC users, and the smartphone market will be able to tap into that market. He said 6 Billion people use phones, 1 Billion of which use smartphones, which will grow quickly. The phone or tablet is enough for people who aren't "information workers" who need access to a keyboard. This is a fight which Google feels they are leading. There are 4 times as many Android devices in use than iPhones and 1.3 Millions new Android activations each day. Schmidt stressed that the intense competition is good for the user and mentioned that it will bring down Apple's profit margins.

While it may be true that people in poorer countries may just get tablets or phone instead of laptops, I don't see that happening soon in the western world, where people are used to being able to type stuff. Even if it's just for email, I assume most people like being able to type, though maybe tablets will soon be good enough at that. What's interesting about the Apple-Google fight is how Apple makes ridiculous margins selling their devices, while Google doesn't make money directly from Android, and actually earns more in ads from iPhone users. Now that Apple isn't using Google for maps, one sees why it helps Google to have their own platform, though they probably wouldn't have lost Apple if they weren't such a direct competitor.

Hardware Integration, Motorola & Microsoft
Schmidt stressed how smartphones provide an integrated hardware-software experience that "just works", as opposed to the PC experience that Microsoft developed. He was generally pretty dismissive of Microsoft, feeling that they haven't been able to make it the new areas of technology. While Mossberg was all excited by the new tablets that Microsoft is creating (hardware and all), Schmidt didn't think that they would work well. He also felt it was fine just designing the hardware and letting other companies create it, like Google does with their Nexus tablets. When asked about Motorola, he said Google wouldn't give them any preference, because they don't want to harm the overall Android system.

While I trust them when they say they're keeping Motorola separate, it really raises the issue of why they bought them. They could probably get access to patents without buying an entire company, so what benefit do they get by owning one? It would make sense if they could now integrate devices better, but they say they're not planning on taking advantage of their ownership of Motorola. Also, couldn't Google make more money by giving preference to Motorola, even if it would cost them a few Samsung devices? Its not like they make so much money from other Android devices, while selling hardware has been very profitable for Apple and Samsung. Though Google is probably just focused on continuous software revenue rather than hardware revenue.

Stay tuned for the next post about Patents, Education and More!