Wednesday, August 09, 2017

reddit writing prompt entry

The old man paused, smiled and picked up his cup. I don't remember how I got to talking to him at the library's cafeteria, but there I was, wolfing down the sandwich on which I'd put ketchup. One buys sandwiches at the library for the same reason we look at our cellphones even when we know there's nothing there. Then we put ketchup on it and wolf it down, or unlock the thing and play with a couple of buttons and then put it back in our pockets again . It's a pretense. "I don't get that type of music", he said. "Never got past the first track of any record ever... " Ah yes, we both had been standing at the bargains shelf, looking at $1 CDs, and I had picked up a Jazz one. It had a black & white photo of a man in a checked jacket holding a saxophone on the cover looking .. well ,looking blank. But I too had never gotten past the first track of any jazz record myself. And here was Bob saying the exact same thing. "Coincidence !", I said to myself, as I filled it in my trip report. The console blinked and the detailed-incident-report indicator flashed on. I flipped the device to voice mode and started narrating the incident in detail - where I'd landed, what I looked like, when it was , how I met the man in the library named Bob , and what his thoughts about music were. My next case was an investigation. A senior agent had died recently, somewhere in Ardennes, in 1941. This was surprising, because the agency has all sorts of protocol and regulations & permissions in place just to avoid this specific type of event. Contaminating a timeline by choosing it to be your final resting place is strictly frowned upon. Influencing is allowed , interference is not. Time is a place you can visit but not stay - Agency motto. I had been in a future time at that time, sneaking some hashes into certain bankchain thus short-circuiting the spiralling growth of a certain family-run business . The agency believed in redistribution whenever possible, and interference in events before they were extensively manifest. Actual interference needed approvals. Influencing by nipping in the bud was supervisor-sanctioned. I remember a couple of us had visited his graveyard, in the middle of a war, to see if we could make some sense of the act. We found a minimal grave with the most basic headstone . The epitaph, also carved crudely and in a hurry, read " God split himself into myriad parts so that he could have friends ", which was decidedly weird for that age. Scans revealed skeletal remains which matched our agents', and spectral scans confirmed it. A Timeline Archive Search Report flagged the epitaph to be the contaminant. Nobody'd've noticed anything odd about the grave or its contents at this time or place, but someone could find the epitaph anachronistic,said The TASR. It said it shouldn't exist until 1973. - to be completed

Tuesday, February 21, 2017

toymatic

http://toymatic.herokuapp.com has been launched. This has been a long effort, crawling slowly from page to page, stumbling past each half-baked python module and its pathetic documentation, past half-assed requirements and vision and google drive sheets and images and whatnot.

Past the limbo of framework-choosing and deciding on flask - and to think I rejected this because it used annotations, and that was too Spring-y, and it took me one dropwizard application and a rewrite and a spring boot almost-complete attempt and numerous abortive Spring-non-Boot attempts -which was very similar to standing next to a smouldering garbage dumb and inhaling burning plastic - until I became numb to the @ in flask.

After that came the minefield of login-logouts , which has been a superior grade of fcuk-you all along - even in Boot where adding the auth package to the pom kills all your end points behind an auth wall with a randomly generated password, and I haven't been able to figure it out eva - in Flask the battle with the multiple options has been a consistent problem ,with every extension doing a half-assed job and fitting in like a square peg in a round hole -( Flask-security how do I Bootstrap style your lame forms ?)

Now that we have 24X7 heroku and google analytics, I realized I forgot the other big thing - SEO.
So googling and downloading and printing stuff.  Maybe I 'll read it some time. Notice how so much of life revolves around google ? It is the Mega prosumer !!! And oh, reddit/r/seo has neat articles, unlike google's search results, so my conclusion in the last sentence was baloney.
Update :
I have moved toymatic to rails. devise solves  the login-logout problem. spent some time styling the user forms etc so that the page looks halfway decent. All pages are still not working - I think it might be better to start with the REST/CRUD combine and style that .To go the other way, the cart functionality needs to be added , then the checkout and mailer, then the add-inventory page - this one doesn't need styling, but it does need 'authentication_needed' .

