Dot Your I’s, Cross Your T’s, And Get Paid

An independent professional in my network recommended I watch a talk by Mike Monteiro called “F*ck You, Pay Me” when I asked for advice on contracts and client relations. Whether you’re freelancing, consulting, part-time, or full-time, the advice given applies to any contract you sign related to your professional skills. Below is a summary of the video and I’ll also cover how this can apply to a full-time position.

Read More »

Course Review: Docker for Java Developers

This post will go over a course Lynda.com (company owned by LinkedIn and by extension Microsoft) to learn about Docker for Java Developers.

Lynda.com Course

Docker

Java 

Usefulness And Overview

Currently, the course topic is relevant. The paradigm of “containerization” or releasing your software as self-contained collections of related packages and dependencies called “containers” is catching on quickly across services in the industry. Even though this says it’s for Java developers, it’s not really Java specific. All the concepts and commands used are language independent to a certain extent. The part that the course missed out on was Kubernetes, a fast growing solution from Google related to container management.

Is this particular course a good use of your time to learn about Docker? Maybe. A lot of the content was easily found in documentation or by searching online. If you like information presented in sequence with context, yes, this is a good choice. Otherwise, it may be tedious or too shallow in topic coverage.

The course follows a mini-lecture with demo format. You can copy the course materials and follow along with the demo. The course starts off assuming you don’t have Docker set up. The content begins with installation and follows a simple web app through containerization, deployment, release and scaling. It further goes through monitoring options and maintenance commands.

Course Details

  • The instructor introduces Docker by showing you the download websites and how to install on various operating systems.
  • He introduces the course material by showing how to use git to clone the course materials and use them.
  • The first use of Docker is to create a container with the sample application and use the start and stop commands along with options. List running containers as well.
  • Next, the website is deployed using the container and various health checks are shown. An important not here was how container health is different than application health.
  • The lecture shows how to automate the use of containers in a build and release flow.
  • Container sharing, tagging, and maintenance in a container store are shown along with best practices for tagging.
  • Next was a more complex application with multiple services with a container that needed to be started up in a particular order (application and database).
  • He went over the use of container contexts to allow running multiple instances of a container on the same host.
  • This then moved into more advanced use of containers including swarm mode with rolling updates, certificate rotation, auto-scaling, and fail over.
  • He went over container maintenance and use of the master node to manage other nodes in the cluster including the use of drain and pause commands.
  • Another advanced topic covered was storage nodes and how to use container independent storage or distributed storage solutions with containers.
  • As the last topic, he went over tools and other plugins for monitoring including the stats CLI tool, Prometheus and C Advisor.
  • He did not go over Kubernetes but recommended it as a future topic.

What Doesn’t Kill You Slowly Grinds Away Your Sanity: Psychological Burnout

Often you will hear people say that someone is “burnt out” or “I was really burnt out on [project/team/company].” Casually, this means you are exhausted or temporarily stressed on a team. This often is thought of as a passing condition. Unfortunately, there is a more formal type of burnout called “psychological burnout” or “occupational burnout.” Here I’ll talk about what this is, how it can ruin your life, and how to fix it.

IMG_20181023_092942
Top: this is your brain. Bottom: this is your brain crushed by burnout.

What Is It?

Burnout is a pathologic syndrome in which prolonged occupational stress leads to emotional and physical depletion and ultimately to the development of maladaptive behaviors (e.g., cynicism, depersonalization, hostility, detachment).

https://www.sciencedirect.com/topics/nursing-and-health-professions/burnout-psychology

This is a fairly formal definition and doesn’t include a few key points:

  • This type of burnout can last years
  • You may develop long lasting mental health problems such as depression, alcoholism, and eating disorders
  • It can take months or years to recover
  • By the time you notice your “maladaptive behaviors”, it’s already happened to you

You May Have Psychological Burnout If…

We are all different and the signs of this type of condition are different per person too. On top of that, we have such poor mental health support (in North America) that we don’t recognize these problems as repeated exposure to stressful situations. Remember, these “symptoms” are a stress reaction, not a personality trait.

What To Look For:

  • No matter how hard you try to stay optimistic, you can’t see anything going well and you constantly fall into cynicism and criticism at work or elsewhere.
  • You take a lot of breaks at work to get away from work with activities like eating, drinking, or over-exercising.
  • Your week follows a pattern like this: work Monday to Friday, sleep Saturday to Sunday.
  • You become more resentful of people asking you do to things even if they are simple.
  • You start blaming yourself for not working hard enough, not being tough enough, or not being smart enough to overcome the challenges you have at work.
  • You enter a protective combat mode: you are argumentative and defensive about any changes or comments related to your work. When you look back on what caused it, these are usually no attacks on you but you can’t stop yourself from reacting that way.
  • You feel isolated. This can be emotional isolation: no one is there to help you, you need to fix this all on your own, your coworkers or boss don’t have your back. Or physical isolation: you start working from home more, you don’t want to participate in any team activities, you stop responding to emails or chats messages.
  • And much, much more…

The worst part is the slow creep: you won’t notice a big, sudden change. Instead, you’ll find yourself here without knowing how and you’re not sure how to get out.

Causes

When we talk about burn out in the casual sense, it’s usually caused by a tight deadline, late nights, or the frenzied kind of work we associate with “crunch time”. Interestingly, this isn’t the same as what causes psychological burnout.

This is how I sum up the cause of psychological burnout:

You put effort into something and you got no result (or not the one you expected).

