Draconis Software Blog

Best Practices: Working with Third-Party Designers

As you probably know, we’re big proponents of small tech businesses doing consulting work. Well, over the last six months, we’ve been putting that into practice, and at some point we’ll get around to writing up our experiences. For now, though, I’d like to talk a little about consultant best practices. We’ve been doing a lot of thinking lately regarding project management and how to streamline software development for our clients, and now that a medium-sized project has just wrapped up, a few thoughts have popped into mind.

Thus far, the majority of our clients have had us working with a third-party designer the client already has a relationship with (either they work for the company or were hired by them). We write the majority of the backend code for their project, and tie in the design work created by the designers to create the finished product. As we’ve progressed, we’ve come up with a few ideas that should help in these kinds of situations. This is a start, and I’d like to continue adding to these over time. Be sure to leave your thoughts.

(Read the article)

Amazon’s Mechanical Turk: Artificial Artificial Intelligence

Clive Thomson has an interesting article on Mechanical Turk, a new Amazon company. Mechanical Turk provides developers with an interface for solving problems that are better solved by humans. As Clive puts it:

Computers suck at many tasks that are super-easy for humans. Any idiot can look at picture and instantly recognize that it’s a picture of a pink shoe. Any idiot can listen to a .wav file and realize it’s the sound of a dog barking. But computer scientists have spent billions trying to train software to do this, and they’ve utterly failed.

Mechanical Turk provides an interface for people to complete simple tasks like these, and get paid for their work (albeit very little).  An example of a successful business that uses Mechanical Turk is CastingWords, a podcast transcription service. Computerized voice recognition is still shaky, especially for something like a podcast, whereas humans can do it quite easily. Other examples of tasks in which Mechanical Turk can assist are image recognition, surveys, or aesthetic evaluations.

Each task usually pays anywhere from a few cents to a few dollars, so it’s unlikely that the humans completing these tasks could make much of a living at it. But a few minutes here and there could bring in a few extra dollars a day. Interestingly, the article also mentions potential labor issues, as Mechanical Turk provides a “virtual day laborer hiring hall” for things that companies might otherwise pay wages for.

I’d be curious to here feedback from users, either from the developer or the worker side.

Resizing CSS divs using a slider

Recently, I’ve been working on some Javascript effects using the great Scriptaculous code, and needed to create a “panel-resize” widget, where dragging an icon between two panels would result in both panels’ sizes changing relative to each other (in other words, dragging to the right would widen the left panel while shrinking the right, etc). I hadn’t seen this in use anywhere, so I decided to create a mockup and explain how I created it.

Of course, it’s by no means perfect, so be sure to let me know what you think. But I think it’s a workable example that seems to work fine in Firefox, Safari and IE (haven’t tested Opera, Konqueror, or several others yet).
(Read the article)

The Zend Framework: A PHP Web Application Toolkit

PHP is probably still the leader when it comes to server-side scripting and programming, although recently Ruby on Rails has started to give it a run for its money. Ruby on Rails provides a fast, easy way to get a web application written, and it benefits from using an MVC aritecture. Well now there’s a toolkit in development called the Zend Framework that aims to bring these advantages to PHP. IBM developerWorks has a good article giving an introduction to the Zend Framework.

The article describes two problems with Ruby on Rails that Zend can fix. First, most web developers know PHP, but many don’t know Ruby, so using Ruby on Rails would require learning a new programming language. Second, a lot of hosting providers still don’t allow for Ruby on Rails, so using it would require changing providers. Another benefit I can see is that many companies insist on PHP being used for certain applications, and might dismiss the idea of Ruby on Rails outright if they haven’t heard of it.

This isn’t to say that Zend would only be used as a second-rate version of Ruby on Rails. PHP is a good language in its own right, and for some applications its be a better choice than Ruby. However it’s worth noting that Ruby on Rails is more than just a framework. It also provides code generation an debugging tools that can make development a lot easier.  But the next time you need to create a web application using PHP, you should definitely consider using Zend.

Great Free Stuff For Web Design

Designing a website doesn’t have to be quite as hard as it used to. There are a number of freely available resources for people building sites. There’s a new IBM developerWorks article that gives links to a bunch of good ones. From the article:

Web developers can find many free resources, although some are freer than others. If you design a Web site or Web application, whether static or with all the dynamic Ajax goodness you can conjure up, you might find resources to lighten your load and spice up your content. From free icons to Web layouts and templates to on-line Web page tools, this article demonstrates that a Web architect can also get help these days at little or no cost.

We’ve discussed CSS galleries before, but there are some other nice resources the article mentions, including Creative Commons content, Open graphics, design tools, and even complete web templates. In particular I’ve found the Color Scheme Generator to be very useful, since I have enough trouble getting my clothes to match, let alone a whole web page.

Creating a Weblog in 15 Minutes with Ruby on Rails

In the past few years there’s been a trend to expedite and simpify the process of creating a web application. The latest step in this trend (or perhaps the culmination of it) is Ruby on Rails. Rails a web application framework built upon the Model-view-controller architecture, and it uses Ruby, an easy to use object-oriented programming language along the lines of Perl.

I’ve been interested in Ruby on Rails for a while now, and what first got me excited about it is a video that uses Ruby on Rails to create a functional blog in 15 minutes:

http://media.rubyonrails.org/video/rails_take2_with_sound.mov

There are some other Ruby on Rails “screencasts” available on the site as well.

I think the ability to create a working application so quickly is great, and really takes a number of MVC concepts to their logical conclusions. You could even use Ruby on Rails to create working mockups of web apps and then port them to other frameworks.

However I also think it Ruby on Rails shouldn’t be used for every scenario. It’s great for apps that have simple model objects and need quick interface code to modify those objects, but as you stray outside this environment a more robust framework like Struts or Spring may be preferable.

Hosted bugtracker 16bugs

Stumbled across an interesting new bug-tracking tool, called 16bugs.com.  I say interesting, as the main goal of the tool is to provide an interface that makes tracking bugs “an easy and unobtrusive task. It could even be funny!”  Not sure exactly what makes it funny, though the interface looks nice.

The business model behind 16bugs is to provide a free version with limited features, and a subscription-based service at reasonable rates (from $8 to $25 a month).  It’s hosted on the 16bugs server, so your developer/QA folks will need to access this third-party site.  As one visitor brought up in the forum, it would be a great idea to add SSL encryption – I think a lot of companies would be very sensitive to having their software defects kept outside their control.

Personally, I feel this model for bug tracking has some great potential, especially for small companies that aren’t interested in setting up their own BugZilla, or for companies that contract with different firms that need access to a shared bug-tracker.  I know at least one company I’ve done consulting work for that could have really benefited from a system that’s easy for outside developers to access.

24 Tutorials for AJAX Security

In continuing with today’s security theme, here’s a great set of 24 tutorials from Max Kiesler for AJAX programmers concerned with security (and who isn’t?). “For the most part AJAX does not significantly increase the security vulnerabilities in most web applications. However, javascript, XML and asynchronous server calls do have potential holes if not properly implemented. If you’re an application developer or security professional there are things to watch out for with AJAX applications.”

If you’re writing web code with AJAX, check these guides out.

Be nice to your sysadmin: Speed up your web code!

Paul Stamatiou has 5 tips to help speed up your site, focusing on optimizing your code: “Throughout the blogosphere I’m always seeing these blogs, that while they look great, are horribly slow and overburdened. Over the past few months I have become somewhat of a website optimization specialist, bringing my own site from an over 250kB homepage to its current 34kB. I will help you achieve some of the same success with a few, powerful tips.”

An Introduction to Model-view-controller

The concept of Model-view-controller (or MVC) is a common one and has become increasingly popular as a design framework. However I’ve found that most introductions to the subject are very bland and abstract. In this post I’ll try to discuss some of the more practical reasons to go with MVC. Also while MVC can be used for many different kinds of application design, I’ll focus mostly on its use in web applications, since that’s where it’s use is most common at the moment.

In its most basic sense, MVC is just a clean way of organizing your code. In most web applications, you have a database containing multiple “business objects”, for example different products in an online store. Users can go to different pages in the application to view, update, or delete these “objects”, which are really just rows in a table most of the time. For any given query, the code in your application needs to be able to access the database, retrieve/update the relevant objects, and generate HTML code to be sent back to the browser.

(Read the article)

« Older PostsNewer Posts »