Demystifying Sugars: When, What and How?

Dr. Pooja Chaturvedi

All of us have, not just a sweet tooth but ‘sweet teeth‘ and sweets are a mandate when it comes to festivities and celebrations. With Diwali just passed by and New Year just around the corner, celebrations are going to continue for long and sweets are going to be unavoidable. So here’s a short pick where we can indulge in the goodness as much as we want to, still being cautious, to take care of our teeth while our tongue enjoys the sugary festivities.

There is so much of an uproar about how much of a devil SUGARS are, when it comes to our oral health, however, if thoughtfully taken, its really not so much of a jeopardy. So the questions may arise

HOW MUCH SUGAR NEEDS TO BE TAKEN?

WHAT TYPE OF SUGAR CAN BE TAKEN?

WHEN CAN WE HAVE SUGAR IN ORDER TO AVOID TOOTH DECAY?

View original post 533 more words

Goodbye MPJ | Fun Fun Function

I started watching Fun Fun Function around 4 years back and watching his last stream tonight has made me very very emotional.

I felt that I have grown along with him. His videos on softer aspects of life, programming and job were like a mentor supporting me. I used to look forward to watching those videos.

Although, I did not programme much in Javascript but related a lot with his videos on thinking around code. Like all the meta stuff around programming.

MPJs videos made me communicate around code much much clearer.

It’s sad to see him go away but I think all good things come to an end.

I would like to thank him for his contribution to the programming community.

On Notice Periods

My thoughts on revamping notice periods in companies.

Notice Period by definition is the time period between the resignation date and last working day of an employee.

Most companies in their legal agreements with employees decide a-priori the duration of notice periods which can range from 30-90 days.

Notice periods more than 60 days are heavily biased towards an employer. Employees, in most cases, have no option but to serve the time.

On the other hand, no employer likes to wait for 2 or 3 months for anyone to join and yet they themselves may have a policy of 2 to 3 months of notice period.

Superficially, it seems very hippo-critical.


Proposal to revamp notice periods.

Notice Period = Opportunities Period

We should rename Notice Periods to Opportunities Periods and make following a mandate for an employer. Under this Opportunities Period program:

  • Companies have an opportunity to resolve employees issues which weren’t obvious or could not be communicated earlier and have reached a stage where she/he has to look for opportunities elsewhere.
  • Employees have an opportunity to discuss their issues and companies are obliged to work in a time bound opportunities period to resolve the problem or at-least put forward a proposal to eventually resolve the problems. (Sometimes, it’s likely that problems are long term culture issues which when pointed out need prolonged time period for resolution).

The culture in the industry around notice periods is extremely toxic, rather switching jobs in general. Employees secretly start searching for newer opportunities, lie about their leaves when interviewing at other places during weekdays( some companies do allow anonymous leaves with no explanations required but one may have to give reasons for their leaves (another sign of a bad culture) at some smaller or tightly knit companies)).

It’s understandable that companies want to keep attrition rate as low as possible. Therefore, going an extra mile to retain an employee can vastly affect the economics of hiring and retention simultaneously.

However, a great amount of psychological safety environment should prevail a priori in a company for such an Opportunities Period program to work.

Talk to them, understand them.

When one resigns, employers should understand true reasons. Such an examination can either be conducted by the HR department or could be the immediate manager. If the employer can truly understand the reasons behind one’s resignation, then there’s no notice period altogether. The catch here is that most employees either can’t or don’t want to reveal true reasons perhaps due to cultural or personal reasons.

If the company concludes that they can’t really do anything about resolving the issues, then help them look for a right company which can solve their problems in a company’s network.

Some of these ideas may sound a little optimistic or idealistic. I don’t think there is a secret sauce to hiring and retention. All one can really do is experiment and figure out what works for you, your company or your industry at large.

Software Versioning

Scott Adams in his iconic Dilbert comic says that software is never finished. What the comic argues is that software development by definition is bound to incorporate changes and will involve changes to accommodate either business needs as improvements or bug fixes which were initially unidentified.

This inherently makes an argument that software is built in multiple releases. Each release is defined to solve specific problems – either add new features, fix old bugs.( and perhaps add new ones)

If you are writing any kind of software in today’s world, it’s imperative that you version your software.

Versioning Software

