Thursday, December 27, 2012

Link Poetry - Searching for Knowledge

Although I normally favor prose, here’s an experiment with a new type of poetry:

must people still know

the knowledge to understand

be able to search

Lottery Ticket Investing

In a previous post, I listed a bunch of Startup Ideas, but I didn’t go into any details about them. In this post I will discuss one of the ideas – Lottery-ticket investing. I decided to start from one of the less realistic ideas, so I can move to more realistic ones in later posts. While writing this post, I realized there were even more issues than I initially thought.

Q: So why are you publishing it?

Well I thought it might still have some potential somewhere, and I can use a Q&A format to discuss its issues. And it touches on some questions in economics and psychology.

Lottery-Ticket Investing

Problem: People buy lottery tickets despite the poor odds, i.e. their negative expected return. They do this because they’re excited by the prospect of large winnings, and may not evaluate the odds correctly. But there should be some way to let them get tickets that offer a large prize, but still have an overall positive return.

Solution: Create an Investment Lottery: Invest the lottery ticket money in stocks, which historically have a strong positive return. Use a investing method with high-voltaility so there is a chance of large payouts.

Q: But how would you distribute the money?

One way would be to have an actual lottery at the end of the investment period and give the money to specific winners. However, this is too similar to a regular lottery, so the state governments wouldn’t allow it. Instead, one could give the actual returns of each ticket to the buyer. This way people who get or pick the right tickets can win big.

Q: So you’re basically just selling people stocks.

Yes, these tickets would let people easily invest small sums in a high-risk but high-reward manner.

Q: That sounds pretty boring.

It’s true that people are motivated to buy because of the hope of getting a huge prize, but people also buy tickets for smaller prizes. So one would need to examine where the cut-off would be. For example, people might be willing to pay $10 for a ticket that could potentially win $1000. If they here about one winner who won a huge prize, they might get excited enough by that possibility, even if it rarely happens.

Q: But how would you ever get 100x returns on investments in a short time-span?

There are a number of possibilites that one could explore. Perhaps there’s some way to do it with margin-investing, or with some variety of that. For example, the lottery stock tickets could insure other investors against losses, so the ticket-holders take larger losses or bigger gains if the stock has a large change. This will let the ticket-holders magnify their risk and provide insurance to safe investors.

Q: That doesn’t sound like a very good idea, and people can insure against losses without any lottery involved, e.g. by buying put options.

OK, so that idea might have some flaws. But there are risky investments that one could find, such as certain junk bonds. In addition, it will soon be legal for ordinary people to invest in small companies. They could serve as a very-high risk investment that could have extremely good returns. By making it easy for people to buy “Investing Tickets”, they can be encouraged to invest in a system that has good overall returns instead of losing so much money in the lottery. While they might not make it rich this way, they’ll have better long-term odds than in the lotto.

Wednesday, December 5, 2012

A Map of Resources for Learning Ruby

My previous chart of resources to learn programming was well-received, but some people suggested additional resources. I decided I would try a new format to display more resources for learning programming. It is a map of different resources, which are ordered from left to right based on experience. You can choose a resource from each vertical, and then move to the right as you gain experience. A sample path is shown in the image. It would be interesting to see how these kind of charts can be improved to quickly display relevant information about each item. Click on the image below get a clickable image map, an SVG should be coming soon.

Map of ruby resources

A Map of Resources for Learning Ruby

My previous chart of resources to learn programming was well-received, but some people suggested additional resources. I decided I would try a new format to display more resources for learning programming. It is a map of different resources, which are ordered from left to right based on experience. You can choose a resource from each vertical, and then move to the right as you gain experience. A sample path is shown in the image. It would be interesting to see how these kind of charts can be improved to quickly display relevant information about each item. Click on the image below get a clickable image map, an SVG should be coming soon.

Map of ruby resources

Sunday, December 2, 2012

Job Market for Programming Languages

One consideration when choosing a programming language is the demand in the job market for people who know that language. I did some searches on different job sites to see what skills are in demand. Below are the results from for jobs that tagged specific languages as skills. For more information, I created a Google Spreadsheet with job data from different websites.

Java is used extensively in big companies, so it has the most results. Javascript is the only language of front-end development, so it takes the second spot. PHP is clearly less popular than it used to be, while Python and Ruby vary by website.

Job Market for Programming Languages

One consideration when choosing a programming language is the demand in the job market for people who know that language. I did some searches on different job sites to see what skills are in demand. Below are the results from for jobs that tagged specific languages as skills. For more information, I created a Google Spreadsheet with job data from different websites.

Java is used extensively in big companies, so it has the most results. Javascript is the only language of front-end development, so it takes the second spot. PHP is clearly less popular than it used to be, while Python and Ruby vary by website.

Thursday, November 29, 2012

Startup Ideas

Paul Graham recently wrote a post about How to Get Startup Ideas, so I figured I'd write about a couple of startup ideas. This post list some of them in a couple of words, and later I'll pick a few to write about in more detail.

