A roundabout with a stop sign? Confused? So was this Cute Google Self-Driving Car. Enjoy this video!

Mountain View, California. The heart of Silicon Valley. Where in our local streets, you can actually find roundabouts. Yes the type you see everywhere in Australia and UK. Not the norm for US. But, something is difference. The Roundabouts here also have a Stop sign. Yes, the traditional stop sign you see at just about every street in the USA. Now we know a roundabout’s purpose is to keep traffic moving while a stop sign’s is to stop traffic. The 2 together are counter intuitive right? Even for a Google Self-Driving Car.

Now what would happen when you have a roundabout and you must give way to your left? Confused? Me too. Even for the new 100% automated robots cruising the local streets of Mountain View. Those cute bubble Google Self-Driving Cars. These cute self-driving cars have been around Mountain View for the past few months. They are the future of transportation. An awe of inspiration to see. A Borg like intelligence, developed by mankind up the road at Google HQ, is making autonomous decisions in transporting humans. This is the pinnacle of human innovation! They are still in closed Beta mode. Carry max 2 people. One day I hope to get an opportunity to order a lift from my smartphone.

So back to the roundabout and stop sign issue. We know the scene. We know the car. Now check out the video my wife recorded of this Google self driving car getting confused as it pulls up to such a roundabout with a stop sign. PS. I did some edits to the video to add character in good spirit. Enjoy!

Comparing Sydney to Silicon Valley

I was recently asked by a reader this question..

“How do you compare Sydney to SV, in terms of  work-life balance, housing costs and traffic?”

So here goes. The following is based on my 3 years of experience working in the valley with over 8 years from Sydney. Some things may have changed in the last 3 years but I’m certain most still hold true till today. If I messed up anything let me know and I will correct it. Happy reading!

Silicon Valley, California
Silicon Valley, California - yap. It's in the valley

Work-life balance

Sydney Silicon Valley
Mainly corporate companies dominated land scape and thus a very corporate lifestyle. Wage is mainly just salary and the manager rules in the workplace. There are few exceptions like Atlassian but overall startups are rare. Like in London, most Aussies head to the pub after a 8 hr work day (especially Friday) for a drink and chat with their mates leaving weekends for the beach. Very startup orientated landscape and thus a very casual work lifestyle. Great Software Engineers are like gold and always hunted & looked after with great compensation (wage & stock options), tools (Mac) and free food. If you are at a startup it is common to be working 11 hr days 6 days a week or hanging out at a hackerspace building a new online or mobile product. Not much pubs or beach going on here unless you live in San Diego.
Australia has a “public” health system and also the option for private health. Your health is not tied to your company like in the USA. Taxation is different and higher but also wage dependent – see your tax agent for details. Most people are encouraged to buy an investment property to reduce it via the many benefits available for investors. Thus most Aussies are financially savvy. Check out my previous post on employment & contracts in the valley. It has many things to watch out for. Especially the dreaded health system being tied to your work. No job no health cover unless its via your partner’s employer. With tax you pay the federal & state taxes but it will still work out for the better by 3-5% for software engineers working here vs Australia.
Software Engineers do not exist. They call them IT or programmers whom are treated (at corporate firms) like reusable hanky. Managers & big titles rule the floor here. Good Software Engineers are what makes companies great. Always the last to go when head count is being reduced. Without good software engineers there is no business.

Conclusion: If you’re a good software engineer then you belong in silicon valley. Here’s a guide how to get to silicon valley. Otherwise Australia is better for lifestyle.

Super Happy Dev House
Super Happy Dev House - the hacking culture in Silicon Valley

Housing costs

Sydney Silicon Valley
Buy: Real estate prices in Australia are (currently) valued at more than they are worth. Median house price is around $500K. This of course fluctuates based on popular cities like Sydney & Melbourne. Check out the property update for latest data. Buy: Varies based on county & sub zip code. San Mateo is around $500K & Santa Clara around $460. Let’s take Mountain View. 3 different zip codes 3 different prices: 94040 – $950K, 94041 – $699K & 94043 – $545K. Los Altos (next door to Mountain View) is $1.5m.
Rent: The closer you are to the city the more you will pay. In Wollstonecraft (10 mins from city) average 1 bedroom will set you back around $430 per week. The newer and closer to transport the higher that figure will go up. Rent: City (San Francisco) is still expensive to live in but so is living 1 hour down into the valley (San Mateo county) where all the tech companies (and jobs) are located. In Mountain View(home of Google et al) expect to pay anywhere from $400 to $500 per week for a 1 bedroom apartment.Moutain view benefits – lifestyle
Good sites to check out on property pricing are http://www.realestate.com.au/ and http://www.domain.com.au/ Good sites to check out on property pricing are http://www.zillow.com/ and http://www.trulia.com/

Conclusion: Expect similar buy & rent prices between the 2 locations. In Sydney you will live inner city and pay the same as you would in the valley away from the city.

Sydney, Australia
Sydney, Australia - beautiful isn't it!!

Traffic

Sydney Silicon Valley
Not all roads are free. Sydney is cursed with british influence of 2 lane (each way) freeways. Most major public roads have been cut back to 1 lane forcing people to use the mostly private 110 km Sydney Orbital Network to get around. Sections of this have different owners and different prices via electronic means. Expect to pay around $20+ to do a full loop. Disaster! Traffic gets bad as LA near the city. All roads are free except the Golden Gate Bridge ($6 south bound). Freeways can span up to 6 lanes each way. Huge arteries run thru the valley like 101 & 280 – see here. Also a good chance you will run into many bad drivers. More people on the road = more bad drivers. The one pet hate I have is the lack of use of indicators. Such a common event it angers me cops aren’t doing anything about it.
People are angry & fearful to drive faster due to cash safety cameras (speed & red light cameras) all around Sydney. It’s madness. So traffic is going to be slow on roads (mentioned above) which are already crammed up. Please bring electric self driving cars to Sydney and stop this camera madness as a way to save lifes. No safety cameras anywhere except for few in San Francisco. Most motorists drive fast on the freeway averaging 80 miles/hr. I’ve seen a cop car zoom in front of a batch of cars and slow everyone down with lights blinking and moving between lanes. That’s manners!
Public transport is very good & reasonably priced in Sydney with bus lanes in most busy suburbs & throughout the city. Highly recommend using the bus if you have access to it else you will be left with City Rail. City Rail has been a disaster (delays & service cancellations) but it’s getting better. Most people drive their cars to work. The HOV is there to encourage American’s to carpool & use electric vehicles to get around even faster. During business hours even the freeways clog up but traffic still moves. More on public transport options & commuting here.

