Home / Companies / Semaphore / Blog / November 2016

November 2016 Summaries

5 posts from Semaphore

Filter
Month: Year:
Post Summaries Back to Blog
Elixir, built on Erlang, presents unique challenges and opportunities in error handling compared to mainstream programming languages like Java, C++, and Python. While mainstream languages typically rely on exceptions within a single operating system thread, Elixir and Erlang use a variety of mechanisms, including raised and thrown exceptions, and exit signals, to handle errors in their inherently concurrent and distributed systems. This complexity requires Elixir users to adopt different strategies for error capturing, such as process linking, monitoring, and the use of Task.Supervisor, which allow errors to be managed across multiple processes without affecting the invoking process. The "fail fast" philosophy encourages letting processes terminate and restart from a known state, rather than attempting to fix unexpected errors. The article also introduces the Wormhole module as a production-ready solution for simplifying error capturing in Elixir applications. Elixir's design for fault-tolerant applications emphasizes the need for precise error handling and encourages developers to utilize the language's concurrency features to manage errors effectively.
Nov 24, 2016 1,997 words in the original blog post.
Scheduled for November 22, 2016, the upcoming platform update introduces several software version upgrades, including Chromedriver 2.25, Git 2.10.2, Go 1.7.3, Java 8u111, JRuby 9.1.6.0, Node.js 4.6.2, PHP 5.6.28 and 7.0.13, and Pip 9.0.1, with the latter containing potential breaking changes. Among the new features are the addition of Node.js version 7.1.0, which can be utilized in builds via the command "nvm use 7.1," and the inclusion of Yarn pre-installed for Node.js versions 4.x and above. Users are encouraged to switch to the Ubuntu 14.04 LTS v1611 release candidate platform to test compatibility and provide feedback before the final release. The Docker-enabled platform is updated to docker-engine version 1.12.3, and Ruby 2.3.3 is now included. The release candidate phase concludes on November 22, 2016, and a complete list of changes can be found in the platform changelog.
Nov 15, 2016 267 words in the original blog post.
In a report on Python usage among developers, it was found that despite the release of Python 3.0 in December 2008, over 70% of ongoing private projects still use Python 2.7, even for newly started projects in 2016. This persistent preference for Python 2.7 is attributed to the community's reluctance to adopt Python 3 due to its incompatibility, despite the language improvements it offers, reflecting a "if it ain't broke, don't fix it" attitude. Semaphore CI/CD supports multiple Python versions including 2.6, 2.7, 3.3, 3.4, and 3.5, with most new projects on Python 3.x opting for the latest version, 3.5. The report is the first annual installment, aiming to track changes in Python version usage over time, and invites developers to share their experiences and thoughts on the subject through comments and discussions on Discord.
Nov 11, 2016 256 words in the original blog post.
Integrating the ELK stack into Semaphore's microservices architecture, which operates within Docker containers on AWS, streamlines log management by centralizing and structuring log data from various applications. By adopting the syslog format for logging, logs from multiple client machines are collected by a central server, which processes and visualizes them using ELK. The setup involves configuring both the client-side, where Docker containers are set to redirect logs, and the server-side, where the ELK stack is modified to accept and process syslog messages. Logstash, a component of the ELK stack, is configured to extract key-value pairs from log messages, enhancing the data's structure for better searchability and visualization via Kibana. The provided setup facilitates seamless integration of new services with minimal configuration, allowing for efficient log analysis and visualization, and marking the debut of Semaphore's engineering blog to share insights on effective logging architecture.
Nov 10, 2016 1,034 words in the original blog post.
Programming is inherently cognitive work that thrives on intense concentration, and the optimal state for productive coding is often referred to as "flow." This state, characterized by complete focus and creativity, is fragile and easily disrupted by interruptions or lack of clear direction. The blog post discusses how methodologies like Behavior-Driven Development (BDD), continuous integration (CI), and continuous deployment (CD) can help programmers achieve and maintain flow by providing clear goals, immediate feedback, and a balanced challenge-skill dynamic. BDD aids in setting concise objectives through high-level user scenarios, while CI offers immediate testing feedback, and CD allows for rapid iteration and feedback across teams. These practices not only reduce the fear of failure by ensuring comprehensive test coverage but also contribute to developers' overall sense of achievement and self-worth by enabling them to work effectively in manageable increments.
Nov 03, 2016 1,207 words in the original blog post.