Design websites.
There's a ton of them out there. But, I've never really fell in love with any of them.
Until yesterday...
I was searching online for the logo of a bank that I couldn't remember the name of. As I'm clicking through all the things that happen to catch my eye along the way. I stumbled upon logodesignlove.com. After reading only a single paragraph I knew this is was a site I would return to again and again.
Reading it was as if I was reading my own thoughts.
Except I could never express them so concisely in words. The post I'm referring to was an interview with Tom Geismar. If you have never heard of him, you have still most likely seen one, if not many, of his logos.
My Sister asked me to do a logo for some T-Shirts for a benefit run in Boston for ALS (a.k.a. Lou Gehrig's Disease). For a good cause and an opportunity to gain some good karma. I, of course, accepted.
The team will be running on October 26th in Boston, MA under the name Dini's Defenders. Dini is my brother in laws sister, who has this unfortunate and painful disease. I won't go into details on the personal side of the subject. But, I would like to talk a bit about the logo itself, and ask you what you see in it. What is the message it sends to you?
I am happy with the result. I must admit that I did not hand draw all this in adobe illustrator. It was more of a source and massage operation. The ALS logo was lifted and traced from the ALS website. The bird was a piece of free vector clip art as were the poppey flowers. The Filligre is just a stock brush applied to a circle. But this is a perfect example of the whole being greater than the sum of its parts. Assembled as a crest the form has some weight. Dimension is created by layering the elements and extending them beyond the boundary of the crest. Positioning the bird was probably the most difficult part. The goal was to expose enough of the center of the A so that it remained recognizable, while still maintaining the flight path of the bird from the hand. The smallest movement seemed to disrupt everything. You may be thinking, it's just black and white, how boring. But, this is how I always start. The most primitive form of a logo will show you whether your foundation is solid. No amount of color or blending will salvage a poor arrangement.
When she first asked for a logo I had to ask what is my inspiration? What is her inspiration? What does she want to say? If she were an animal, what kind of animal would she be? After some back and forth we landed on birds and poppy flowers for the imagery. The bird is a great symbol. It represents spirituality, freedom, love, hope, purity, the list goes on and on. The poppy on the other hand has a checkered past. It's generally thought of as symbol of death. It can be associated with opium use, the westernization of China, and various other negative things. But, it also signals change, remembrance and honor for those who have passed on. The flower is quite beautiful, and their biology is such that they thrive in what many other plants would consider harsh conditions. I dont think its fair for the poppy to be the flower of death, and i dont see death in this logo at all. If I see anything in in this logo, I see hope. Freeing yourself from fear, viewing each obstacle as a challenge that will make you stronger, and letting yourself be free to fly and inspiring others to do the same.
Does everyone else see what I see? I can't say for sure, but I certainly hope so.
Shapeways recently posted a contest for restroom signs on their blog. Since I work as a designer for a sign manufacturer I could help but enter. At work I'm usually bound by the ADA standards for designing interior signs. But, in this case it's a factory. So, as far as I understand it, the designs don't really require that they be ADA compliant. So I jumped at the chance to do something without all the ADA constraints.
You might think that because I design signs for a living that I might have an unfair advantage. But, there are a lot of talented people out there, and they entered the contest as well. It's anybody's guess as to who the winner might be. There were a lot of interesting entries.
Here are a few of my favorite competitors in no particular order..
Soooo my projects lately have been a bit sporadic.
I was working on the iPhone rpg with game maker,
then I started working on a revamp of our website critterplaypen.com,
which lead to helping launch an internal wiki at my current full time employer.
Yet here I find myself making models for shapeways again.
Somehow I never find the time to write about any of these things because I'm either too busy working on them or I'm still experimenting and can't give any good advice.
At any rate...
In the past few months I've made a few items for shapeways. Most notable are the dragon skulls which were made primarily in sculptris and "shelled" in autodesk inventor. They're here just in time for Halloween AND if any of you like the show game of thrones or the books it is based on, you may like these as well. In addition to the dragon skulls there is also a crow skull for any John Snow fans.
I just got this one in my hands yesterday and I'm impressed.
A friend posted this link on facebook recently. Its a really cool test. It got me thinking. its no wonder people have a hard time doing color matching. Its hard just to see that a color is in fact different, then to have decide why its different and compensate for it. Not to mention you then have to compensate for lighting, and finish (matte/gloss, etc.). So i dug up an old illustrator script that i wrote for a colleague. It helps do some of the heavy lifting for you when color matching for print. It makes new color chips based on your current selection in illustrator. Heres a brief video of it in action, with a special bonus at the end.
The color nazzis will say its evil because it uses the HSB color model to create the variations. But, the range of colors that are outside the hsb gamut is small.
It doesn't make sense to do something the hard way every time because its not going to work 10% of the time. Do it the easy way then if the color is out of gamut do it the hard way. You will save time in the long run by always doing it the easy way first. You just have to keep in mind that some colors are suspect to being out of the HSB gamut, and keep an eye out for them.
Okay, the script. The best way to operate it is by..
1) Opening a new document
2) Creating an object to hold the color you want to test.
3) Set the fill color of that object to the color you wish to test.
4) Set the document color mode to RGB if its not already.
5) Select the object and run the script.
You can skip steps 2 and 3 by copying an object from another file to make it easier, and if you forget step 4, the script will remind you.
Once you have run the script you will be given the option to adjust the amount of variation between swatches. The default of 10 might be too coarse for regular use but it works great for a demo :P
You can adjust it to get more or less variation between colors as needed.
Run it as many times as you need to fine tune your prints.
Here's the Script....
-------------------------
var docRef = activeDocument;
var sel = docRef.selection;
var ColorMode = docRef.documentColorSpace;
//alert(ColorMode);
var increment = prompt("Enter adjustment value/n0 = fine, 10=Coarse","10");
try{
if(ColorMode != "DocumentColorSpace.RGB"){
throw new Error("Document color mode must be set to RGB\nMenu: File > Document Color Mode > RGB Color");
}
if(sel[0].fillColor){
var existingcolor = sel[0].fillColor;
}else{
throw new Error("You must select something");
}
if(isNaN(increment *1)){
throw new Errow("Adjustment entered is not a number")
}
var exR = existingcolor.red;
var exG = existingcolor.green;
var exB = existingcolor.blue;
var exHSV = RGBtoHSV(exR,exG,exB);
var y=0;
var posy;
for(z=0; z<3; z++){
if(z==0){
posy = 483;
var zfill = ModHSV(exHSV, increment*-1, 0,0);
}else if(z==1){
posy = 0;
var zfill = ModHSV(exHSV, 0, 0, 0);
}else if(z==2){
posy = -483;
var zfill = ModHSV(exHSV, increment*1, 0,0);
}
for(x=0; x<=3; x++){
//alert("new row "+x+", V="+exHSV[2])
var xfill = ModHSV(zfill, 0, x*increment/100, 0);
for(y=0; y<=3; y++){
var yfill = ModHSV(xfill, 0, 0, y*increment*2.55);
var swatchY = docRef.pathItems.rectangle(posy+0+(x*66), 0+(y*66), 48,48);
swatchY.fillColor = HSVtoRGB(yfill);
}
}
for(x=0; x<=3; x++){
//alert("new row "+x+", V="+exHSV[2])
var xfill = ModHSV(zfill, 0, (x*increment/100)*-1, 0);
for(y=0; y<=3; y++){
var yfill = ModHSV(xfill, 0, 0, y*increment*2.55);
var swatchY = docRef.pathItems.rectangle(posy+0+(x*66)*-1, 0+(y*66), 48,48);
swatchY.fillColor = HSVtoRGB(yfill);
}
}
for(x=0; x<=3; x++){
//alert("new row "+x+", V="+exHSV[2])
var xfill = ModHSV(zfill, 0, (x*increment/100)*-1, 0);
for(y=0; y<=3; y++){
var yfill = ModHSV(xfill, 0, 0, (y*increment*2.55)*-1);
var swatchY = docRef.pathItems.rectangle(posy+0+(x*66)*-1, 0+(y*66)*-1, 48,48);
swatchY.fillColor = HSVtoRGB(yfill);
}
}
for(x=0; x<=3; x++){
//alert("new row "+x+", V="+exHSV[2])
var xfill = ModHSV(zfill, 0, x*increment/100, 0);
for(y=0; y<=3; y++){
var yfill = ModHSV(xfill, 0, 0, (y*increment*2.55)*-1);
var swatchY = docRef.pathItems.rectangle(posy+0+(x*66), 0+(y*66)*-1, 48,48);
swatchY.fillColor = HSVtoRGB(yfill);
}
}
}//end z loop
}catch(e){
alert(e);
}
// - START RGBtoHSV - //
function RGBtoHSV(exR,exG,exB){
var HSVColor = new Array();
var cMin= myMin(exR,exG,exB);
var V = myMax(exR,exG,exB);
var Delta = V - cMin;
var S, H;
// Calculate saturation: saturation is 0 if r, g and b are all 0
if( V== 0){
S= 0;
//alert("S=0")
}else{
S = Delta / V;
//alert("S="+S)
}
if(S== 0){
H = 0
}else if(exR==V){
H = 60 * (exG - exB) / Delta
}else if(exG==V){
H = 120 + 60 * (exB - exR) / Delta
}else if(exB==V){
H = 240 + 60 * (exR - exG) / Delta;
}else{
alert("i don't know!")
}
if(H < 0){
H = H + 360
}
HSVColor[0] = H;
HSVColor[1] = S;
HSVColor[2] = V;
return HSVColor;
}
// - end - //
// - START HSVtoRGB - //
function HSVtoRGB(HSVColor){
var nRGBColor = new RGBColor();
var V = HSVColor[2];
//alert(V);
var S = HSVColor[1];
//alert(S);
var Hex = HSVColor[0]/60;
//alert(HSVColor[0]+"/60="+Hex);
var primclr = Math.floor(Hex);
//alert(primclr);
var secclr = Hex - primclr;
//alert(secclr+"="+Hex+"-"+primclr);
var a = (1-S)*V;
var b = (1-(S*secclr))*V;
var c = (1-(S*(1-secclr)))*V;
//alert("ABC="+secclr+","+a+", "+b+", "+c)
//alert(primclr);
switch(primclr){
case 0:
nRGBColor.red = V;
nRGBColor.green = c;
nRGBColor.blue = a;
break;
case 1:
nRGBColor.red = b;
nRGBColor.green = V;
nRGBColor.blue = a;
break;
case 2:
nRGBColor.red = a;
nRGBColor.green = V;
nRGBColor.blue = c;
break;
case 3:
nRGBColor.red = a;
nRGBColor.green = b;
nRGBColor.blue = V;
break;
case 4:
nRGBColor.red = c;
nRGBColor.green = a;
nRGBColor.blue = V;
break;
case 5:
nRGBColor.red = V;
nRGBColor.green = a;
nRGBColor.blue = b;
break;
case 6:
nRGBColor.red = V;
nRGBColor.green = c;
nRGBColor.blue = a;
break;
}
return nRGBColor;
}
// - end - //
// START ModHSV - //
//ModHSV(exHSV, increment, (increment/100), (increment*2.549))
function ModHSV(xHSVColor, H, S, V){
var nHSV = new Array();
nHSV[0] = xHSVColor[0] + H;
nHSV[1] = xHSVColor[1] + S;
nHSV[2] = xHSVColor[2] + V;
if(nHSV[0]>360 || nHSV[0]<0){
if(nHSV[0]>360){
nHSV[0] = nHSV[0]-360;
}else if(nHSV[0]<0){
nHSV[0] = nHSV[0]+360;
}else{
nHSV[0] = 0;
}
}
if(nHSV[1] > 1 || nHSV[1] < 0){
// set to gray
nHSV[1] = 0;
nHSV[2] = 204;
}
if(nHSV[2]>255 || nHSV[2]<0){
nHSV[1] = 0;
nHSV[2] = 204;
}
return nHSV;
}
// - end - //
function myMax(r,g,b){
if (r >= g && r >= b){
return r;
}else if(g >= r && g >= b){
return g;
}else{
return b;
}
}
// end
function myMin(a,b,c){
if (a <= b && a <= c){
return a;
}else if(b <= a && b <= c){
return b;
}else{
return c;
}
}
//end
It's been 5 months or so since my last post. My daughter doesn't allow me to type while I'm feeding her anymore. So, posting has been difficult. Plus, it's not unusual for me to go into social hibernation during the winter as it is. I hate the cold and the snow and the shortage of sunlight. However durring those 5 months I haven't been inactive.
Shortly after my last post I stumbled upon a piece of software called "game editor". It's a standalone application for game development. It runs on windows but the games can be ported to iOS, Android, Mac, Linux, and PC. For a few years I've wanted to make an iOS game, but I simply can't afford to go out and buy a Mac. But, it looks like that limitation has been partially lifted. So, for the last 5 months in the slivers of spare time that I find, I've been developing a Zelda-esque Action RPG.
The software has predefined events and actions. But allows for a lot of custom programming in C. It's not without it's limitations. But, with all the areas for custom programming most things can be accomplished. The forum on the game editor website is very very helpful and friendly. Possibly the friendliest forum i've ever visited. I've never actually posted because most every question I've had had already been answered quite thoroughly.
At any rate. Level 1 should be ready to demo and bug test soon. The graphics are still only placeholders at the moment. I'm not exactly the best pixel artist.
Some day soon I will release a demo. The bulk of the programming has been done. But, making the maps, cut scenes, and boss fights is tedious.
Not to mention the fact that my iphone crashed and i lost 4 months worth of notes that related to the games storyline... yet another delay.
Inspired by The World of Magic game for the iPhone/Android by com2us. This little bugger wreaks havoc at the beach when your a nooby noob. I've run for my life and left others in the dust to be devoured by schools of these carnivorous finned nightmares.
Once you reach a level where they no longer pose a threat to you. You will find yourself looking back on them as a right of passage out of noobdom. Everyone worth their salt will face the hoards of woopas. The swarms of woopas. Spawing like rabbits. Just when you think you're safe, more are headed your way.
Now, they're spawning in 3D over at shapeways.
You can purchase them here