Wednesday, August 10, 2011

Bay area game and app development meetup

Attended huge game development and mobile meetup at google office. Silicon Valley is definitely a paradise for game startups.
Tens of panelists, hundreds of demo tables and about 400 people - brilliant opportunities for game entrepreneurs. Wired magazine, IGN.com, 148apps.com representatives answered the most burning questions in startups fundraising, management, communication sharing their success stories with community. Variety of games, platforms and API were presented. Among technology trends the latest and the most promising is HTML.


So many developers in a limited space!


Endless demo tables.


Really nice concept of app marketing using QR codes, the only one from all the members. The bar code directs to app store, saving plenty of time spend on typing app name.

Location:Mountain View, CA

Wednesday, June 22, 2011

GEO search and web cams

Attended GEO search and web cams meet up hosted in Google.



The first presenter was Tyler Bell talking about Search in the problem, hight level industry overview. Moreover he did great problems highlight of GEO search domain. One of the most burning problem is multiple electronic representation of the same entity.
I raised the most burning topic for me - visual search, augmented reality and it's connection with human cognitive being. In Tyler's vision GEO application are constantly evolving form third person to first person.

Second speaker, Trey Smith from NASA Ames Intelligent Robotics Group shared interesting appliance of GEO cams: Sharing Disaster Information with Mobile Devices. The basic of idea is to use crowd sourcing model to report disasters information, including coverage, damage reporte, people involved via GPS and media content data.



Location:1950 Charleston Rd,Mountain View,United States

Thursday, June 16, 2011

Linkedin android demos meetup

Today I attended interesting startup android demo event in Linkedin office, Mountain View.


The event several session with 3 five minutes demo in each followed by feedback from investors. This is great opportunity for startups to market their apps for free.

Among the most interesting app there were:

Ninja News Reader - android app which fetch new from different sources based on friends from social networks.

ThroughTwo - an app for the content sharing via simple phone calls. Different activities on map like photo, drawing, location. Really new and creative idea.

Recipes app - handy app to manage cooking recipes.
Guide book - application which helps to create traveling schedule with maps and other event information provided from event organizers.

MessageEase - innovative way of text entering on IOS in 10 button keyboard, and has a lot of value because swipe is not released on IPhone.

ParkMeter - handy app that help to park car, tracking location, picture, parking time.

The great though was mentioned that productivity apps are great but adding one more organizers doesn't make your organized, which should be considered by entrepreneurs. Another great thing mentioned by investors is tendency of simplification of user interface, everything became consumer oriented.

Friday, April 22, 2011

5 little things you should know about regexp

1. Groups
I discovered this amazing feature not long time ago.
A group is a pair of parentheses used to group subpatterns. For example, h(a|i)t matches hat or hit. A group also captures the matching text within the parentheses. For example,
(a(b*))+(c*)
regex.group(1) : (a(b*))
regex.group(2): (b*)
regex.group(3): (c*)
regex.group(0) - whole expression

2. Comment - great thing which unfortunately is missed in Java implementation. Python and Perl rocks!
Roman date example, Python:
  pattern = """
    ^                   # beginning of string
    M{0,4}              # thousands - 0 to 4 M's
    (CM|CD|D?C{0,3})    # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),
                        #            or 500-800 (D, followed by 0 to 3 C's)
    (XC|XL|L?X{0,3})    # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),
                        #        or 50-80 (L, followed by 0 to 3 X's)
    (IX|IV|V?I{0,3})    # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),
                        #        or 5-8 (V, followed by 0 to 3 I's)
    $                   # end of string
    """
3. Don't reinvent bicycle - use existent one. There are pleanty of great constructions which represent digits, words, beginning and end of line, learn and use this idioms. There is great library in Perl Regexp::Common
which has a lot of useful shortcuts for dates, phones, etc. In java SimpleDateFormat does something similar but in a very limited context.

4. Quantifieres - use carefully. Is not easy to understand all these concept of greedy, possesive and reluctant quantifiers.

