I was searching my own name in google, (as I often obsessively do), to see what the e-world thinks of me. Just as a lark, I searched a common misspelling, and found someone on del.icio.us that linked to a post I made to a mailing list. This was the post, and reasoning that influenced David Heinemier Hannson, to use semicolons in the urls of his popular Ruby on Rails framework. Since David is one of what they call "The Alpha Nerds" on the interwebs, this is kind of like the uber nerd version of someone like Bruce Lee deciding that aviator hats are a really cool idea, after having a deep philisophical conversation with me. And then all the other martial arts experts proceed to comment "Bruce Lee is pretty cool, but what the fuck is with the aviator hat?"
so that I may bask in my own glory and personal brillliance, I give you, the people who haven't given up reading in frustration, the post that will ensure the semicolon's place in your browser bars for years to come:
It would seem that my discovery of a rarely used aspect of the HTTP
url scheme, namely the semicolon ; has led to perhaps a level of
unjustified excitement and advocacy. Intent is very difficult to
gleam from carefully reading a spec, despite, or perhaps because of
the high standards specs are held to for preciseness and lack of
ambiguity, which encourage a sort of unnatural writing style which in
all honesty is hard to read and easy to misinterpret. That aside, I
have a question after reading a set of documents by Tim Berners-Lee,
which are more geared toward the intentional side of things rather
than the specification side of things, which you will find here: <
http://www.w3.org/DesignIssues/Axioms.html >
Regarding the issues I'm concerned with, this is my interpretation of
the document, and you can tell me whether it's incorrect or not:
*For REST, it is mostly important that GET have no side effects, and
anything which does have side effects be implemented with POST (or
mail).
*forward slashes, as mapped to unix heirarchical structures are used
merely as a matter of convenience, and due to the principals of
opacity, are not neccesarily significant to the resolution of a URI,
except regarding the resolution of relative URI's in which case, such
interpretation should be defined per URI scheme, with client support.
Forward slashes do not indicate a resource, but the entire URI
indicates the resource, and it's entirely up to the server how to
find that resource based on the URL. No procedure for internal URI
resolution is explicitly defined.
*That http defines such a scheme for resolving relative URI's for /
style urls, but not yet for semicolons as indicators of parameters
(though TBL provides such a scheme as a possibility for implementation)
*Therefore, virtually any symbol, including but not limited to
forward slashes and semicolons can be used for the purposes of
mapping to arbitrary data topologies, at the discretion of the URI
scheme designer, which can be interpreted and resolved by the server
in whatever way is appropriate. In addition, a great deal of this
flexibility is left in the http scheme to be used at the discretion
of server programmers. As long as opacity is observed, and URI's
remain idempotent nouns.
*To this add the additional constraint given by roy fielding that
this can only be done as long as the nature of the URI scheme is
clearly communicated by the server to the client. In other words,
there is no assumption made that the client will be able to infer a
URI scheme from a base URI without explicit communication that such a
URI scheme is in use.
*Notable exception is the # fragment identifier which is reserved for
use by clients, and to be defined when registering the mime type for
a document.
*TBL then demonstrates the flexibility of URI's by laying out his
Matrix URI scheme, that is using the ; and = symbols to specify a
matrix information space, which is distinctly incompatible with a
heirarchical space. This does not imply that ; has any inherent
meaning relative to the REST or uri model, but as a scheme designer,
TBL is using it to represent a type of information topology being
made available by a server.
If one is to take all the above statements as true and accurate
interpretations of REST, then solutions to certain problems become
available, which are not possible, or are awkward under a naive
surface impression that REST requires URLS to contain only forward
slashes / to represent information topologies. It is beginning to
look to me that this impression has more to do with Aesthetics, and
search engine technologies, than any specific requirements of REST.
A problem this interpretation potentially solves, for instance, is
that of multiple views of the same information resource. Usually,
this would be accomplished through content negotiation. However this
is only effective if your multiple views all have distinct mime
types. If you have for example, a resource such as < http://
example.com/blog/posts/53 > representing an article on a blog, you
may have a non editable view, and an editable view.
In an ideal world this sort of thing could be specified using a
fragment identifier, such as < http://example.com/blog/posts/53#edit
>, however for this to work on a practical level, it requires client
support which is not likely, and somewhat incompatible with the
fragment identifier scheme defined for html/xml
Another option is to use the forward slash < http://example.com/blog/
posts/53/edit >
However it seems logically innacurate to state that a view is a
hierarchical child of the resource, rather than something more
lateral, or directly related.
If the bullet points above are accurate, then it becomes possible and
reasonable to use a semi colon, or any other appropriate symbol to
represent a lateral space, such as a view. Matrix notation seems
appropriate, since such a view system can be seen as a "matrix" (or
tensor) with 1 axis, and english words representing named points
along that axis.
< http://example.com/blog/posts/53;view=edit > < http://example.com/
blog/posts/53;view=display> < http://example.com/blog/posts/
53;view=hatom>. This makes sense to me as viewing a slice or
subsection of a single resource, which includes multiple possible views.
The caveats being how relative URL's are resolved by clients, whether
the server supports this level of flexibility, and whether
appropriate mechanisms are employed for informing the client of the
URI scheme in use (such as hrefs along all points on a matrix
allowing navigation)
This may be overintellectualizing a simple problem, but the main
purpose of this post is to verify if I have my bulleted
interpretations correct, otherwise my conclusion may be false.
Friday, September 14, 2007
Wednesday, June 13, 2007
Online color schemer.
Okay, there's hundreds already, but they all miss the point a bit. A color has three perceptual attributes, Hue, Lightness, and Brightness, (Or HSV, HSL, etc etc)
The majority of the online color schemers only harmonize ONE attribute, Hue, while either ignoring the other two, or leaving it at the whim of the user.
Another thing online schemers ignore is the PROPORTION of color to be used. A color scheme that works for 3 equally distributed colors, is different from one that works with one predominant color, or two predominant colors. The way an accent color works is decidedly different from the way a body color works, and color schemers ignore this as well.
Most color schemers ask for one color, and harmonize the rest based on that. Well what if I have two colors! A client has two colors that must be used, how do I harmonize off of that if I can only input one color?
Okay so I could just ignore the color schemer programs, and do the whole thing by eye, right? That kind of defeats the purpose of these programs existance does it not? Why make them or have them, if in the end they are completely useless?
Todays idea is, a color schemer that isn't a sack of shit.
The majority of the online color schemers only harmonize ONE attribute, Hue, while either ignoring the other two, or leaving it at the whim of the user.
Another thing online schemers ignore is the PROPORTION of color to be used. A color scheme that works for 3 equally distributed colors, is different from one that works with one predominant color, or two predominant colors. The way an accent color works is decidedly different from the way a body color works, and color schemers ignore this as well.
Most color schemers ask for one color, and harmonize the rest based on that. Well what if I have two colors! A client has two colors that must be used, how do I harmonize off of that if I can only input one color?
Okay so I could just ignore the color schemer programs, and do the whole thing by eye, right? That kind of defeats the purpose of these programs existance does it not? Why make them or have them, if in the end they are completely useless?
Todays idea is, a color schemer that isn't a sack of shit.
Friday, June 1, 2007
What is Design?
This is one of those ideas that is not just a "cool idea", or something that I just have a random kink or obsession about. This project would be genuinely useful to me. Enough that I have seen other designers do exactly the same project, design organizations, such as AIGA, and others.
The problem essentially is that most people really don't understand what graphic design, or design in general is, or what its value is. It also happens to be these very people who would benefit most from design.
What I need, as a designer, is a booklet, a manual, or something that is easy to read, well designed, and not only explains why design is a valuable thing, but demonstrates it in a clear and obvious way.
It perhaps shouldn't go into too much detail about how to design something, but through popular examples.
For instance, the most obvious example is the iPod. Now, hindsight is 20/20 of course, but according to the logic of those who don't understand design, the iPod should have been a failure. The iPod wasn't the first mp3 player. It wasn't even the first hard drive based mp3 player. It was more expensive than other music players when it was first released, and still is. In terms of hardware, it doesn't have as much capacity as other players, and didn't when it first came out. It doesn't play as many formats as some. The iPod was even the last digital player to play videos. About the only obvious advantage it's had is that it's slightly smaller than the others. If you look at it in these terms, it's a complete mystery why the iPod has been such a success.
There are other examples too. The branding for chipotle, the architecture of their restaurants. Starbucks, flckr, and others. With no obvious advantage over competitors in a purely statistical standpoint, it's clearly the superior design which gives these companies the win.
There are smaller scale examples too. The clarity of communication in a sparse design which makes good use of negative space, vs. a crowded design which sees empty space as wasted space. The direct financial benefit that comes from designing an ecommerce site to channel viewers into becoming buyers- Design has a direct and real relationship with conversion rates in this arena.
Design is important, and it's not always easy to explain why verbally. A handout for potential clients would be invaluable.
The problem essentially is that most people really don't understand what graphic design, or design in general is, or what its value is. It also happens to be these very people who would benefit most from design.
What I need, as a designer, is a booklet, a manual, or something that is easy to read, well designed, and not only explains why design is a valuable thing, but demonstrates it in a clear and obvious way.
It perhaps shouldn't go into too much detail about how to design something, but through popular examples.
For instance, the most obvious example is the iPod. Now, hindsight is 20/20 of course, but according to the logic of those who don't understand design, the iPod should have been a failure. The iPod wasn't the first mp3 player. It wasn't even the first hard drive based mp3 player. It was more expensive than other music players when it was first released, and still is. In terms of hardware, it doesn't have as much capacity as other players, and didn't when it first came out. It doesn't play as many formats as some. The iPod was even the last digital player to play videos. About the only obvious advantage it's had is that it's slightly smaller than the others. If you look at it in these terms, it's a complete mystery why the iPod has been such a success.
There are other examples too. The branding for chipotle, the architecture of their restaurants. Starbucks, flckr, and others. With no obvious advantage over competitors in a purely statistical standpoint, it's clearly the superior design which gives these companies the win.
There are smaller scale examples too. The clarity of communication in a sparse design which makes good use of negative space, vs. a crowded design which sees empty space as wasted space. The direct financial benefit that comes from designing an ecommerce site to channel viewers into becoming buyers- Design has a direct and real relationship with conversion rates in this arena.
Design is important, and it's not always easy to explain why verbally. A handout for potential clients would be invaluable.
Tuesday, May 15, 2007
City Paintings
Series of paintings, 8x2', divided into 16 1x1 quandrants. Huge project, one of those ridiculously complex ideas.
Essentially each painting would depict a street in the Melbourne CBD..
So, one painting would be "Flinders Street", another would be "Collins Street", another would be "Bourke Street". Each street is exactly 8 blocks long, so each block would map to a 1 foot long section in the painting.
The painting would depict a street level view, with the street running horizontally down the middle of the painting, the north side of the street sitting rightside up vertically on the upper half, and the south side of the street upside down on the lower half.
It would have a very flattened perspective.
Once I finish all the CBD streets, I may then tackle gertrude street and smith street. Who knows, Maybe Colfax is next.
Essentially each painting would depict a street in the Melbourne CBD..
So, one painting would be "Flinders Street", another would be "Collins Street", another would be "Bourke Street". Each street is exactly 8 blocks long, so each block would map to a 1 foot long section in the painting.
The painting would depict a street level view, with the street running horizontally down the middle of the painting, the north side of the street sitting rightside up vertically on the upper half, and the south side of the street upside down on the lower half.
It would have a very flattened perspective.
Once I finish all the CBD streets, I may then tackle gertrude street and smith street. Who knows, Maybe Colfax is next.
Thursday, May 3, 2007
Wanna make your own videogame?
The 6 Indie Mistakes
this article really sums it up. Have an idea, and want to see it become real? Prepare to work really hard for it. The bigger the idea, the harder you must work.
this article really sums it up. Have an idea, and want to see it become real? Prepare to work really hard for it. The bigger the idea, the harder you must work.
Tuesday, May 1, 2007
Particle Mosiacs
Take 1 photo. Add a particle simulation. Add a particle to the simulation. Watch as this single particle floats around the screen. It is attracted to bright areas. It looks at its immediate surroundings, and locates the direction in which it will find the brightest pixels, and it goes in that direction. As it does so, it gobbles up the light, and adopts its color. As it gobbles up the light, it grows in size, until it settles into a position in which it cannot move to an area which is any brighter than the one it's already found.
Add another particle. It behaves much the same as the last particle, except that it cannot occupy the same space as the previous particle. It is repelled by its presence.
Add another, which behaves as the previous particles, but is repelled by them.
Keep adding particles until the entire canvas is covered in these hungry particles that cluster around the brightest areas, and are nourished by them. The largest particles will be covering the brightest areas, while smaller, malnourished dark particles will have been sequestered to the dark corners of the image.
Once this ecosystem has been saturated, the boundaries of each circular particle can become loose, like jelly. each boundary becomes a new particle simulation, each circlular boundary subdivided into smaller interconnected particles. The interconnected particles are attracted to eachother, and in isolation, pull together, like the skin of a bubble. Their resting state is the size of the original particle, at this resting state, the particles are repelled at exactly the correct distance for this resting size to occur.
At the same time, all the particles across the entire canvas are attracted to eachother- or more specifically, they are attracted to the particles nearest to them.
While the compulsion is for the boundaries to remain circular, there is a stronger compulsion to spread out, and meet with the surrounding boundaries, and form a more complex shape. The forces at work across the canvass will eventually come to a balancing point, where no more movement will occurr. This resting state will be composed of a number of well fitted shapes, colored appropriately, and sized according to brightness. They will be well enmeshed together, and form a faceted image which maintains organic and geometric qualities at once.
Add another particle. It behaves much the same as the last particle, except that it cannot occupy the same space as the previous particle. It is repelled by its presence.
Add another, which behaves as the previous particles, but is repelled by them.
Keep adding particles until the entire canvas is covered in these hungry particles that cluster around the brightest areas, and are nourished by them. The largest particles will be covering the brightest areas, while smaller, malnourished dark particles will have been sequestered to the dark corners of the image.
Once this ecosystem has been saturated, the boundaries of each circular particle can become loose, like jelly. each boundary becomes a new particle simulation, each circlular boundary subdivided into smaller interconnected particles. The interconnected particles are attracted to eachother, and in isolation, pull together, like the skin of a bubble. Their resting state is the size of the original particle, at this resting state, the particles are repelled at exactly the correct distance for this resting size to occur.
At the same time, all the particles across the entire canvas are attracted to eachother- or more specifically, they are attracted to the particles nearest to them.
While the compulsion is for the boundaries to remain circular, there is a stronger compulsion to spread out, and meet with the surrounding boundaries, and form a more complex shape. The forces at work across the canvass will eventually come to a balancing point, where no more movement will occurr. This resting state will be composed of a number of well fitted shapes, colored appropriately, and sized according to brightness. They will be well enmeshed together, and form a faceted image which maintains organic and geometric qualities at once.
Lighting in context
There is a computational photography technique in which a subject is placed within a sphere/dome of lights. The subject is then photographed with each light illuminated one at a time, resulting in a number of photographs equal to the number of lights. These photographs can then be composited together and modified in such a way as to simulate any possible lighting condition. This is achieved by taking a "lightprobe" of an environment and mapping it to the spherical dome of lights- such that each light matches the color and intensity of that corresponding space in the light probe. Or more directly, each photograph which corresponds to a particular light in the light dome is modified to appear as though that particular light had the color and intensity of that cooresponding space. This modification and mapping is done with each photo in the set, and they are all summed together into a single "Exposure", and you end up with virtual lighting.
Isn't it an interesting situation then, if you take this virtual lighting concept, and you combine it with the fact that modern macintoshes are equipped with a camera which is easily accessed from software, and facilities for taking screenshots of the current scene on the screen of the computer. These two could be combined into a sort of "light probe", such that a photographed object could appear on screen and look as though it were lit at the back by the other objects on screen, and lit at the front by the room surrounding the computer.
This illusion could be perfected by a measurement of the brightness of a typical computer screen, combined with exposure information from the iSight. These would be fairly standard across the models of macintosh equipped with built in isights.
Thus a dynamically lit widget could be produced, quite probably with the help of quartz compositor's easy access to isight, and easy integration into widgets.
Isn't it an interesting situation then, if you take this virtual lighting concept, and you combine it with the fact that modern macintoshes are equipped with a camera which is easily accessed from software, and facilities for taking screenshots of the current scene on the screen of the computer. These two could be combined into a sort of "light probe", such that a photographed object could appear on screen and look as though it were lit at the back by the other objects on screen, and lit at the front by the room surrounding the computer.
This illusion could be perfected by a measurement of the brightness of a typical computer screen, combined with exposure information from the iSight. These would be fairly standard across the models of macintosh equipped with built in isights.
Thus a dynamically lit widget could be produced, quite probably with the help of quartz compositor's easy access to isight, and easy integration into widgets.
Subscribe to:
Posts (Atom)