Showing posts with label Google. Show all posts
Showing posts with label Google. Show all posts

Sunday, August 18, 2013

A couple of short link - August 18, 2013


  1. 75 Essential Tools for iOS Developers - the list is categorized based on Inspiration, Design, Source Control, Dissecting Apps, Editors, Documentation, Dependency Management, Diagnostics & Debugging, Images, Core Data, Back-end Services, Analytics, Deployment, Testing, Demos / Marketing, App Sales Reporting. 
  2. Apple allowing up to 200 test devices per iOS Developer account - keep in mind that some developers have not yet seen this change on their accounts (myself included).
  3. The idea behind Uber (which connects drivers with riders) has spread to other services such as
    • laundry (through Prim), 
    • to-dos such as grocery shopping, furniture assembly, etc (through TaskRabbit),
    • house cleaning (through Exec), 
    • dog walking (through Swifto),
    • flower delivery (through Bloom That).
  4. Google's "20% time" is rumored to be dead - this is a shame really, as having one day a week to spend on something that is outside of your job description can bring a lot of satisfaction and value.
  5. Objective-C Coding Style by NYTimes - an extensive guide that outlines the coding conventions adopted by the Developers at NYTimes. There are a few of other coding conventions that they link to at the end of the page.   

Wednesday, November 17, 2010

Android Ginerbread adds NFC support

Listening to the conversation with Eric Schmidt at the Web 2.0 Summit 2010, I was pleasantly surprised that the new Android 2.3 (called "Gingerbread"), will add support for NFC, or Near Field Communication (I heard rumors about this in the past). There are many use cases that I can think of, the major one being using your phone for making payments. I said it in the past that the main reason I think NFC has not been adopted is because there was no major company/platform using it. Now there is.

Saturday, October 31, 2009

Beyond BigTable - Spanner

BigTable is a distributed storage system designed to work in very large distributed systems where you have petabytes of data on thousands of servers. It is currently used in over 100 projects such as Google Earth, Google Maps, Blogger, Orkut, and many more.

However, there is some current work at Google on a new storage and computation system called Spanner. Some of its main characteristics:
  • Automation: moves and replicates data based on usage and constraints patterns.
  • Use of hierarchical directories (instead of rows as it is in BigTable).
  • Support of distributed transactions
  • Fine grained access control on the data
  • String consistency across tablet replicas
  • Scale to 10M machines and 1k petabytes of data, across 1000s of locations
There is a keynote talk by Jeff Dean of Google on "Design, Lessons and Advice from Building Large Distributed Systems" that talks about large distributed systems and includes topics on BigTable and Spanner. You can view the slides of the presentation here.

Wednesday, July 8, 2009

Google Chrome OS

Back in December of 2008, I wrote about browsers replacing OSes. Google introduced the Chrome OS yesterday, "an open source, lightweight operating system that will initially be targeted at netbooks".

The OS targets speed, simplicity, and security. "We're designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds". It will run on x86 and ARM, and will run on a new windowing system on top of the Linux kernel.

In addition, Chrome OS is separate from Android; while Android was designed to run on mobile phones and set top boxes, Chrome OS was designed "for people who spend most of their time on the web, and is being designed to power computers ranging from small netbooks to full-size desktop systems".

Tuesday, February 10, 2009

Android Presentation

Today I did a presentation to a group of students on Android, basically an overview of the platform. If you are interested, you can find the presentation here. Any comments are welcomed!

Wednesday, September 24, 2008

Google's Project 10 to the 100th

Project 10 to the 100th is a call for ideas that have an impact on the entire world, affecting as many people as possible. You have until October 20th, 2008 to submit your idea. From the top 100 ideas, you have a chance to choose the 20 semi-finalists. In the end, up to 5 ideas will be selected, and Google is committing $10 million to implement those ideas.

It is important to understand that you will not receive the money, but rather a Request for Proposal process will begin "to identify the organization(s) and proposals that are in the best position to help implement the selected ideas". Hence if you wanted to participate in this project for the money, then you are misunderstanding the scope of it. In terms of Google, you "get good karma and the satisfaction of knowing that your idea might truly help a lot of people".

Thursday, August 7, 2008

Web Design - Scalability and Speed