Education & Content:
This is an area that many are working on to change (finally), but there's still a lot that can be done.

  • Platform for creating interactive educational content.

  • New platform for publishing general content

  • Bootcamps for learning technical topics

  • Programming for the masses

Replacing Intermediaries:
Before the internet, it was necessary to have various intermediaries involved in transactions. The internet has changed that for many things (e.g. buying airline tickets), but some areas remain stubborn to change (e.g. cars or houses). There are various ways certain industries can be brought up-to-date with the internet.

Better Search
Everything is search. It's not what you know, but what you can search for that counts.

  • A Better meta-search?

  • Better Website searches

  • Integrating search and actions within applications

  • Tracking everything you read or learn for later 'recall'

The Internet has changed how we buy things, but made everything more complex. People need help getting what's best for them at the best price.

  • Finding the best deals quickly

  • Reliable data-based reviews

  • Chipping away at Craigslist...


  • Crowd-sourced startups

  • Alternative Wikipedia

  • Lottery-ticket Investing

  • Computer-aided productivity

Mathematica, Bing vs Google, Web Hosts

Mathematica 9
just came out and it has a bunch of new features, such as a suggestions bar which helps you perform various actions after you enter a query, and support for units, like "centimeters and gigabytes". I think math education should make much greater use of computers, and Mathematica is the most powerful tool to do so. In addition, it has many beginner-friendly features, such as the ones above or the ability to enter input in English if you don't know the Mathematica syntax for something. Perhaps math education should be based on figuring out how to turn real-world problems into a format Mathemtica can understand.

Mathematica Suggestion Bar

Bing vs. Google 
A while ago Google changed their shopping search from being free like their regular search to paid-only inclusion, like PriceGrabber and Nextag.  Microsoft just launched a campaign against Google, calling them Scroogle. It attacks Google for not stating more prominently that the results are paid, and that they even partially base their sorting by how much much a merchant pays.

I don't know if it's such a big deal. Google Shopping used to be filled with all sorts of low-quality sites, and now it's much easier for them to keep it high-quality. However, they have lost Amazon from their results, which makes a pretty big difference. Also, it would be better for the user to not factor in pay when you initially display an item. They don't seem to do that though for a general search, and for a more specific one, you can always sort by price, which wasn't useful when they had low-quality results.

Web Hosts
I made a couple of small changes to the Web Host chart, including adding another free static web host. More of those services should be coming out soon with the announcement of Google Drive support for web publishing. To keep on top of updates and add additional details, I created a Webpage version of my web host guide. This should be the one-page stop for people to find the right web host.


Static Web Hosting

Dynamic Hosting

I created a Web Host Flowchart to help people find the right type of Hosting and host, but this list will be able to contain more info and be more up-to-date.

Static Web Hosting

  • No Uploads, Just Website Creators

    • Simple - Google Sites

    • HTML5 -

    • Weebly

  • Uploads + Site Creator

    • (Limited) -

  • Upload Files Easily

  • Super-quick -

  • Through Dropbox -

  • Coming soon - Google Drive Options

Upload Files

Dynamic Hosting

Tuesday, November 27, 2012

The Zappable Guide to Finding a Web Host

I decided to update the Zappable Guide to Finding a Web Host. This guide is intended for a newbie who is would like to find out about different hosting options, though I think others can find helpful stuff here too. Most people just Google for information and get results based on SEO instead of what's most helpful. While Google's results have improved, you still won't get a helpful review of the many different options possible. In the chart, I try to explore many different free options, and a couple of paid options too. (Note: I made some of the links into affiliate ones.)

The basic categories I explore are Static Hosting, Cloud Hosting, Cpanel hosting and regular dynamic hosting. I provide recommendations for in each category that I think are good and reliable. This chart should help people quickly find a good web host choice. If you want some more background info and specific details, see finding a web host. The chart is embedded below and a PDF is available here.

I created a webpage version of this chart, which will be able to contain more info and be updated more frequently. For example, see the Dreamhost coupons.

[scribd id=114665037 key=key-kjqjs8p81ywuxs2hf2b mode=scroll]

Google, Wireless & Posting Too Quickly

Yesterday, The Next Web and other tech blogs reported that Google had purchased a Wifi hotspot company for $400 million. I had written previously in SeekingAlpha about how Google might expand into wifi, so I quickly wrote another article on the topic based on the breaking news.  When I finished, I went back to check on updates and it turned out the whole story was false. The tech media wants to get out their story first, so they end up taking a "publish first, ask questions later approach". I guess I did the same thing by relying on them.

Anyways, most of what I had written is still likely to apply in the future, so I edited my article and re-submitted it to SeekingAlpha. Might be a bit lame, but I think the basic points are true. The Big Cellular Carriers will face increased competition in the future from companies like Google or Dish Networks, and users will have more choice, either through cellular service or even wifi. Click on the article to find out more:


Monday, November 26, 2012

Google Buys WiFi Provider ICOA

The Next Web reports that Google has acquired a WiFi hotspot company:
In a move that could expand its broadband presence beyond its Fiber project, Google announced today it has acquired wireless Internet network provider ICOA Inc. for $400 million...

ICOA provides wireless and wired networks in high-traffic public locations in the US, adding WiFi hotspot zones to airports, restaurants, universities, travel plazas, and many other public venues.

This is not a surprising move from Google. As I discuss in my post on Google Fiber, Google wants people to have fast internet access without any provider having too much leverage over Google. While it would be nice if Google just bought a company like Sprint, this isn't likely to happen for various reasons. Instead Google is moving into Wif access which (in the long-term) could threaten cellular data providers. Google prefers to focus on smaller areas to show what is possible, which can cause others to improve their quality of services, and allow Google to expand if it became necessary.

Although there are various issues involved in providing large areas with Wifi access, it would be interesting to see what Google does. While they probably won't try to provide city-wide Wifi all over, I think they might expand their Wifi enough to make a difference. While people may feel they need many GB of data from their cellular company now, they might change their mind if most of the locations they visit have good wifi access. People already have good wifi at home and work, so once they can get similar wifi at restaurants, airports and parks, they shouldn't need to use much 3G or 4G. This would help the user, but could harm the giant revenue

Sunday, November 25, 2012

Writing with Less Writing

Ideas discussed:

  • People think all writing needs to be paragraphs, but that's not always the best way to express something.

  • What's the Appeal of Twitter? + Idea for new platform

  • At least include an outline in your article!

  • Bonus: What writing can learn from programming

My recent chart on learning programming did quite well and got upvoted on Hacker News and Reddit. I realized that one chart was able to encapsulate the important information from 3 previous blog posts. This makes me think there might be too much of a bias to write content in a specific form and style with paragraphs and connecting sentences, when sometimes another form would work better. A chart or diagram can display certain information in a faster and clearer manner than long paragraphs, making the paragraphs unnecessary. Different diagrams and styles can be used for different types of information.

Ways of presenting content

Content FormatGood for this type of contentZappable ExampleBenefits for readerExtra stuff that get stuck in
Paragraphs of TextLong connected argumentsMaybe Google and the Future of SearchEasy linear readConnecting sentences, stylistic phrases
TableRepeated categories of informationResources to Learn ProgrammingFast to referenceCertain cells just to match others in row. (Maybe use NoSQL-style instead ~)
FlowchartSimple decision guidePicking a Programming LanguageCan quickly reach relevant decisionsRandom Jokes
Outline-StyleHierarchical content of separate pointsAttempt belowCan easily skip subsectionsHopefully nothing

Even if content doesn't fit into a chart, it does not mean that standard paragraphs are necessary. Sometimes an Outline-style could do the trick.

Outline vs. Paragraphs

  • I often start with ideas in note-form before writing a post

  • Before publishing notes, need to refine and clarify ideas.

  • Also includes "textification" into paragraphs, which consist of things like:

    • Keeping to a writing-style (varying words, paragraph format)

    • Putting in filler words to build and connect sentences

  • This turns writing into nice essay, but it can obscure points for both the writer and reader

    • It becomes harder for the writer to revise essay when each change affects the continuity of the sentences and paragraphs. (Maybe writers should also aim for looser coupling!)

    • Certain articles (e.g. academic ones) may be so complicated, readers may feel need to create their own outline or diagram to follow it

  • Notes need to be refined before being published, but they can still be kept in an outline style, with several benefits:

    • Often quicker to write than figuring out how to "textify" content.

    • Easier for reader to follow overall flow of argument

    • Lets reader skip certain sections or examples and still follow argument (In fact, maybe the reader should be able to understand the argument heading without even reading the implementation!)

  • Outline-style can be better for reader and writer, though not sure about this example

Obviously, people know that concise writing or charts are often helpful. However, I think people still feel constrained by standard style expectations. That's why they need things like Twitter and even Powerpoint to permit them to write in shorter form.
While Twitter's limits may be overkill in cases where you actually want to say something, the fact that its so successful shows the power of letting people get to the point. Maybe someone should create a blogging platform that enforces a posts that are concise and include a diagram, outline or chart. This could help popularize a new style of writing.

I'm not arguing for eliminating essay-style text, I just think it might be worth putting more outlines and charts within writing. Even if much of an article needs to be in paragraphs, perhaps some of it would be clearer or more effective as a chart. And more articles should come with short outlines (or diagrams) that says what their main points are. This would let people decide if they want to read it or review what it said afterwards. Why should some one need to construct their own outline or argument diagram to analyze an argument?

Charts and outlines are really just a minor step. For more challenging material, one can go beyond such static content and create more interactive content. But that's for another post...

Stay tuned by following me on Twitter, RSS or Email. 

Friday, November 23, 2012

Chart for Learning a Programming Language