Monday, February 13, 2017

My heroes are gone

- Terry Pratchett
- Raymond Smullyan
- Alvin Toffler

And I seem to have internalized being continually disturbed by people around me. I now stop doing whatever I do automatically every few seconds. I have internalized the self sabotage. Abyss in me

Thursday, November 17, 2016

too smart

"High IQ will kill your startup "  is a blog post I rescued from the void via wayback machine.
Scott Adams also mentioned on this theme, in his blog - smart people have an ironclad set of rationalizations that are impossible to break for the majority of people.
Signal Vs Noise & epistemology is the only way to go ?

two excerpts


From the Zero MQ book :

As such a vital part of our future, WiFi has a big problem that’s not often discussed, but that anyone betting on it needs to be aware of. The phone companies of the world have built themselves nice, profitable mobile phone cartels in nearly every country with a functioning government, based on convincing governments that without monopoly rights to airwaves and ideas, the world would fall apart. Technically, we call this “regu‐ latory capture” and “patents,” but in fact it’s just a form of blackmail and corruption. If you, the state, give me, a business, the right to overcharge, tax the market, and ban all real competitors, I’ll give you 5%. Not enough? How about 10%? OK, 15% plus snacks. If you refuse, we pull service. But WiFi snuck past this, borrowing unlicensed airspace and riding on the back of the open and unpatented and remarkably innovative Internet Protocol stack. So today, we have the curious situation where it costs me several euros a minute to call from Seoul to Brussels if I use the state-backed infrastructure that we’ve subsidized over decades, but nothing at all if I can find an unregulated WiFi access point. Oh, and I can do video, send files and photos, and download entire home movies all for the same amazing price point of precisely zero point zero zero (in any currency you like). God help me if I try to send just one photo to my home using the service for which I actually pay. That would cost me more than the camera I took it on. This is the price we pay for having tolerated the “trust us, we’re the experts” patent system for so long.

From Pirsig's book :


There are two techniques I use to prevent the out-of- sequence-reassembly setback. I use them mainly when I’m getting into a complex assembly I don’t know anything about.
It should be inserted here parenthetically that there’s a school of mechanical thought which says I shouldn’t be getting into a complex assembly I don’t know anything about. I should have training or leave the job to a specialist. That’s a self-serving school of mechanical eliteness I’d like to see wiped out. That was a "specialist" who broke the fins on this machine. I’ve edited manuals written to train specialists for IBM, and what they know when they’re done isn’t that great. You’re at a disadvantage the first time around and it may cost you a little more because of parts you accidentally damage, and it will almost undoubtedly take a lot more time, but the next time around you’re way ahead of the specialist. You, with gumption, have learned the assembly the hard way and you’ve a whole set of good feelings about it that he’s unlikely to have. 

#autonomy

Tuesday, October 25, 2016

zeromq and the brain

From the introduction of the zeromq book . Fixing the World How to explain ØMQ? Some of us start by saying all the wonderful things it does. It’s sockets on steroids. It’s like mailboxes with routing. It’s fast! Others try to share their moment of enlightenment, that zap-pow-kaboom satori paradigm-shift moment when it all became obvious. Things just become simpler. Complexity goes away. It opens the mind. Others try to explain by comparison. It’s smaller, simpler, but still looks familiar. Personally, I like to remember why we made ØMQ at all, because that’s most likely where you, the reader, still are today. Programming is a science dressed up as art, because most of us don’t understand the physics of software and it’s rarely, if ever, taught. The physics of software is not algorithms, data structures, languages, and abstractions. These are just tools we make, use, and throw away. The real physics of software is the physics of people. Specifically, it’s about our limitations when it comes to complexity and our desire to work together to solve large problems in pieces. This is the science of programming: make building blocks that people can understand and use easily, and people will work together to solve the very largest problems. We live in a connected world, and modern software has to navigate this world. So, the building blocks for tomorrow’s very largest solutions are connected and massively parallel. It’s not enough for code to be “strong and silent” any more. Code has to talk to code. Code has to be chatty, sociable, and well-connected. Code has to run like the human brain; trillions of individual neurons firing off messages to each other, a massively parallel network with no central control, no single point of failure, yet able to solve immensely difficult problems. And it’s no accident that the future of code looks like the human brain, because the endpoints of every network are, at some level, human brains.