Greg Linden reported that every 500ms of latency costs Google 20% of its traffic. Similarly, every 100ms of latency costs Amazon 1% of their sales. The presentation concludes that speed matters (big time), but it is hard to achieve high speeds when you are manipulating large data. Here is where a scalable design matters. My experience with web design is minimal. Maybe you have some good feedback/tutorials/articles on how to achieve scalability when large amounts of data is involved.

Tuesday, July 29, 2008

Open Web Foundation

Several days ago, the Open Web Foundation has been created. From the official announcement:

"The Open Web Foundation is an attempt to create a home for community-driven specifications. Following the open source model similar to the Apache Software Foundation, the foundation is aimed at building a lightweight framework to help communities deal with the legal requirements necessary to create successful and widely adopted specification."

You can also find a brief presentation on the announcement web page mentioned above. Some of the companies that support the efforts of the foundation are Facebook, Google, O'Reilly, Sourceforge, Yahoo, and many other.

Monday, July 28, 2008

Google Trends and Job Trends

Have you ever heard of Google Trends or Job Trends? I haven't, till today. You can find out interesting and useful data about a variety of today's trends. For example, I searched on Google Trends for "Java, C#, C++", which yielded the following graph:

The result is based on the average traffic for the term searched. You can filter your results based on rank, or a specific region/subregion and/or year to get more focused results. For example, in California, there is only one single city that 'uses' C# more than Java, and that city is Simi Valley (never heard of it? me neither, but probably that's my fault).

Searching on Job Trends for the same input yielded the following graph:


The company that provides this job trends is Indeed, which states that they "index over 50 million jobs a year from thousands of websites". You can also find specific jobs based on the search criteria you entered. Unfortunately, filtering options are almost non-existent.

I must confess that I played around with both websites for quite a while. Have fun with them too!

Sunday, June 15, 2008

International Internet Security Report

A report entitled Malicious Software (Malware): A Security Threat to the Internet Economy was released by the Organization for Economic Co-Operation and Development (OECD).

"After hearing descriptions of "spyware" and "adware", 43% of internet users, or about 59 million American adults, say they have had one of these programs on their home computer."

"A recent study by Google that examined several billion URLs and included an in-depth analysis of 4.5 million found that, of that sample, 700 000 seemed malicious and that 450 000 were capable of launching malicious downloads."

"in 2006, the Chinese National Computer Network Emergency Response Technical Team Coordination Center (CNCERT/CC) reported that 12 million IP addresses in China were controlled by botnets" where a "botnet is a group of malware infected computers also called “zombies” or bots that can be used remotely to carry out attacks against other computer systems."

"Microsoft reported an increase in the number of machines disinfected by its Malicious Software Removal Tool from less than 4 million at the beginning of 2005 to more than 10 million at the end of 2006".

"One association of banks in the United Kingdom estimated the direct losses caused by malware to its member organizations at GBP 12.2 M in 2004, GBP 23.2 M in 2005, and GBP 33.5 M in 2006, an increase of 90% from 2004 and 44% from 2005".

Because of malware, a survey estimated that "the annual loss to United States businesses at USD 67.2 billion".

Many other interesting and useful findings are presented in the report. This is a must read report for anybody concerned with internet security.

Wednesday, May 28, 2008

How does Google manage Android's code

In a recent article, I read that Google currently uses Perforce as its source code management tool for Android. The reason why they chose this particular tool can be found in a comparison of other SCM systems (also Wikipedia offers more information if needed). In addition, it is worth mentioning that Android consists of around 8 million lines of Linux code, and about 11 million lines of Java/C++ and maybe some Python code. Since they want to open source around 8.6 million lines of code, Google will move away from Perforce when it comes to managing Android code, and use Git instead, an "open source version control system designed to handle very large projects with speed and efficiency".

As a side note, one particular difference between Git and other SCMs is how Git handles data corruption. Most of SCMs have no checksums, and if they have, it's not really strong (CRC usually). Git goes further, and, beside using CRC and Adler32, it also utilizes cryptographic hashes. If you are interested in a book on Git, you have to wait a bit more.

Sunday, May 11, 2008

AndroMed and Google's Android Developer Challenge

