I hereby decree

by David LeMieux


I am a fan of art generated by code. I even gave it a try a little bit. There is a lot that can be discussed about the topic as a whole, but I want to only take a moment and spotlight a project that I found recently through browsing my Github feed.

var t;

Jenn Schiffer (who's posts on Medium, by the way, have caused a sufficient amount of confusion at work to make me an instant fan) is dissecting different artists and art styles and how one might replicate them using code.

Example step in the process
Example step in the process

This includes first figuring out the patterns and replicable parts of art and then trying to reproduce them procedurally with code. What is interesting to me about the process is that this method almost completely ignores the question "What is art?" and instead says "Here is some art, lets break down the parts. How can I make a similar art with similar parts?" Which itself is an indirect answer to the first question, if even unintentionally.

It sort of reminds me of The Artist is Present Game where you relive the experience of the performance of the same name, only digitally. It isn't the same as the original, but it becomes its own thing by being an approximate replica in a different medium.

I don't mean to draw conclusions from things that don't need them. I enjoy art and code and art made from code. Maybe someday someone will create an interpreter that runs code based on art.


Comments (View)



I am a fan of Coins but only recently did I discover this album of Beastie Boys/Daft Punk mashup tracks. I have listened to it a lot over the last few weeks and I have to say that each track is better than the last. The only exception, for me, is the _Disco Breakin track which, while still a fun listen, doesn't follow the crescendo of increasing quality and instead takes us back to around _Pass the Mic. That could just be me, though.

Bonus: There is also a new CVS Bangers


Comments (View)



I went to Eastern Washington University for a year between 2000 and 2001. While there I had the opportunity to be in the Marching Band, Wind Ensemble and Pep Band as third trombone. We would be required (and also paid) to play at sporting events. Because of this we would often have need to coordinate with the cheer team because they wanted to be sure to have time to do their cheers and they also wanted to know when we would play different songs because they had worked out little dance routines that accompanied them.

The thing is, though, we didn't really get along with the cheer squad. I am not exactly sure why, but there was some enmity there that perhaps had persisted through time. I was a freshman and so I bought in to the culture of animosity, and that is a topic for another day. It is enough to say that we felt occasionally inspired to upset the cheer team.

We would play this song at the request of the cheer team:

Normally when a band from an opposing school would play this song we would shout over the top of the "Go Team Go" part and instead shout "High School Band" in a mocking tone. We felt we were above this simple melodic rally cry. When the cheer team would insist we perform the tune we were always reluctant to comply. We would use this an opportunity to upset the cheer team.

Since the cheer team had created a little routine to go with the song, and since it was loop-able (as is the song) we would purposefully put extra measures at different parts of the song, adding extra beats here and there, throwing off the rhythm of their dance. They would never quite figure out what had gone wrong and we wouldn't do it frequently enough to have it be common.


Comments (View)



A Dead Colors fan emailed me a request:

 Could you, by any chance, make a color palette containing all of the dead colors for PhotoShop? 

When I finally found the email I was sitting at the @Scale Conference and decided I'd give it a try. I could have, of course, gone in to photoshop and created a new palette manually and then exported it (which, due to my finding the email late, was what the fan ended up doing before I could respond) but I didn't want to take the time.

I did a quick search for the Adobe file specification for .aco files and found this information by Larry Tesler. The code that generates the dead colors list was originally written in PHP, but I decided that with the specification and a quick refactor I could generate the color file using Node.

I did find something perhaps noteworthy. The spec information says that the versions are 0 and 1 but I could never get the file to work until on a whim I tried using 2 - so either I am tapping some undocumented third version or the values are supposed to be 1 and 2. On top of that I ran in to some issues early due to my not using unsigned integers.

The resulting library is on Github. You give it a list of color information including the display name and hex color value and it will create a color palette that you can import in to at least the latest version of Photoshop. Next steps would include adding reading, but due to the many different color encoding types this will take some time and I really only needed the write capability to satisfy the original request.

The dead colors aco file is available on the Dead Colors page. I was able to send it to the fan but too late. He had already done it manually taking hours of his time.

I may have had to go through the hours of pain of making one myself before receiving this message, but it still makes me so happy that you responded.

It was a fun exercise and I was able to get most of it done while I also listened to talks at the conference.

node-aco on github


Comments (View)



There is a not-too-recent design trend that websites are designed to not scroll but instead animate or change the information on the screen as the user uses the scroll wheel on a mouse or the scroll bar. A limited example of this can been seen on Dropbox's Carousel site.

As you can see in the video, as the use scrolls downward some animations play and at a certain point the page stops scrolling entirely and only the animations continue, even though the page is still scrollable. There are other, more extreme examples of this as well. Some sites seem to handle this new take on information disclosure in a way that makes sense but many miss the mark and become confusing.

This breaks usability. The animations are visually interesting and the end result (displaying more content) is essentially the same, but there is no longer a 1:1 mapping of the actions a user takes through the interface or the input device to what is happening on the screen. The timeline, for lack of a better term, becomes arbitrary. The different portions of content are harder to track because they lose their sense of placement on the page. If a user is using touch device to scroll then that relationship can be further harmed. (Though in the case of carousel, the site removes this and scrolls as you'd expect).

Timeline may be the right term to use inasmuch as the design of the pages treats the scrollbar like a scrubber going through the time of some animation or even a video, even though the presentation is interactive. If the designer wanted to present the user with a timeline of information then she/he should stick to a more readily identifiable mechanism for the same.

It can also be tempting to misuse animation. Animation really isn't the issue, though. The issue is the disconnect between the scroll action and what you see visually on the page in terms of mapping movement. You wouldn't turn the page of a book and have it only change the picture on the page you are on. That is a bad comparison, but the idea is the same.

Let pages scroll, otherwise use a different navigation mechanism and make it obvious.


Comments (View)



Getting a random value in JavaScript is pretty boring;

 var random = Math.random(); 

This will give you a floating-point, psuedo-random number between zero and one. This is not very random. When I ask for something random I should be able to get back whatever. Spork. Waffles. Things that are totally random and cool.

That is why I've taken the first step toward making Math.random more random.

As you can see, this updates the regular Math.random to also sometimes return a totally random string (cheese). (This is another example of how random it should be.)



Comments (View)



I am at an interesting point of my career and the only name I seem to be able to give to it is indifference. In the last six years I have been at Flite the world of software development has changed and not even just once. I do not expect it will slow down either, but my willingness and interest in keeping up has certainly waned.

Recently I have been surveying the job landscape and technologies that didn't even exist (or were definitely not mainstream) three years ago are now listed on almost every job description. There isn't anything wrong with that necessarily but I haven't personally had the time nor inclination to try and do anything with those new technologies but if I wanted to go get a new job I am now expected to know about them.

What makes things seemingly worse is that, in my casual observance of the landscape, we seem to be loosing any subtlety and compromise and instead everything turns in to a Holy War. Everybody is looking for people who are on the same side. Which platform do you use? Which text editor? Which project management methodology? (Which phone platform? Which OS? and on and on) The big players like Google and Facebook and Twitter then throw their weight in the mix. Sometime I think it is because that, as large companies, they don't actually have enough work to do and so spend their time dreaming up their own ideal vision of how things should work. And why shouldn't they? I am still not convinced that their ways should be my ways but it looks like there is no avoiding making a choice.

Take bower for example. It is neat and works as it says on the tin, but I cannot figure out how or why I'd use it in a production environment. If I need to download dependencies I can do that and package them. I am not about to change my deployment infrastructure just because a new tool exists to replace something I maybe do one or twice a month, tops. That said, maybe I am missing the bigger picture. I guess the point is that right now I don't care.

I will own up to the fact that I am falling behind on my own school of thought that if you like something you will do it on your own and gain experience through trial and error. It isn't like I've been sitting at work doing nothing. We don't always have the opportunity to adopt new technologies at the drop of a hat and if we did we might not ever get anything done. I could try harder to stay current.

This complaint is not original nor unique. I feel a little bit like an inflexible curmudgeon by admitting these reservations, but what else can I do?

I am just getting tired of feeling like I need to have an opinion about everything. I am much more comfortable saying that I will use the best tool for the job as I find them, but if "the industry" is going one way I guess I also don't want to be on the side that gets left behind.

Update: This video is great.


Comments (View)



Portfolio Image
Scratch it away!

Its been like eight years since I updated my personal portfolio but I'm glad I did it.

Check it out.


Comments (View)



I was informed today that E.ggtimer gets too much traffic to remain on my original hosting plan which is both exciting and scary. In response, my web hosting provider shut it down without warning. I was able to get it set up on Amazon's services using EC2 - so hopefully it will run smoothly and now allow me some freedom in terms of feature enhancement.

E.ggTimer was down for several hours today. Sorry for the inconvenience.


Comments (View)



I hereby decree that while the world has moved on from feeds and blogs, or at least appears to have done, I feel like what we've lost isn't completely replaced by what we've gained. That said, I communicate more than I did before, in spite of the connections having less meaning.


Comments (View)