The previous chart helped beginners pick a language, this one shows them what resources to use to learn it. It's better to spend time doing things than to passively read or watch content, so I selected interactive websites, books and courses. Start by going through an online tutorial, and then either read through some of a book or watch an online course. Personally I think a book is better than a video since they're more concise and easier to reference, but most videos below are short and to the point. The chart is based on these posts: Picking a LanguageGeneral TipsJava and PythonWeb: HTML Javascript and PHPLearning Ruby and Rails

Free Resources For Learning a Programming Language

Good For Kids / Game ProgrammingGreenfootInvent Your Own Computer Games Hackety-Hack, Games: Ruby4KidsCodeAvengers
Interactive Tutorial - Codecademy?No, You can try ProgramrYesYes, there’s also
More Practice and HelpCodingBat ProblemsVisualize Python executing
(also CodingBat)
(1st part is free)
Use Firebug or Developer Tools.
(See Waterbear for visual coding)
Good Free Book for Teaching ProgrammingHow to Think Like a Computer ScientistHow to Think Like a Computer ScientistLearn to Program
Humble Little Ruby Book
Eloquent Javascript
Interactive Video CourseIntro to CompSci -
Programming methodology
(Warning: full Stanford course)
Udacity - Intro to CompSci - Building a Search EngineCodeSchool’s RubyBits*.AppendTo Javascript 101
Advanced BookEffective Java*Dive Into Python 3Pickaxe Guide*JavaScript: The Definitive Guide*
More Training / BootcampsSee Local / Online collegesSee online courses or corporate PythonTrainingMost Bootcamps are for Ruby on RailsCatalyst.
For kids:

* Not free. Update: added affiliate code to Amazon links.

Thursday, November 22, 2012

Picking a Programming Language - Chart

Now that I finished the series on programming, I figured I would make some charts for it. This flowchart will help people pick a language. Click below to enlarge, or view it on Scribd. For more info, see the original post.

Update: After you pick a language, you might want to know how to learn it or how to find a web host.

Learning Ruby and Rails

Note: This post on Ruby and Rails is the final one in a series on Learning How to Program. Previous posts were: Picking a Language, General Tips, Java and Python, and Web: HTML, Javascript, PHP

Say you don't want to edit old PHP scripts, but instead want to create your own new web application. A good choice would be Ruby on Rails, the 'cool' framework for creating websites. It contains various tools and elements that are common to most web applications so you do not need to re-create them from scratch in your own website.   For example, most web apps have forms that take user data and place them in a database. Ruby on Rails lets you create such forms quickly and securely. Rails is written in Ruby, so to code with Rails, you will need to know some Ruby. While you don't actually have to spend that much time coding with Ruby before starting Rails, I think it makes more sense for a beginner to get comfortable with programming basics before taking on a complex web framework.

As always, it's good to jump right in with an interactive tutorial, which there is no lack of in Ruby. You can spend a few minutes on TryRuby and then look at Codecademy or go through slightly more advanced material on RubyMonk, which has 1 free course and additional courses for $10/month. If you like videos, you can pay $25/month and get access to CodeSchool's courses, including RubyBits.

You should have a book also though. Learn to Program is geared at teaching programming concepts to beginners, and they aso have a more recent paid edition. The Humble Little Ruby Book is good for learning Ruby, though if you prefer more attitude and random cartoons, there's the famous Why's Poigant Guide to Ruby. If you have more experience and really want to get experienced at Ruby, there's the Pickaxe Guide.

If you want to download something to teach kids Ruby, there's Hackety-Hack, and if they're just interested in games, there's Ruby4Kids.

Ruby on Rails
After learning the basics of programming and Ruby, you can start learning Rails, which also has interactive tutorials. CodeLearn recently launched to let people learn Rails by trying out things from within their browser. If you like learning by watching zombie videos, check out CodeScool's famous RailsForZombies. You can then signup to CodeSchool and get access to the sequel.

The 'official' free text to learn Rails is the Ruby on Rails Tutorial, which goes through all the details on how you would create a Twitter-clone, from getting things installed to version control, from "rails-flavored" ruby to nice CSS styles, and of course, all the fundamentals of Ruby on Rails.
The book places a strong strong emphasis on writing test code, which is code that tests out your main code to ensure it does what you want it to. It follows the TDD and BDD processes, which means you write the tests before you write your actual program's code. Sometimes you will spend more time writing the tests than actually writing the rails code, but this way you will know your software always works. You can always skips some of the test-parts if you feel its too much.
The issue with a step-by-step tutorial book is that you need to make sure you think about how to do things, and not just copy what the book says. It might be helpful to try to figure out what to do before looking at the code in the book, though that won't always be possible.

If you have a little experience, you might like Agile Web Development with Rails, which goes through how to create a shopping-cart application in part 1, and contains a rails reference in part 2. To learn how to do specific things, you can watch the screencasts on Railscasts. There's also the official Rails Guides, which cover various aspects of Rails.

