Developer Blog

17
Jul

Realm – A New Mobile Database

Posted by | Development | Leave a reply.

Realm_—_a_mobile_database

A new mobile database for iOS (Android support coming soon) launched earlier this week called Realm. Given that up to this point your options were SQLite or something built on top of SQLite like Core Data or YapDatabase, it’s kind of a big deal. Continue reading


16
Jul

A Django-Style Admin Interface For Pyramid

Posted by | Development | Leave a reply.

pyramid-positive

pyramid_formalchemy provides a CRUD interface for Pyramid based on FormAlchemy. Which is to say it looks at your SQLAlchemy models and automagically generates an HTML interface to create, read, update and delete instances of those models from the database, very much like Django’s admin interface. That sounds pretty cool, doesn’t it? In this post I will demonstrate how to get it up and running and then start customizing the forms.

blogpost_formalchemy1

Continue reading


30
Jun

The Substance of Style

Posted by | Development | Leave a reply.

In my recent post on working remotely, I’m realizing that I kind of blew past something that we’ve always felt was key to making working on a series of projects for many different projects like working for Art & Logic on A&L projects, not a series of disconnected projects.

1D picture at the urging of my 14-year old daughter

One of the first things that the founders of A&L did was to sit down together and hash out a programming style guide. Over the years, that guide has evolved and grown, and it’s still the way that our developers write code. It’s easy to look at something like this as being a simple set of directives (“Use spaces not tabs! Opening braces go on a line by themselves!”), but it’s really much more than that.

Continue reading


25
Jun

Websockets for Backbone

Posted by | Development | Leave a reply.

Backbone + Websockets

Backbone’s had some of its thunder stolen lately by trendier frameworks like Meteor and Angular; for good reason, in most cases, as without the prosthetic functionality offered by the likes of Marionette, Backbone’s view handling (amongst a few other lacks and warts) is really just ‘roughed in’.

But the fact that a framework like marionette can be built on top of Backbone is a testament to Backbone’s flexibility – after all, as the name suggests, Backbone is really just the ‘skeleton’ of your app, and it’s willing to be fit into place however you need it to be.

For instance: Backbone’s default persistance method is via jQuery’s ajax – make a request to the server using one of the standard HTTP methods to persists changes to models in a collection to the server-side db. Works great, but maybe you need something faster/better/stronger/etc.

Like, say, WebSockets.

Continue reading


20
Jun

Crypto So Easy My Mother Uses It

Posted by | Development | Leave a reply.

376797494_21cabea09f_z

Raven by tuchodi

If you’ve been around the blog for a while, you know that I’m a big fan of the use of encryption for the sake of privacy.  I’ve ranted about PGP and S/MIME, tried to break steganography and complained about the privacy issues I face as a Gmail user.  This post is to let you know about a tool for securing your communication that is so simple to use, my mother uses it on a daily basis.  This tool is TextSecure from Open Whisper Systems.  Go install it right now.

It used to be that encrypting your communications required installing and learning a strong, user-proof tool like GnuPG or some random IM client with an OTR plugin.  Now that apps are the unit of software and users routinely install apps, it is a trivial thing to tell someone to install a new app.  It’s so easy that I’m only allowing two excuses for not securing your everyday instant messaging with TextSecure:

  1. You don’t use an Android smartphone or
  2. You don’t communicate with anyone over any sort of instant messaging.

That’s all.  Other excuses are invalid.  (When the iOS version is available even fewer of you will have a valid excuse.)  Now go install it.

Continue reading


19
Jun

YOU ARE HERE: Thoughts on Working Remotely

Posted by | Development | Leave a reply.

Map of A&L people

Art & Logic’s Distribution, September 2013