Here are some examples of how that shows up:

  • You are asked to write a design or build a feature and just as you are halfway through, it’s cancelled
  • You put up a code review and no one reviews it for days or weeks
  • You prepare a proposal for a new feature, project, initiative, anything and it’s brushed aside by your manager or team
  • You write a masterpiece of an email reporting some fabulous result or finding and no one responds
  • You ask questions or make comments in team meetings and they are ignored

Some other causes you’ll see listed on medical websites call out other things like dysfunctional teams, lack of control, or boredom. To me, these fall into work that’s not getting the result you expect. If you are trying to talk to your team and they don’t respond, that’s effort wasted. If you find out your project was cut because you have no say in your team road map, more effort wasted. I find that any action by the team or company that sends the message of “you did all this work and we don’t care” is hugely damaging. It makes sense that people withdraw, start thinking nothing they do matters, and, of course, “develop maladaptive coping behaviors.”

When It’s Too Late

Too late to me means you’ve gone so far into your emotional hell that you start to see your relationships, productivity, and physical health suffer. “Too late” doesn’t mean you can’t get better, it just means that you will need to make a significant change in your lifestyle to recover from your new and horrible condition. Here are a few examples of what too late looks like:

  • You a few beers after work to get rid of the unhappiness built up during the day
  • You can’t remember the last time you slept well and find yourself self medicating with pot, alcohol, sleep medication or other substances to get to sleep at night
  • You’re are late to work because you can’t get yourself out of bed anymore
  • Your coworkers and managers tell you you’re angry and critical
  • Your friends are telling you to quit or they’re not talking with you as much because they’re tired of your work rants
  • You’ve been to visit your doctor to either get anti-depressants or increase doses
  • You have other minor physical problems building up: regular indigestion, random aches and pains, sprains, headaches, frequent colds or flues

These signs differ for each person. Some choose to drink while others over-exercise. Some will get angry and others consider self-harm. Either way, substance abuse, uncontrolled emotion, mood altering prescriptions, and a decline in personal relationships mean this is now taking over your life and something needs to change.

How To Recover

How did this happen? It’s complicated. A lot of different pieces came together at the same time to create this situation. To solve it, it’s also going to take a lot of different pieces coming together to work to get you better. Here are a few of the bigger things you can do to find your path to recovery:

  • Go to therapist or counselor: this person will help you identify the situations leading to burnout and track your improvement or lack thereof over time
  • See a doctor for mental health evaluation: you may have stress induced depression, anxiety, ulcers, or insomnia that needs medications and management with a physician
  • Take a break: take time off for as long as you can. By taking time off, you will see how unhealthy your life has become and seek better opportunities.
  • Change jobs: consider changing teams, managers, or companies depending on what you learn from introspection and counseling
  • Change careers: many people choose to change careers to escape the damage of burnout. Going back to school, choosing to invest in family, or becoming a travel blogger are common escape routes.

Make sure you do something. If you choose inaction, you’re damaging yourself physically, mentally, and potentially financially (medical bills, being fired).

Finally, find things that counteract the cause of burnout:

Do things that turn your efforts into rewards.

It’s Not That Bad Yet

If you’re reading through these signs and think “I’m putting effort and not seeing results but I’m just frustrated, not a depressed alcoholic” then you’re in luck! You can avoid the worst by getting away from your situation early. When you start to see people ignoring, cancelling, brushing off, or otherwise not returning anything on your effort, evaluate whether or not it’s worth staying where you are. It’s not just about wasting your time, it’s about damaging your motivation and joy in working. You can use mindfulness to identify what is going well and what isn’t to get yourself moving in a better direction.

Event Review: GeekWire Cloud Tech Summit 2018

Screen Shot 2018-06-27 at 9.10.06 AM.png

Event Info

Event Location: Maydenbauer Center, Bellevue, WA

Event Cost: $350 (early bird + group) to $500 (late bird solo) USD. PyLadies and Stripe were generous enough to sponsor my attendance.

Approximate number of attendees: 300 – 500

Event Duration: 9 hours (8am to 5pm) + after party

Slides and videos

Highlights

  • Talks were short and manageable in length (30 min each) so I could move around
  • All topics were relevant and understandable
  • I learned about cloud-edge computing and more about Kubernetes
  • This was my favorite swag: Tech Tarot Cards
  • Great dedication to diversity by giving out gender pronoun pins, providing diversity activities and events
  • Excellent venue: lots of space, tables, electric outlets, and Wi-Fi

Lowlights

  • Nothing. I fully enjoyed this event.

Would I go again?

Definitely. I recommend this to anyone wanting to get breadth on current cloud topics in the Seattle area.

Details

Caution: This is a long one.

Fireside Chat with Mark Russinovich, CTO Microsoft Azure

  • New Azure features announced recently: Azure IoT Edge, Data Lake integration, New China regions
  • Azure IoT edge: a lot of computing will move out to the “edge” to optimize for bandwidth consumption and responsiveness of computed results.
  • Github: Microsoft will not change what’s already there and fully invests in and supports the open source community
  • How are people using blockchain in non cryptocurrency applications? Non-centralized security where multiple parties can see and verify a set of actions in a distributed networks.
  • What is Quantum? It is a type of computer that can solve intractable problems in computer science that cannot be solved by a traditional computer.
  • Is Microsoft planning to invest in quantum computing? Yes, Microsoft is getting ready for it along with an SDK and Q#, a language for quantum computing.
  • Where do you think the best space to invest in technologically is? AI and ML – we’re at a breakthrough point where it’s still unknown how much we can do with it.
  • Live poll: People are very unsure about what to think of Microsoft acquiring GitHub.

