Category Archives: hands-on

The IoT AI Manifesto

With the recent sloppiness in implementation of software & hardware and synergizing them into so called the being called IoT  The time is appropriate that a defacto manifesto be brought in place for the artificial species called IoT.

I assume most of us are aware of the Three Laws by Isaac Asimov.

What I propose is build for the interacting robotics with lesser-minded-human-kind!

  1. An equipment if called IoT should abide by:
    1. It should be considered a legal offspring of the last hand-off human entity.
    2. It should have an IDENTU  mode that should let it spill out its purpose/identity/owners.
    3. It should have safe mode where any voice may command it to stop the current action.(something like a STATUE/RESUME mode)

Pretty simple! Very much make-possible!

Thoughts?

What Elon Musk can learn from Java App/Cloud Deployments!

I had an unproductive day yesterday!

I did nothing, but slept through most of the day. And then late night this next challenge of deploying the hush-hush java app over the cloud started to bother me.(afterall it was not a totally unproductive day, thinking wise!)

And then, flash back to a few days, where comparisons were made, what I am doing (javascript ehew!) and what one of the current top living inspiration in the current world Elon Musk is doing, and then I went into sad slumber!

Then yesterday happened, and then it clicked:: we Java devs(web ones, not hard core jdk ones) are orchestrating everything in lifecycle of what Elon Musk is trying to do!

Here is the analogy(it can be extended wonderfully!):

  1. The WAR(Web ARchieve)(sorry, I am old fashioned) is like the unmanned space ship.
  2. The dev JVM is like simulated Mars environment.
  3. The cloud is the SPACE where the bits travel to-and-fro in form of data/packets.
  4. The machine IP Address is like the lat/long of where you want to deploy.

So my current app is in its final integraton phase(hush-hush…) and I am trying to accomplish Slide Driven Development.(nice term!).

Slice Driven Development :: A development approach where a feature/flow is shipped to staging environment as soon as it becomes usable.

Currently I(with @explorer) are trying to integrate all features/flow of the hush-hush app, While I am totally unsure/unaware how it will behave when deployed on staging/production environment. Therefore, I had come up with this approach :: The momemt a feature becomes bug-discoverable, it ought be shipped so that:

  1. Move to the next flow..
  2. Bugs can be quashed..
  3. (most imp)Our path of going from dev–>staging–>production for any feature should be seamless and smooth like  skating on butter!

And then, a Eureka moment happened!! And this blog post came about!

Your Takeaway: If you are on a team working with Elon Musk(or anyone trying to transport stuff from place X to place Y, in an unsure environment), you can leverage from the experience of thousand if not millions of deployments of web java developers trying to deploy WAR file formats from local dev JVM to production JVM.

We know the nuances of this lifecycle!

It might save you some time! 🙂

The Slow Moving Manifesto!

If you are being tailgated, we recommend you follow this approach to come out of that situation!

Go Absolutely Slow!

YES, surprisingly it works out just fine!

Purpose: To know who is tail-gating you AND Why?

How it works?

  • If the vehicle following you sees you slowing down, they will have no choice to speed up (which means they were not following you) or look-you-in-the-eye. (either ways, the problem is solved!)

Benefits of slowing down

  1. By slowing down, you opened an opportunity to talk.. Human Connect!
  2. By slowing down, maybe you can have a running conversation, you are driving + talking(giving direction who knows). Saves time!
  3. By slowing down, you saved lifes! No stats but still true!
  4. By slowing down, You enjoy the road-side scenary. (remember enjoy the journey not just the destination!)
  5. By slowing down, You literally look the problem in the eye than running away from it.

There goes, we have the Slow Moving Manifesto!

Credits: Smita, Rachit + (KennyG played in our neighbouring park @ 1000 hrs) 🙂

Java Lookout — Java Language and Platform Futures @Devoxx, Belgium.

Feedback on watching the Java lookout!

1/Bad humour. Meh!

2/If you cannot commit anything to the language, why broadcast it? Are you scared of a features popularity? Rant on a similar thing in JavaEE

3/Spineless Humour!  https://youtu.be/oGll155-vuQ?t=564

4/Listen carefully :: “You may have to use type args more with lambda’s” https://youtu.be/oGll155-vuQ?t=721 So your principle of bringing least disruptive change FAILED!

