Category: Link Roundup

Women in Software Architecture
As part of National Women's History Month, Pittsburgh Urban Media salutes Dr. Mary Shaw, recipient of the National Medal of Technology and Innovation in 2014. Dr. Shaw is a leader in software engineering research whose work on software architecture helped establish it as a recognized discipline, and PUM's interview with her reveals how she got an early start in a field dominated by men and what she is most proud of today. We are pleased that Dr. Shaw will give a keynote talk at SATURN 2015, and we use this week's link roundup to highlight other women of the software architecture discipline who will also present at SATURN 2015. Discovering Alexander's Properties In Your Code: In this presentation from Smalltalks 2014, Rebecca Wirfs-Brock of Wirfs-Brock Associates explains how Christopher Alexander, the building architect, inspired the first software patterns with his patterns for buildings and architecture and why she thinks his latest work could influence how you code.

Billions and Billions Served: Real-Time Distributed Messaging

Dissecting Message Queues: Tyler Treat at Brave New Geek reports an analysis of several different message queues and describes the differences in throughput and message latency between brokered systems (such as NSQ) and brokerless systems (such as ZeroMQ). Graphs of his results may provide information about which type of system is best for different contexts and needs.

NSQ: A Realtime Distributed Messaging Platform: Bitly developers Matt Reiferson and Jehiah Czebotar have designed NSQ to "operate at scale, handling billions of messages per day." It serves as the backbone of an infrastructure composed of loosely connected services running on many computers. With no single point of failure, it has high availability, reliability, and fault tolerance. For use with any data format, NSQ is easy to configure and deploy.

The Fun of Experimenting with a More Advanced Microservice Application - Building a Slack "Done This" Tracker: Ad Van der Veer at Giant Swarm explains how he used NSQ as one of three components of a method to manage complexity in the architecture layer of a microservice setup.

Software Architecture Modeling
Last summer, a Mother Jones article by Tasneem Raja asked, "Is coding the new literacy?" The answer is yes and no, because the point is not to increase "the number of kids who can crank out thousands of lines of JavaScript" but "to boost the number who understand what code can do" and can think up good ways to apply it. To do this, computer science education must first undergo a paradigm shift, from "reinforcing the notion that code is just for coders" to leading with computational thinking, which CMU's Jeannette Wing defines as "solving problems, designing systems, and understanding human behavior."

Centralized Architecture
At Phys.org, Dr. Norbert Aschenbrenner recently wrote about the First Series Production Vehicle with Software Control. Siemens and partners are developing information and communications technology for electric cars, and their first production vehicle uses a central electronics and software architecture called RACE. This centralized architecture is intended to reduce development time and make it easier to add new functions later. This SATURN link roundup offers several recent blog posts and a podcast on the topic of centralized architecture. Selecting the Right Computing Architecture for Your GIS: Dave Peters at Esri Insider offers some advice on how to choose between centralized and distributed architectures. IoT Drives Business Decisions: In a podcast from the 2014 IoT Summit, Gary Butler, Chairman and CEO of Camgian Microsystems, and Gary Audin, President of Delphi, discussed two approaches to connecting the Internet of Things (IoT), centralized architectures and architectures distributed at the network edge.

Clouds at Hyperscale
For media services everywhere, January is the time to write summaries of the previous year and make forecasts about the next one. Lisa Wirthman of Forbes Magazine helps us transition to the new year with How the Top 5 Cloud Trends of 2014 Will Impact the Enterprise in 2015. The fourth of Wirthman's five trends is about the maturing cloud market in 2014 and the growth of a few cloud providers operating at a global scale in 2015. This SATURN link roundup offers a few recent blog posts on clouds at hyperscale. A Rare Peek Into The Massive Scale of AWS: Amazon Web Services has revealed the size and scope of its cloud, and Timothy Prickett Morgan at EnterpriseTech reports that it is really, really big. Morgan runs through some of the numbers and discusses the datacenter architecture of the AWS cloud. You can also watch AWS Senior Vice President Andy Jassy's keynote talk from the AWS Re:Invent 2014 Conference.

Refactoring
In December 2014, Andre Infante of CoinReport wrote about a Bitcoin developer's warning that the rapid development of Bitcoin software may be "introducing consensus bugs." In Peter Todd Warns of Potential for Accidental Bitcoin Forks, Infante describes how the pace and scale of refactoring may have created a fork in the development. If the fork is not corrected, the network may not be able to achieve consensus about official versions of events, which could wreak havoc for a payment system. This link roundup offers several recent blog posts and a conference presentation on the topic of refactoring. Sacrificial Architecture: Martin Fowler of ThoughtWorks, and author of Refactoring, explains why he hopes that in a few years you'll need to throw away the code you are creating today. Architecture Seams: Jean Barmash at Hello FooBar! expands Michael Feathers' term seam from the book Working Effectively with Legacy Code from code to architecture, then discusses how to exploit architecture seams in a large-scale refactoring project.