Conclusion: In Sydney use public transport. Sydney is congested due to bad & expensive road infrastructure. You will also save more money that way. If you prefer to drive than USA is the king of the road.

few more of my own additions…

Misc

Sydney Silicon Valley
During summer it is hot, sticky and humid around 40°C (104 °F). Winters are dry and cold dropping to 2°C (35.6°F). Australia is very brown. Not as green as USA. During summer it is farken amazing! Excuse the F word but this is the BEST place in the world for weather. Dry and sunny sometimes peeking at 40°C (104 °F). Winters are rainy and cold dropping to 2°C (35.6°F).
Go to USA to shop for clothes for choice & price. 2 major grocery retailers (ColesWoolworths) play a game of monopoly with consumers keeping prices high and pushing the smaller players out. Clothes & cars are half price of Australia. Competition is high here with many many retailers. Competition is healthy to bring prices down & increase consumer service. If you buy organic free range food here it is as much as in Australia for standard supermarket food.
A large island in the middle of the South Pacific with a population of 20m. Most of Australia is dry/red, population lives in isolated centers on the edges of the island with nothing in the middle but deserts and deadly animals. Flights to Sydney from USA average around 14 hrs. Few places like Great Barrier Reef exist but not the diversity you get in the USA. Massive population of 300m spread across most of USA. Opportunities galore. Urszula has met and attended events ran by gurus in her industry. All those books she read the authors are based in the USA. Same goes for travelling for holidays. Every state is different and has something to show and see. Plenty to do and explore all under few hours of flight or drive.

Have questions you want answers to? Contact me.

~ Ernest

Tips on travelling in the USA

The following list is by no means complete or exhaustive of everything one needs to know to travel in the USA. This is a list of stuff I learnt in the last 1 year of travelling around USA. These I share with you now and will regularly update as I learn more and any corrections along the way.

Tips

  • Use a “SuperShuttle” to and from the airport. http://www.supershuttle.com/it’s a shared taxi van of around 9 people. It’s dirt cheap vs. crazy taxi fares and you get to see more of the area as they drop off people around town.
  • If you live in the valley and have your own car and are taking a short trip of around a week it is cheaper esp. with a coupon & more convenient to leave your car at any of the available airport parking companies. Some which are further away from the airport have shuttle buses that take you to the airport and back for free so don’t worry if it’s 5 minutes outside the airport.
  • If you are arriving to the USA don’t bother bringing your wardrobe. Clothes here are cheap. Dirt cheap. Brands and all. Especially during public holidays like Thanks Giving or Christmas time by average 50% off.
  • If you need to rent a car do it through Enterprise. I find them the most reliable and mostly the cheapest. Sign up on their website to receive regular coupons to bring that price down and don’t forget to read my post on car rental hidden costs to save even further.
  • For accommodation I highly recommend AirBnB. Airbnb is an online service that matches people seeking vacation rentals and other short-term accommodations globally with locals with rooms to rent. It’s fun, cheaper than hotels, you can be very selective on location (not restricted by hotels location), meet interesting people and live like a local. It works really well in big cities like New York, San Francisco, Los Angeles, etc. We only use AirBnB now when travelling. Why spend big $$$ on a hotel when all you need is a place to sleep and store your luggage. Use the money you save to buy some fashion!
  • Americans drive fast on freeways that stretch up to 5 lanes each way. Get ready. Either hire a GPS or bring your own so you’re not slowing traffic down. As long as you’re not doing anything dangerous on the road you will be fine to keep up with the communal speed limit. I’ve seen police sway across all lanes to slow traffic down when it gets too fast.
  • The only dangerous creatures are Bears (especially Grizzly) & Mountain Lions. You wont see poisonous spiders, snakes or crazy insects.
  • For more tips visit each of the places mentioned below. The posts include their own unique tips.

Some of the great places we have visited

  • New York City (Manhattan) – The city that never sleeps. My favorite! One of the most densely populated areas in the world. Known for its financial and fashion center of both the United States and the world.
  • Los Angeles – West Hollywood. Home of the movie industry.
  • San Francisco – Home of the high-tech scene and area known as Silicon Valley.
  • Hawaii – Made up entirely of islands like Big Island, Maui etc. Natural scenery, warm tropical climate, abundance of public beaches and oceanic surrounding, and active volcanoes make it a popular destination for tourists.
  • Monterey – 1-hr drive south of the valley. A beautiful coastal city.
  • Carmel-by-the-sea – a hidden gem round the corner from Monterey. The beachy town is known for its natural scenery and rich artistic history.
  • Yosemite National Park – Designated a World Heritage Site recognized for its spectacular granite cliffs, waterfalls, clear streams, Giant Sequoia groves, and biological diversity. Almost 95% of the park is designated wilderness.
  • Yellowstone National Park – a national park located primarily in the U.S. state of Wyoming known for its wildlife and its many geothermal features.
  • Las Vegas – The Strip. Internationally renowned major resort city for gambling, shopping, partying (clubs) and fine dining.

I will be posting individual posts to each of those locations with photos so come back soon.

~ Ernest

Gentle Introduction to Python

Right, let’s dig into my favorite language. Python. It’s super easy to read & learn, it’s concise and one of the hot languages in Silicon Valley.

The following assumes you understand basic software engineering concepts.