Did I like the talk?

No. This seemed like a giant advertisement for Microsoft and I could have done without. The comments on block-chain and quantum compute were interesting but very much sidelines.

3 Back-to-the-Future Trends in AI Systems – Carlos Guestrin, Apple and Amazon Professor Of Machine Learning at University of Washington

  • We are in a period of resurgence in AI. Previously we saw a dip in its popularity.
  • In the 80s, AI was primarily rule based systems that were not as useful or correct.
  • Now, we are using machine learned models we are able to go into applications where we cannot enumerate all rules in spaces where there are a lot of possibilities. For example, we previously could beat humans in chess and now we are able to move to use Go without needing to describe the full space of the game.
  • Spark uses large amounts of data with low compute per datum and massively scales out. We are moving towards Deep Learning where we have huge amounts of data (where huge > large) and there is high compute per datum that requires compute grids and node scalability.
  • We moved from specialized hardware to specialized with Spark. Now with deep learning we need to move to more specialized hardware once again.
  • AutoTVM: How do you make sure you choose the right coding patterns to optimize for your hardware when training models using a tensor language over different hardware? This project is meant to learn the right parameters to maximize use of hardware and optimize efficiency.
  • We are trying to move to simpler adoption of machine learning. Currently you need a lot of expertise in order to understand data, use the tools, and manage the hardware needed for training.
  • Two trends: pre-trained models where generic data is sufficient and the need for developers to create models for their specific scenario.
  • Turi Create: allow developers to create their own domain specific data to easily train models via transfer learning from existing generic model training.
  • Another trend is moving towards making the internal workings of machine learning and AI available to everyone instead of being a black box.
  • Providing transparency into how a result was reached helps understand what features of the input are affecting the output as well as understanding where error might be coming from.
  • The data you choose to use with define the user experience.
  • Example: initially when film was being developed, they created chemical exposure guides that optimized for only light skinned models. As a result, dark skin colored people in photos were not visible due to over exposure. We need to think about the culture and values the data we select to train on shows.

Did I like this talk?

Yes, I enjoyed the examples provided and the organization of the talk. I may have already know the content but it was phrased in a organized and easily understood way.

Rook: Portable Storage on Kubernetes – Bassam Tabbara, Founder and CEO of Upbound, Inc.

  • Kubernetes can be thought of as the cluster operating system or the container orchestrator. It also does life-cycle management, scaling, load balancing, scheduling, etc.
  • It exposes a portable cloud API and thus supports the “write once, run everywhere”. You can for the most part containerize and deploy using Kubernetes and run in AWS, Azure, or other places fairly easily.
  • When we start to manage storage beyond the lifecycle of a container (or other unit), we have to look outside of Kubernetes. Similarly, different forms of storage also need to be managed: blocks, volumes, queues, key-value stores, time-series, etc.
  • Kubernetes allows portable volume extraction that is independent of pods. This is currently the only stateful workload abstraction.
  • You need to interact with storage services that exist outside of your Kubernetes managed cluster for the most part.
  • Rook is a cloud native storage orchestrator. It is an extension to Kubernetes hosted by the Cloud Native Foundation.
  • It helps storage systems run like a service on top of a Kubernetes cluster by encapsulating storage system management logic.
  • Can create a configuration that specifies size, monitors, and scaling that will create all components within the cluster that is needed using the operator pattern via Kubernetes operators.
  • Rook operator defines a desired state and loops through state activating different components until the desired state is achieved and continues to do so to maintain desired state.
  • This is an open source project looking for contributors!

Did I like the talk?

No. I understood what the problem and solution were but somehow I felt like I was missing something when he was explaining the examples. Most of them were “here is the configuration and then it just happens”.

Serverless and Kubernetes: The best of both worlds by Aparna Sinha, Google

  • They key to a serverless platform is such that not many people are needed to maintain the servers and more time can be spent on developing the application.
  • A lot of time in application development is spent on understanding monitoring, logging, orchestration, etc. that the application developer needs to spend time on.
  • What is serverless at Google? Zero ops, auto-scaling, managed security; event-driven programming model, horizontally scaling with microservices; pay for usage.
  • Serverless can be applied to more than compute including data storage and other components.
  • Two main ideas: decouple applications and automate infrastructure
  • This translates to: containerize the application + automate deployment + build in metering
  • Kubernetes is container infrastructure as a service:
    • It contains load balancing, networking, DNS and server discovery
    • Environment agnostic management
    • Has flexible, composable primitives that can be built together to craft your application. Ex. application + storage + deployments
  • Kubernetes is a platform for automating management
    • Can provide a desired number of replicas and Kubernetes will make this happen
    • Provides auto-scaling based on system state like queue length or traffic rate
  • Kubernetes is a declarative extensible API
    • You can define different components or controllers you want to use in your own application
    • Example: you could create a custom Spark controller that will allow you to treat Kubernetes as a Spark orchestrator
  • Demo: the demo goes through creating an extension deploy a function via Kubernetes in such a way that makes the extension appear as part of the Kubernetes API. Using that function, write a hello.py function and deploy it via Kubernetes.

Did I like the talk?

Yes. I finally know what Kubernetes does (you’d think I would have looked it up by now). However, having worked with these types of orchestrators before it wasn’t too hard to figure out.