In a Huffington Post article titled “What Global Warming, Energy Efficiency and Erlang Have in Common,” Noah Gift says, “Hidden in the discussion of rising energy costs and consumption in datacenters is the selection of software language.” Gift’s emphasis is on how the constraints many languages have limit them to one processor and how the languages used to write software can affect the way that processors use energy. This inefficiency would seem to extend backward from running software to developing software. Nowadays, developers must contend not only with multiple desktop platforms but also with multiple mobile platforms, and do so in multiple languages. This week’s link roundup highlights some tools for simplifying the processes of developing across languages and platforms. Apache Thrift: The Apache Thrift software framework combines a software library with a code-generation engine, and the compiler generates code that can communicate across programming languages, enabling efficient development of scalable backend services. A white paper discusses motivations and design choices.

Minimum Viable Architecture
In his Introduction to Minimum Viable Architecture, Savita Pahuja at InfoQ recalls an older blog by Kavis Technology that described the role of agile methods as serving a balancing function between the minimum viable product and the minimum viable architecture. Below are several recent opinions on this topic and a project that is putting the theory into practice. Less is More with Minimalist Architecture: Ruth Malan and Dana Bredemeyer wrote in the October 2002 issue of IT Professional that you should "sort out your highest-priority architectural requirements, and then do the least you possibly can to achieve them!" Good Enough Is Good Enough: Minimum Viable Architecture in a Startup: In a presentation given at the San Francisco Startup CTO Summit, Randy Shoup encourages startups to ignore the advice he's been giving for a decade on building large-scale systems.

The Watson Explorer The Watson Developer Cloud brings Watson to developers and the cognitive cloud to Internet applications. Watson offers a variety of services for building cognitive apps, including language identification and translation, interpreting meaning based on context, and communicating with people in their own styles. Here are some reviews and links to APIs and sample code. IBM's Watson Supercomputer Gives Developers Access to Cognitive Cloud: George Lawton at TechTarget provides an early review of the Watson Explorer’s unified view of enterprise information. The cloud allows the technology to be accessible for a greater variety of applications and improves the scale and time to market of those applications. IBM Debuts First Watson Machine-Learning APIs: Serdar Yegulalp at Java World previews the eight services that developers can access for building cognitive apps based on Watson’s machine intelligence service. He focuses on visualization rendering as the service least limited by data training.

Deep Neural Networks  “At some fundamental level, no one understands machine learning.” —Christopher Olah “Neural networks are one of the most beautiful programming paradigms ever invented.” —Michael Nielsen This week, we round up a few examples on deep neural networks (DNNs), a subfield of machine learning that deals with developing training algorithms and uses raw video and speech data as input. Replicating Deep Mind: Kristjan Korjus is working on a project to reproduce the results of Playing Atari with Deep Reinforcement Learning, by Volodymyr Mnih and colleagues of DeepMind Technologies. Mnih et al. presented a deep learning model that used reinforcement learning to learn control policies from sensory input and outperformed human experts on three of seven Atari games. Deep Learning, NLP, and Representations: Christopher Olah at Colah's Blog looks at deep learning from a perspective on natural-language processing and discusses how different DNNs designed for different language-processing tasks have learned the same things.

Mobile Wallets This blog post began as a mission to compare and contrast mobile wallet systems. Instead, it became a survey of why mobile wallets are not more popular. The reason is not that we’re lacking choice in the mobile wallet economy. We can choose from Amazon Wallet, Apple Pay, Coin, Google Wallet, LoopPay, and Verizon’s Softcard, among others. Why Aren’t Mobile Wallets More Popular in the US? and The Future Of Mobile Digital Wallet Technology in the UK:  Lindsay Konsko at NerdWallet speculates on why the United States lags other countries in adopting virtual wallet technology; then Kristopher Arcand at Forrester explains why the UK lags the US. Why Mobile Wallets Are Failing and Will Keep Failing: Kyle Chayka at Pacific Standard Magazine maintains that mobile wallets won’t be universally accepted by smartphone users until they are universally accepted by merchants.

Consensus Algorithms and Distributed Systems Consensus algorithms for distributed systems represent a growing field focused on increasing the efficiency of these systems while decreasing their vulnerability to attack and component failure. These recent blog posts offer some theory and practice on consensus algorithms. The Space Between Theory and Practice in Distributed Systems: Marc Brooker at Marc’s Blog discusses the gap between theory and practice in materials on distributed systems, using consensus algorithms as an example. Much material exists on the theory end of the continuum; much exists on the practice end of the continuum. What’s in the middle?

Microservice Architecture Since James Lewis and Martin Fowler published their article on Microservices in March 2014, the microservices architecture pattern has been the subject of much debate in the blogosphere: Is there a good definition for it (or not), is it another form of SOA (or not), is it an answer to the monolith (or not), is it a fad or the next big thing? The following blog posts contribute to the discussion on some of these topics. Failing at Microservices: Please avoid our mistakes!: Richard Clayton’s Unrepentant Thoughts on Software and Management recently included a blog post about his team’s attempt to implement a microservice architecture, four reasons why it failed, and some recommendations for avoiding these problems. Microservices for the Grumpy Neckbeard: Chris Stucchio discusses what he sees as the two camps of the debate about microservices, the hipsters who see their many benefits and the neckbeards who are more suspicious, and describes an architecture that may serve to bring the two camps together.

