The “gig economy”. That is supposedly where we are headed. There are predictions based on a study by Intuit that by 2020 over 40% of the workforce will be working “gigs” rather than full time permanent employment. This is nothing new. Thirty years ago, Tom Peters predicted the “Corporation of One” in which everyone working for a company would be consultants rather than employees.
One of the precepts of agile teams is that they do not dissemble and reassemble at the end of the project or any time beforehand. In fact, the concept is that the “project” never ends so the team just stays together working on a never-ending backlog of items to be done.
Although much of the agile literature and many of the agile implementations center around the development team, perhaps not enough attention has been given to the product owner.
How can a product owner, even an otherwise good product owner, impair the success of the agile team?
Suddenly, everybody seems to be talking about React. In Stack Overflow’s latest annual developer survey—the largest such survey on earth—React didn’t just win the “trending tech” section, it wasn’t even close. React was up 311%, double the year-on-year growth of its nearest competitor.
I was reading about introspection in Python 2.7 and came across code similar to what is shown in Figure 1: class Bag. It turns out that it is a very interesting passage of code for me as it uses many of what I would consider intermediate Python techniques. In Part I of this blog post, I will cover some of the interesting Python constructs that crossed my mind when looking at the code. Part II is a short explanation of introspection in Python 2.7.
1 class Bag:
2 def __init__(self, **d):
3 for k,v in d.iteritems():
4 exec("self.%s = %s" % (k,v))
Figure 1: class Bag (figure numbers are only for reference)
I asked a friend to create a function and put it in a module for me. I must not have stated that I wanted the function to be written in Python because what I got back was in C. Not exactly what I needed. After some thought and discussion, I said “Thank you.”
It started out so simple. I found this little module, RandomWords, for generating random words or word lists and I wanted to show how to add this package to the Standard GAE environment (GAE). So I modified the GAE HelloWorld app to say "Hello <random_word>". This did not work. GAE only allows you to import modules that are written in pure Python and RandomWords compiles a C-shared object as part of its install. Now curious, I found a module, names, written in pure Python that generates random first names, last name, or full names based on the 1990 US Census data (http://www.census.gov/main/www/cen1990.html). This blog post covers what I did to make this work.
If you have used the registry at hub.docker.com, you already know that the option to delete an individual tagged entry is not available on the interface.
From what I can tell, there isn’t a way to accomplish this, even in the REST interface. The best I have been able to do is to use the REST DELETE command to delete the repository. This means downloading any images I want to save, deleting the repository, recreating the repository, and uploading these saved images back to the repository.
The rest of this blog is what happened when I used the REST DELETE command to delete the repository.
Google Cloud Platform Load Balancer
Very quick introduction to Google’s Load Balancer showing their sophistication in balancing loads. Examine this with a quick reflection on hardware load balancers in the beginning of web servers, noting how every device used to accomplish these and similar tasks is being virtualized.
It’s common when talking about cloud computing services to divide them into Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Data as a Service (DaaS). So, let’s do that and compare the offerings of Amazon’s AWS and Google’s GCP offerings in each category.