A bit about Python

  • Design philosophy emphasizes on code readability. Important because software engineers spend most of their time trying to understand code. (Ref Coding Horror)
  • Has a nice MVT open-source web framework called Django. Django emphasizes reusability and pluggability of components, rapid development, and the principle of DRY (Don’t Repeat Yourself).
  • It features a fully dynamic type system with late binding (duck typing) and automatic memory management, similar to that of Scheme, Ruby, Perl, and Tcl. More here.
  • Runs on LAMP, where the P = Python. Here’s how to set it up.
  • Currently one of the hottes languages (alongside Ruby/Ruby on Rails) in Silicon Valley especially among startups.

Sample of popular sites build in Python

Google, Dropbox, Reddit, Disqus, FriendFeed (Sold to Facebook to drive their News Feeds), YouTube, Quora (rising star), Douban. Comprehensive list here.

Python

  • Uses whitespace indentation, rather than curly braces or keywords, to show & delimit block structure. I prefer 4 spaces.
  • Everything is an object (first class) and everything has a namespace accessed by dot-notation.
  • Naming convention UpperCamelCase for class names, CAPITALIZED_WITH_UNDERSCORES for constants, and lowercase_separated_by_underscores for other names. See Python style guide and The Zen of Python for guiding principles for Python’s design into 20 aphorisms. Basically write self-documenting code by chosing explicit naming convention.
  • A comment starts with a hash character (#). For longer then a line (and as Doc strings) use triple quotes: ”’ xyz ”’.
  • Variable names have to start with a letter or underscore, and can contain numbers but no spaces or other symbols.
  • File extension is always .py. If you see .pyc this is source code compiled into bytecode for execution by a Python VM (virtual machine).
  • Use command line python shell to test assumptions by getting immediate results.
  • No case/switch statements. Switch is better solved with polymorphism (object that has more than one form) instead. Good example here.
  • Data types
    • Immutable (can’t be updated or changed): strings, tuple, int, float, complex, bool
    • Mutable (can be updated or changed): list, dictionary (dict) & mutable except for it’s keys
  • Editors I use: IDLE (for basic shell work & comes with Python.org install), PyCharm (with Django support) and Sublime Text 2 (lightweight TextMate replacement).

Basics

Arithmetic Boolean
2 > 3 → False
2 == 3 → False
2 The opposite of == is != (“not equals”):
2 != 3 → True
You can chain together comparison operators:
2 < 3 < 4 → True
Equality works on things besides numbers:
“moose” == “squirrel” → False
True and True → True
True and False → False
True or False → True
not False → True
(2 < 3) and (6 > 2) → True
Under the hood,
True is equal to 1,
and False is equal to 0.
Booleans are a subtype of integers.

Operators

== Equal to
!= Not Equal to
is Identical
and Boolean and
or Boolean or
& Bitwise and
| Bitwise or
not Boolean not (not the !)

Built in functions that are always available

len(s) Return the length of an object. Can also be a sequence (string, tuple or list) or a mapping (dictionary).
print(obj) Print object(s) to the stream file.
help(list) See basic help on any object.
dir(list) Return a list of valid attributes for that object.
type(list) Return the type of an object

More built in functions here: http://docs.python.org/library/functions.html

Functions

Always starts with a “def” and ends with “:”.

# define a new function with 1 default argument. Can also have no arguments.
def function_purpose(arg1=1):
     ''' This is a doc string '''
     print 'Python code'
     return (arg1, arg1+7,) # returns 2 values as a tuple (note the comma), else None
# call the function, returns a tuple that we assign to 2 variables
item1, item2 = function_purpose(1)

If you want to assign a value to a variable outside the function within a function you must prepend the variable with “global”.

Calling methods on objects

Just like calling functions, but put the name of the object first, with a dot

words = 'some monkeys here'
e = words.count('e')
# returns 4

Strings

Are a sequence of characters.

# creation
name = 'Ernest Semerda'

# accessing, returns 's'
name[4]

# splitting, returns a list ['Ernest', 'Semerda']
the_string.split(' ')

Strings can be subscripted/sliced like the list (see lists in Data Structures below).

# selected range returns 'nest '
name[2:5]

# get first two characters returns 'Er'
name[:2]

# get everything except the first two characters returns 'nest Semerda'
name[2:]

Sample of  some string methods. They come with 8-bit & Unicode support.

name.capitalize() # changes to 'ERNEST SEMERDA'
name.find(sub[, start[, end]])
name.lower()
name.split([sep[, maxsplit]]) and new_name.join(list)

More string methods: http://docs.python.org/library/stdtypes.html#string-methods

Data Typing

Python is strongly typed which won’t allow you to automatically converted from one type to another.

Python also has a strong tradition of duck-typing (dynamic typing) in which an object’s current set of methods and properties determines the valid semantics. Trusting that those methods will be there and raising an exception if they aren’t. Be judicious in checking for ABCs and only do it where it’s absolutely necessary.

An important feature of Python is dynamic name resolution (late binding), which binds method and variable names during program execution.

# fails because (str + int + str) != str
'There are ' + 8 + ' aliens.'
# perfect, str() = type conversion
'There are ' + str(8) + ' aliens.'

To achieve Reflection, a process by which a computer program can observe and modify its own structure and behavior, use the built-in functions. I.e. getattr

Over a “sys” module’s method “path”:

path = getattr(sys, "path")

Over a function1 with sample input:

result = getattr(sys.modules[__name__], "function1")("abc")

And/or use the Reflection Utilities API for deeper execution frame, execution model, class/obj inspection for methods & attributes etc… See: http://docs.python.org/c-api/reflection.html

Data Structures

Dictionary

Set of key:value pairs. Keys in a dictionary must be unique. Values Mutable.

# creation, empty dictionary
peopleDict = {}

# creation, with defaults
aliensDict = {'a':'ET', 'b':'Paul', 'c':42}

# accessing, returns 'ET'
aliensDict['a']

# deleting, 'Paul' is removed from dictionary
del alientsDict['b']

# finding, returns False (note capital F)
aliensDict.has_key('e')

# finding, returns ['a', 'c']
aliensDict.keys()

# finding, returns [('a', 'ET'), ('c', 42)]
aliensDict.items()

# finding, returns True
'c' in aliensDict

Lists

Lists can carry any items ordered by an index. Lists are Mutable.

# creation, empty list
peopleList = []

# creation, with defaults of any type
codesList = [5, 3, 'p', 9, 'e']

# accessing, returns 5
codesList[0]

# slicing, returns [3, 'p']
codesList[1:3]

# finding, returns ['p', 9, 'e']
codesList[2:]

# finding, returns [5, 3]
codesList[:2]

# returns ['p', 9]
codesList[2:-1]

# length, returns 5
len(codesList)

# sort, no return value
codesList.sort()

# add
codesList.append(37)

# return, returns 37
codesList.pop()

# remove, returns 5
codesList.pop(1)

# insert
codesList.insert(2, 'z')

# remove
codesList.remove(‘e’)

# delete
del codesList[0]

# concatenation, returns ['z', 9, 'p', 0]
codesList + [0]

# finding, returns True
9 in codesList

Apply set(list) and it becomes a set – an unordered collection with no duplicate elements. Also support mathematical operations like union, intersection, difference, and symmetric difference.

Tuples

Tuples are similar to lists: they can carry items of any type & useful for ordered pairs and returning several values from a function. Tuples are Immutable.

# creation, empty tuple
emptyTuple = ()

# note the comma! = tuple identifier
singleItemTuple = ('spam',)

# creation, with defaults of any type
codesTuple = 12, 89, 'a'
codestuple = (12, 89, ‘a’)

# accessing, returns 1
codesTuple[0]

More on data structures here: http://docs.python.org/tutorial/datastructures.html

Control & Flow

For loop

# Collection iterator over dictionary w/ tuple string formatting
people = {"Ernest Semerda":21, "Urszula Semerda":20}
for name, age in people:
    print "%s is %d years young" % (name, age)

To loop over two or more sequences at the same time, the entries can be paired with the zip() function.

More on string formatting operations here: http://docs.python.org/library/stdtypes.html#string-formatting-operations

For loop with if else

# Iterate over a sequence (list) of numbers (1 to 10) with if/else Conditionals. The range function makes lists of integers.
 for x in range(1, 10):
     if x == 8:
         print "Bingo!"
     elif x == 10:
         print "The End"
     else:
         print x

While loop

# using request to ask user for input from interactive mode
request = "Gimme cookie please: "
while raw_input(request) != "cookie":
    print "But me want cookie!"

Switch-statements do not exist. In OO they are irrelevant & better solved with polymorphism instead. Examples here.

More control flow tools here: http://docs.python.org/tutorial/controlflow.html

Golfing!

Chaining into few lines.

[x * x for x in [1, 2, 3, 4, 5]]
# returns [1, 4, 9, 16, 25]

Can get messy & complicated to read.

print [x * x for x in range(50) if (x % 2 ==0)]
def is_palindrome(word):
    word = re.compile(r'[!? ]').sub("", word.lower())
    return True if word == word[::-1] else False

Files

# open, defaults to read-only + note single forward slash
contents = open('data/file.txt')

# accessing, reads entire file into one string
contents.read()

# accessing, reads one line of a file
contents.readline()

# accessing, reads entire file into a list of strings, one per line
contents.readlines()

# accessing, steps through lines in a file
for line in contents:
    print line

More on IO: http://docs.python.org/tutorial/inputoutput.html

Classes

All methods (but not functions) are closures – see “self” below. A closure is data attached to code. All variables are public, private variables are established by convention only.

# SuperHero inherits from Person class - also supports multiple inheritance using comma
class SuperHero(Person):
    # constructor
    def __init__(self, name):
        self._name = name

    # method
    def shout(self):
        print "I'm %s!" % self._name

The __name__ below allows Python files to act as either reusable modules, or as standalone programs. Also think Unit Tests benefits!

if __name__ == '__main__':
    # instantiate the class
    batman = SuperHero('Batman')

    # call to method in class, returns "I'm Batman!"
    batman.shout()

    # returns "I'm Batman!"
    SuperHero.shout(batman)

More on Classes in Python here: http://docs.python.org/tutorial/classes.html

Modules

Modules are Libraries that hold common definitions and statements. They can be combined into an importable module.
More on modules here: http://docs.python.org/tutorial/modules.html

To use a module, use the import statement:

import math

# returns 1.0
math.sin(math.pi / 2)

Some commonly used modules

  • math – trigonometry, the constants e and pi, logarithms, powers, and the like.
  • random – random number generation and probability distribution functions.
  • os – tools for talking to your OS, including filesystem tools in os.path.
  • sys – various system information, as well as the handy sys.exit() for exiting the program.
  • urllib2 – tools for accessing Web resources.

Useful modules: http://wiki.python.org/moin/UsefulModules

Error & exception handling

import sys
try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except IOError as (errno, strerror):
    print "I/O error({0}): {1}".format(errno, strerror)
except ValueError:
    print "Could not convert data to an integer."
except:
    print "Unexpected error:", sys.exc_info()[0]
    raise

More: http://docs.python.org/tutorial/errors.html

Fun – easter egg; The antigravity module

Released in Google App Engine on April 7, 2008. The antigravity module (http://xkcd.com/353/) can be enabled like this:

import antigravity

def main():
    antigravity.fly()

if __name__ == '__main__':
    main()

Speed – always a common topic

Classic computer programs had two modes of runtime operation = interpreted (as code runs) or static (ahead-of-time) compilation.

Just-In-Time compilation (JIT), also known as dynamic translation is a new hybrid approach. It caches translated code (bytecode into native machine code) to minimize performance degradation. Used in .NET, Java & Python via PyPy.

PyPy is a fast, compliant alternative implementation of the Python language. It has several advantages and distinct features like Speed (Just-in-Time JIT compiler), Memory usage (better then CPython), Compatibility (works with twisted & django frameworks), Sandboxing (run untrusted code), Stackless (providing micro-threads for massive concurrency). Check it out: http://pypy.org/

Recommended

Books

Websites/following

Finally, it is important that you have a network of like minded people around you whom you can regularly work on Python with, bounce ideas & question and support (help) each other out.

Happy Learning and if you have any questions please contact me. Always happy to help.

~ Ernest

Get your @$$ to Silicon Valley

Is moving to work in Silicon Valley on your goals list? Are you a software engineer or work with technology and always craved for more? Then get your @$$ to Silicon Valley and start making a difference disrupting an industry and learning a ton load of new things in the process. Oh and Happy New Year!

Sydney 2011 NYE Fireworks - nothing comes close
Sydney 2011 NYE fireworks - nothing comes close

Here’s why you need to be in Silicon Valley

It has already started!

Aussies are leaving Australia to start tech companies in the valley. Check out this SMH article & video on this movement.

Brain drain: why young entrepreneurs leave homesource: SMH, May 18, 2012

How to get to Silicon Valley

  • Make sure you are up to date with the latest tech. Australian corporate world (common work environment) is behind with technology so moving to Silicon Valley you may need to ramp up on the tech side. There is also plenty of free education online you can take advantage of.
  • Organize an E3 (faster & easier for Aussies) or H1B (the common) Visa. You can come to Silicon Valley on your Visa Waiver Program (VWP) for 90 days (3 months), find a job and then get the Visa sponsored by the company.
  • Find a place to live in the Bay Area (also known as Silicon Valley) / San Francisco areas. If you come on a Visa Waiver Program just rent out a bedroom via AirBnB anywhere you like. Super easy and convenient until you lock down a more long-term accommodation.
  • Find a job / startup to work at. Or just contact me and I can help you out – we are hiring! A friend came here on a Visa Waiver Program and scored plenty of interviews and locked in a great job in 2 weeks.
  • Understand employment & contracts in the bay area. There are plenty of perks for great software engineers including long-term financial gains via stock options. Unlike Australia where getting stock options is next to unheard of for software engineers. Check out glassdoor.com to get a feel for the salary range in Silicon Valley.
  • Before you leave Australia make sure you have attended to the going away checklist; changed to non-resident for tax purposes, notified your banks, given power of attorney to someone you trust etc…

Need help or still not sure?

Look. If you’re a good engineer with the right attitude and want more out of life you need to be in Silicon Valley. If you fear the change it’s ok. It means your human. Contact me and I will help you with your journey from Australia to Silicon Valley and connect you with startups in the bay area.

Don’t waste another day, start today and make a difference in your career and life.

~ Ernest

Silicon Valley Code Camp 2011

Last weekend myself and Omid Mozayani (another Aussie; recent addition to the valley) spent the weekend of Saturday and Sunday, October 8th and 9th, 2011 at Silicon Valley Code Camp 2011. Held at the Foothill College in Los Altos/CA with an attendance of well over 2,000 (registered 3,417) people and 209 sessions organized in a University style setup over these 2 days. Impossible to attend each one but plenty to cherry pick from. It felt like I was back at Uni(versity) running between lectures. I loved it! Here’s what happened.

CodeCamp at FootHill College.

What is Code Camp

Code Camp is a new type of free community event by and for the developer community where developers learn from fellow developers. It is 2 full days of talking about code with fellow developers. Sessions range from informal “chalk talks” to presentations. Basically there is lots of education, networking and good food.

Pictures from Code Camp @ Foothill College

Lecture - Crockford on ECMAScript5
Lecture - Crockford on ECMAScript5

Lunch - feeding time for thousands of nerds
Lunch - feeding time for thousands of nerds

Ernest Semerda - nerd out and about
Ernest Semerda - nerd out and about

Lecture - multi threaded design
Lecture - multi threaded design

More pictures here on my Flickr.

Code Sessions

Choosing what sessions to attend was key since it was impossible to attend everything when you consider that each session took around 45 min. Here is a wrap of the 3 areas I focused on; ECMAScript (JavaScript) with code encapsulation, Writing Clean Code and Web Analytics.

ECMAScript 5 (JavaScript)

Douglas Crockford ran 2 sessions on ECMAScript 5: The New Parts and ECMAScript: What Next?. Crockford is involved in the development of the JavaScript language and popularizing the data format JSON (JavaScript Object Notation), and for developing JSLint. You may recall me talking about JSLint in a previous blog post on JavaScript Patterns.

More on Crockford is here (his personal site) and here: Crockford on JavaScript. Also read about how JavaScript is the world’s most misunderstood language. Recommended reading! You will want to learn more about this great language.

ECMAScript’s Fifth Edition is now available in all of the best browsers. This is what you are getting:

  • Use “Strict mode” in all your JavaScript code.
    • As per my previous post on JavaScript Patterns here.
    • Old JS compiler ignores it so it’s safe to use today in all your JavaScript.
    • A bug in JS used to advantage today for backward compatibility.
    • “Strict mode” will break old bad programs. If you are writing good programs they will just work.
  • No more implied global variables within functions.
    • Yipee! Major fail in JavaScript where undefined variables would chain to the prototype making it very difficult to isolate your code, and to reuse it in new contexts.
    • If you forget to “var” a variable it now becomes undefined so you can address it vs. letting it slide by. Bad coders beware!
    • To append something to the global object add “window.function/var”.
  • “apply” and “call” do not default to the global object.
  • No “with” statement. Read why it was considered harmful to use.
  • Restrictions on “evil” eval. Here’s why it’s evil. *Cough* code injection!
  • No more octal literals. Not needed since punch card days.
  • Forgetting to use the new prefix will now throw an exception, not silently clobber the global object.

Use something like this today to check if your browser is running in Strict mode:

function in_strict_mode() {
    return (function () {
        return !this;
    }
}
  • Make it a habit to do static analysis using JSLint. If you are using it already your code is probably good and ready for strict mode.
  • Use “Safe JavaScript Subsets” like Caja & ADsafe projects which allow you to safely run 3rd party software on your website.

JavaScript Code Organization and Encapsulation

Shawn Van Ittersum presented ideas for organizing, encapsulating, and simplifying JavaScript code, including: creating JavaScript objects and classes with truly private members, using Douglas Crockford’s module pattern and classical inheritance constructs provided by Dean Edward’s Base.js, Prototype, and MooTools; abstracting JavaScript code from HTML templates, CSS styling, and the DOM; designing with polymorphism (duck typing) for code reuse and simplicity; and using JSLint to identify problems in your code before runtime.

The idea behind the power of Encapsulation is simple:

  • Encapsulation limits widespread interconnection,
  • Gives you Freedom to change internal implementations without affecting external code and
  • is referred to as Loose Coupling – an approach viewed as positive in the field of computer science to remove dependency between systems and allow horizontal scaling.

Ittersum’s lides with code samples are located here.

Writing Clean Code

Theo Jungeblut ran this session and basically the crust of the presentation was that writing clean code makes us more efficient.

This presentation was based on C# and Visual Studio 2010. However the following patterns and practices can be applied to every other programming language too.

Over the lifetime of a product, maintaining the product is actually one – if not the most – expensive area(s) of the overall product costs. Writing clean code can significantly lower these costs. However, writing clean code also makes you more efficient during the initial development time and results in more stable code.

  • Readability
    • Follow coding guidelines.
  • Simplification and Specialization
    • KISS (Keep it simple, Stupid!) – most systems work best if they are kept simple rather than made complex.
    • SoC (Separation of concern) – focus on 1 thing.
    • SRP (Single responsibility principle) – every object should have a single responsibility, and that responsibility should be entirely encapsulated by the class.
    • OCP (Open/closed principle) – software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification aka inheritance & encapsulation.
  • Decoupling
    • LSP (Liskov substitution principle) – guarantee semantic interoperability of types in a hierarchy, object types in particular.
    • DIP (Dependency inversion principle) – high-level modules should not depend on low-level modules. Both should depend on abstractions. And abstractions should not depend upon details. Details should depend upon abstractions.
    • IHP (Information hiding principle) – prevent certain aspects of a class or software component from being accessible to its clients aka encapsulation.
    • Contracts – 2 categories: preconditions and postconditions where a precondition states that certain things must be true before a method can execute, and a postcondition states that certain things must be true after a method has executed.
    • LoD (Law of Demeter or Principle of Least Knowledge) – specific case of loose coupling where units (code) only talk to immediate friends (not strangers) assuming as little as possible about the structure or properties of anything else.
    • IoC (Inversion of control) – reusable generic code controls the execution of problem-specific code. It carries the strong connotation that the reusable code and the problem-specific code are developed independently, which often results in a single integrated application.
    • SOA (Service-oriented architecture) – develop code in business functionalities (discrete pieces of code and/or data structures) that can be reused for different purposes.
  • Avoiding Code Blow
    • DRY (Don’t repeat yourself) – reduce repetition of information.
    • YAGNI (You ain’t gonna need it) – do not add functionality until it is necessary.
    • Quality through testability (all of them!)

There is also a good bunch of tips from The Pragmatic Programmer located here.

And don't forget, Scout rule = leave a better place!

Recommended book

SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) is a mnemonic acronym introduced by Robert C. Martin

Web Analytics

Massimo Paolini presented on Google Analytics. The most profound thing he said which delivered a strong message is:

"Web analytics is about Revenue NOT traffic."

Bang! Right there. Too many site owners are mislead into trying to decipher visitor totals vs. focusing on the true picture; and that is how to understand and optimize their site visitors across online marketing efforts. The process is then rinse & repeat.

Finally, Web Analytics is NOT a precise science. You are looking for trends. Differences. To help you make decisions moving forward. This is because some people clean their systems ie.delete cookies etc..

Presentations from Silicon Valley Code Camp

For more presentations from these 2 days follow the link below to presenter uploaded presentations to SlideShare. Includes 2011 and previous years. Enjoy!

http://www.slideshare.net/search/slideshow?type=presentations&q=silicon+valley+code+camp+2011&searchfrom=basic

More links to Silicon Valley Code Camp

Code Camp main site: http://www.siliconvalley-codecamp.com/
On Facebook: http://www.facebook.com/groups/6125701762/
On PB Wiki: https://codecamp.pbworks.com/w/page/16049741/FrontPage
On Twitter: http://twitter.com/#!/sv_code_camp

So, in conclusion, this was an awesome & insightful 2 days packed with plenty of great applicable content.

Enjoy!
~ Ernest

Aussie founders in Silicon Valley

There are over 17,000 Australians living in San Francisco and the Bay Area (Silicon Valley). And some of these Aussies are making their presence felt in the Valley’s high-tech scene.Back in March 2009, when I arrived in the Valley full-time, I had no clue about the extent of the Aussie footprint here. As time ticked on and I got familiar & orientated around the tech scene the area has to offer I got fired up and inspired. I started to see what fellow Aussies were up to, the impact they were/are leaving and great opportunities this area provides.

Below is a list of these Super Aussies and the companies they are running (have run & sold) in the high-tech scene of Silicon Valley.

Founder/s Company Notes
Mike Cannon-Brookes & Scott Farquhar Atlassian Known for Jira, Confluence etc. 26K customers from 144 countries use Atlassian tools. Operates in Oz & SF.
Andrew Lacy Tapulous Acquired by Disney.
Bardia Housman & Adam Broadway Business Catalyst Acquired by Adobe. Bardia is soon to launch and soon to launch StartupHouse.
Elias Bizannes StartupBus Also runs Silicon Beach OZ & The DataPortability Project, blog and soon to launch StartupHouse.
Ryan Junee, Simon Ratner & Julian Frumar Omnisio Acquired by Google.
Ryan Junee Inporia See Omnisio above + also a mentor at 500 Startups and StartMate.
Andrew Roberts Ephox Operates in Oz, Palo Alto & Europe.
Sam Chandler NitroPDF Operates in Oz & SF.
James Nicol Fundly
Ben Keighran Chomp
Mick Johnson GasBag & Whereoscope
Lars Rasmussen Google Maps & Google Wave Recently moved from Google (Sydney) to Facebook in Silicon Valley.
Gower Smith Zoom Sytems
Leigh Jasper Acconex
Upcoming startups from my aussie mates.
Denis Mars Player.ly Currently in stealth-mode. Y-combinator alumni.
Vincent Turner PlanWise Aims to empower consumers with tools for planning and forecasting your finances. Presented at Finovate NYC.
Last updated: Sept 2011

Advance.org – Global Australians. Global Networks.

Advance.org helps create opportunities for Australians living abroad. They organise events/forums in and around San Francisco / Bay Area to help Aussies to connect together, share ideas, spark mentorship & marketing programs. More here: advance.org

Aussie incubator for Australian start-ups – The Startup House

Bardia Housman (see above ref Adobe) has purchased a 36,000 sq foot building (at 880 Harrison Street, San Francisco, CA 94107),  in the heart of San Francisco, to transform it into an incubator for Australian start-ups. It’s currently being built up but will most definitely be a kick ass place for Aussies enterprunrs. More on this project with Elias Bizannes (see above ref StartupBus) in the video below. All the best guys! Looking forward to paying a visit.

Media coverage: Recently published in the Sydney Morning Herald (SMH)

Gold diggers: Aussies strike it rich in Silicon Valley
By Asher Moses, September 15, 2011

  • Tony George from Austrade in Los Angeles helps Australian start-ups get a foothold in the US.
  • Austrade provides grants, helps entrepreneurs with research, advice about market entry, referrals to service providers such as lawyers and accountants, and most importantly hooking them up directly with potential customers.
  • Pollenizer and Startmate are helping the Australian tech start-up scene grown. But the conventional wisdom is still that start-ups needed to go to the US to raise funds and be exposed to the movers and shakers in the tech industry.

If you know of other Aussies in Silicon Valley/SF that are steaming ahead with their product/s please let me know and I will add them to this list above. Thanks!

Aussie Aussie Aussie, Oi Oi Oi!

~ Ernest

8 books to read to fuel your entrepreneurial itch

So you have the itch.. the entrepreneur’s itch. Being in Silicon Valley it’s hard not to have it when you get to rub shoulders with many founders and investors on a weekly basis at the many meetup events organized by like minded individuals. There you hear many inspiring stories and adventures in entrepreneurship and how you too can walk that path when you set your mind to it. To get you rolling on this journey, here are my top 8 books which are sure to fuel your entrepreneurial itch!

Keys to the Vault: Lessons From the Pros on Raising Money and Igniting Your Business

by Keith J. Cunningham, the Real Rich Dad from Robert Kiyosaki’s popular series Rich Dad Poor Dad. Keith is also a speaker at Anthony Robbins Mastery University.

I purchased this book after being inspired by Keith during a presentation on business entrepreneurs. Keys to the Vault is The Formula, the recipe, for raising money and creating a successful business. No fat in this book, just pure step by step here’s how the industry works and here’s how you can do it yourself – step by step! My favorite of the lot.

Founders at Work: Stories of Startups’ Early Days

by Jessica Livingston, founding partner of the valley’s famous seed stage venture firm Y Combinator.

I purchased this book after being inspired at Startup School, by YCombinator. Founders at Work is a collection of interviews with founders of famous technology companies about what happened in the very earliest days. Some of the companies in question include Apple, Flickr, PayPal, Gmail, Twitter etc. You will learn that these founders had no special human powers but persevered during hard times and worked hard towards their vision.

Never Get a “Real” Job: How to Dump Your Boss, Build a Business and Not Go Broke

by Scott Gerber, serial entrepreneur, angel investor, media personality, public speaker and the most-syndicated young entrepreneurship columnist in the world.

I purchased this book after being inspired by a very successful Silicon Valley CEO – his company is mentioned inside this book. Never Get a “Real” Job is straight to the point, no bullshit, that having a JOB (Just Over Broke) suxs! Being an employee is not rewarding enough as being an entrepreneur. This book is a wake up call and tells you how to make dramatic changes from an employee to an entrepreneur without going broke.

Innovation and Entrepreneurship

by Peter F Drucker, who was a writer, management consultant, and self-described “social ecologist.”.

Peter shares with us an excellent framework for innovation providing some general guidelines for identifying innovative opportunities. The key take away is that successful entrepreneurs do not wait until having a “bright idea”; they go to work. He was ahead of his time, a man of pure genius!

Rework

by Jason Fried and David Heinemeier Hansson, founders of the very profitable and successful 37signals.

37signals business model of profits from the word go inspires me hence why I purchased this book. Rework is a collection of the best posts from Signal vs. Noise, a weblog by 37signals about design, business, experience, simplicity, the web, culture, and more. The book can be read in 2 hours and it damn straight to the point. It will make you extremely uncomfortable. But that’s why it’s so good because it breaks through all the bullshit and tells you how it really is.

The Monk and the Riddle : The Education of a Silicon Valley Entrepreneur

by Randy Komisar, a new breed of executives who have been called “virtual CEO’s with a wealth of experience under his belt.

Randy takes the reader through a hypothetical Silicon Valley start-up and what it takes to get a business running, funded and profitable. This books reminds me of The Monk Who Sold His Ferrari: A Fable About Fulfilling Your Dreams & Reaching Your Destiny with a focus on Silicon Valley startup.

Drive: The Surprising Truth About What Motivates Us

by Daniel H. Pink, an American writer, speechwriter, and motivational speaker.

The holy grail of people management. Daniel shares with us the surprising truth. People want Autonomy (control over their work), Mastery (get better at what they do) and Purpose (to be part of something that is bigger than they are). It’s that simple. Yet many employers fail to see this and use old aged approaches. Here’s a fantastic 10 minute animated cap by RSA of what the book is about: http://www.youtube.com/watch?v=u6XAPnuFjJc

Brain Rules: 12 Principles for Surviving and Thriving at Work, Home, and School

by John Medina, a developmental molecular biologist and research consultant whom publishes fascinating insights on his Brain Rules website about what’s really going on inside our heads.

I am also a life hacker, and as such, this book had to sit in my book shelf. If workplaces had nap rooms, multitasking was frowned upon, and meetings were held during walks, we’d be vastly more productive. Brain Rules reveals – in plain English – 12 ways our brains truly work. Killer killer killer content – it will reshape how you do business and function on a daily basis.

ReadingList – what else am I reading?


If you like my suggestion of books I highly recommend you run my Facebook App called ReadingList where I share with my followers all the cool books I’m reading, my reviews and comments. Give it a shot, it’s a FREE app. Go there now: http://apps.facebook.com/readinglist

I love comments so don’t forget to say G’day to this Aussie in Silicon Valley.

~ Ernest

Interview with Vincent Turner – Aussie founder in Silicon Valley

November 2010 and another fellow Aussie touched down in the high tech land known as Silicon Valley. Last week I had the pleasure meeting this Aussie who arrived from Sydney, Australia. His name is Vincent Turner and he is the founder of Pisces Communication. To find out what his experience has been like so far in Silicon Valley and what his plans are, I decided to pick his brains. Here’s what happened.

Founder info

Name
Vincent Turner

Age
32

Company
Pisces Communication: http://www.piscescommunication.com.au/

What service / product does your company provide?
Qualification & Pricing Software to banks and brokers.

What role do you play?
CEO

How long have you been running / working on your product / service?
I originally founded the company in 2000 in Perth as a messaging company however evolved to software for banks in the last 5 years. We changed strategy from a platform to a services model 2 years ago and redeveloped our capability to underpin that model which has allowed us to look at new markets, hence why I am in the US now setting up our operations here (since Nov 2010).

Technology

What personal hardware are you using?
I use Apple personally, I’m sick of Windows and seeing as my work is email, word, excel and Powerpoint and Mac Office 2011 is out (and good) I have no need for Windows. Macbook 11-inch is my current laptop.

What Solution Stack is your business built on?
We have a very strong philosophy of choosing the technology that is right, not simply what we know. Our current market positioning (enterprise end users) means we have both Java & .Net in the stack. We also use GWT for our user front end. We have very little reliance on the database as we dont’ store customer data within our services. We run everything on the cloud, Amazon is our current provider. As part of our business we also work with CRM packages including Dynamics and Salesforce but do little to no development on these components. As we move more into the consumer facing aspects of the business we expect to take on Ruby on Rails, but early days on that for the moment.

What decision(s) lead you to go with that Solution Stack?
We want to have an each way bet with Java and .Net and like to provide our developers with the opportunity to know and work with both. We have customers who are running both and although our architecture is all services based, certain aspects of integration are simplified when you’re running the same stack so this was part of the thinking.

In terms of front end, GWT was the obvious choice for RIA for us when we started our redevelopment 2 years ago as the libraries were extensive and well road tested and as it is basically Java meant our guys could easily get hands on within eclipse etc. I don’t see us using GWT for our next breed of consumer facing interfaces however.

Top 3 Favourite online services you couldn’t live without?

  1. Xero.com – online accounting, with real-time bank data feeds.
    URL: http://www.xero.com/
  2. Google maps – how did we get by before this??
    URL: http://maps.google.com/
  3. Skype – I’d go sans phone if I could, but Skype need to sort their chat out something chronic.
    URL: http://www.skype.com/

Silicon Valley

What made you come to Silicon Valley?
If you’re an actor, you go to Hollywood. If you’re in IT you come to Silicon Valley.

What are 3 Top Challenges you faced upon arrival in Silicon Valley?
Probably too early for me on this but to date:

  1. Sorting out the wheat from the chaff in terms of who can help you in this city and who is just going to waste your time.
  2. Domain expertise and industry terminology for our market (lending) – hard to have meaningful conversations when you’re not sure of the right word to describe your approach.
  3. Roles & Titles – seems like everyone here is the VP of something. Makes it hard to know if you’re talking to the right person.

How about Visa or finding a place to live?
I don’t think I’m having too many issues with the visa process or finding places to live. I found a good immigration lawyer early on.. and Craigslist for accommodation before I left.

What resources did you turn to overcome these challenges?

  • google.com
  • theroadtosiliconvalley.com
  • networking events
  • australian expats

Bay Area or San Francisco to settle?
I’d love to say this decision is made but far from it. I almost think that the Bay Area & SF need to sort it out!

Eventually I will end up back in or near the city. Probably Duboce triangle area as this is so central to the Muni and I think any regular car user in this day and age needs to seriously re-evaluate.

In terms of office, this will always be a decision to be made with the team as I think it is part of the culture of the business and something that is reached by the early team members. I’d ideally live nearish work.

Which part of San Francisco?
Duboce triangle and surrounds.

Why did you make this decision?
Central to everything (in SF).

1 word of advice for our Aussie entrepreneurs wanting to come to Silicon Valley and start their own business?

The best advice I got was ‘just come here’ .. get on the ground and work it out. I had the good fortune/planning/luck to be able to continue to work for my AU business while getting out here for 3 months on a travel visa, while setting up and I think this has allowed me the time to do things properly, meet people, walk around and consider my options in a measured & balanced way.

If you’re in IT, then to date in my travels I can safely say there is not place like the bay area. The level of activity here every week is amazing and it will motivate you and empower you. Also, get on meetup and find some networking groups that suit you.

Vincent & Ernest
Vincent & Ernest

Thank you for doing this interview Vincent. And for sharing these golden nuggets of experience with the readers of The Road to Silicon Valley.

Links mentioned in this post

~ Ernest