The Path to Mastery

Hello!

I'm Anand Chitipothu.

Crafting beautiful software since two decades.

Built web.py, Infogami, and
Open Library.

Trained hundreds of engineers.

Tried a startup and failed.

mastery | ˈmɑːst(ə)ri |
noun
comprehensive knowledge or skill in a particular subject or activity.

0 — Take the First Step

Begin at the beginning...

1 - Solve Interesting Problems

Interesting != Glorious

One of my interesting programs from the early days!

2 - Challenge Yourself

Push yourself to the limits

  • Create a web framework
  • Create a simple programming language
  • Build a simple database
  • How about a UNIX shell?
  • Can you write a sudoku solver?
  • Go Deep!

Simulator of 8085 microprocessor written in Turbo C++.

3 - Seek Inspiration

... and dive deep!

The Info.plist

<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>firefox</string>
    <key>CFBundleIconFile</key>
    <string>firefox.icns</string>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>html</string>
                <string>htm</string>
            </array>
        </dict>
    </array>
</dict>
</plist>
  • Yes, you guessed it right. That looks like JSON!
  • But it was 2004, before even Yahoo! started using JSON.

The Wizard Book

  • The Elegance of Miminalism
  • The Beauty of Functional Programming
  • The Expressiveness of Recursive Data Structures

hexff

  • An Object serialization library in Java written by me
  • Needless to say, it inspired by Info.plist and SICP
  • Every serilizable class publishes a fileformat in XML, modelled after Info.plist
  • Support for writing a python code in the fileformat to support version upgrades automatically

hexff (contd...)

  • Very small library - 500 lines of Java
  • Still in active use even after 15 years

4 - Find Your Community

  • Join a User Group
  • Participate in Conferences
  • Collaborate
  • Contribute to a FOSS Project

Some of the interesting stuff people discussed at BangPypers in 2006.

5 - Take Risks

Come out of your comfort zone

6 - Beware of Pitfalls

Watch out for yourself!

  • Money
  • Fame / Recognition
  • Google Summer of Code
  • Competetive Coding
  • Even FOSS contributions

7 - GOTO Step 1

The path to mastery is never ending.

The Path to Mastery

  1. Take the First Step
  2. Solve Interesting Problems
  3. Challenge Yourself
  4. Seek Inspiration
  5. Find Your Community
  6. Take Risks
  7. Beware of Pitfalls
  8. GOTO Step 1

Thanks!

Anand Chitipothu
@anandology