Saturday, September 17, 2016

Brain Damage : Diagnosis & Treatment

Using software libraries is an important skill, as any professional software developer will attest. However, if software libraries are introduced too soon, they end up forming a wall of abstraction that leave smart people dumbfounded. Here my friend was, thinking she was on the cusp of learning the secret rules that govern computers; but instead, the instructor simply swapped out monolith of user-facing software with the equally opaque abstraction of the client library. Without mastering the language first — and learning how to read the library source code — my friend didn’t have the tools she needed to dig deeper and figure out what was going on at the bottom of the call chain.

The recommendation here is to learn C and move upwards to Python and maybe Lisp. 
There have been a few popular posts about Java not being a good starting point 



Here's a nice example - let's take an array of words like "death_star" and return an array of words like "Death Star", in Javascript, you _can_ do this :

--------------------------------------------------------------------------------------------------------------------

a.split('_').map( function(x) {return x.charAt(0).toUpperCase() + x.slice(1); } ).join(' ');
--------------------------------------------------------------------------------------------------------------------

If your company allows you to use Google Guava, then you can do this in Java:

--------------------------------------------------------------------------------------------------------------------
Function capitalizer = new Function<String,String>(){
                        @Nullable
                        @Override
                        public String apply(String s) {
                            return s.substring(0, 1).toUpperCase() + s.substring(1);
                        }

                    };

Joiner.on(" ") .join( Lists.transform( Splitter.onPattern("_").splitToList(key), capitalizer).toArray(new String[]{}));

--------------------------------------------------------------------------------------------------------------------

Now, one of them's much more readable than the other. And it's not the second one.

Also, the Kingdom of Nouns requires an appointed Noun Officer to be present for every verbing. Hence the "Joiner" and "Splitter" thinggies. Also note the short and succint function creation (Not!!)
Of course, Guava is what the cool kids in Java would use, if by cool kids you mean middle aged balding uncles wearing tee-shirts with collars for whom the words "Hitchhiker's guide to the galaxy" mean nothing.
Some programmers would use Apache's StringUtils, but these used to work in Sun Microsystems, and have now been assimilated by the Oracle machine and had their organs harvested.


And there's the more pedigreed lament by the creator of Shen  and a professor of computer science - Mark Tarver - marktarver.com/professor.html

All these point to what Alan Kay said all along , to paraphrase - any culture that spreads faster than education is a pop culture.  He also said these two following nuggets - from the Wikiquote page -

  • Sun Microsystems had the right people to make Java into a first-class language, and I believe it was the Sun marketing people who rushed the thing out before it should have gotten out.
  • If the pros at Sun had had a chance to fix Java, the world would be a much more pleasant place. This is not secret knowledge. It’s just secret to this pop culture.

So, how to avoid years of Java brain damage - In this case 16 ? 
A parting quote from John Carmack - 
"Low-level programming is good for the programmer's soul."

Still not convinced ? Or you _ARE_ convinced and would like to flog that dead horse some more ?Here's one more of my favorite bloggers who won my admiration by coming up with 
"Organizational Skills Beat Algorithmic Wizardry" , only he's talking about OOP and not Java

Don't Distract New Programmers with OOP
OOP Isn't a Fundamental Particle of Computing
Moving Beyond the OOP Obsession

I'll leave you with this list of dignitaries laying it on thick - if  you're still not convinved, you're in IT  , and not Engineering. The robots will be coming for your job soon

http://www.yegor256.com/2016/08/15/what-is-wrong-object-oriented-programming.html



The END (?)


Thursday, September 15, 2016

What a micro-service isn't - part 1