5/Freeze the screen :: Which code is still less readable? https://youtu.be/oGll155-vuQ?t=830 Come on! Stop pushing #JEP286 #DieJEP286 IT DOES NOT MAKE SENSE. Simple!

6/Sadly the current Java architects are trying to add features to reduce developers time to build a feature. There are already players to do this: Spring et al. You should be focused to create the playground, and not the rules. Why can’t they understand this simple fact? Look at the earlier Java architects… Did they focus delivering a CS concept or ease of developer writing the code? Don’t outsmart Spring, Don’t outsmart IDE’s outsmart CS concepts and implement them in Java.

7/Improved Switch design is being talked about, this is a brainstorming topic, it does not make sense to show-off it *conceptually* here!

8/Value Types — Only needed if you are pixel developer or probably a compiler writer. A lot of people writing Java are Enterprise users. We have custom wrappers, and would *not* need Value Types. But nonetheless its a welcome feature!

9/Project Valhalla — Get a basic version out, build on it later. Do not try to deliver a 5 story building in one go. Deliver one layer per version.

10/The decision for priority of a feature should have been *complexity* and if some feature is wanted and do-able, IT SHOULD BE DONE AND NOT POSTPONED.

I have gone a lot rusty with Java! :-/

 

 

When the internet was crippled to a halt! ~ The dDos attack – A Post Mortem

The Problem

Couple of days back, 21-October-2016 everyone connected on the web experienced sluggishness in connecting to the normal sites and saw obstruction in their regular works.

The scenario can be visually described as follows:

DDOS Attack Explained
DDOS Attack Explained

Incase you might be wondering why this attack happened now, the internet is way mature, why can’t it protect itself from such attacks?

Well, then do read on…

The Players

From an ideal perspective the players in the attack are listed:

  1. Users of the web (us) (attackers and victims)
  2. ISP’s (medium through which attack was carried out)
  3. Device Manufacturers (Things, which got compromised — zombies)
  4. Regulatory Organizations (They are mostly sleeping or doing other important silly stuff, lets leave them out of this discussion)

The Premise

Let us look at those questions asked earlier and more:

What is dDos?

It stands for distributed Denial of Service. Consider your regular pesky thing that you have to do and can’t live without?(siblings,kids,neighbours.. anyhuman thing). They come nagging to you, you can handle it but maybe 10 requests in a day a max! The 11th request from that pesky thing will get a denial of service response!(simply a No!)

Now,Imagine yourself at a play house. And you are already having a minor headache(it was Friday, everyone was in the mood to relax). Multiply your single pesky thing with say 10, you are bombarded with pesky request from everywhere, what will happen to you? You might handle say 20 requests at that moment, looking at the situation, but a time will come soon where you will get exhausted and simply stop responding to important requests of like : open the door, and you are standing still!

You just got dDos’ed 🙂

Can you explain it in layman’s terms?

Here is the wikipedia entry.

I still did not get it..

See this:

Why this attack happened now?

It was waiting to happen, its like too many cooks, spoil the broth kinda scenario. Lot of unpatched/sloppy devices connected to the internet working for you and they all had a common zombie entry point, that simply got activated!

The internet is way mature, why can’t it protect itself from such attacks?

I am sure there are some orgn that were actually fighting this menace! Imagine a hospital unable to get reports of a patient in critical condition!So I am pretty sure what got reported and what actually got fixed and treated is somewhat different. So the internet is not at all mature, we are still not ready to have our life depend on it, our livelihood might depend on it but not life!So some orgn might be involved (even now) preventing many such attacks to keep the internet working, and some sleeping regulations might have also protected and saved us from a much more severe attack!

The rules are pretty simple, everyone is united on this matter and no one likes a dDos attack to happen! It actually interrupts normal/perceived flow of life on a day-to-day basis.

So basically its the attackers who (misued?) a compromised device and affected the network. Its pretty clear, there is something that needs to be fixed/controlled in the wild. And its not impossible..

Onto the solution then, shall we proceed?

The Solution

Two parts solution can be proposed:

  1. Regulation. In an ideal world, regulation is already in place and device manufacturers are supposed to follow them and hence they are able to sell their products. So something stronger needs to be put in place for regulation. Say if a device is an IoT kinda device, then as per regulation it should be allowed to use 5% of the bandwidth. If its a phone or a computer, then it will not have such a restriction, or maybe it can have!
  2. ISP Level Quota Software. ISP’s would want to pitch in this idea, where a custom configuration software would be installed at per user site and there based on the MAC address the bandwidth quotas can be defined. Say you got a new IoT device for your home, you will get to configure and set a max bandwidth that device is allowed to consume on your home network.