Of course, to actually learn Rails or programming well, you need to work on your own projects. As mentioned, you should find someone to help you work through a project. If you have a couple months, you could consider signing up at one of the Rails bootcamps that sprung up recently. Devbootcamp pioneered the bootcamp approach in SF, AppAcademy  claims they'll only charge you if you get a job, Starter League is well-established in Chicago and Flatiron School recently started in NY. They charge $8k - 12k, but many give partial refunds if you take a job with one of the companies they're connected with.

With all these resources, it's easy to try out programing and then pursue it further if you like it.

Wednesday, November 21, 2012

Creating Websites - Programming Required

In a previous series, I discussed how you can build websites - no programming required. While you don't need to program to setup  you're own blog or wiki, you will need to program if you want to create or customize things beyond what your software has options for. In recent posts, I gave some tips for getting started with programming, and linked to some resources on Java and Python. This post will focus on the web languages - HTML, Javascript & PHP, and the final post will be on Ruby.

Before learning actual programming languages  you'll want to get familiar with the basics of the web. Web pages are structured with HTML and styled with CSS, so you should quickly learn how they work. If you were editing pages before using a WYSIWYG tool like Expression Web, its time to start editing the actual HTML and CSS code. You can either do this in a simple program like Notepad++, or within Expression Web from the "code" view so you can still use some of its tools. To start learning HTML, you can go through a tutorial, such as one of the resources here from Mozilla. W3Schools often comes up on Google searches, and they have some useful interactive resources, but beware that they may contain a few inaccuracies. To get an idea of how HTML and CSS is used, you can view the source of any webpage you visit by clicking on "view source" in your browser. You can also play around with the HTML and CSS from within the Chrome developer tools or with Firebug on Firefox. This will let see how many different websites use CSS styles.

HTML on modern websites are not created by hand or by an HTML editor, but by web applications, such as a CMS. Web apps are written in programming languages, such as PHP or Ruby. As discussed, many web apps are written in PHP. So if you want to develop new components for your Wordpress blog or wiki, you need to learn PHP.  W3schools has a fair amount of info on PHP, and I don't think it has too many errors. WebMonkey looks like it has a good tutorial for beginners.  There aren't many new interactive tutorials on PHP, but there are many books you can purchase.

If you're more interested in front-end development (such as visual effects on a page), you need to learn Javascript. Unlike PHP, it is growing in popularity, so there are a ton of resources online to learn Javascript. Previously-mentioned Codecademy created their first tutorial for Javascript, and they have many courses on the topic. They have a bunch of competitors now, such as CodeAvengers, which seems geared at kids. Its good to go through a book too, and Eloquent Javascript is a great interactive resource. The key is to not just read, but to practice and build things, which is easy to quickly do in Javascript. Firebug and Chrome's developer tools have great features for trying out your own javascript and exploring other website's scripts also. After you know the basics of Javascript, you will be able to not only customize web pages, but also create other things like Chrome extensions. In fact, Javascript can now even be used to run the server-side of a website with Node.js (though its not for beginners). This means that you could conceivably create entire websites with javascript only. If you really want to learn Javascript well, you could consider attending Catalyst which is a new bootcamp that opened to train beginners.

Stay tuned for the next post on Ruby and Ruby and Rails, the most popular modern framework for creating websites.

Tuesday, November 20, 2012

Top Posts on Zappable

Although I have a top posts section, I thought it would be helpful to provide links to some selected content, organized by topic. (Note: I put an asterisk by posts that are first in a series.)


Web & Programming How-To

Articles on SeekingAlpha and LifeHack


The Complexity of Online Shopping

Technology can make life easier, but frequently it also makes things more complicated. It is easier to buy things online than going to a store, but one faces a dizzying array of choices. People want quality items at the lowest possible price, but it is hard to figure everything out. Shopping searches return too many results, and Amazon always has thousands of items for every category.

One way to get a smaller subset of lower prices is to check out a deals site like Dealnews or Slickdeal. (Especially around this time of the year.) However, it's hard to know whether the item is good-quality or whether the "deal" is actually such a great price. Dealnews tries to provide some information about the normal pricing of the item, but it still doesn't answer whether the price is a good one. It may be that those earphones are normally $20 and are now $10, but it's not really relevant if I can get better earphones for $5.

It would be pretty useful if a website was able to provide data not just on the price of the item, but on similar items also. If the site could measure in some way the features and quality of an item, it could help users recognize what's a good deal. For example, if the site was able to say that these type of earphones are hard to get for under $15, one would know $10 is a good deal. The hard part for the site would obviously be getting and analyzing the data in a way that allows these comparisons. A site could use various sources, such as Amazon reviews, but it would need to see what's really reliable and gives clear information about a product. If a website could do a good job in this area, it could really help people deal with all complexity of online shopping.

Saturday, November 17, 2012

Choice and Innovation In Education