Software versioning has been a long standing practice which I’m sure emerged as a need. Necessity is the mother of invention. Linus Torvalds while writing code for the linux kernel realised the need to build a software versioning tool. This led to the development of today’s most used tool – git – for software versioning in 2005. A Linux Journal article details on origins of git as a software versioning tool.

Modern software development involves git as a de-facto source code versioning tool. It’s not that git is the only option available to version source code but is certainly the most widely accepted one.

 Mercurial(Hg) being another one.

It’s not necessary than one is better than the other in all aspects. Steve Losh’ in his article details on the real difference between Mercurial and Git.

Companies like Github, Atlassian and Gitlab have based their entire product lines on the concept of software versioning. It’s certainly not a trivial problem to solve and therefore you do see Github, Gitlab and Atlassian like giants existing in the market and vying for market share but largely dominated by Github as per  this report.

Versioning Conventions

Versioning software involves versioning source code to distinguish feature sets. Agile development methodology states that software releases incorporates group of feature sets released together and named as one release. There are several releases after the first release. These are generally termed as release milestones and companies have their traditional way of calling it out. Most companies have a release plan and abide by it for every product release.

Microsoft has a long standing tradition of naming it’s early product releases as Preview.While Google and other companies alike call it Alpha, Beta releases.

If you’re interested in release planning, I like how Mozilla details on release engineering in their wiki. It’s a release plan which is followed for all of their open source contributions.

These releases distinctions are largely around the target audience it’s intended for. For instance, most Preview or Beta releases by companies are intended for the early adopters. Early adopters, review and crtically analyse the software. They are generally okay with bugs or non-functioning of certain features and are willing to experiment your product. Most companies deliberatly ship Preview/Beta release to test market acceptance and get early feedback. It’s a good way to test out whether your release was okay with the known bugs or limitations or not. .

Semantic Versioning

A deeper sense of versioning software is related to semantic versioning. This is largely the versioning conventions which is targeted for software developers and perhaps other softwares which depend on the software being released. The audience which reads these releases are developers who are using their product. Semantic versioning involves following three key components to it’s schema

MAJOR.MINOR.PATCH

(Soft,Hard)Ware versioning for Internet of Things

Having worked in the IoT domain for the last 5 years, I’ve accumuated some sense of versioning software which works in tandem with hardware versioning. A hardware version can refer to the kind of chipset it’s built with. This chipset and other components associated with the hardware may determine the kind of software(or firmware) that can run on the hardware. This leads to another level of complexity which entails software versioning with respect to the hardware versioning.

A hardware version, semantically labelled as 1.1 may only work with software version 0.1 and therefore the developer cannot upgrade software(typically called firmware in the industry) beyond 0.1.

This is IMO an extension of semantic versioning of software and nature of it’s dependencies. A software or firmware versioning is inter-linked with the hardware version as well. This is not a big problem when dealing with virtualised hardware – largely true for the software running on cloud but becomes an increasingly important problem for the software or firmware running as close to the hardware. Essentially, closer you get to the hardware, more one needs to worry about the software and hardware versioning dependencies.

2018 in review

It is again that time of the year when I reflect back on the year gone by. It’s a useful exercise and helps me put things in perspective. It does also make me feel as if so little have I achieved in this previous year but that doesn’t really matter eventually. Each one of us is trying their best. If one knows that they’ve put their honest effort to the best they can, I think that’s what really matters.

I’ve put together some thoughts on things that did go well, things that didn’t go too well and what did I do most of the time of the year at work. In the end, I’ve put together a list of values that I wish to follow in my future life inspired by Kenneth Reitz list. Go checkout his list.


Stuff that I am happy about

First 10k and half marathon run

I completed my first 10 km and half marathon this year. It was a true test of my patience, determination and grit. I sure had to train for it and retrospectively, I know I did not train enough for it.

My legs pained a lot after the run but I am glad I could reach the finish line.

It made me think that running a marathon is similar to our life. Sure, there’ll be obstacles in your path but the aim is to keep moving and approaching the goal. Progress matters more than the speed. There will always be people and system around you to support but it’s you who will have to lift your feet, even if it’s paining the most, and reach the finish line. Every level of pain is worth it when you reach the finish line.

Hero acquires stakes at Zenatix.

It’s rewarding when others show confidence in you.