From Infra Ops to Platform Development: T-Mobile‘s Approach to Cloud – Nicholas Criss, Sr. Manager, Cloud Center of Excellence, T-Mobile

  • Background: T-Mobile aims to be a market disrupting mobile carrier that strongly favors magenta the color
  • Moving from waterfall development to agile development
  • In 6 months moved up from last to first in JD Power survey
  • Moved to the cloud and didn’t just follow “lift and shift” but tried to adopt the new philosophy of cloud development to make sure they didn’t fall behind competition
  • Having already moved to the cloud, the company was seeing that they were able to adjust very quickly to sudden demands from business needs. Example: They were able to spin up tons of video processing servers very quickly and scale down as needed. Without being on the cloud it wouldn’t have been possible.
  • Migrated through different stages:
    • Before cloud: no cloud integration
    • AWS console management: Manual management of cloud infrastructure
    • Some automation of cloud infrastructure
    • Managing infrastructure as code: all infrastructure was automated in code
    • Software Developers: The software developers can easily (with minimal error) leverage fully automated infrastructure and eliminate the need for infrastructure teams
    • Platforms: We got tired of having to relearn through repeating the same mistakes on different teams – make all these learnings a part of the platform. For example: scaling, fault tolerance, and general operational readiness.
  • We moved from “we’re mostly security, compliance, and operations” to “we are software developers”
  • Build our compliance and operations into code rather than Sharepoint docs that no one will ever read
  • If you can’t implement something as code, it won’t happen or will happen incorrectly
  • No more projects, only products – focus on building customer focused value instead of meeting deadlines and completing tasks
  • Moved from being a telecom company that sometimes has interesting technology to a software company that happens to build telecommunications software
  • Platforms that T-Mobile built internally to make software development better: Security management, policy enforcement platform, enhanced Hashicorp Vault service that optimizes for T-Mobile integration, enhanced container management platform, deployment platform
  • Building out platforms to take away the painful parts of developing makes people more excited to develop and come to work
  • They see these growth points as ways to interact with and give back to the community by open sourcing their projects
  • Question: How did T-Mobile make this happen instead of just talk and no management support?
    • From top level, management is supporting training and education
    • From the bottom, there is the ability to innovate and remove pain by moving to a continuous improvement culture. There is a push to adopt new things to make old pain go away.
    • There are still some holdovers of the old model with devops teams continuing to do deployments but there is progress and benefits being seen.
  • Question: How do you get started by targeting small things to start building interest?
    • Break off small pieces and build up the great infrastructure
    • However, speaker encourages moving directly to going fully to containers and platform and don’t waste time through the in betweens
  • Question: How do you migrate people to your platforms without the additional cost of making it work?
    • We don’t force people to use a particular solution but instead we encourage them to use our solutions where they make sense
    • It’s a continuous journey to make this work

Did I like the talk?

Yes. It was a rough start with some of the disjointed examples but it improved a lot by highlighting the journey steps and the growth that happened each time.

Diversity and Inclusion Panel Sponsored by Stripe

  • Panel:
    • Uma from Stripe Infrastructure Team manager
    • Amy is a system software engineer at a local startup
    • Dana is a manager at Google
  • Q: How did you choose your field?
    • Uma: I was one of the “accidental tech people”. In India, my grades were not high enough for medicine and the only other option was engineering. Software was chosen because it was less intense than the hard engineering. I found that I enjoyed it and continued.
    • Amy: Tried to do pre-med and didn’t like it. Through a chat roulette interaction via Omegle, decided to try computer science!
    • Dana: Father introduced her to computers and started playing with programming and got into that way.
  • Q: What’s a problem in your field that you are excited about?
    • Uma: Since we are growing to be global we are solving a lot of problems of scale and growth.
    • Amy: Working on Kubernetes, we want to enable larger companies to be able to migrate easily to new technology.
    • Dana: We focus on talking about how many 9s we want to support. We need to push harder to have better quality because with millions of users, even 0.01% is a lot of people.
  • Q: Amy, what are some ways you can demonstrate leadership without being in a formal leadership role?
    • Amy: I am not a manager and I don’t want to be one. I still want the ability to influence others. I achieve that through deep understanding and making my knowledge available through youtube or automating and sharing.
  • Q: Dana, as you started moving into your tech lead role, what kinds of pros and cons were you thinking about? What advice was helpful?
    • Dana: Tech lead can mean a lot of things and in silicon valley it can mean a tech manager. What I considered before moving into this position was to talk to other women in a tech lead manager position at Google. I recommend you make sure to talk to other women in these positions before making this move. What I got was: the hybrid tech manager role is a challenging one at Google. You won’t be able to do everything you want to do and you need to learn to let go of some things. However, you get a broad impact. You need to be comfortable not coding and still having an impact.
  • Uma: You moved from being an engineer to manager and then from manager of engineers to manager of managers. What motivated you to do this switch?
    • Uma: First, I didn’t plan to be a manager and was offered the opportunity to try being a manager after coming back from maternity leave. My manager supported me trying it out and would keep the IC option open if it didn’t work. I found that I really liked it and wanted to keep mentoring and growing other developers. Moving to the manager of managers position was due to seeking a new challenge with a level of abstraction. However, people don’t tell you how lonely it is being a manager since you lose the casual chat of other ICs.
  • Q: When you were earlier on in your career was there support that you wished you had and how would you recommend people find it?
    • Uma: Women need to ask more for access to things. Try to share what you learn with others to help them be aware of what it out there.
    • Amy: The money that people are willing to offer you is a measure of how much they value you. Having a diverse group of people you can talk to to understand the potential range of values and opportunities that could exist. Try to find mentors or sponsors in different demographics and in different pay levels.
    • Dana: I was lucky enough to get interesting products until I moved to Google. You need to find the thing you want to work on and make a difference on your own. Look for opportunities to do something you haven’t done before.
  • Q: When it comes to negotiating, what advice do you have to figure out what to ask for?
    • Dana: I was underpaid at my last job. Checked Glassdoor at a point where I was ready to potentially leave and asked them to pay me competitively or I would go. And they paid me more. Use recruiters as an opportunity to reassess you value and gain leverage.
    • Uma: Continually research and update your data on what you should be paid. Don’t base your targets on your emotional response to the money. A lot of things are negotiable like working from home and you can negotiate for what is important for you.
    • Amy: Always be on the job market to keep collecting data on what you are valued at. Make sure to try to get a pay band so that you are aware of how much you can negotiate for and where the lower end of tradeoffs might be. If you can, be on social media and get yourself out there.
  • Q: Do you notice any behaviors that you wish under-represented groups would display more?
    • Dana: If you haven’t noticed, I’m trans and had spent some of my career as a different gender. I have been socialized to have some of that other gender’s traits and as a result I don’t back down even though I have a feminine communication style. I will call people out and stand up for myself. I would like to see more women doing that. The way people behaved towards me when I changed to female. It was harder and I had to adapt. I encourage everyone to stand up for themselves.
    • Amy: Ask to be treated equally and have the same as what your peers. Don’t change your communication style because other people don’t like it.
    • Uma: Risk-taking in a more calculated way is something I’d like to see more people doing. Build a support network so that you can take risks.
  • Audience Question: Do you think that offering training to help people learn these skills that would allow them to get an even footing culturally would help?
    • Uma: Yes, at Stripe we had a training around negotiating that really helped understand that everything can be negotiable. Further, in backgrounds where saying no to managers is hard, building 1:1 relationships that helps understand the new ways interact with peers and manager.
    • Amy: Managers should constantly be emphasizing that they are equals and not superior so that directs are comfortable say no or constructive discussion. It is really helpful that my managers communicates that I’m allowed to challenge them.
  • Audience Question: How do you thank people for treating you like an equal?
    • Dana: Thank them. It’s okay to tell them and explain to them why it matters to you.