Thoughts?

Talking to mysql on Bitnami google-cloud Tomcat instance

The Java deployment world is plagued with infra issues! Things we need to take care of:

  • Apache
  • Tomcat
  • RDBMS
  • Firewall/Ports
  • Shell accesses
  • Security/Encryption/Keys
  • File System Storage
  • Indexes corrupting and the list goes on…

So after my failed attempt to understand/decipher CORS issues on the AWS platform, I fortunately stumbled on google-cloud! And it is one hell of a bouquet of services for us petty and dev-ops-complaining Java folks!

So churn out a bitnami tomcat instance and you get the feel of the aws thing. For over a month now my google cloud app was(still is) talking to the mysql instance on aws, before that starts to drain my mini wallet, time to configure a mysql instance on google-cloud. And here are the steps:

  1. Have access to the SSH into your google cloud instance working
  2. Create following script (/home/bitnami/mysql-init):
  3.  UPDATE mysql.user SET Password=PASSWORD('NEW_PASSWORD') WHERE User='root';
     FLUSH PRIVILEGES;
    
  4. sudo /opt/bitnami/ctlscript.sh stop mysql
    
  5. sudo /opt/bitnami/mysql/bin/mysqld_safe --defaults-file=/opt/bitnami/mysql/my.cnf --pid-file=/opt/bitnami/mysql/data/mysqld.pid --init-file=/home/bitnami/mysql-init 2> /dev/null &
    
  6. sudo /opt/bitnami/ctlscript.sh restart mysql
  7. Remove the script in step 2.

So it turns out to get mysql talking on your bitnami instance you only need to reset the password.

Further to enable remote access do this in

/opt/bitnami/mysql/my.cnf:

  •  #bind-address=127.0.0.1
    

Next to enable remote mysql access via workbench you need to enable firewall ports to allow connections for tcp 3306 for a specific ip on your google cloud instance.

And there you go, you have a lot powerful config, much like aws ready to be used, backed by google!!

 

 

Sculptor’s Log

There was once a log, ready to have a meeting with the Sculptor, getting ready for the grind!
Casually it approached the scene, not knowing what is to happen to it next,
Waiting to see who/what is the Sculptor is and what can he do for it?
Seeing a couple of wasted logs around the scene, it could not resist but ask their state!
They said in chorus – “One word, Do as the sculptor says” as they were tossed out of the view.
“Ahh, What could the Sculptor ask me to do” was the only thought pacing up and down the log’s mind!

Log being chiseled!

And the moment of the log’s meeting arrived…
Placed in the hands of the Sculptor, the log could not giggle profusely!
And then.. Bam! Sculptor’s chisel tore apart a big chunk from the log.
And the log screamed to the Sculptor, “What are you doing, please stop”
The Sculptor stopped, and asked whether the this log did not have a chatter with other logs?
The log said, “They said only-to listen to you,they did not tell you’ll make me undergo this chisel”
The Sculptor looked clueless, and the log asked itself to be excused.

After some time of pondering…
The log thought of going through the process as one strike a day…
And the deal was made…
Days,Weeks,Months passed and the log took the blow daily and frowned and complained..
And then one fine day, the Sculptor said to the log, I’m done with you.
And then the sculpted-log was moved to a different place — not knowing where and for what, it cooperated!

Being sculpted

A few days later…
The log was placed at a higher platform, and then by chance it got to see itself in a mirror!
And it could not believe what it could see — A beautiful deity crossed its sight.
Not believing that was It, the log waited for another such day and then the belief was confirmed.

Outcome of fore-bearing the chiseling

The log had a good after thought..
All the suffering, the chiseling, was given to it for its shaping.
Had it complained and not gone through the grind, it might have become another wasted log…
Thanking the Sculptor, (and the wasted logs for the advice), for his efforts, it just smiled.

(This post is inspired from a story over-heard — all images are googled, no claim on ownership)

Autos hold the key to the future of self driving cars!

This is part-2/epilogue to an earlier post title Why is new-style(apps based) cab booking still a mess?

In my recent bad-experience with the cab booking scenario, I decided to try out the autos on a similar route of commute! Fortunately, I can shout out to an auto-walla from my home and there is never a dearth of options thanks to the auto-wallas agreeing to go by the meter!