As a young kid, I have travelled a lot with my father on his road trips. Back in the days when we did not have the luxury of Google Maps, we used to stop by to ask people our way. There are always kind people who are willing to show you the path and put you in right direction. Angel investors and early stage VC capital companies are much like those kind hearted people who understand the pain of what it’s like to be lost and are keen to help you out.

As we used to move ahead in our journey, we encountered people who were willing to go an extra mile to help us out. I remember once an aged man, must be in his late forties showed us the direction to our destination. Our face sort of informed him that we needed more help than just the direction. He politely asked us if he can get on board and help us reach our destination. Hero Electronix, a Hero group company is like that well intentioned wise man who is willing to go an extra mile to help a traveller reach his destination. Sure, that wise man wanted to go that direction as well. I knew he was clever as well.


Stuff that I am not so happy about

No progress with iottales.com

IoT Tales was a blog I started last year but never really did anything after that. Except 2 blogs which I am not too proud of as well, nothing more ever happened. I will have to be more determined to build it.

Creating content has always been very close to me. There was sure a time when I even contemplated doing it full time only to realise that it wasn’t that great an idea.

I even bought some equipment for audio recording purpose which is as of today appreciated as a good showpiece in my bedroom.

I plan to make better use of it this year for sure.


How did I spend most of my time at work

Hiring

We as a team spent a considerable amount of time in hiring. We could hire 5 awesome folks to our tech team.

Hiring right people is really hard and extremely important at the stage we’re in. It’s natural for anyone to get excited by the external perceptions that’s built. We’re looking for a character which will gel in with our culture as well. That along with technical skills needed makes hiring extremely difficult.

There were times when I was exhausted. It’s only times like these which test your patience. I am thankful that when I’d almost given up on it, I had my colleagues who stood up back me up and take on the hiring baton from me.

Mentoring

I mentor 4 people at work. It’s been hard for me to shift from a programmer in individual contributor role to manage and mentor a team of engineers. I believe it’s a skill in itself to think broadly and have a larger vision to plan engineering effort to execute the vision. After all, vision without execution is hallucination.

It wasn’t something which came to me naturally and I struggled with it over the year. I am thankful that I have great people at work who have been supportive and made my journey easier and worth while. I am slowly getting hang of it.


Key Thoughts

While on the treadmill this morning, I curated following list of values. This is inspired from a list by Kenneth Reitz .

    Listen
Keep Running
Do Sleep Well
Always be curious
Drink lots of water
Persistence pays off
Be more in the present
Be Honest and Speak Up
You're not the smartest
Accept change gracefully
Your health matters the most
Be calm, confident and assertive

I’ll keep striving in 2019 as well and keep progressing on things that matter to me day after day.

If you are still reading, you are awesome!

Cheers,

Priyank

PyData Delhi 2017 Experience

I attended PyData Delhi 2017 over this weekend which was the first conference organized by PyData Delhi chapter at IIIT Delhi. In fact, it’s one of the first PyData conferences in India. If you wish to be a part of the community, join the meetup group

The conference was organised at the beautiful campus of IIIT Delhi.

I had a lot of fun and learned a lot over the two days of conference. Conferences are my way of taking a busy-break in my own way. I attend for workshops, talks, conference-friends-reunion and most importantly — the  hallway tracks.

Day 1 started with an awesome opening keynote by Siraj Raval on Mathematics behind Deep learning. It was a good introduction with a walkthrough of a deep learning code in a jupyter notebook. It was fascinating how Siraj could abstract out complex stuff and made it simple to understand.

Another talk which I particularly enjoyed was by James Powell. He live refactored a Python code to generate Newton’s Fractal on stage. The crux of refactoring involved around not using numba as a dependency and still maintain the same performance. He attempted to attain it by utilizing numpymethods which are mostly unknown to programmers who do not understand ins and outs of numpy library. I believe that doing that sort of refactoring live on stage is a commendable job. Post his talk, I had a good discussion around NUMFocus organization and PyData community at-large  and how working professionals can contribute back to the community like PyData.

Key Project Takeaways

Firefly — Firefly is a small library which exposes a function over an API. So essentially, one can call a function as one makes a API call over REST method. I’m definitely motivated to explore this sweet library further. Over the next one week, I would deep dive into the project to understand the components and perhaps blog about it as well.