A micro-service is usually a web service . All web services aren't micro-services. To get promoted, you need to do a lot more.
Once you add caching, load balancing, failover, integrate logging aggregation and follow it with metrics and dashboards and alerts, then publish documentation on the intranet portal, you're probably good to go.
Your teensy-weensy web service is now a grown-up ,card-carrying member of society of services that make up your organization.
The current poison of choice is REST, mostly because it's simple - never underestimate simple - and open source - never underestimate availability of developers/coders  as  factor in setting the culture of a field.

Let's take each one by one.


  • Caching
There are multiple types of this. Usual suspects are Varnish on the outside and one of Ehcache, Memcached, Redis, Hazelcast etc  on the inside for application cache. Teracotta has gained an advantage by going one step further and providing easy-to-configure Hibernate level 2 caching so that Java developers need to only wag their fingers very little to get it going.
  • Load balancing & Failover
I'm ashamed to admit that I don't know what software provides load balancing. I assume nginx does, but I don't know. Some people roll their own.
Failover is easy - you make exactly one more copy of your web -service. Or better still,  install the same thing on another app server, preferrably on another hardware server, preferrably one more in another colo.
You'll also need a reverse proxy somewhere in the mix.
  • Logging aggregation & metrics
Hadoop for the win !!! we can now aggregate ALL your logs for 15 days for $$$$ and give you a unified browser based search interface.
No more SSHing into remote servers in the midlde of the night and doing a tail -f .
You just have to remember the proprietory (TM) query syntax and hope you don't need to use a regex to extract some field from your log statements to figure out what's going on when paged.
Search for "SPLUNK" on the interwebs.

  • Metrics and dashboards and alerts
See above.  Also this. Nagios and ChekMK are like plumbers. Grungy, dirty but cannot be done without. They provide metrics and graphs . So does New Relic. All of them run agents on your hardware.
  • Documentation
Swagger. That's all I'm going to say about this.

And once you relax, knowing that you're good to go, remember you aren't.
There's Security to worry about. OpenID or OAuth . And tokens. And user directories.
And domain names and  SSL certificates. And a mail server / service.
And your org ALSO needs 
  • CI (Continuous Integration)
Usually Jenkins integrated with your Github which runs your JUnits and then deploys.
Usually. 
It could also be Jenkins integrated with your SVN which runs your TestNGs.
Or  Microsoft Team Foundation Server and deploy by hand. 
More often than not, CI is only C till the compilation part. 
Chickening out before the deploy, or keeping the 'deploy' part for a dramatic hi-priority conference call/remote login session  at midnight is pretty common.
  • Automated Deploy !
There's Chef, Puppet, Capistrano. shell scripts.  A $$$$$ licensed version of IBM Urban Deploy (which just runs your shell scripts).
  • A/B testing & Experiments
Ideas come from statistics. Finch .
  • Analytics 
See next.
  • Hadoop for the Marketing team
We don't know what they do with this, but apparently we can use computers to keep the room warm against the terribly powerful air-conditioning by counting words in files three times each.
 And Informatica licenses. Also SAS licenses . And maybe a Revo R license because SAS doesn't do arrays or some such.
Squiggly colored lines on a white checked background are the key to unlocking budgets.

Care and Feeding of your Developers -
 what you need 
  • reddit and imgur for distractions and knowledge, hacker-news if you have hired Intellectuals 
  • youtube for music while working
  • an O'reilly Safari account  
  • coffee machine & free snacks
  • IntelliJ helps
  • one Hipster rails developer to show others what cool looks like

Observant reader that you are you will now notice that the heading is about what a micro-service isn't, and the blog post is all about what it is .  
It is in such paradox that sanity thrives and flourishes in this beloved industry of ours, and lets us use terms like agile-waterfall with a straight face, where sprints scheduled one after the other technically constitute a marathon which , as life coaches advice us  - should not be sprinted.

Let me leave you with something more solid than pop-philosophical ramblings.

A micro-service is not a UI. So budget for that too.