Goldman Sachs recently sponsored an essay contest on the following topic:
What should we do to create a strong US education system that works for all, that improves student outcomes and enables our country to regain its leadership position in the field of education?

Below is the beginning of the essay I submitted.

In a famous parable, a group of animals get together to establish a school for their young:
[The animals] adopted an activity curriculum consisting of running, climbing, swimming and flying. To make it easy to administer, all animals took all the subjects.
The duck was excellent in swimming, better in fact than his instructor, and made excellent grades in flying, but he was very poor in running. Since he was low in running he had to stay after school and also drop swimming to practice running. This was kept up until his webbed feet were badly worn and he was only average in swimming. But average was acceptable in school, so nobody worried about that except the duck.

Other animals fared no better than the duck. Each animal had its own strength and weakness, but the one-size-fits-all approach of the school wouldn’t let the animals focus on their strengths. Real schools suffer from a similar problem. Every child is unique, with his or her own interests, capabilities and style of learning. However, the schools lump everyone together into one system, with one curriculum, one pace, and one style of teaching. This prevents students from studying the subjects they enjoy in the way they learn best. The American school system needs to diversify its approach to education. Schools should offer more subjects outside the standard curriculum, teach in new ways besides the traditional lecture, and make greater use of technology in learning. This will ensure that all students will be able to learn the subjects important to them in the way that works best for them...

Wednesday, November 7, 2012

Learning How to Program with Python or Java

In the last post, I discussed some steps for learning to program, and ended with a few general resources. This post will provide some specific links and free books for learning programming with either Java and Python, and the next post will go into web development languages.

As discussed, Python is a great language to learn programming with, and there are tons of learning resources online. A good path would be to start with a simple tutorial and problems, and then go through a more advanced resource that teaches fundamentals of programming.
Codecademy recently expanded to offer Python tutorials, and they have a well-designed site that's good for beginners. There are many other places you can practice problems, such as CodingBat or PythonChallenge. To get a better understanding of what the code does, you can visualize your Python executing.
To learn computer science fundamentals, How to Think Like a Computer Scientist is a great interactive book to go through. After you get through that (or if you already have programming experience), you'll want to look at Dive Into Python 3. If you want a video course, Udacity offers short videos combined with coding problems. You can start by building a search engine in Introduction to Computer Science, and then move on to either Algorithms or Web Development.
Also, If you know a kid who wants to create computer games, Invent Your Own Computer Games is a free eBook on the topic (see also the PyGame modules.)

There aren't as many free Java resources, but there's enough to get started. There's a Java version of How to Think Like a Computer Scientist available online. There's also a free version of Thinking in Java, though you may want to buy the most recent version instead. If you like lots of pictures and attitude, Head First Java is a good book. Once you have more experience, the recommended Java book is Effective Java. You can also go through the official Java tutorials.

Since Java is a different kind of language than Python, there aren't as many interactive resources online. To practice problems, you can go through CodingBat and some stuff on Programr. However, to benefit fully from Java's "safe" features, you will want to do most of your programming in an IDE. I don't think you should use a beginner IDE like BlueJ, since it lacks features that are also useful for beginners. While you type, an IDE can catch certain kinds of errors and auto-suggest methods and let you lookup documentation. Later, you should also learn to use more advanced tools like the debugger. A good full IDE for beginners is Netbeans, though if you want to do Android development later, you should use Eclipse. However, if you know a kid who wants to learn programming, it might be worth checking out the Graphics-focused IDE, Greenfoot.

Since app-development is very popular, I'll briefly discuss it here. Due to Android's complexity, you shouldn't try developing apps before you're comfortable with Java. One you're ready, Google provides a fair amount of training resources. You can also buy a book like Programming Android. If you're impatient to start creating apps, you can use the visual programming tool AppInventor, which should help teach some programming concepts.


Sunday, November 4, 2012

Learning How to Program - General Path

In the last post I discussed picking a programming language; this post will discuss a a general plan for learning programming. The next post should link to some language-specific resources.

Basics - The first step is probably to find a good online tutorial that teaches the basics. I don't think long video lectures are a good way to learn programming, since one needs to focus on doing things, and they are also hard to refer back to. Instead, one should find a good interactive tutorial that lets you practice as you go through it. You should practice with small additional problems on your own, either ones you make up or problems you find online.

Reference - Make sure you know where to lookup stuff. You don't want to immediately do a general Google search for every question. Each language has official documentation that you should be able to search quickly to find out how to use something. It might also be helpful to have a specific book or site you check to get more info. It can also help to keep your own code samples organized so you can quickly refer back to previous work you've done.