NetworkX — In my discussions with James Powell, we discussed quite a few short- comings of NetworkX library. Since I am not completely familiar with it, this can be a good time to strengthen upon some of the basic knowledge I have about the library. By the way, if you’re looking to learn NetworkX, I highly recommend taking up this online course offered by DataCamp.

Overall I had an amazing time meeting so many smart people. I highly recommend everyone to attend PyData Delhi 2018 as well. If you’re looking to attend another super-awesome Python conference – look no further and attend PyCon India 2017 in November in New Delhi.

Cheers!

The missing component in my software development

I recently came across a job description for Software Engineer position at a startup which read –

Join us as a Software Engineer if you believe in this –

You don’t take pride in the code you write but the software that you deliver.

That’s when it just struck me.

That’s what the missing piece is. DELIVERY.

I figured that it is one of the reasons I miss on deadlines I set for myself. (I missed one yesterday which I’d set a week ago for a feature release. It’s disappointing and I am determined to work upon it.)

I realised that all I was doing was just thinking about the “CODE” and estimating the timelines. I was missing out on the “DELIVERY” component.

Whenever I am working on a feature release, I try to start with a Design Document and an Information Flow Diagram. That’s an awesome practice that I try to follow. It helps me plan my code’s structure really well and helps me visualize how different components of my stack would interact. What I miss out is the “DELIVERY” part.


My Thoughts on Missing Software Delivery Component

  • Being a finisher – Software Delivery requires a key ‘feature’ which most of the software developers lack – ‘Being a finisher!’. I think most of us face this problem and it’s hard to overcome. John Sonmez from Simple Programmer talks in-depth about it in this blog post. Highly recommended read.
  • Feedback inclusion time – Post software delivery, try to reserve sometime to iterate over the feature released based on the initial feedback from early users of software. Try to keep this feedback loop as small as possible. Eric Ries in his book Lean Startup talks in depth about this feedback loop. More concrete thoughts with context to my work were a result of my recent discussion with Amarjeet, CTO and Co-Founder at Zenatix.

If you’re like me and struggling with estimating software timelines, I highly recommend this book – Software Estimation by Steve McConnell

If you’re not a reader type of person, listen to this podcast by Steve on “Estimating Software“ at Software Engineering Radio

If you’ve got thoughts on software delivery, do comment on this blog post to discuss and provide feedback.

Terminal Setup to Boost Productivity

Terminals are software developer’s best friend to boost productivity. Even in today’s age of super complex IDEs, having a highly productive terminal setup can vastly increase the pace at which you get your tasks done.

Here, I will cover my terminal setup which has vastly enhanced my productivity.

iTerm2

I recently ditched the default Terminal.app by OSX and replaced it with iTerm2 and I am definitely not going back.

Zsh

Z Shell or Zsh is another shell implementation similar to Bourne Again Shell(BAsh) and also a scripting language. All features of BAsh are already integrated in Zsh.

Ubuntu

sudo apt-get install zsh

If you face issue installing on Ubuntu, follow this thread.

MacOSX

brew install zsh

If you wish to understand why Zsh is awesome, check this desk by Brendon – Why Zsh is Cooler than Your Shell

Some useful links:

Adding plugins to Zsh

OhMyZsh – Get Oh My Zsh using the following command.

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

tmux

It is a program which runs in your terminal and let’s you switch between several programs and do a lot more. More details about tmux are here.

Customising tmux

tmux uses a file called tmux.conf to store it’s configuration.

Here’s my tmux.conf.

set-option -g default-shell /bin/zsh

# Tmux uses a 'control key', let's set it to 'Ctrl-a'
# Reason: 'Ctrl-a' is easier to reach than 'Ctrl-b'

unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

This is most basic customisation. You can do much more than this Read more here.

What do I do at conferences and meetups

A lot of people often ask me for reasons I attend conferences or meetups and what essentially I do at these conferences ? I believe blogging about it could be a good way to reach out to a larger audience.

There are several things I do at conferences and meetups apart from listening to amazing talks – Enjoy sumptuous lunches, Making “conference friends” – friends I meet only at conferences and later interact on Twitter! There’s of-course much more to it. I ask questions. A lot. I try to interact with as many people as I can.

One of the common doubts which people have is that what should I talk about to people I don’t know. Maybe this blog will help them with few pointers.


Thinking upon the kind of questions I generally ask, they tend to fall into following categories:

Questions I ask fellow attendees

  • How does your day look like at your work place ?
  • Do you do anything specific to make yourself get better at your job ?
  • How do you manage your time to get maximum efficiency ?
  • How do you refresh yourself when you feel you’re burnt out.

Questions I ask speakers

  • How do you manage time to do a talk proposal and prepare for it ? (Of course I am assuming you’re really good since you’re proposing a talk or are invited to give one :))
  • How do you prepare your slides ? Do you follow a theme on which you prepare your slides (minimalistic or full of examples or story building..)

Such questions help me understand their perspective and how they are working or doing similar kind of stuff I do differently. The idea is to not copy-paste the ideas shared by others but more so to understand the ones I can adapt to.

Questions I ask sponsors

This is one of the most important things I do at conferences. Meet the sponsors and spend time with them. Sponsors are an integral part of any community-driven conferences like PyCon India conferences, GopherCon India conferences. Most companies sponsor from hiring perspective. I visit their booths to ask following questions and you should too! (apart from accepting goodies from them 😉

  • If I am talking to someone from engineering team, I often ask them about their technology-stack, best practices they follow ?
  • What is the most challenging part of their job at their company in their job role ?
  • What’s their hiring process like ? What are the softer aspects of a candidate that they’re looking for ?
    • This is not only important if you want to get hired but also if you wish to understand the hiring process to follow for your company or startup.

If you’ve got interesting questions that one should discuss in conferences and meetups, please comment!

GopherCon India 2017 Experience

3:30 am flight to Pune – just to optimise on the cost and time!

Awesome. Totally worth it.

The GopherCon India 2017 was extremely well organised by Emerging Technology Trust with an excellent Master of Ceremony- Gautam Rege. The conference began with a keynote talk by Frances on “context” package and was followed by several interesting talks on a variety of topics. Overall there existed a good mix of architecture as well as implementation level talks. It was the third edition of GopherCon India attended by close to 300 delegates with representation from 12 countries.

Key Talks

Following are some of the talks which I particularly liked.

  • Fast and Scalable Machine Learning with GoLang by Vidyasagar Nallapati – Talk slides
    • Vidyasagar talked about how they built data pipelines using services written in Golang at EMC2, their reasons for exploring Golang as a programming language.
  • Building Distributed Timeseries Database in Go by Matthew Campbell – Talk Slides
  • “Flogo – A Golang-powered Open Source IoT Integration Framework by Kai Wähner – Talk slides

My Lightning Talk – Server Monitoring using Influxdata

I got an opportunity to give a lightning talk on ‘Server Monitoring using Influxdata’. I detailed about how at Zenatix, we’re using Influxdata’s TICK stack for monitoring our servers with right alerts in place. I followed it up with demonstrating some Golang code for writing a Telegraf plugins. Talk slides

Lighting Talk Slides

Key Projects Takeaway

My discussions around projects revolved around IoT and Data Analytics. Following are some of the good projects that I’d like to try out in-depth.

  • Flogo – Open source project written in Go for IoT integration. It’s a project released under BSD-style license. It’s definitely one of the projects that I would like to explore from the architecture standpoint.
  • Gobots – I came to know about this through on my hallway discussions.
  • Vulcan – Matthew is his talk detailed on how they built Vulcan on top of Prometheus at DigitalOcean. This issue on GitHub details on why Vulcan exists.

The Hallway Tracks

These are tracks which happen when you’re interacting with attendees in the hallways. One of the core reasons why attend most conferences!

In these ‘tracks’, I discuss about the problem we’re solving at Zenatix and also get a perspective on what others think about it.

I had an amazing discussion with William Kennedy on writing a proposal document before planning any feature/bug. According to him, one should try to bring in “Why” before writing any line of code.

According to him, while writing a proposal document, outline it in the following manner.

  1. History of the problem – Give users a flavor of the problem with information around the problem. This is more like the literature survey in academic publications.
  2. Problem definition and why you’re solving it. – Mention the core of the problem and reasons for solving it.
  3. How we’re solving – Details on how we’re going to solve it.

I highly recommend everyone to read his blog.

Overall Experience

I had a tremendous learning experience at GopherCon India. The GoLang community in India is pretty young. There is a lot that needs to be done to spread the magic of Go around. I believe conferences such as these are one of key factors in determining the success of the community. Kudos to everyone involved with GopherCon India 2017.