Did I like this Panel?

Not particularly but that’s only because I’ve already heard this advice a number of times.

Fireside Panel with CIO of Providence Health Janice Newell and Charu Jain CIO at Alaska Airlines

  • Q: Can you tell us about a service story that went horribly wrong?
    • Charu: a lot of our cloud providers are on their own journey as well and even though you do everything right on your end, one day you find out that something isn’t there when you expect it to. We’ve learned to trust but verify even with some of the large providers?
    • Q: How do you verify?
    • Charu: Work with them to prove that it is working and pair on testing.
    • Q: What about a great thing?
    • Charu: We were building a cloud infrastructure to support more bookings. After moving to a cloud based solution we found that we were able to do things instantly that weren’t possible before.
    • Janice: I have a horror story from us. During the Wannacry virus, we found out that one of our cloud providers that had advertised high security and a whole bunch of other features. It turns out they didn’t actually have those features. The virus then took down voice transcription for doctors for over a month. This created a huge problem for the customers. We ended up moving all of our physicians off of the SaaS based solution to an on-prem solution. We then went back to verify and inspect all the features and fault tolerance the company said they offered and were horrified to see how terrible it was. We pushed back and had to get them to improve their systems. This is an example of the trust but verify example is similar to what Alaska had to do.
  • Q: We’ve seen a trend of a shift from Hybrid (on-prem + cloud) to an idea of multi-cloud where you use multiple cloud solutions (Azure + AWS). Are you thinking of multi-cloud and how would you use it?
    • Charu: Our strategy is stated as multi-cloud. We are currently on Azure and have multiple SaaS providers. We are trying to get better at one thing before maturing into a multi-cloud environment.
    • Janice: We are using containers to try to adopt that flexibility.
  • Q: How has cloud adoption impacted things organizationally and culturally? Devops? Team makeup between specialist, generalist, or devops?
    • Charu: We are working on a phased plan where we move one team and then take the learnings and roll that out to more teams. We are choosing teams first that have the most legacy technology that needs to be moved further. Developers feel empowered to drive these changes. We stood up automation teams to help start up the infrastructure and that has migrated to a cloud center where we help teams understand developing for the cloud.
    • Q: Has there been resistance along the way?
    • Charu: Change has always met resistance. People who have embraced it are setting the example.
  • Q: What is your approach to monitoring?
    • Charu: We are still in early stages. We are trying to make our monitoring complete but also not too noisy.
    • We need to measure to know how our services are doing.

Did I like this panel?

No, it seems more managerial/business level than technical. There was a lot of repetitive back and forth so it was hard to pull out relevant information.

Machine Learning At Scale On Microsoft Azure, Paige Bailey, Microsoft

  • Artificial Intelligence: any technique that allows computers to mimic human behavior
  • This means anything that is coded to behave as a human which started off as rule based systems
  • As the behavior becomes more complex and can’t be enumerated, you can use machine learning to let the computer learn a large space than the rules defined by a human

