Friday, December 28, 2018

moving past java

- >Thursday is a dull day. Need larger doses of caffeine, the Chai Point machine won't cut it.
this has been a long time coming. Even before Strand, I was harping on this, while some successful people have built successful lives without knowing Java, I am unable to get off this island.
With Java getting slightly better every year, it also makes it easier to stay, though whether this is the equivalent of peeing in your pants to stay warm, we won't know till the freeze sets in.

In other languages, I assumed I would be able to get off the ground quicker with ideas, but my experiences with Flask didn't happen.
I still believe if I do this in a non-java only company, I might actually see the benefits, the problem here being the brain split between the Java world and office world and the python world.

When moving on, it must be to a language that is not bollocks, but also makes it possible to have a great career. The end of this exercise (and related 6_6 ) must be freedom from worrying about a job ever.


Was reading DHH on SvN   . Felt so reaffirmed. My 32s are coming back to me.
Led to Jason Fried's talk on Chase-Jarvis-show . Listened while driving to work from Sankar Eye.
Slack (and related real-time chat applications) have turned Work from creative to an assembly line, where you can't miss the part coming down the conveyor. Forget Knights, Castles , forts and mills -    you are in a Charlie Chaplin movie - the one where he gets a nervous breakdown on the line and squirts everybody with an oil gun. This is a very interesting take on the economic clutches we are in.

I'm guessing I could master a language in a month or two, if completely immersed, however the last time I tried something partially close to this - the clojure-dopewars-android days, it was traumatic at the end. Working in android means perpetually being on Stackoverflow, and I didn't have that, or 'finished app' as my goal - I was thinking of something on the lines of Processing ,or the joy people claim to get when working with Lisp. Lisp is recommended for large organisms, and Pascal (and Java) for large pyramids of crafted stone. Given this feature of Lisp , Clojure is not Lisp, though it is the closest. Difference between Java and other languages is that Java programs manipulate large chunks of Java code, whereas other languages, say Python, C-L or Ruby manipulate data.

While some startups continue to slug along in Ruby, funded ones take a long time and get rewritten in Java.  V2.0 , or even patches on V1.x are a pain. We want to do v0.001, which rakes in users and moolah.

If you are moving out of Java, then you should know the replacement in depth, doing both algorithms and real world projects in it. Have you considered Goodrich/Tamassia's python algos ?

Also interviews now look at real world application of skills. Java projects don't get into the real world fast enough to do the many that needs to be done. So you should be using a language that lets you get into production for _ALL_ your ideas , including and especially your useless ones (See simone giertz ted talk !!  + _why , I swear I'm upto no good!), and get them out asap ! Ultimately, this and the next para are the 2 boundaries of the trade, charging money being one more , which we will come to one other day.

EPI : You could start the day cerebrally by memorizing CS stuff - there is so much - algorithms, java classes & the JVM,  workings of OS and networks, assembly ... If nothing this will keep you sharp and you'll be able to talk.

Systems are for solving problems. Knowing system limitations has nothing to do with Java usually-  knowing software helps here. Algorithms, computer structure, operating systems - these will never go out of fashion.


NoSQL , in depth redis, how does mongo do stuff, how does a mysql cluster operate , what is off heap memory, which product provides this , what is CPU cache and memory ?


Here's a word on doctrine, always go to the edge where skill & ability to do things is needed. Established fatty layers can afford to toy with candidates in a way that leads to negative conditioning, and can be best avoided.

True big-data / distributed systems experience is vital and cannot be book-made. If that's what is attracting potential employers , then false pretenses might backfire.

Comic relief : Stackoverflow snippet I came across


-> aaaand we are onto the next Thursday. For some reason I am more rested today.
 Learning a new language & framework, say Ruby/Rails , needs immersion, which needs time. It cannot be done over evenings, when you have to come back in the morning and reload java into your head. If I get a break ,first thing to do is immerse in python or ruby or go or Scala or whatever for long enough to emerge on the other side as a <X>Warrior.

If you have a chance to write integration tests  for a Java/Spring project , in another language, which one would you choose ? I can think of JRuby, Jython and Clojure to begin with., in increasing order of appeal.



Today is a coffee day ; Unlike last week, when it was Thursday, it's a Friday this week. It might have to do with the one round of 5bx I did yesterday morning. Going past my limit puts me in a energy-surge, and corresponding appetite surge.

Sizov makes good reading (link from Partha) - 1. promotions are a trap - you tend to stay longer to accumulate them until you become obsolete, 2. don't learn frameworks,  learn patterns,  3. you are not a software developer, but a money maker ...
As per this, language is irrelevant to the larger picture - the tech scene will fill in some language /framework. Then, while it follows it is better to work in a language you can reason about and distill ideas to working code faster  - hence ruby/python etc, if you can deliver faster in Java, then Java remains a valid choice.
But after beating my head around the opaque layers of Java misdirected by Berlin, I am convinced that Java is a trap.....

To know real constraints of the system, code has to be written in C and you should see it fail, with messages from the metal underneath. With Java, you only get a check-engine light.

Feb 1 today. It's the next Friday. It's been a while now. My unit of consciousness is a week !
I have been fiddling with Java coding interview problems, and have implemented a one-time pad implementation using java.util.Random . It doesn't work so well ( unicode support ?).
I wonder how long the python version will take to code up. I also ran into a python script which pulls data from urls, and read Swaroop Ch's " A Byte of Python" and created a _gasp_ object !!
You can go through life's obstacles, but never around them.  All my trains are stopped at their individual Mt. Fuji.  Also researched some non-painful web frameworks for Python. Back to Django for portability and cachet.Most of them are crufty. Go with the universally accepted cruft.
Java or Java's sake, projects and pieces in Python. Learn OOPS, Django and the complexity.
Chassis in Java, Systems in Java, data in Py wherever whenever possible.
List of Java things - Java performance tuning, garbage collection, system tools like jmap,jps etc, JLS, JVMspec, venners inside Java, concurrent classes, nio, classloaders etc.
BF, stock-flow system , game engine with ticks and world updates, stocks, nutrition etc - all Py.

Areas PPTs.  - Like the Chassis diagram which gave so much joy, I should make PPTs of ecosystems and solutions. They will act as maps for learnings

0 Comments:

Post a Comment

<< Home