development
Open source tools are free
In a previous job, I had a boss that I really admired. He's near the end of his career and his experience had made him wise. He was humble, but would chime in as needed. One of my favorites was his ability to bust out short one-liners that would hit the nail on the head. Around the water cooler, we regularly discussed open source. Here are some highlights: Free like a puppy This one always made me chuckle. But, it's true in so many ways. I look at the open source community. At times, people's evaluations of open source tools are skin deep. "Ah, they are free!". This typically follows two
Nodes with no page views
PrefaceNodes are the unquestioned most robust data structure within Drupal. It has widely adopted integration, e.g. Views, Features, Context, Rules, etc that make the Node a popular Drupal entity for countless use cases.However, the default node structure comes with a lot of baggage. It has built in publication states, authoring information, and revisions. Most of the time, these features are advantageous. Others, not so much. Nodes with no pagesDue to the robust features available for nodes, a content type is often created for nodes that do not actually have viewable pages. Let's look at a
A balance of trust and quality
Projects are risky. Specifications are nearly impossible to define on most projects due to technical or communication gaps. This is the age old challenge many people fight. One popular solution for unclear specs is the fail fast methodology. It's founded on brief iterations that lack polish, frequent tests by a client and an over abundance of communication. This strategy is common for rapid prototyping and is effective for clients that can get their hands on something visually. All too often we fall into the trap of quality. Quality, to me, is only a metric of a final deliverable. It should
It's not you, it's me
Bad projects are toxic. While most staff within a company focus on the bottom line, the bottom line is no guarantee of project success. It's impossible to look in your crystal ball and make this call before a project begins. Hindsight is 20/20, right? This could be due to any number of different factors. Some I have seen include: clashing personality between teams, a lack of participation on behalf of the client, unclear expectations of roles and responsibilities, client changes the requirements throughout the project, client cannot provide the clarity of the requirements, etc.When things
An Agile Spree
At the heart of Agile is flexibility. This is designed into sprints that are intended to account for changes rolled into subsequent sprints.But, think of an overall backlog. A high level estimation will yield a given number of sprints. This structure actually is not very flexible at all. Unless, of course, each sprint has time allocated for reviewing, testing, and bug fixing. This is a slippery slope; a more substantial change can really throw off a sprint. So, how do you address the issue of quality?I have recently been reading a lot about corporations paying others to hunt bugs in their
Risks and Unwavering Swagger
Push aside the user stories, contracts, and legalities. When push comes to shove, the developer delivers the goods. In my mind, there is huge risk to a project with the role of a developer. Let's be clear though. Every project has risks. Every project has some complexity behind it. What this means is that there is a dark art to the design decisions made by the developer. I've never seen a client accurately define what content types or modules need to be installed. Again, if they were that educated about what needed to be done, they wouldn't be paying you to do it. The developer must learn
The role of the noob
Peter Nixey describes good developers as both technology proficient and hard working in his blog post. His concept of "simplicity" is worth noting. I highly encourage developers to create code that limits complexity. But, there is an even more important aspect of complexity: usability.Simplicity and excellence are most reliably attained by starting with something, anything, that gets the job done and reworking back from that point.Enter the noob. Every project should have someone in this role. Technologically detached. Familiar with project goals, but does not look at one line of code. No
Mediated web file content management
This is a topic I have grown all too familiar with, as this is my thesis topic for my master's degree. I thought I'd share some basics to set the stage in this area of work. Background Users upload files as content to web-based systems. Think of Facebook and how user's upload images and/or videos to share with friends. The key concept is around the notion of sharing. What is appropriate file sharing (anonymous access, authenticated access, membership-based access)? What is not appropriate sharing? This question changes based on application-level policy, meaning it's difficult to find a one
Automated Drupal Code Improvements
The Coder module (http://drupal.org/project/coder) is well known for assisting developers in producing code up to snuff with the community defined standards. Such standards have been integral in helping the community grow in a consistent manner. The ultimate goal is to find an automated way to help developers out. Such examples include a code review and performing routine code manipulation. The standard for analyzing code leverages known static analysis approaches. There are two principle goals for code: consistency and simplicity. Consistency To understand what consistent code looks like, we
Varnish and Drupal
Drupal is a complex and robust system. Due to all of the processing required to bootstrap Drupal, enabled modules, enabled themes, and page-specific rendering, one can imagine performance becomes a major concern. There are two primary ways of caching: a cached version of a page (passive caching) and back-end optimization (active caching). Varnish serves as a passive cache, having to rebuild itself once page content changes. This is common practice, as caching often has an expiration. The expiration can be an amount of time for automatic rebuilding of content, or can be triggered manually (like