StackOverflow - is a free Q&A site for programming. Once you know your programming basics, if you have a question on how to do something, you can search StackOverflow to see if its been asked. (Often it's easier to search StackOverflow through a Google site search.) If you can't find an answer, you can ask the question yourself on StackOverflow, but make sure you spell out the specific issue your're having. Well-written questions on popular languages often receive very fast answers on StackOverflow.

Bigger Projects - After you've gone through the basics and worked on small coding problems, you'll be ready to take on a bigger project. You should now pick a project that you really want to work on, and learn more as you work on building it. When you get stuck, searching the web (and StackOverflow) will sometimes help you figure things out. However, it helps to have a more experienced programmer to turn to when you're really stuck or for general feedback and guidance. You can either find someone you know, hire a mentor, attend meetups, or even enroll in a programming bootcamp.

Stuff To Learn - Besides learning the specifics of your language, you should also learn the general basics of programming. This includes topics like object-oriented programming, algorithms and data structures. You don't need to cover everything that's done in a college algorithms class, but there are certain topics everyone programming should know. Some algorithms tutorials are available on TopCoder, and if you want a fuller treatment, Coursera and Udacity seem to have decent courses on the topic. Its also important to (eventually) learn good programming practice, such as using version control, debugging techniques, and writing test code (Udacity). Once you've learned these topics, you'll have the experience to help beginner programmers!

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, 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!

Friday, September 21, 2012

Brain, Patents and Trading
Humans are still better than computers at interpreting images, but they're too slow. So it makes for the Army's threat-detection system to to use a computer to filter the images to only show the human possible threats.One would think the job would then be for the human to press a button when a threat is detected. However, that's too slow for the computers, so instead they just use an EEG to read the human's brain and sense when a threat is detected. So the human is like an advanced motion detector for the machine.
The Patent office came to StackExchange to ask for help in detecting prior art so patents can be invalidated. If this catches on, it can help reduce some of the rampant patent lawsuit that have been going on. Maybe one day they'll consider crowd-sourcing the actual granting of patents.
Another attack on high-frequency trading, pointing out that they're just 'hacking' the system without providing any benefit to society.


Thursday, September 6, 2012

Zappable Now on the Cloud

As discussed in this post, RedHat OpenShift offers a free tier of cloud hosting with instant setup of some common applications. Since my subscription with DreamHost is soon ending, I decided I would try out hosting my blog on the cloud.

Before switching to OpenShift, I tried out one other free PAAS - AppFog. As discussed on TechCrunch, AppFog now provides a very large free tier for web apps, which could be useful for both developers and non-developers. I setup Wordpress on their site but ran into some strange technical issues so I decided to stick with OpenShift.

Instead of exporting my entire Wordpress installation, I decided I would setup a new one, with a new look. I then just used the Wordpress exporter to export the content of my blog to the new OpenShift installation. The next thing to setup was to point the domain name to the new location on OpenShift. However, OpenShift requires using CName records,  something my Domain Name Registar (1&1) does not support properly.* So instead I setup another cloud service, CloudFlare, between my domain name service and my web host. CloudFlare is a service that acts both to prevent attacks on your website and to speed up your site's speed (a CDN). They offer an unlimited free tier, and a paid tier with more features. They also allow instant installation of various javascript applications for your website. There were some technical issues with setting up the domain forwarding correctly, so some links may not be working properly now, but I should get everything fixed soon.

I think that OpenShift may be a good option both for people who want a free web host and those that want to be able to scale to handle any amount of traffic.

*1&1 has an option for setting up CName records, but when I changed it, nothing happened. After a few days of emailing support, they said that their CNames only work if you paid for hosting with them. I would suggest using a different Registar, such as


Friday, July 27, 2012

News on Changing the Education System

It is quite difficult to change the education system. New Orleans was able to do so after Katrina, but even that may not always be enough, as Mayor Bloomberg found out:
Mr. Bloomberg wouldn't have won [approval to start new schools] even if he had razed the schools to the ground and salted the earth. The union contract says the city has the right to open new schools that "did not previously exist." But Mr. Buchheit ruled that a school cannot be "new"—even if it has a new staff that runs the joint in new ways—if it replaces an old institution, as if a public school has some permanent claim on being. This metaphysical adventure raises the question of whether New York can change any school ever.

New York has been able to offer some schools outside of the public school system, and Joel Klein, the former head of the NYC public schools, reports their results:
But what really puts the lie to the notion that poverty prevents dramatically better student outcomes than we are now generally seeing in public education is the performance of several individual charter schools or groups of such schools. For example, Success Academies, a charter group whose students are almost 100% minority and about 75% poor, had 97% of the kids at its four schools proficient in math and 88% in English. Miraculously, that's more than 30% higher in both math and reading than the state as a whole.

Joel Klein is currently the head of the educational division of News Corporation. They just announced Amplify, their new plan to provide students and teachers with interactive educational tablets. Big money is now behind efforts to improve education with technology. Meanwhile, every day more universities are joining with Coursera to provide educational content for their online courses.

While Coursera is partnering with the universities to provide traditional educational content, some are taking a completely different path. With college tuition more expensive than before and the job market worse, some are turning to apprenticeships. NPR reports on Siemens apprenticeship program in North Carolina which focuses on teaching student-workers practical skills. A related development recently has been "programmer boot-camps" which lets people without programming experience learn to build websites in only 3 months. Venture Beat reports on an online program called Apprenticeships were the way people learned skills for thousands of years before college attendance became widespread. Companies may increasingly start wondering why they are asking for students with a degree instead of people with the skills that are actually needed. Together with online education, this may lead to new education system.

Thursday, July 26, 2012

Google Fiber & the Future of the Web

What is Google's goal with their new ultra-fast internet? Read my article on SeekingAlpha...
Today Google announced Google Fiber, their new ultra-fast internet. It will start becoming available to residents in Kansas City and provide them with either free regular-speed internet...

Tuesday, July 24, 2012

Smartphones for Cheap II

In my last article on LifeHack, I discussed a couple of options for getting a smartphone without high monthly fees, but I did not go into details about specific prepaid plans. In this post I'll quickly review a couple of cheap options, and mention some ways you can save on usage.

Verizon Network - Page Plus Cellular
T-Mobile and Sprint do not have the best coverage where I live, so I ended up using Page Plus. They're the only prepaid carrier that runs on the Verizon network and their coverage map seems to be the same as Verizon's. This should mean that they have the same voice quality as Verizon's own prepaid plans, though that may not be the case in practice. The company's website and operations leave a lot to be desired, but once you get everything setup, they seem to work fine. The big advantage of PagePlus is that you can buy almost any Verizon phone (or even some other CMDA phones) and then activate it on PagePlus. The other advantage is their cheap plans. If you don't use the phone service that often, you can pay as little as $12 /month for service and get 250 minutes and texts. If you need more minutes, you can get their $30 plan, which comes with 1200 Minutes, 3000 Text/Picture Messages and 100 MB Data.

Sprint Network - Virgin Mobile
Many prepaid carriers run on the Sprint network, and some are also owned by Sprint. I mentioned Platinum Tel as a very cheap option, but I do not know their smartphone policy. A Smartphone-friendly alternative is Virgin Mobile, which offers a number of possible smartphones (including the $550 iPhone 4S). You can also buy a phone on eBay, though it has to be a Virgin Mobile phone. Look for a bargain, but make sure to get a good phone. I made the mistake of getting a Samsung Intercept and it ran slowly and had a poor battery life. Also, make sure to get a phone with a good ESN. A phone with a bad ESN usually means the phone was stolen, and it won't be able to be activated with Virgin Mobile.

T-Mobile Prepaid
Of the four carriers, T-Mobile is the easiest to use a smartphone with. For one, they're a GSM network, so you can put their SIM card from a regular plan into a GSM smartphone and it should usually work OK. In addition, they offer some cheap prepaid plans and let you use a smartpone with them. If you live in an area where they have good coverage, they are definitely worth considering.

Ways to Save
Once you get your phone and carrier, you will want to find ways to save on usage when in a wifi area. I mentioned Google Voice to send and receive text messages, and you can use many other choices or even your email.  It is more difficult to find a free Voip provider. There are many free services that let you speak to other people with the same app, but very few for calling other phones. Some services (such as Groove IP Light) allow free calls via Google Voice, but they are not the best quality.  Recently Vonage announced they would be allowing free calls for a while, so there's a free option for now. It may also be worthwhile to pay a small amount for a Voip service.

Tuesday, July 17, 2012

How to Get a Smartphone without Paying for an Expensive Data Plan

The phone companies know that people want a smartphone, so they try to force everyone into an expensive monthly data plan. However,t here are some alternatives that can save the user a large amount of money. Read my article on the Lifehack blog for more info:

Thursday, July 12, 2012

Prominent Judge on Patent Reform

Since I've discussed this topic before, I have to link to this article in the Atlantic by the Judge who recently dismissed an Apple-Motorola case:

He gives a very clear description of the problems in the patent system, and then suggests a few ways to fix it, such as eliminating patents in certain industries, eliminating court trial or requiring the patentee to produce the item within a specified time. See also my suggestion here for fixing the system with crowd-sourcing:

Wednesday, July 11, 2012

Google And The Future Of Search

What challenges and opportunities does Google face in search? Read my article to find out:

Google And The Future Of Search - Seeking Alpha
[Commercial searchers] could benefit from real a web service that helps them choose the best deal for their needs, as opposed to just looking through a list of links. If another company is able to build a successful service to answer this need, it could harm Google's revenue, even if people continue to use Google for general searches.

Monday, July 9, 2012

Taking on the Public Schools

The U.S. public school system is a government-protected monopoly that fails to provide a satisfactory education for millions of children. Charter schools are government-funded alternatives that operate independently from the public school rules and are therefore often able to find ways to provide a better education with less spending. Since they are not part of the standard system, if they fail to perform well they can be shut down. The Wall Street Journal and the Economist both just published articles about the advantages of charter schools over the public school system:

America Has Too Many Teachers (WSJ)

Charting a better course (Economist)