Earlier this week, I went to a “Docker and Kubernetes Night” for a local developer group that holds the occasional hackathon and plays host to a rather active Slack channel. The event, to the surprise of its organizers, drew a nearly capacity crowd for the room they had reserved and, despite a few speakers who were unable to make it, the event was filled with talks and lively discussion.
As someone who works in the writing-about-it and not the using-it business, it was interesting to listen to a room full of active, in-the-field developers talk about their experiences putting containers to use. In some ways, it was eye-opening to hear stories and problems and solutions from developers in the field, instead of pie in the sky tales from evangelists and VPs of marketing and other PR types who might fill emails with catchy buzzwords that fill space more than describe reality.
A Bash-compatible-yet-safety-first shell written in Rust should definitely be called Brash.
— Blake (@blakeirvin) March 19, 2019
The first speaker of the night, for example, works in government and upon starting his position, found out he would have to continue using an old code base, with a less than new language, and would be expected to personally travel and roll out the product to 40+ locations in a process that would easily take a week for each location. That’s right, a single rollout would take nearly a year of travel and time. He quickly got to work containerizing the product and getting the local team to use Docker Compose for development purposes and deploying with OpenShift.
Now, while developing, his team can simply save the code and refresh the browser to test changes, and roll-out will require none of the lengthy process previously required, cutting down deployment time, he says, “by 99.17 percent using this method.” The talk was full of technical details — specific docker commands and YAML code — to back up the fact that, indeed, this developer was using containers to achieve greater efficiency and save vast amounts of unneeded efforts.
The second speaker of the night, meanwhile, had taken things a bit further, using Kubernetes alongside Helm to stand up his application, with the takeaway being that hosting your own Kubernetes was, well, a waste of time. Planning to go the way of Kubernetes? Then a hosted, managed Kubernetes with GKE, EKS, AKS or Digital Ocean – depending on your version, pricing, and GPU needs — were the only ways to go, he said. His exasperation as he spoke was testimony enough to convince me.
it's funny. I started my career working for the year 2000 effect. And I probably will finish it with the 2038 bug.
— Xime (@ximebcn) March 20, 2019
Finally, the last speaker of the night stood up to offer a different point of view entirely — never mind the unnecessary complexity of Kubernetes, if at all possible, develop from the ground up using serverless. During his talk, he referred to Kubernetes as “bleeding edge,” a point which he later better defined for me:
“It’s a term I’ve heard used on and off over my career for technologies that were in use but very immature. I think Kubernetes has a lot of interest, and people are doing a lot of work on it, but I’m personally very concerned that people will become disillusioned with it (as I have) if it fails to simplify the management of their stacks.”
Was Istio something that would help with this, I asked? “I don’t think so,” he responded. “I think those solutions, which are there to help simplify deployments which span multiple vendors are a real symptom of the problem. The real problem is that people treat Kubernetes as one thing, when it is really a bag of different features from each provider.”
While his push for serverless was full-hearted, he acknowledged that Kubernetes had its place, saying that “new development should start on serverless, because the total cost of ownership is going to be substantially lower,” but that “I think that if you are working on a project that has been around on a while, and it is either on a multitier architecture, or a container architecture, moving to Kubernetes is relatively straightforward and will provide many benefits. Just not the benefits that being serverless would be. But the big difference is in operational costs, which are frequently not well-attributed to development practices.”
So there you have it — a few takes on the pros and cons of containers, Kubernetes, and serverless, not from the mouths of evangelists, advocates, Twitter personalities, or even developer bloggers looking for page views, but just some developers in the field trying to make things work as best they can. Take it for what you will, but I find it rather valuable. Now, onto this week’s news in programming.
This Week in Programming
- TypeScript 3.4 Release Candidate: Microsoft announced the TypeScript 3.4 RC this week with the most noteworthy feature likely being that of incremental compilation, “which tells TypeScript to save information about the project graph from the last compilation,” that way “the next time TypeScript is invoked with —incremental, it will use that information to detect the least costly way to type-check and emit changes to your project.” According to a write-up in SDTimes, TypeScript 3.4 is “the first release that has had an iteration plan that outlines the plans for the release,” which is “intended to align with its six-month roadmap for the language.” Of course, these are just a glimpse of the new release, which also includes readonly array-like types, support for readonly tuples, and a new construct for literal values. As always, check out the announcement for full details.
- Java 12 Is Here: While we’re talking about new language versions, SDTimes also has another good summary of Java 12, which is the first of two major releases this year, according to Oracle’s new release schedule, with two more updates set to hit before Java 13 arrives in September 2019. According to the article, “New features in Java 12 includes a new low-pause-time garbage collector, microbenchmark suite, switch expressions, a JVM constraints API, a single AArch64 port, default CDS archives, abortable mixed collections for G1, and the ability to return unused committed memory from G1.” Oracle says that Java 12 saw 1,919 JIRA issues fixed, “of which 1,433 were completed by Oracle employees and 486 by individual developers.” Meanwhile, JAXEnter has an interview with Donald Smith, Senior Director, Product Management for Java at Oracle, where they talk about “the latest version, how the new release cadence has affected the workflow for the Java team, the new feature that he is most excited about, and more.
- iOS App Store Submission Requirements of Note: Apple put iOS developers on notice for some upcoming App Store submission requirements, noting that “Starting March 27, 2019, all new apps and app updates for iPhone or iPad, including universal apps, must be built with the iOS 12.1 SDK or later and support iPhone XS Max or the 12.9-inch iPad Pro (3rd generation),” with screenshots required. There are also new requirements for Apple TV and the Apple Watch, so if that’s your realm, be sure to check out the details.
- So Say the RedMonk Rankings: That’s right, the “first quarter bi-annual” RedMonk Programming Language Rankings are out, wherein the analyst firm looks at looks at rankings from both GitHub and Stack Overflow to achieve “a ranking that attempts to reflect both code (GitHub) and discussion (Stack Overflow) traction.” This time around, they note, there was “little movement within our Tier 1 languages,” but this is generally the norm. More of note, however, were some changes with TypeScript, Kotlin, and Julia. TypeScript has continued to surge in popularity, with a move up to #12, which RedMonk says must come from more than features alone, but rather use by “a wide base of growing projects.” As for Kotlin, its growth “has been second only to Swift”, which is notable because Swift has been “the fastest growing language in the history of these rankings.” At the same time, Kotlin, they note, “grew substantially while all three of its fellow JVM-based counterparts declined.” Finally, JAXEnter notes that “another important point to mention, even though it is not visible in the top 20 list, is Julia‘s growth which has not been skyrocketing; it does, however, exhibit some slow, incremental rise jumping another two spots to the 34th place,” which RedMonk compares to TypeScript’s having made a similar move in its past. “That is not to say that Julia is destined to follow in TypeScript’s footprints,” writes Redmonk, “of course, but rather to serve as a reminder that while it’s uncommon languages can transition quickly from periods of slow, barely measurable growth to high, sustained growth quarter after quarter.”
— Peter Wang (@pwang) March 20, 2019
- Twitter Rate Limits its API: Long has the saga of Twitter’s API woes lasted and this week, ProgrammableWeb brings us the tale of Twitter imposing updated rate limits to flush out API abuse, which is all part of its attempt to “protect their platform from spam and abuse by imposing additional restrictions on new developers hoping to gain access to the platform.” Put simply, Twitter announced that it will begin limiting the /statuses/mentions_timeline and /statuses/user_timeline endpoints to 100,000 requests per day as a default starting on June 19, 2019, and that “applications that need access beyond this rate limit will be required to request an exemption, allowing Twitter to analyze the use case.” Meanwhile, Techcrunch offers a little historical context, writing that “in the past, Twitter has thrashed developers with whiplash by suddenly changing its API policies. That led apps to break, businesses to fold and a perception of Twitter as an unreliable or even hostile place for developers to build. This time, Twitter is giving developers a three-month heads-up to minimize surprise and problems.” Good on you, Twitter. It’s only been a decade.
- The Software Tale of the Boeing 737Max: Now, I don’t know a thing about developing software for big commercial passenger jets, but it sure seems like this author does, in his article on The 737Max and Why Software Engineers Might Want to Pay Attention. “So why would we, as software professionals, care about how this particular investigation and remediation unfolds?” he asks. “If you stand back and replace ‘737’ with ‘system’ and ‘pilot’ with ‘ops engineer,’ the situation with the 737Max is a case of new, market-driven business requirements prompting a redesign to a widely-considered stable and reliable production system.”
If anyone wants a better understanding of Blockchain, I can thoroughly recommend the Fyre Festival documentary on Netflix.
— I Am Devloper (@iamdevloper) March 20, 2019
Feature image: “Fortran, the greatest of the programming languages,” The Simpsons, screenshot (season 26, episode 10).