I have briefly mentioned Google's Android Developer Challenge in one of my previous posts. The idea behind this challenge is to have developers work on mobile applications that run on the Android platform with the chance of winning a fair amount of money. Together with my soon-to-be-wife Mirela (which wrote the application server side), we have developed AndroMed, a mashup application that combines data, from the Unified Medical Language System Knowledge Source Server (UMLSKS) and Google Maps, together with the services described below, into a single integrated application. Here are the main features of our system:
  • Search and display descriptions for medical terms or drugs.
  • Provide location information in form of maps and addresses of hospitals/pharmacies using user’s current location and the medical term/drug searched for.
  • Display driving directions from user’s current location to the chosen hospital or pharmacy.
  • Open web site for found hospitals/pharmacies
  • Make a call to found hospitals/pharmacies
  • Send email with description of medical terms or drugs using your own GMail account.
  • Upload your own comments/notes regarding the term you have searched for.
  • View comments/notes written by other users regarding the term you have searched for.
The area of focus was divided between:
  • Humanitarian benefits. In Africa for example, where access to medical information, such as term descriptions, drugs, treatments and treatment facilities, is scarce, AndroMed will have an impact. Diseases like Malaria, Ebola Virus, AIDS are well spread in third world countries, but people there have little, if any, information about them. They could benefit either directly (although this is a little of a stretch considering that there are specific medical words used that have almost no meaning for an untrained person) from using the application, or indirectly from others using it (i.e. Non Government Organizations like “Doctors without Borders” that usually work in such places of the world). The “Future work” section of this document also mentions ways to improve the application for people with disabilities.
  • Use of mash-up functionality. AndroMed aggregates data from different sources (such as UMLS Knowledge Source Server and Google Maps) into one integrated application. For medical organizations that do not stay stationary for long (like the one mentioned above), we could get a schedule of were and when they will be, either directly or through their website.
  • Use of location-based services. Based on the user’s locality, we provide hospitals/pharmacies location information and directions.
Here are some screenshots of the application together with some positive and negative comments:

The reason why I provided a login screen is because we had to identify somehow each user if they wanted to write some comments/notes regarding the medical term or drug they were interested in; in addition, when reading the comments, we would use the name of the user to separate each one (as you will see in a screenshot shortly below). This login step might be discouraging for first time users because they would need to create a new account, thus going through an additional hurdle to get to the core functionality of our application. Of course for the challenge, we have created a test user so that the judges can skip the registration part. At this moment I wonder if we could have omitted the login process altogether are rethink the comments part.


Searching for a medical term or drug is simple and straight forward: just type in the term and click a button.


First of all, reading through this medical term description, you can notice that for a non-medical person, it is hard to understand. Terms such as "carcinoma", "epithelium", "bronchogenic carcinomas", "adenocarcinomas", etc, have (almost) no meaning for an individual that has no medical background. This is where the field of use for our application has narrowed considerably. For the Android challenge, your application should have a much (much much) wider audience.
Second of all, text buttons should have been replaced with icons. This is true for our entire application, not only for this particular screen. It has been noticed that people have responded better to images than to text (I'm sorry I don't have any references for this).


The concept of the comments screen is similar to a list example that comes bundled with the android sdk. Each user's comment is identified by the user's name. One user can have more than one comment, and his name will appear as many times as the number of comments he has. To be honest, I don't quite know how I could have designed this differently. I wanted to be able to highlight links, email addresses, phone numbers (make them 'actionable' - if this is a word), but even though I succeeded, there were some (focus) bugs when moving from one comment to another, so removed the highlighting part. More work would have been necessary, but in the time frame we had, I decided to add more features to the application instead of improving existing ones (bad decision on my part).


Based on the specific term searched for, the user has the option to find hospitals (or pharmacies) near to his own current location. We have used the default location provider that comes with the sdk. The blue ovals represent the hospitals, while the single red oval represents user's location. I was not happy with the way I designed this; if you take a look at how similar features are implemented by Google, you can conclude that our map screen falls behind.


Displaying the addresses and phone numbers of each hospital in a separate screen was a decision made after we had switched to the m5 sdk version, where I could not find a way to display the name of the location.