5. Test. Play as much with your regexp as you can before going to prod. To lazy to write unit tests?
- No problem. There is an amazing website regexplib, where you could play with it without any language and IDE.

Thursday, March 31, 2011

Introduction to Pig, Map Reduce data processing framework

Today I attended Hadoop meet up in General Assembly. The topic was Pig, large volume data processing framework, build on the top of Hadoop. It uses scripting language like javascript for manipulating data and transform it into Map Reduce jobs on the top of Hadoop.
Pig is a good way to learn Hadoop.

The framework is very easy to get in and is perfect for jump starters. Sometimes Map Reduce programming is too low level. Here Pig comes on stage Just download Cloudera VM or install rpm package. To can run it via Grunt Shell, Script file or Embedded program.
Pig is another way to proceeds data, complimentary to Hive, SQL style data processing framework. It gives more con toll then Hive and allows to process complex data flows.

The example of pig script:

#Use the PigStorage function to load the excite log file (excite.log or excite-small.log) into the “raw” bag as an array of records with the fields user, time, and query.     
raw = LOAD 'excite.log' USING PigStorage('\t') AS (user, time, query);

# Call the NonURLDetector UDF to remove records if the query
field is empty or a URL. 
clean1 = FILTER raw BY org.apache.pig.tutorial.NonURLDetector(query);

# Call the ToLower UDF to change the query field to lowercase.
clean2 = FOREACH clean1 GENERATE user, time, org.apache.pig.tutorial.ToLower(query) as query;
...

Some useful pig resources:
http://wiki.apache.org/pig/PigTutorial
http://www.cloudera.com/videos/introduction_to_pig

Friday, February 18, 2011

Graphs with Chris at Google tech talks

Yesterday I attended interesting meetup Chris Dixon, Hunch cofounder. Chris gave amazing introduction to graph theory connecting science theory with real world projects.

He started with illustration of undirected and directed graphs - on such giants as twitter and Facebook. Moreover he gave an amazing averages for twitter and Facebook exposed in curves and trends:
- average user ages
- likes, friends, followers per user



Why do we care about graphs? It's a good question. The real world usage include such an areas as marketing and defense.

Definitely we started with Google in graphs: Words and documents are nodes, PageRank: links are direct graphs.

The interesting problem of finding clusters within existing graphs was illustrated for dating websites:
eHarmony, match.com, JDate.com

The most interesting part of presentation was principle of social networks decaying, based on two laws:
Metcalfe's Law. Network value ~ (nodes)^2
Newcomers with less connections join the network graph gets more benefits then social giants with many connections

Then we moved to tastes graph and Chris child: Hunch - global taste engine based on graphs and social networks.

Moreover we touched some technical aspects of storing and processing graphs. It's not so easy to process graphs in parallel, using Map Reduce, so notch uses super computers.

Chris Dixon CEO, Hunch cofounder, investor
Matt Gattis CTO, Co-founder Hunch

Friday, February 11, 2011

The code quality: Coupling and Cohesion

I want to raise the topic of code quality. I'm always passionate about the quality no matters where it comes to things, food, programming or just life.
Thinking about code in categories good and bad is not really constructive, we don't get a lot of benefits. Critisizing a code doesn't bring a lot of benefits, but It might bring a lot of problems. There is not good and bad code, there is working code. Yesterday I met a guy on facebook which mentioned how stupid could be people making 500 errors in 1000 lines of code.
Most of us, the developers, have families, pets, nice cars, friends, problems, deadlines, and we are not living in our code. We are different, with different level of education, background, experience. We are not writing ideal code, which sometimes could be ugly, stupid, unreliable, whatever. And what is ideal code?
- It's like ideal wife. Is quite, obedient, doesn't spend to much money, is faithful to you and don't get in affairs behind you.
Still think it's possible? ;)
-Rethink it again.


Thinking in business there is working code. Thinking in quality there is a code which is flexible for business needs and goes in one foot with business. What is quality code?
There is no simple definitions. But there are metrics, both numeric and non-numeric. Two of them, for object oriented code were developed by Sun Microsystems engineers: coupling and cohesion.