Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions adsouza-bio.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ There was then a gap of a few years but I recall only playing games on the Spect
it and bought a PC clone powered by an 8086 CPU with a pair of 5 1/4 inch floppy disks for storage - one had to hold the OS
while the other held the application!
Around age 9 or so I was bored and decided to read through the entire DOS manual and try out all the commands on the PC.
While not technically programming, that was the beginning of me using computers to do someting other than just play games.
While not technically programming, that was the beginning of me using computers to do something other than just play games.

That said, I did accidentally learn one very key computing concept by playing a game. It was a silly game where you had to
guess a randomly selected number between 1 and 100. I quickly realized that the most reliably efficient way to guess the
Expand Down Expand Up @@ -56,21 +56,21 @@ This time they had me doing performance optimization on a different Java codebas
batches of data. Their biggest potential client needed the process to finish in under 3 hours, since they had to take down
their user-facing web-app while it ran, but they had enough data that our code was taking nearly a full day to run! As you
might expect, they were quite unhappy about this and refused to give us their business unless we could demonstrate that the
process would finish in under 3 hours. Initially I got some easy wins by simply swithcing to a new version of the Java
process would finish in under 3 hours. Initially I got some easy wins by simply switching to a new version of the Java
compiler and VM: going from JDK 1.2 to 1.3 gave us a big performance improvement for free! Then I fiddled with various
flags to the compiler and VM to squeeze out a surprising amount of additional performance, getting the clock time down to
about half of what it used to be without even touching the code itself!

The next easy win was to stop allocating new string objects like it was going out of style. By using StringBuffer instead of
The next easy win was to stop allocating new string objects like they were going out of style. By using StringBuffer instead of
the + operator to concatenate strings, I brought the runtime down to under 9 hours. After that I spent weeks running samples
of the data through the code running inside JProbe and making smaller optimizations until the whole process took around 6
hours. By this point I had used up all the tricks I could find so they brought in a much more experienced developer to
continue the process but he was unfamiliar with JProbe so I was able to watch and learn while helping him use JProbe. In the
hours (a 4X speedup). By this point I had used up all the tricks I could find so they brought in a much more experienced developer
to continue the process but he was unfamiliar with JProbe so I was able to watch and learn while helping him use JProbe. In the
end we did get the runtime down to 3 hours.

After this wonderful learning experience at CheckFree, I decided to return for another internship but on a different team.
The next time I ended up just writing JSPs, which wasn't nearly as interesting. Fortunately, my fourth internship was at a
company called Object Technologies International (OTI) that had recently been acquired by IBM to get its hands on Eclipse.
company called Object Technologies International (OTI) that had recently been acquired by IBM to get their hands on Eclipse.
I got to implement the FTP and WebDAV support in Eclipse 2.x under the mentorship of a couple of very capable developers,
learning a lot about architecting extensible systems.

Expand All @@ -97,11 +97,11 @@ features of the Java language and the value of an AST for performing operations
# Industry

After spending my first year on the job using Java, I switched to C++ for the next couple of years and then to C for a year.
Then I quit my job and dabbled in using Python to build an AppEngine server, Javascript to build an HTML5 web app and Java to
Then I quit my job and dabbled in using Python to build an AppEngine server, JavaScript to build an HTML5 web app and Java to
build an Android app.
I got another job where I used both C and Python for a few months and then another job where I learned Scala, which I loved.
Scala is what finally got me to wrap my head around functional programming.
I subsequently got another job where I used both C and Python for a few months and then yet another job where I learned Scala,
which I loved. Scala is what finally got me to wrap my head around functional programming.

Five years ago I started my current job, where I used mostly C++ with a bit of Python and Java for the first two years and
since then it's been mostly Go with a bit of Javascript to build infrastructure and web front-ends. Go has cured me of the
since then it's been mostly Go with a bit of JavaScript to build infrastructure and web front-ends. Go has cured me of the
need to use inheritence for code reuse.