background preloader

Software Development

Facebook Twitter

Quora. The Twelve-Factor App. Dan McKinley :: Choose Boring Technology (Expanded, Slide-Based Edition) Building Resilient Services with Go – Tech Talk. In this Tech Talk from GopherCon 2015, Blake Caldwell, a former Software Engineer here at Fog Creek who worked on the Kiln team, explains how he used Go to re-write and speed up KilnProxy, our SSH Reverse Proxy.

Hear how he was able to re-write the service and reduce clone times by half, whilst making it more reliable and less noisy. Blake writes about Go and software development on his blog. He has open-sourced the profiler mentioned and you can get the slides from the talk on his GitHub. About Fog Creek Tech Talks At Fog Creek, we have weekly Tech Talks from our own staff and invited guests. These are short, informal presentations on something of interest to those involved in software development.

Content and Timings Introduction (0:00)Background (0:22)About KilnProxy – SSH Reverse Proxy (1:33)Results (3:35)Handling Errors (5:20)Channels (7:17)Handling Panics (8:09)Avoiding Race Conditions (10:00)Implementing Timeouts (11:20)Profiling (13:44)Logging (21:20) Introduction Blake: Hello. ObjectiveC2Swift will help you translate your tired Objective C code to Swift. Objective C’s time in the limelight is coming to an end. As Apple slowly phases its legacy iOS and OS X coding language out in favor of Swift, developers are transitioning as well.

A new web-based tool, ObjectiveC2Swift, will help you port your legacy code to Swift. It’s a simple translator, but a handy one for those that are behind on transitioning to Swift. If your Objective C code will compile in Xcode, the tool should be able to translate it for you. If you’ve got code that won’t compile, it also won’t translate with ObjectiveC2Swift. It’s already a fun little tool, and the creator, Alex Petuschak, mentioned in a Product Hunt comment that he planned to integrate the tool with Xcode in the future. . ➤ ObjectiveC2Swift Read next: The Lyft iOS app is now written entirely in Swift. The Twelve-Factor App. Interactive In-Memory SQL with Apache Ignite using Apache Zeppelin. Recently I have been working on Apache Ignite interpreter for Apache Zeppelin. In this post I want to demonstrate how you can use Zeppelin to run SQL queries over Ignite distributed in-memory clusters. Apache Zeppelin is a web-based notebook which provides interactive data analysis and visualization capabilities.

For instance, you can create a note that fetches data from various sources and represents them as set of tables, bar or pie charts, etc. Apache Ignite is an In-Memory Data Fabric, which has a Distributed In-Memory Data Grid as one of its components. The Data Grid is responsible for partitioning user data within in-memory caches across the cluster and then providing ability to transact, index, and query the data in-memory across the cluster, much faster than traditional disk-based storages.

Zeppelin allows to run SQL on top of data distributed within Apache Ignite cluster. In order to quickly start using Zeppelin with Ignite you need to start the Ignite cluster. /\ndy: The Failure of Agile. I am proud to be one of the 17 founders/authors of the The Agile Manifesto back in 2001. I think it provided a jolt of energy, hope of a better way of doing things, of creating software and making the world work better. It was a pivotal turning point.

But in the 14 years since then, we‘ve lost our way. The word “agile” has become sloganized; meaningless at best, jingoist at worst. We have large swaths of people doing “flaccid agile,” a half-hearted attempt at following a few select software development practices, poorly. We have scads of vocal agile zealots—as per the definition that a zealot is one who redoubles their effort after they've forgotten their aim. And worst of all, agile methods themselves have not been agile. How did we get into this mess? The Joy of Rules But most agile adopters simply can‘t do that, for a very good reason. The only way for beginners to be effective is to follow simple, context-free rules; rules of the form: ”When this happens, do that.” A Way Forward. AWS Free Tier. * These free tier offers are only available to new AWS customers, and are available for 12 months following your AWS sign-up date.

When your 12 month free usage term expires or if your application use exceeds the tiers, you simply pay standard, pay-as-you-go service rates (see each service page for full pricing details). Restrictions apply; see offer terms for more details. ** These free tier offers do not automatically expire at the end of your 12 month AWS Free Tier term, but are available to both existing and new AWS customers indefinitely. † The following Windows variants are not eligible for the free tier: Microsoft Windows Server 2008 R2 with SQL Server Web, Microsoft Windows Server 2008 R2 with SQL Server Standard, Microsoft Windows 2008 R2 64-bit for Cluster Instances and Microsoft Windows 2008 R2 SQL Server 64-bit for Cluster Instances. The Amazon AWS Free Tier applies to participating services across our global regions. Expert Cheat Sheets & Tutorial Guides for Developers | Refcardz. Semantic Versioning 2.0.0.

12 Days of Open Source | Engineering Blog | Facebook Code | Facebook. In the spirit of the holidays, we present "12 Days of Open Source": a 2014 review of stats and fun facts from Facebook's engineering teams. Check back each work day for a new question and answer from now until the 23rd. Happy Holidays! Day 12 It's the last day of "12 Days of Open Source. " It's awesome to see all of this work represented in one place, especially as it reminds us of how much the community comes together to make this work possible. Day 11 We worked hard this year to speed up our review process, specifically to get code contributions reviewed and accepted quickly. The average age of pull requests decreased by 3x.

Day 10 For those who couldn't attend, we turned out in force at OSCON (the Open Source convention). To understand my rationale, check out the first minutes of my OSCON presentation here. Day 9 Security may not be the first thing that comes to mind when you think open source, but in 2014 we made two contributions involving security. Day 8 Day 7 Day 6 Day 5 Day 4 Day 3 Answer:

The 11 deadly sins of product development. Download a free copy of “Building a Hardware Business,” a curated collection of chapters from our IoT library. Editor’s note: this post is an excerpt from “Prototype to Product: A Practical Guide for Getting to Market,” by Alan Cohen, which is included in the curated collection.

Thomas Edison famously said that genius is “1% inspiration, 99% perspiration,” and his observation holds true for product development. Developing “genius-level” products certainly requires inspiration, but the bulk of the effort is more like perspiration: work that benefits from insight and cleverness, but is also largely about not screwing up. Most product development efforts fail. It’s been my observation that failures are not usually due to a lack of inspiration (i.e., poor product ideas), but rather from mistakes made during the “perspiration” part.

What follows is a brief catalog of the most popular ways to wound or kill product development projects. The fundamental principle of product development “Hey! Open-sourcing Facebook Infer: Identify bugs before you ship. Today, we're open-sourcing Facebook Infer, a static program analyzer that Facebook uses to identify bugs before mobile code is shipped.

Static analyzers are automated tools that spot bugs in source code by scanning programs without running them. They complement traditional dynamic testing: Where testing allows individual runs through a piece of software to be checked for correctness, static analysis allows multiple and sometimes even all flows to be checked at once. Facebook Infer uses mathematical logic to do symbolic reasoning about program execution, approximating some of the reasoning a human might do when looking at a program. We use Facebook Infer internally to analyze the main Facebook apps for Android and iOS (used by more than a billion people), Facebook Messenger, and Instagram, among others. Each month, hundreds of potential bugs identified by Facebook Infer are fixed by our developers before they are committed to our codebases and deployed to people's phones.

Motivation. PUT vs. POST. Actually its nothing to do with REST for PUT and POST. In general how HTTP PUT works and how POST work, is what I want to demonstrate through code. Why REST is considered, usually we get confused while developing REST API, that when to use PUT and when to use POST for update and insert resource. Lets start with the actual definition of these methods (copied The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.

The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI. The action performed by the POST method might not result in a resource that can be identified by a URI. Responses to this method are not cacheable, unless the response includes appropriate Cache-Control or Expires header fields. Lets Go back to our REST example APIs we have. Sony Pictures Imageworks - Open Source - Scala Migrations.

Scala Migrations is a library to manage upgrades and rollbacks to database schemas. Migrations allow a source control system to manage together the database schema and the code using the schema. It is designed to allow multiple developers working on a project with a database backend to design schema modifications independently, apply the migrations to their local database for debugging and when complete, check them into a source control system to manage as one manages normal source code. Other developers then check out the new migrations and apply them to their local database. Finally, the migrations are used to migrate the production databases to the latest schema version. The package is based off Ruby on Rails Migrations and in fact shares the exact same schema_migrations table to manage the list of installed migrations. The Scala Migrations library is written in Scala and makes use of the clean Scala language to write easy to understand migrations, which are also written in Scala.

Alltop - Top Software Development News. What I look for in frameworks | Schauderhaft. In every project the discussion comes up over and over again: should we use framework X? Or Y? Or no framework at all? Even when you limit yourself to the frameworks for web development in the Java space the choices are so plentiful, nobody can know them all. So I need a quick way do identify which frameworks sound promising to me and which I keep for weekend projects. Stay away from the new kid on the block. While it might be fun to play with the coolest newest thing, I work on projects that have a life cycle of 10-30 years. I wouldn’t want to support an application using some library that was cool between March and July in 1996. Spring Initializr. Getting Started · Building an Application with Spring Boot. If you are building a web site for your business, you probably need to add some management services. Spring Boot provides several such services (such as health, audits, beans, and more) with its actuator module.

If you use Gradle, add the following dependency to your build.gradle file: implementation 'org.springframework.boot:spring-boot-starter-actuator' If you use Maven, add the following dependency to your pom.xml file: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> Then restart the application.

If you use Gradle, run the following command in a terminal window (in the complete directory): If you use Maven, run the following command in a terminal window (in the complete directory): You should see that a new set of RESTful end points have been added to the application. The actuator exposes the following: You can check the health of the application by running the following command: Getting Started · Building a RESTful Web Service. In Spring’s approach to building RESTful web services, HTTP requests are handled by a controller.

These components are identified by the @RestController annotation, and the GreetingController shown in the following listing (from src/main/java/com/example/restservice/GreetingController.java) handles GET requests for /greeting by returning a new instance of the Greeting class: package com.example.restservice; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController; @RestControllerpublic class GreetingController { private static final String template = "Hello, %s! "; private final AtomicLong counter = new AtomicLong(); @GetMapping("/greeting") public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); }}

Pyp - Python Power at the Prompt. Ls | pyp "p.replace('maybe','yes') | pp.sort() | pp[1:3] |p , p , p.strip('abc') | whitespace | p[3], 'no' | p.upper() " Pyp is a linux command line text manipulation tool similar to awk or sed, but which uses standard python string and list methods as well as custom functions evolved to generate fast results in an intense production environment. Pyed Pyper was developed at Sony Pictures Imageworks to facilitate the construction of complex image manipulation "one-liner" commands during visual effects work on Alice in Wonderland, Green Lantern, and the The Amazing Spiderman.

Because pyp employs it's own internal piping syntax ("|") similar to unix pipes, complex operations can be proceduralized by feeding the output of one python command to the input of the next. This greatly simplifies the generation and troubleshooting of multistep operations without the use of temporary variables or nested parentheses.

\> ls | pyp "p[0] | pp.sort() | p + ' first letter, sorted! '" It's out! A Quick Tour.