Types of Machine learning:

  • Do you have labelled data?
      • Yes – Cluster Analysis – Example: K-means
        • These problems are harder
        • Do you want to Group Data?
          • Yes – Cluster Analysis – Example: K-means
          • Categories: classification – determine what type of thing and object is. Example: KNN.
          • Quantities: regression – estimate an output based on input. Example – linear regression.
  • No – Unsupervised Learning
  • These problems are harder
  • Do you want to Group Data?
    • Yes – Cluster Analysis – Example: K-means
    • No – Dimensionality reduction – Example: PCA

     

  • Example walkthrough: you are given a CSV with age, credit history, and employment; determine if you should give someone a loan
  • You can make a decision tree to classify this person into yes or no buckets
  • Aside: Jupyter notebooks are excellent for machine learning
  • Feature: think of this as a column in a CSV
  • Record: think of this as a row in a CSV
  • Demo: showing a simple training example in a Jupyter notebook. (Author’s note: many tutorials are available online that will walk you through this)
  • Machine learning is helping us learn without explicit rules; deep learning is now helping us identify features to learn on and extrapolate huge amounts of potential cases. Example: Magenta
  • After this there were more examples and a discussion of how you can save your company money by learning to do machine learning on your own and also bump your salary due to the additional skills
  • GPUs are very good for training neural networks
  • Data science virtual machine using X2Go: if you don’t want to have to worry about managing your own machine learning environment, this will maintain all versions of libraries and languages to help you move faster with tons of educational Jupyter notebooks out of the box including topics like TensorFlow. They are ready, waiting, and free!

Did I like this talk?

Yes and no. I already knew all of this so it wasn’t super helpful but the presenter did a great job starting from 0 and showing people good examples in the time given.

Container and Serverless at Edge Connected to Cloud – Ying Xiong, Chief Architect, Cloud Platform, Huawei

  • What is edge cloud? Computing resources at the edge managed by the cloud owned by provider or customers with bidirectional communication between both.
  • Example scenario: security cameras where processing can be done on the camera itself and send data back to cloud
  • Challenges: resource constraints and frequent network partitioning with no public access; we also need to support edge to edge communication
  • Kubernetes on the Edge: what happens when and edge node loses the network connection? We can’t update it or support serverless on it.
  • To solve these problems:
    • We need to create robust communication between edge and cloud with high reliability and scalability
    • Build an edge resource controller that manages the edge from cloud
    • Support asynchronous metadata syncing and local storage to allow edge to operate on it’s own until connectivity is available
    • Similarly, build a component called KubeEdge that will manage the edge applications and listen to events to allow self maintenance on edge nodes
    • Use an event hub as a centralized listener to aggregate and queue events locally on the edge
  • Created a custom TCP/IP to optimize for edge-cloud communication for reliable bi-directional multiplex channels that can scale
  • Needs to support AuthN with certificates
  • This provides a Kubernetes plugin to manage and maintain edge nodes and also provides Kubernetes on the node to support app status syncing
  • KubeEdge is an optimized version of kubelet on edge for managing the edge node lifecycle and maintenance. It can work offline.
  • Not yet open source but that is the plan.

Did I like this talk?

Yes. Before going to this conference I hadn’t hear the term “edge cloud” and it turns out it is very aligned with my technical interests.

Fireside Chat with Matthew Prince, Co-founder & CEO, Cloudflare

  • When Cloudflare started we were competing with companies that were trying to find newer and better hardware to accomplish their goals; we did the opposite: we searched for ways of making the commodity hardware scale cheaply and linearly.
  • Over 150 datacenters for Cloudflare with fully owned hardware in rented spaces; ISPs are interested in moving Cloudflare closer to them since it creates a faster internet and better customer experience.
  • We have a world-wide infrastructure and we are suffering from low performance that isn’t improving from existing DNS providers due to lack of competition. We were able to create a secure and performant competitor in response.
  • Discussion on opening business to public offering, costs and profits, competitive advantages, customer successes, various marketing and business data
  • Insider threats are a big security challenge going forward
  • “Our scale is so large that attackers can’t DDOS attack”
  • Question: You made a decision to stop supporting a Neo-Nazi customer. How have you dealt with this internally?
    • “I never thought I’d know so much about Neo-Nazis”
    • “It’s lots of fun to kick Neo-Nazis off your service”
    • There’s no way for consumers to understand when they are using CloudFlare. It seems creepy if we curate what users can or cannot see.
    • We had to decide what the role of deep cloud infrastructure companies is
    • The point at which we decided to do this is when the customer started to attribute their political view to the company
    • There is still no clear answer on how to handle these cases

Did I like this talk?

No. This appeared to be a very long advertisement for Cloudflare. There were tidbits of interesting notes about network structure. Some really great quotes came out of this one.

Power Talk by Peter DeSantis Vice President, AWS Global Infrastructure and Customer Support followed by a Fireside Chat

  • At a large scale you are able to invest in things that wouldn’t be cost efficient at lower scale
  • AWS has expanded to many region and at an accelerating rate
  • What is a region? A set of availability zones?
  • What is an AZ (availability zone)? A fully isolated infrastructure with one or more datacenters, a unique power center, and a meaningful distance from each other
  • Every region has at least 3 and up to 6 AZs
  • Connectivity:
    • Between datacenters within the AZ
    • Between AZs within the region
    • Between AZs and the public internet across the region
  • Built on top of a dense fibre backbone with high redundancy than Amazon manages
  • Also creating inter-region Direct Connect that allows customer to get a fast lane between regions
  • Compute with AWS EC2: Security, Performance, and Familiarity (look and feel is like any other server)
  • Going over the history of EC2 architecture
    • First started off with customer instances on top of a hypervisor that managed security, network, and hardware
    • In the next big iteration, they moved over to Nitro infrastructure
    • Through these moves they were able to improve network latency by 20%
    • This also enabled moving to commodity hardware – except for security and some other core features
    • Could continue to look for hardware solution, use FPGA chips, or go with a custom ASIC – eventually acquired Annapurna labs to realize the last option
    • Thus equipped, security improved and allowed nearly 100% of compute resources to be available to customers on the instance. This achieved the familiarity goal.
  • Now have also opened offerings for bare metal instances as well as Nitro VMs