DevOps: Definitions and Misconceptions This month, Ben Kepes at Forbes reported on ScriptRock’s efforts to raise funding from investors to expand their operations in “To Help DevOps-ify The World.” Kepes opens with an explanation of how ScriptRock must first differentiate its product and services from vendors selling “DevOps in a box.” More agile software development in less time, however, may not fit neatly in that box. Here are some links to definitions of DevOps that include components that exist outside of the box. Defining DevOps Might Be Harder Than Defining Design: In the Under Development podcast series, Bill Higgins and Michael Coté explain DevOps, metrics, and “the processes used by designers vs. software developers vs. management consultants vs. wedding planners.”

Wearable Computing Wearable computing is coming to the masses in the forms of fitness, gaming, and medical devices while non-consumer markets such as defense and aerospace continue to push for advanced wearable technologies to enhance safety, mobility, and efficiency in places most people will never go. Here are some recent examples of the state-of-the-art technology in wearable computing and then some that, with a little tech-know-how, you can make at home: Intel Battles Parkinson’s Disease with Big Data and Wearable Tech: Mike Wheatley at Silicon Angle describes a new project at Intel, in which a Big Data analytics platform combined with a wearable device will produce a better record of symptoms experienced by Parkinson’s patients . The Inside Story of the Oculus Rift: Peter Rubin at Wired reports that, with the Rift, Oculus hacks the visual cortex to make a virtual-reality headset that doesn’t cause “cold sweat syndrome.” The Cardboard Project: Google Developers show how you can build your own basic VR headset with a smartphone and some basic items that you can get at the hardware store. Raspberry Pi GPS Helmet Cam: Martin O’Hanlon at Stuff About Code used his Raspberry Pi­-based car cam to develop a helmet cam, takes it snowboarding, and record data about speed, altitude, and temperature.  

Test-Driven Development: Dead or Alive? Back in the Spring, a single blog post sparked a debate that on the surface seems absurd. Is TDD actually useful and still relevant? The discourse that followed and is still following this discussion is spectacular and spans Twitter, blogs, and a series of video debates. We thank Michael Keeling of Never Let Down for bringing this debate to our attention. TDD is dead. Long live testing.: David Heinemeier Hansson, the creator of Ruby on Rails, discusses the death of test-driven development and the need to transition from unit testing to system testing. Is TDD Dead?: Martin Fowler engages Hansson and Kent Beck in a series of video conversations on the topic of test-driven development and its impact on software design, including confidence, test-induced design damage, and cost.

The Cloud The Future Looks “Foggy” for Cloud Computing: Greg Otto at FedScoop reports on cloudlets and cyberforaging, potential solutions for bandwidth problems at the edge of the cloud, from a talk given by the Software Engineering Institute’s Grace Lewis at the Federal Cloud Computing Summit. Virtual Machines, JavaScript and Assembler: In a keynote presentation at the 2014 O’Reilly Velocity ConferenceScott Hanselman “explores the relationship between the cloud and the browser, many languages and one language, how it might all fit together, and what comes next.” SMBs Tie Cloud Computing To Increased Revenue: Charles Babcock at InformationWeek reports on research by Oxford Economics and Windstream Communications that found that small and midsized businesses credit cloud computing with increasing revenues. The Uneven Future: 2 Telling Views of Cloud Adoption: Bernard Golden at CIO gives three reasons for the uneven growth of cloud computing.

Agile-Related Links There's No Room for Deadlines: Allen Holub at Dr. Dobbs explains why a “culture of deadlines” can defeat an Agile team how the Agile Manifesto principle of working at a constant pace can produce better results. Slow Down to Speed Up - It's All About Delivery: In this video, Matt Anderson of the Cerner Corporation recommends using Lean concepts so that Agile teams can deliver more with less effort. The Hacker Way Meets Agile Architecture: Jason Bloomberg at DevXtra’s Agile Architecture Revolution contrasts “the Hacker Way” with The Enterprise and discusses how Agile architecture can bring them together. What Every Company Should Know About Agile Software Development: Eric Wittman MIT Technology Review’s View from the Marketplace urges organizations that want to maintain a competitive edge to adopt agile software development practices.

Internet of Things Being Forgotten in the Internet of Things: Nick Malik at Microsoft Developer Network’s Inside Architecture discusses a complication in European citizens’ new “right to be forgotten” and proposes a solution. Nest: A Small Company and a Big Disruption Enabled by Cloud: Gery Menegaz at IBM’s Thoughts on Cloud explains how the Nest Learning Thermostat made innovative use of cloud technology to turn a profit, help power companies solve a problem, and satisfy a government mandate. Microsoft Backs Open Source for the Internet of Things: Patrick Thibodeau at Computerworld reports that Microsoft has joined the AllSeen Alliance to help promote an open source code framework to standardize device communications. Internet of Things Done Wrong Stifles Innovation: Frank Palermo at InformationWeek considers the “dark side” of the Internet of Things. How will the IoT address security and privacy?