Found 116 bookmarks
Newest
GOTO Berlin: DO’s and DON’Ts in a Web API
GOTO Berlin: DO’s and DON’Ts in a Web API
"There are a lot of discussions in matters around REST and web APIs in mailing lists and discussion forums and this is my opinionated thoughts in some of these matters, there is no absolute truth here, Oliver Wolf, principal consultant at InnoQ, started his talk at the GOTO Berlin Conference called ”Web API DOs and DON'Ts"."
GOTO Berlin: DO’s and DON’Ts in a Web API
ATDD From the Trenches
ATDD From the Trenches

"Then this article is for you – a concrete example of how to get started with acceptance-test driven development on an existing code base. It is part of the solution to technical debt.

This is a real-life example with warts and all, not a polished schoolbook example. So get your trench boots on. I will stay with just Java and Junit, no fancy third-party testing frameworks (which tend to be overused)."

ATDD From the Trenches
If you inject a container into your class, you are using Service Locator, not Dependency Injection | Paul M. Jones
If you inject a container into your class, you are using Service Locator, not Dependency Injection | Paul M. Jones

"ContainerAware is the new Singleton.

While many people agreed by retweeting and faving. I feel the need to elaborate some more on this statement and safe the explaination for the future.

TL;DR: No class of your application (except for factories) should know about the Dependency Injection Container (DIC).

The ContainerAware interface (actually ContainerAwareInterface, ContainerAware is a basic implementation of it) is part of the Symfony2 API, but a similar concept is known from many other frameworks and many applications rely on it. It defines only the one method setContainer(), which allows to inject the DIC into into an object so that it can directly retrieve services from it."

If you inject a container into your class, you are using Service Locator, not Dependency Injection | Paul M. Jones
Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)
Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)

"Technical Debt is usually referred to as something Bad. One of my other articles The Solution to Technical Debt certainly implies that, and most other articles and books on the topic are all about how to get rid of technical debt. But is debt always bad? When can debt be good? How can we use technical debt as tool, and distinguish between Good and Bad debt?"

Crisp's Blog » Good and Bad Technical Debt (and how TDD helps)
Better Code Starts with Review
Better Code Starts with Review
ugs – the bane of a software developer’s existence. When not found and fixed quickly, even the most minor bugs can escalate to cause severe functionality issues for all kinds of software, not to mention causing hours of software team frustration spent locating and making fixes. Fortunately, as the below infographic illustrates, today’s code review methods can crack down on buggy code and save companies thousands of dollars and developers man-hours over time. The key is to start the review process during the development process. And while many software operations can be performed by machine, code review still requires the human touch. Don’t code without code review – implement these tactics in your organization and help fight bad code today!
Better Code Starts with Review
Guide to HTML5 Web Security
Guide to HTML5 Web Security

HTML5 Web Security describes issues, vulnerabilities, threat & attack scenarios and countermeasures across 80 pages including numerous well thought-out diagrams, and is backed up with detailed references and an appendix full of attack details.

The main sections are:

2.2 Cross-origin resource sharing 2.3 Web storage 2.4 Offline web application 2.5 Web messaging 2.6 Custom scheme and content handlers 2.7 Web sockets API 2.8 Geolocation API 2.9 Implicit relevant features of HTML5 Web workers, new elements, attributes and CSS, Iframe sandboxing and server-sent events

Guide to HTML5 Web Security
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in git) | JohnAlbin
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in git) | JohnAlbin
Our goal is to do a complete conversion of our Subversion repository and end up with a bare Git repository acceptable for sharing with others (privately or publicly). Bare repositories are ones without a local working checkout of the files available for modifications. They are the recommended format for shared repositories.
Converting a Subversion repository to Git, (7 steps to migrate a complete mirror of svn in git) | JohnAlbin
InfoQ: Patterns for Continuous Delivery
InfoQ: Patterns for Continuous Delivery
Continuous Delivery can be applied to companies of any size, but the exact process is going to differ widely from company to company. Clearly the needs of a four-man team that handles everything is going to be different from that of a large, multi-team company with formal QA and a well-equipped production support department. Rather than try to make a one-size-fits-all solution, this white paper will cover a variety of scenarios and options.
InfoQ: Patterns for Continuous Delivery
Scott Chacon on the Interwebs
Scott Chacon on the Interwebs