After choosing a hospital, one can either make a call to that hospital, open its website (both done through the phone's menu option), or find direction starting from the user's current location.

When implementing the map screen, location addresses and directions, I always new that they would fail in comparison with the current map solution offered by Google. I should have invested more time in making it better.

Below is some future work for our AndroMed application:
  • Add other languages to the application.
  • Add, when available, text-to-voice translations and voice recognition for people with disabilities.
  • Add icons instead of text buttons where possible since people tend to respond better and find applications that use icons easier to use and understand (people who cannot read).
  • Add a “Help” options menu to each screen of the application.
  • Find specific treatments for the medical term searched for.
  • Find clinical trials for the medical term searched for.
  • Replace Google Maps search with a more specific search from a medical database.
  • Cache on the Application Server results for frequently searched terms.
We do believe that our idea is unique in the sense that there is no current mobile solution that offers what we have implemented. There are dedicated websites (such as WebMD) but the browser experience on a mobile phone has still a long way to go; in addition, such websites are not optimized for the mobile experience, which makes them harder to navigate through.

Overall, working with Android has been a great experience. Without any doubt, it will have a big impact on the mobile platform front.

UPDATE: The quartile score results were emailed today. AndroMed is ranked in the top 25 to 50 percentile of all applications submitted. As expected, the effective use of the Android platform and the overall polish of the application lagged behind. The indispensability and originality were the features that closed the gap a little.


Sunday, April 13, 2008

Google App Engine

With Google App Engine, you can upload your web application and not be stressed with maintaining the servers, everything running on Google's infrastructure. Some of the main features as written in the docs:
  • dynamic web serving, with full support for common web technologies
  • persistent storage with queries, sorting and transactions
  • automatic scaling and load balancing
  • APIs for authenticating users and sending email using Google Accounts
  • a fully featured local development environment that simulates Google App Engine on your computer
You can download the Google App Engine SDK which includes a web server application that emulates all of the services of the App Engine on your own computer. In addition, there is a YouTube video on a demo describing how to develop and deploy an application on Google App Engine.

At this moment, Google App Engine is in preview release, so space is limited.

**UPDATE**
Google App Engine only supports at this moment web applications written in Python. Other languages will be supported in the future.

Wednesday, February 13, 2008

Google Competitions and Challenges

There are at least three challenges/competitions sponsored by Google at this moment that I'm aware of:

The Google Online Marketing Challenge involves around 21.000 students that have the chance to work with small local businesses (under 100 employees) and plan online marketing campaigns. Google offers student groups a $200 voucher to spend on Google AdWords. The competition lasts 3 weeks; students need to submit 2 reports: one before they begin the challenge, one one after the challenge is over. The winners will have a chance to visit Google Headquarters in Mountain View, California. What is positive about this is the fact that you actually gain practical experience in online marketing. The gains of the local businesses are obvious, namely more website traffic.

Doodle for Google is another competition directed towards K-12 students who have a chance to design Google's homepage logo around the theme "What if...?". Have a look at the sample doodles on the competition web page, all designed by Dennis Hwang (if I'm not mistaken), imagination is the limit. The number one national winner will win "$10,000 college scholarship to be used at the school of their choice, a trip to the Googleplex, a laptop computer, and a t-shirt printed with their doodle." The winner's school will also be awarded with $25,000 grant that will go towards improving or establishing a computer lab.

Last challenge that I am aware of is the Android Developer Challenge, where developers have a chance to design a mobile application on the Android platform, application that, if chosen, will be awarded $25,000 for further development. Those selected will then be eligible for $275,000/$100,000 awards. I will also participate in this competition, together with my wife-to-be. Details of what our application is about on how we did will be posted later on, after the challenge deadline on April 14, 2008 for the first part. I will probably have a different blog where I will talk in more details about Android, so I will not go over any details here. By the way, a new Android SDK has been released (version m5-rc14); what is on many developers mind is how this will affect their current application since during this pre-release period Google is not maintaining binary compatibility between versions.

Welcome to Google world!

Monday, February 11, 2008

Yahoo says no to Microsoft

In a news by ZDNet, Yahoo said no to the acquisition proposed by Microsoft, which offered 31$ per share, amounting to 44.6 billion dollars in stock and cash. The problem seems to be the amount of dollars per share offered by Microsoft, which in Yahoo's opinion underestimates the company in the sense that the merger might be rejected by the regulators. This is good news for Google who expressed its concerns in a blog at the beginning of February. I feel that the acquisition could have had a positive effect since the paid search revenues amount for 75% world wide, while Microsoft and Yahoo combined have 30% in the U.S., while outside the numbers are even lower, with Google having around 85% of the search market in Europe. A more tight competition could benefit everyone. Microsoft did respond with a news release by Microsoft's General Counsel Brad Smith.

The question that can be raised is could have these 'merger' benefited Yahoo?