Time for a good detour of the main route?

What is the most weird mode of transportation you have ever been subject to?

My 7 km long most weird transport medium! [PS: I was not driving! ;-)]

While keeping a tab on the state of self driving cars, and the experiments being done, no wonder the google-car looks so much like a delhi-auto!

Delhi-auto as google-driverless-car!

And having experienced first-hand the skills of an auto driver, I am inclined to suggest,for any thinking future self driving company, if you are looking out to train your cars, reach out to the auto-wallahs!

Here are the motivations:

  1. Lowest ground distance — matching to the sef-driving car’s design.
  2. They know the best routes — Point A to Point B, you end up spending 500 bucks or 250 bucks!
  3. They know how to best absorb a speed breaker cruising @ 25 kmph and make you feel as if you’re flying!
  4. They know how to best wake you up(in case you start to feel dizzy) by bumping you in a pot hole!
  5. I have never heard/read about an auto wallah being involved in an accident( a quarrel is not an accident) — Best premise for self driving cars!

What I am suggesting is have the driverless cars minds trained by putting an Augmented Intteligence chip in an auto! First ride, they just learn what is the route all about, good roads, bad roads,bumps,breakers. In latter rides, they should pick up: speed up/slow down suggestion,collision detection, collision prevention, safe stopping etc. All this should happen in shadow mode, where in realtime the chips response and the actual response should be monitored! Once an acceptable level of confidence is arrived at, let the chip start talking about its suggestions. Once the driver starts trusting the suggestions, go auto-pilot! 🙂

Also, I doubt if the driverless cars are made to ride as a sensitive travellers? Like lets say someone cannot handle bumps as efficiently as a child can, Do these vehicles cater to this requirement?(PS: auto wallah do cater to this requirement!)

The future of driver-less cars is exciting, but the possibility of breaking it down is also very high, as someone can use a VR thingy and make the AI sensors of the car sense that an obstacle is coming and in reality there is no obstacle and eventually a future race of hacking driver less cars where you’ll come across advt like “Make the other driver-less cars around you go automatically slow”

My car makes other cars give me more way!

In closure, The roads will be way too full of cars and quarrels, we should look up! 🙂

Why is new-style(apps based) cab booking still a mess?

I assumed this new style will beat my old/traditional way of the whole cab experience, but HELL NO!

Every riders woes – Minutes before boarding a cab!
  1. Booking beforehand
    • Apps:You cannot book the app based cabs beforehand. One service allows, but only 0000 to 0700 hrs ? That’s superb customer service, Their systems maybe do not take peak hour requests!
    • My Way: Go ahead and book the cab even two weeks ahead and the cab will be right there for your need!
  2. The day of the booking
    • Apps: You forget about your last minute travels plannings, instead dedicate one human to constantly check for cab availability.
    • My Way:No problemo sire! We’ll be there and we’ll also carry your luggage from your house to the cab!
  3. At the 11th Hour of the booking
    • Apps: Hope you get through “ride now” option! And if you cancel, you are logged out of making any further bookings! Grr!
    • My Way: We will be there in exactly 10 minutes! Unfailingly!! (beat this experience!)
  4. The cab is there — where?
    • Apps: I am standing here, where are you (happens atleast 2 times) + Sir I thought booking was for 1130 hrs, you are coming after half hour, please cancel your request + Sir, you please cancel as you are not coming + Once I had this cab driver run away,with the cab, right infront of my eyes! That was so sorry look on my face!
    • My Way: The cab is visible right infront of your gallery!(Beat that! again? anyone??)
  5.  The ride begins
    • Apps: Sir, which route?. Hope you know where to go. We’ll ask someone there.(spend 15 minutes searching and asking everyone around)
    • My Way:Sit back, relax, sleep, They tell me when the spot is reached!(They use their phone for reaching the destination! -Ain’t that smart!)
  6. Post-The-Ride :: Tu Kaun?
    • Apps: me:Thank you for not abducting me and extorting money!
    • My Way: me:Thank you for taking care of my traveling woes!

Although “My Way” is 2x cost wise, but other comforts are simply not comparable! I can quote 10 more other problems with the apps. It’s still not my preferred way of traveling!

Driving dislikes me! I am interested to reach my destination with least hiccups!

I’ll post a follow-up with the state of self driving cars!