I’ve been seeing a lot of articles and discussion lately on the pros and cons of using distributed teams. It’s a topic I’ve given a lot of thought to — I just had my 17 year anniversary working for Art & Logic in a completely distributed environment, and over the years there have been many words written both in favor of it (see Scott Berkun’s recent book The Year Without Pants) and against (maybe most emphatically by Alistair Cockburn, who in his book Agile Software Development (2002) who says that ‘distributed development is becoming more commonplace, but it is not becoming more effective’). I’d certainly take exception to the assertion that it’s not possible to be successful and effective developing software in distributed teams, but that doing so requires that you adopt or reject certain situations, practices, and scenarios: Continue reading


17
Jun

Interactive Widgets in IPython Notebooks

Posted by | Development | Leave a reply.

This post will show you how to easily create interactive graphs which are simple to share.

blogpost_ipython_screenshot3

Continue reading


13
Jun

Geopolitical Consequences of SQL Design

Posted by | Development | Leave a reply.

Or: the consequences of not using many-to-many relationships.
1024px-1829_Lapie_Map_of_the_Eastern_Mediterranean,_Morocco,_and_the_Barbary_Coast_-_Geographicus_-_Barbarie-lapie-1829

Cuisine menu
Is Moroccan food African or Mediterranean?  We designed a simple hierarchical model of cuisines that grouped them by broad geographic area.  The purpose of the model was solely to populate a configurable, organized list for a select menu, where smaller areas were visually grouped. Continue reading


19
May

Error Handling in gulp

Posted by | Development | Leave a reply.

"Blind monks examining an elephant", an 1888 ukiyo-e print by Hanabusa Itchō http://en.wikipedia.org/wiki/Anekantavada

“Blind monks examining an elephant”, an 1888 ukiyo-e print by Hanabusa Itchō
http://en.wikipedia.org/wiki/Anekantavada

Consider three reference points on the spectrum of errors that might occur in a build system:

  1. The build system broke (we’ll call this “fatal”): the makefile has a bug, a file resource disappeared, a gremlin burrowed through the ram
  2. A critical build task failed (“error”): the coffeescript has a syntax error, the server couldn’t start
  3. A validation task failed (“warning): the sass has a lint warning, a behavior test failed

Should the build fail for each of these error types?  That depends on the context:

  • In a CI server, everything down to a validation warning should result in a failed build
  • In a watch / live-reload context, errors and warnings should be logged but the build should keep (continually) running
  • In a one-off local development build, the “fatal” and “error” levels should cancel the build but a “warning” should not (well, a TDD developer would disagree)

How can these error permutations be handled in a gulp build? Continue reading


16
May

gulp Minus Plugin

Posted by | Development | Leave a reply.

photo by mattmariebache, https://www.flickr.com/photos/mattmariebache/4593569358

photo by mattmariebache, https://www.flickr.com/photos/mattmariebache/4593569358

I covered the potential simplicity of gulp plugins in my previous post (refresher: gulp, the hot new JavaScript build system, enables writing an asynchronous, streaming plugin in just a couple dozen lines).  On the other hand, gulp’s philosophy leads to a pretty lengthy list of strong recommendations for plugins, including: don’t write a plugin if it can be reasonably avoided.

Whereas the configuration-centric Gruntfile seems to require writing a plugin for any and every tool, the code-centric gulpfile makes it easy to call a tool directly from a task.  There are two major benefits to skipping the plugin:

  1. Plugins should be simple, but simplicity conflicts with supporting end users’ various needs
  2. Plugins hide tool interactions, and non-standard usage may involve time digging into their internals Continue reading

Art & Logic has been developing software on a work-for-hire basis since 1991. We have worked with over 900 clients in a diverse set of industries, including education, aerospace, music technology, consumer electronics, entertainment, financial services, and many more.


2 North Lake Avenue, Suite 1050
Pasadena, CA 91101
877-394-3810


Contact Us
© 1995-2014 Art & Logic, Inc. All rights reserved. All trademarks associated with the registered trademark "Art & Logic", including but not limited to "ArtLogic" and "artandlogic.com", are owned by Art & Logic, Inc. Terms of Use and Privacy Policy