Did I like this talk?

Yes. Despite knowing a lot of this information at a high level, I hadn’t seen in presented in this particular nutshell. I liked how it was phrased and the progression through the topics.

Event Infrastructure

  • The event used a phone app to support planning your agenda, quick connect with other attendees, integration with sli.do for live polls
  • Regular video on projectors but also a live keyword note taking screen which was actually very helpful
  • The breakfast was great: hot toasted bagels and a hot oatmeal bar for breakfast
  • Event support for developers is great: they provide desks and tables with a high density of plugs available
  • The sponsors presented before, between, and after each talk. It was a little overwhelming and felt like I was watching Youtube with ads turned on. However, the comfort of the event was worth it. Similarly, all “ads” were relevant so it wasn’t too bad.

Networking Notes

  • Very easy to network at this event: all I needed to do was sit down at a table and people would start up conversations about technical topics
  • Despite trying to avoid doing so, people are very interested in hearing the terrible things about the company I currently work for
  • I encountered some discussion because I perhaps foolishly brought my motorcycle gear with me (I did ride the motorcycle to the event) and started some conversations about whether or not to lock your helmet to your bike. This then lead to discussions about companies that let you work from home and some nice connections. If you learn one thing from this: bring or wear an item that will inspire people to talk to you.

Event Review: Google I/O Extended Vancouver

Event Info

Event Title: Google I/O Extended

Event Location: Eventbase, Vancouver, BC, Canada

Event Cost: $0 CAD

Approximate number of attendees: 50

Duration: 8 hours

Highlights

  • Watching the Google I/O videos: having not seen any of Google I/O before attending this event, I was pleasantly surprised by the quality of the presenters and content in the videos. I also really liked having a group to watch it with for discussion afterwards.
  • A lot of recommendations on how to stay connected, do things on your own in bits and pieces, and encouragement to participate in the community. This was invigorating and inspired me to try get involved with the Google Development community.

Lowlights

  • The venue was not the most comfortable for a developer event: cramped seating, no working surfaces, limited access to power.
  • All the videos were played at more than 1x speed. This made some of the more content heavy videos hard to follow.

Would I go again?

No. I would no go to this again because there was not a lot of value to being at the conference compared to watching Google I/O videos at my leisure. There wasn’t a lot of value added by the speakers who were there on site. There was some good networking but since this particular group is small the benefit of networking would come through regular attendance of their events.

Details

The event started off on time with an introduction from an organizer of the Vancouver Google Developer Group. The introduction did a great job of setting the tone and topics for the day: the focus is on mobile and machine learning; this is a diverse group welcoming all backgrounds and discrimination is not tolerated. The only thing that was a little off was the statement that “there are no women in tech”. That was a poorly received misstep given that there were at least 3 women in the front row and prompted a “what am I, chopped liver?” response.

The keynote from Amit Chopra was a good survey of Google I/O. He was fairly knowledgeable of the new opportunities for developers and focused on covering the breadth of topics to ensure we all got a taste of the huge amount of information covered at Google I/O. The keynote was fairly short (30 minutes). I think I would have liked to see a longer keynote with some original content from the speaker such as demos of the new developer ecosystem programs or engagement case studies. As it was, this was primarily a review of the Google I/O highlights.

Following the in person keynote, we watched the Google I/O keynote. This would explain why the in person keynote was abbreviated.

Next up was a 1 hour demo about development and deployment with App Engine, Kubernetes, Containers, and Stackdriver. I am a great supporter of CI/CD  and good devops hygeine so I was interested in what would be in this talk. Unfortunately, the presenter well prepared and the presentation was hard to follow. Firstly, if you weren’t already fairly familiar with the covered technologies, you were lost. He did not go over background at all. Secondly, he was not prepared for this presentation and there were several long pauses while he worked through his demo and waited for containers to build. The presenter’s parting line was “I hope that wasn’t too chaotic” which tells me he may have been asked to do this last minute or he wasn’t very invested in preparing well for it.

A few interesting things covered by this presentation:

  • The presenter’s team moved from AWS to App Engine to improve integration with Kubernetes and take advantage of the container and logging management.
  • You can use App Engine to configure container affinity which would be very useful for fault tolerate scaling and reducing round trip time between components
  • A single dashboard manages your code repo, your logging, your alarming, your containers, and your hosts. It seemed really easy to use.
  • App Engine will manage your master hosts for you for Kubernetes so you can avoid the former headache of managing your own master hosts in AWS (though the presenter noted that AWS is solving this problem with another service).

After the lunch break, we moved into the hands-on Flutter workshop component. Flutter is a mobile application development kit. The workshop was a self-directed walk-through of some codelabs. We watched the Flutter videos from Google I/O. I honestly didn’t get very far with this because the setup took so long (shame on me for bringing my Windows machine instead of my Mac or Linux machine).

