Some good stuff in this podcast.
Month: March 2015
Swagger 2.0: Open source REST API framework
From the Swagger 2.0 Github page:
The goal of Swaggerâ„¢ is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined via Swagger, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interfaces have done for lower-level programming, Swagger removes the guesswork in calling the service.
Use cases for machine-readable API interfaces include interactive documentation, code generation for documentation, client, and server, as well as automated test cases. Swagger-enabled APIs expose JSON files that correctly adhere to the Swagger Specification, documented in this repository. These files can either be produced and served statically, or be generated dynamically from your application.
Without going into a long history of interfaces to Web Services, this is not the first attempt to do so. We can learn from CORBA, WSDL and WADL. These specifications had good intentions but were limited by proprietary vendor-specific implementations, being bound to a specific programming language, and goals which were too open-ended. In the end, they failed to gain traction.
Swagger does not require you to rewrite your existing API. It does not require binding any software to a service–the service being described may not even be yours. It does, however, require the capabilities of the service be described in the structure of the Swagger Specification. Not all services can be described by Swagger–this specification is not intended to cover every possible use-case of a REST-ful API. Swagger does not define a specific development process such as design-first or code-first. It does facilitate either technique by establishing clear interactions with a REST API.
SOLID Object-Oriented Design
Maven Version Manager: Ensure all team members are using the same version
Apache Usergrid: Open Source Java & Cassandra based Backend as a Service (BaaS) that you can host yourself
http://usergrid.incubator.apache.org/
Learned about this at one of the sessions at the DevNexus software developer conference in Atlanta. It has built-in support for:
- User Management: Sign up, log in, reset passwords, groups, roles, permissions, access, OAuth 2.0. No server code required.
- Data: JSON stored in Cassandra, retrieve data via SQL, do graph queries, do joins.
- Files: Asset storage can handle anything from text files to videos of several terrabytes, automatic content-detection, full URL access control. In the back, uses Amazon S3 or other preferred cloud file store.
- Java-based: Built on Jersey, Jackson, Apache Cassandra and Lucene.
- SDKs: For iOS, Android, HTML5/JS, Node.js, Ruby, Java, .NET, and PHP (plus REST APIs)
Require.js: JavaScript file and module loader optimized for in-browser use
According to the Require.js website, it’s compatible with
- IE 6+
- Firefox 2+
- Safari 3.2+
- Chrome 3+
- Opera 10+
linthub: Automatic linting on git pull requests
Currently supports CSS, Golang(lint and vet), Javascript, Java, Shell, Scala, JSX, CPP, C++, Dart, Ruby, Python, CMake and PHP.
Prometheus: Open-source service monitoring system and time series database written in Go
- Data model – Time series identified by metric name and a set of key-value pairs.
- Query language – Allows slicing and dicing of collected time series data in order to generate ad-hoc graphs, tables, and alerts.
- Visualization – Built-in expression browser, a GUI-based dashboard builder, and a console template language.
- Storage – Stores time series in memory and on local disk in an efficient custom format. Scaling is achieved by functional sharding and federation.
- Operation – Each server is independent for reliability, relying only on local storage. Written in Go, all binaries are statically linked and easy to deploy.
- Client libraries – Client libraries allow easy instrumentation of services. Currently, Go, Java, and Ruby are supported. Custom libraries are easy to implement.
- Alerting – Alerts are defined based on Prometheus’s flexible query language and maintain dimensional information. An alertmanager handles notifications and silencing.
- Exporters – Existing exporters allow bridging of third-party data into Prometheus. Examples: system statistics, as well as Docker, HAProxy, StatsD, and JMX metrics.
Link: How to Make a Chrome Extension
Linux6: Linux for Beginners (really a reference guide)
It looks like English isn’t the author’s first language, but the guide is still pretty good at providing a broad overview of Linux topics a beginner would want to be aware of.