The Sound Experiment ~ Internet Radio setup

Internet Radio

 

Internet radio is an age old concept, that I first got awed using my nokia e 51(RIP). Getting advt free 24×7 guitar songs was a super surprise! And this week I got the opportunity to help set up the infra for a similar requirement!

Here are the lessons:

Enter Windows:

If you are a windows user, you have lots of quick support setting up a winamp backed shoutcast dsp based streaming solution, right from your desktop! Select a playlist and redirect it to the dsp, Viola: You have your local playlist being streamed to the world to enjoy!

Enter mac:

Coincidently, the winamp software is not available at its full fledged version for anything other than a windows! So the previous solution falls on its face!(You get winamp, but not plugins et al). So you have to try:

1/Broadcast Using This Tool

Screen Shot 2016-01-10 at 2.21.29 pm

The problem with this tool is it cannot hijack a running audio, instead, it can only take an input from a device(like mic). Any 3rd party tool that mocks a running audio into a once coming from a device might make this tool very useful! Its a super trimmed down version for anything broadcast!

2/Nicecast

Screen Shot 2016-01-10 at 2.23.04 pm

Nicecast is good for the naive user, but it has a limitation of noise messing(deliberate overlay of a noise sound) after 60 mins of broadcast. The quality of broadcast with Nicecast was even better as compared to winamp solution and aint it cool they provide you with a url in realtime! Sadly their trial version does not let you play with shoutcast streamings!

Update 3: No need to buy the licence :-(, you can link shoutcast servers from nicecast in their trial!

Enter Linux:

Did not try it, but if you are on a linux system, you have to try liquid soap, for the pure fun of command line!

This is what liquid soap does from the command line — Thats autoDJ mixing powers! Way too cool 🙂 Muse is another option worth checking out on a linux distro!

I did not go full fledged to try out unattended hosting(autoDJ), but there are host of plans/providers for that requirement(links shared below).

Useful links:

Video Tutorial: https://www.youtube.com/watch?v=K_rMNo4tkJc

Get free hosting — http://myradiostream.com/get-started/

Another free hosting — http://www.caster.fm/

Not India specific(free autoDJ) — http://free-shoutcast.com/

Free/Small AutoDJ account — https://shoutca.st/

THE STREAMING SOFTWARE — https://www.dyne.org/software/muse/

THE STREAMING COMMANDLINE — http://liquidsoap.fm/index.html

Streaming options — http://blog.wavestreaming.com/5-best-client-broadcasters-to-stream-live/

Various baud rate files — https://www.fastserv.com/kb/article/mp3_bitrate_selection_and_samples/

Talk on baud rates — http://blog.codinghorror.com/the-great-mp3-bitrate-experiment/ and http://sound.stackexchange.com/questions/26222/are-there-any-audible-differences-between-192-and-320-kbit-s-mp3-files

I wish we had more native radio streaming service providers on the web (esp India), why that is not the case maybe due to radio not being accepted as a medium people prefer to hear!No doubt it is the one with max reach!

Also basic things like, why a low encoded audio only does not play well on one stream and a high encoded music play flawlessly on the same stream -Are questions that still bewilder me to an extent! Time to pick up the baud rate/bit rate/encoding/decoding concepts and revise!

Any sound engineer around!?(pun intended!) 😛

Update: The super fast audio hiccup, could be due to chipmunk effect!

Update 2: This experiment is not complete without referencing to podcasts! And here is the magic portion! 🙂

Further monetizing the audio is also an option which shoutcast provide by stealing 2 mins of your stream time and plugging in their advts! IMO, with things that go straight from the ear to the heart, advts should be avoided! Even if its the extreme nuisance of hard rock music or the sound of rain drops & thunder and anything in between! A way better option is get the subscription based model upfront(maybe with a trial of a week or two) and then people choose to keep or trash!? 😀 🙄 ??

Update 4:

AND THE WINNER IS: http://shoutca.st !

Reason:

  1. They give you 50 mb free auto dj.
  2. They give you servers in France(most reliable country in tech!)
  3. They run liquid soap underneath! Yay!
  4. Their solution is cross-platform.(read:cloud)
  5. Their interface is typical of a french mindset! 😛
  6. You can switch to live telecast whenever you want!
  7. They offer icecast and shoutcast v2!

Take my word for it, go for it, for a truely awesome streamed internet radio( minus podcasts) setup solution!