After fluttering about, we moved into the talk on how to stay involved with Google I/O and other technical communities. Recommendations included:

  • Join meetups near you in the Google Development Community.
  • Watch Google I/O and the videos from the GoogleDevelopers channel on Youtube.
  • Stay connected with virtual communities like WomenTechmakers in your area.
  • Download the I/O app (is anyone else wondering if the Android version was written in Java, Kotlin, or Flutter?). The app provides searchability and programming.
  • Do the thing. What he actually said “Build the App” – get your hands dirty and write up the apps in the talks.
  • Follow up and do the codelabs.
  • Check out other developer events.

The final presentation was teasingly called Batman and Superman. This was a hook to get people interested and the talk mapped a Justice League super hero to a product in Google Cloud (example: Wonder Woman and her (Tensorflow) Lasso). I unfortunately had to miss the first few minutes of the presentation. This was made further unfortunate that the speaker must have had one too many cups of coffee and was going at light speed. He did eventually realize he did a 1 hour presentation in 30 minutes but I couldn’t keep up after missing the first part. The presenter was the most enthusiastic organizer and I would be more likely to go to events where he is organizing.

There was a raffle at the end for some pretty good stuff: Google Home, Chromecast, T-shirts, mugs!

Networking

  • I met a member of one of my networks that I previously only knew via online interaction. It was great to chat with him and it turns out we have similar career goals and will likely work together in the future.
  • An older Eastern European gentleman encouraged me to become a manager since it is better to be feared that pitied. There are always some weird ones.
  • I spoke with another developer asking me about how immigration for Canadians to the US working in the tech area works. I did caution that the recent disruptions to NAFTA and tighter restrictions on visas in the tech industry may result in a stronger tech scene in Vancouver (or at least I’m hoping so – Go Canada!).
  • I followed up with the Developer Team presenter and got some recommendations on certifications and which teams to apply to next time I plan to interview with Google.

van_gio

An Independent Venture: Flexible Work Arrangements – Working Less

In the previous post I talked about working from home and keeping the approximate same hours. Below I’ll talk about the ways I looked into working different hours or less hours.

Flex Time

This a really popular option among tech and non-tech companies. The way it works is you work an extra hour for 8 days and you get the 9th day off so you keep your average of 80 hours per 2 week period. This doesn’t work in tech.

Flexible work arrangements typically require either hourly work or a fixed frame of time where you are working. In tech, full time employees are intentionally not hourly so they can be asked to work extra hours and the company pays the same salary either way. Similarly in tech, companies offer core hours and flexible start and end times otherwise. You can do 7 – 3 or 9 – 5 or 11 – 7. Due to this pressure to work long hours and a lack of consistent work time, flex-time tends not to work. Managers are happy to have you work an extra hour a day but you can’t have an extra vacation day.

Exception: The only exception to this is if you are on-call or supporting a customer product and you are asked to work nights or weekends. In these cases, I’ve been told to take the corresponding amount of time off that I worked.

Part Time

You’ve probably wondered if you could work 4 instead of 5 days a week and just get paid 20% less. Why not have a long weekend every weekend? This would be the thought process that lead me to ask about part-time arrangements.

I have seen part-time arrangements put in place at some of the old tech companies and some of the new ones, for young and old, for test and dev, for women and men. So what does it take to get in on this and what does it look like?

Here are some of the examples I’ve seen:

  • Highly valued software tester was going to quit to be a full time mother and she was convinced to work 3 days per week
  • Highly valued developer with PTSD was allowed to work 4 days per week and work from home 2 days of those 4 days per week
  • A full team was working part time to investigate the impact of offering this option: each member worked 4 days per week for 6 hours per day

When I asked about how I could get in on this, both the examples and the management gave the same response: you either need to be a superstar at this company for 5+ years or you need to be a lab rat. I was neither unfortunately so this wasn’t an option for me.

Being part-time outside of being a superstar or a lab rat means that you have to sacrifice benefits such as health care or other company programs like parking discounts or gym memberships. Health care is quite pricey and it does grind away at your self-esteem when you are treated as less than your peers even though you put in the same rate of effort, just for less time.

As a note, there are plenty of articles that explain why 8 hours per day is a recipe for stress, physical exhaustion, and just an unproductive worker. Example: work less hours

Related Articles:

Shared Worked

This is a really unusual option that I haven’t seen in play before. I’ve only seen reports of it.

The way this works is you have two people who can work a particular position. They will together do 1 person’s worth of work for 1 person’s pay. Typically these two people need to apply for the position together as if they were a single person and then work with the hiring manager to outline how they can split their responsibilities. I’ve only seen this proposed for managerial positions where 1 person would do a lot of coaching and career development and the other would do project management.

In order for this to be successful, you need to first find a person that has complementary skills to your and who you can work with closely. Next you’ll need to do the hard part of applying for jobs together and convincing your prospective employers why two people are better than one. Given how people are happier and more productive when they work fewer hours, you might actually be able to do this fairly effectively. Similarly, if you have a managerial position that involves a lot of travel, you might be able to make a good case for it.

As far as engineering positions go, I have never seen this before. I suspect this might have a lot to do with engineers having too many responsibilities or too few. If you manage code, deploy, test, debug, devops, design, planning, interviewing, and mentoring, it becomes hard to group those into equal parts without creating two separate roles. Similarly, if you only code and test, you will become too narrowly scoped if you only do one or the other. That’s my theory anyway.

Unfortunately, it looks like the “work less” options are all bust. Next up are ways you can take time off.