So, what is GitHub Flow?

 * Anything in the master branch is deployable  * To work on something new, create a descriptively named branch off of master (ie: new-oauth2-scopes)  * Commit to that branch locally and regularly push your work to the same named branch on the server  * When you need feedback or help, or you think the branch is ready for merging, open a pull request  * After someone else has reviewed and signed off on the feature, you can merge it into master  * Once it is merged and pushed to ‘master’, you can and should deploy immediately

Scott Chacon on the Interwebs
Dette Technique : il n’y a pas de pénalité à la rembourser en avance « DantotsuPM.com
Dette Technique : il n’y a pas de pénalité à la rembourser en avance « DantotsuPM.com

Une fois que ce point de basculement est déterminé, une société peut décider où et quand elle doit aborder les problèmes de qualité structurelle qui ont créé la dette technique. La partie agréable de se débarrasser de dette technique est la même que pour la dette personnelle: cela évite le paiement de plein d’intérêts. Pourtant, il n’y a aucune pénalité à rembourser en avance… en fait, cela apporte une récompense significative grâce à un logiciel de meilleure qualité.

Dette Technique : il n’y a pas de pénalité à la rembourser en avance « DantotsuPM.com
Threat Risk Modeling - OWASP
Threat Risk Modeling - OWASP

When you start a web application design, it is essential to apply threat risk modeling; otherwise you will squander resources, time, and money on useless controls that fail to focus on the real risks. The method used to assess risk is not nearly as important as actually performing a structured threat risk modeling. Microsoft notes that the single most important factor in their security improvement program was the corporate adoption of threat risk modeling. OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team. The following sections provide some overview information (or see Section 6.9, Further Reading, for additional resources).

Threat Risk Modeling - OWASP
Software Quality Connection
Software Quality Connection
At Software Quality Connection, we care about helping software developers, testers and IT professionals in the trenches. We aim to provide an unfiltered platform to help them discuss their views with peers and experts, stay up to date on the latest trends, talk about and advance their careers, learn how to improve the quality of their software, share the problems that matter most to them — with joy, and with up-to-date knowledge. Our articles and community let you be creative,  and we give you a place to talk, and occasionally, laugh — with no corporate red tape to get in the way.
Software Quality Connection
InformIT: Continuous Delivery: Anatomy of the Deployment Pipeline Introduction
InformIT: Continuous Delivery: Anatomy of the Deployment Pipeline Introduction
"The deployment pipeline is the key pattern that enables continuous delivery. A deployment pipeline implementation provides visibility into the production readiness of your applications by giving feedback on every change to your system. It also enables team members to self-service deployments into their environments. Learn how to create and manage a deployment pipeline, and how to use the crucial information it provides on the bottlenecks in your software delivery process so you can work to continuously improve it."
InformIT: Continuous Delivery: Anatomy of the Deployment Pipeline Introduction
Puppet - Puppet Best Practice - Puppet Labs
Puppet - Puppet Best Practice - Puppet Labs

To effectively maintain a large number of systems, Puppet is essential to keep the systems in a consistent state. Often, Puppet manifests will be written by multiple system administrators to manage several dozen types of systems. These standards and best practices are presented here as an evolving effort to document and architect the Puppet service in a manageable fashion in such a large environment. One should also review the Style Guide .

These best practices were developed at Stanford University with contributions from the greater Puppet community and represent the embodiment of two years of Puppet infrastructure deployment and management.

Puppet - Puppet Best Practice - Puppet Labs
Centralised logging with rsyslog | Canonical
Centralised logging with rsyslog | Canonical
The management of multiple systems requires the setup of tools to control the servers behaviour in real time and post analysis. Moreover, regulations and best practices often require the IT department to maintain an accurate log of all events happening in their systems in order to allow for later analysis. Performing such analysis on each system is time consuming and is relatively insecure because if a server is compromised, the attacker, having gained root access, will be able to cover its traces by removing the portions of the logs that he wants.
Centralised logging with rsyslog | Canonical
Coding Horror: Paying Down Your Technical Debt
Coding Horror: Paying Down Your Technical Debt
I believe that accruing technical debt is unavoidable on any real software project. Sure, you refactor as you go, and incorporate improvements when you can -- but it's impossible to predict exactly how those key decisions you made early on in the project are going to play out. All you can do is roll with the punches, and budget some time into the schedule to periodically pay down your technical debt.
Coding Horror: Paying Down Your Technical Debt
What and How to Measure Performance « Nick Gerner
What and How to Measure Performance « Nick Gerner

Last week I wrote about performance testing Open Site Explorer.  But I didn’t write much about how and why to collect the relevant data.  In this post I’ll write about the tools I use to collect performance data, how I aggregate it, and little bit about what those data tell us.  This advice applies equally well when running a performance test or during normal production operations of any web application.

I collect three kinds of data:

system performance characteristics client-side, perceived performance server-side errors and per-request details

What and How to Measure Performance « Nick Gerner
Bugfixes without Tests are Anti-fixes — Agile Web Development & Operations
Bugfixes without Tests are Anti-fixes — Agile Web Development & Operations

A bugfix without a test is an anti-fix. You heard me – right up there next to the anti-christ himself. After committing the bugfix, the developer thinks their ‘Done’ when in reality they’ve just introduced a new bug (and more complexity) into the system.

Bugs are incredibly interesting facts. They are indicative of that rare species – source code that is actually used (remember the Urban Myth that only 20% of your source code is actually used on a daily basis?). If a customer has taken the time to try and get something done with your application, the least you can do is write tests for any bugs they happened to come across. The test is your unspoken agreement with the end-user that this particular bug won’t happen again.

Bugfixes without Tests are Anti-fixes — Agile Web Development & Operations
Skills Matter : In The Brain of Simon Brown: Good code isn t
Skills Matter : In The Brain of Simon Brown: Good code isn t
In this session Simon Brown, author of the Software Architecture for Developers Workshop and Enterprise software developer will look at why delivering a successful software project requires more than simply choosing some technology and throwing it together, showing how you can take the best bits from traditional and modern approaches to form a structured yet lightweight approach to software development. The session will cover the complete end-to-end software development process; from planning, gathering requirements and software architecture through to the effective use of source code control, automated unit testing, continuous integration and load testing. Good code isn't enough.
Skills Matter : In The Brain of Simon Brown: Good code isn t
Big Ball of Mud
Big Ball of Mud

While much attention has been focused on high-level software architectural patterns, what is, in effect, the de-facto standard software architecture is seldom discussed. This paper examines this most frequently deployed of software architectures: the BIG BALL OF MUD. A BIG BALL OF MUD is a casually, even haphazardly, structured system. Its organization, if one can call it that, is dictated more by expediency than design. Yet, its enduring popularity cannot merely be indicative of a general disregard for architecture.

These patterns explore the forces that encourage the emergence of a BIG BALL OF MUD, and the undeniable effectiveness of this approach to software architecture. What are the people who build them doing right? If more high-minded architectural approaches are to compete, we must understand what the forces that lead to a BIG BALL OF MUD are, and examine alternative ways to resolve them.

A number of additional patterns emerge out of the BIG BALL OF MUD. We discuss them in turn. Two principal questions underlie these patterns: Why are so many existing systems architecturally undistinguished, and what can we do to improve them?

Big Ball of Mud
Getting Clean With PHP | Nettuts+
Getting Clean With PHP | Nettuts+
Data security is important and often undervalued by designers, developers, and clients alike. Since PHP 5.2.0, data sanitization and validation has been made significantly easier with the introduction of data filtering. Today, we’re going to take a closer look at these filters, how to use them, and build a few custom functions.
Getting Clean With PHP | Nettuts+