{"id":146,"date":"2006-06-15T14:33:50","date_gmt":"2006-06-15T21:33:50","guid":{"rendered":"http:\/\/www.red-sweater.com\/blog\/146\/blog-redesign"},"modified":"2006-06-15T14:41:25","modified_gmt":"2006-06-15T21:41:25","slug":"blog-redesign","status":"publish","type":"post","link":"https:\/\/redsweater.com\/blog\/146\/blog-redesign","title":{"rendered":"Blog Redesign"},"content":{"rendered":"<p>I&#8217;ve noticed that people are slowly discovering the new design of the blog. I meant to write a post about it when I &#8220;made it live&#8221; a week or so ago, but I have been putting it off for some reason. I think I didn&#8217;t want to waste a whole post on talking about my new design, without giving some interesting facts about how <a href=\"http:\/\/nodebox.net\/\">NodeBox<\/a> facilitated and inspired the design. Anyway, this is the story of how I liberated myself from Kubrick! (The default WordPress theme). In fact, my blog has been so &#8220;vanilla&#8221; in its design for the first year of its existence, that it may be inappropriate to even call this a <em>redesign<\/em>. Short of picking a color, this is about the only design I&#8217;ve ever done for it (and apart from the banner and some minor CSS tweaks here and there, it&#8217;s still Kubrick at the core!).<\/p>\n<p><h4>The Story of the Banner<\/h4>\n<p>I was playing with one of the NodeBox libraries called <a href=\"http:\/\/nodebox.net\/code\/index.php\/Pixie\">Pixie<\/a>, which is designed to make simulated &#8220;scrawled writing.&#8221;\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/PixieText.jpg\"\/>\n<\/p>\n<p>\nIt even includes some crazy &#8220;doodles&#8221; where it creates pseudo-random sketches of creepy little guys. I made this example wallpaper using a grid of creepy guys:\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/RandomDoodles.jpg\"\/>\n<\/p>\n<p>\nFinally I played with the crazy &#8220;graph generation,&#8221; which is a feature by which a nearly illegible graph is produced based on a specified list of nodes. You can only play with stuff like this for so long before you start indulging the ego. So I plugged some blog-oriented text in:\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/HelloRSB.jpg\"\/>\n<\/p>\n<p>\nI decided to play with the little scribbled circles, add some color, and put them in a grid format with some blog-oriented text in them.\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/WelcomeRSB.jpg\"\/>\n<\/p>\n<p>\nPretty! Did I mention I love NodeBox? By now I was starting to theoretically consider my playful tinkerings to be the possible basis for a new blog banner. So I decided to pick a more realistic layout for a banner.\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/RSBBanner1.jpg\"\/>\n<\/p>\n<p>\nThis is starting to look pretty cool. But I came to terms with a couple facts. First, the scribble look is cute but doesn&#8217;t give a clean appearance that I want to associate with my blog and business. Second, I better stick with a red color scheme unless I want to change the name of the company to AquaGreen Sweater Software.\n<\/p>\n<p>\nI had already toyed with plain circles as a means of giving the text in the design a little pop and stability. So I thought I&#8217;d just abandon the scribbles and use all perfect circles. The logic behind the generation is basically this:\n<\/p>\n<ol>\n<li>On an NxM grid, randomly choose whether to render a circle or not.<\/li>\n<li>If a letter is to be rendered at a given location, a circle is always rendered in a particular color (opaque red).<\/li>\n<li>For all other circles the color is rendered as a randomly color in the red ballpark.<\/li>\n<li>Letter locations are &#8220;nudgeable&#8221; by an array of x\/y nudge parameters.<\/li>\n<\/ol>\n<p>After much tinkering, I ended up with a solution that was close enough that I did a few finishing touches by hand and called it done. But I liked the results so much that I started almost immediately thinking of doing a similar design for the Red Sweater Software home page. This time I decided to make it all work from code the way I wanted it, and am therefore able to randomly generate new banners at will. The quality of these sucks but it&#8217;s just because I scaled and converted them for easy demonstration in the blog. Not every one has to turn out perfect &#8211; with NodeBox I can just run it until I see a result I like. The balance of colors and placement has to be nice. In my script I am also able to &#8220;guarantee&#8221; a certain spot to be a circle, so I can enforce some positional balance as I desire.\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/RSBFinal1.jpg\"\/><br \/>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/RSBFinal2.jpg\"\/><br \/>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/RSBFinal3.jpg\"\/><br \/\/>\n<\/p>\n<p>\nOne of the unexpected outcomes of all this experimentation and incremental design was that NodeBox helped me get comfortable with the idea of <em>pink<\/em> as a fundamental design color for my site. I don&#8217;t think I ever would have thought of using pink unless I just stumbled upon it as a variation on red. I know, silly. But it&#8217;s a fantastic realization because I&#8217;ve long had a hard time designing (such as I do) with red. It&#8217;s so strong, it&#8217;s hard to use it without overpowering the reader. The pink elements in the new design, along with the drab gray background, I believe give me some leeway to get away with the bold red while sparing the reader from saturation overdose.\n<\/p>\n<p><h4>Tangentially&#8230;<\/h4>\n<p>While I&#8217;m talking so much about NodeBox, I should mention some other cool tricks I&#8217;ve discovered. It can be fun to play with rendering text while adjusting some random number of the text&#8217;s vertices on the bezier path. This is pretty naive adjustment, just tweaking the location of a vertex here and there, but produces a dramatically &#8220;unique&#8221; look:\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/RedSweaterDistorted.jpg\"\/>\n<\/p>\n<p>\nAnd finally on a more practical level I decided to use NodeBox to design some new toolbar icons for <a href=\"http:\/\/www.red-sweater.com\/flextime\/\">FlexTime<\/a>.\n<\/p>\n<p>\n<img decoding=\"async\" src=\"http:\/\/www.red-sweater.com\/blog\/images\/ButtonIcons.jpg\"\/>\n<\/p>\n<p>\nNow, these icons are nowhere near the quality you&#8217;d get from an excellent designer, but they&#8217;re much better than I would probably come up without NodeBox. It makes me so comfortable to have programmatic cnotrol over the rendering. A whole palette of buttons and I have source code to them! The nerd&#8217;s design tool. This simply inspires me to be more creative than I am manipulating control points with a mouse. Seeya Illustrator,  wouldn&#8217;t wanna be ya!\n<\/p>\n<p>\nSo yee haw and three cheers for NodeBox, right? Sort of. The bad news is that I know it well enough now to be utterly disappointed by how much <em>more it could let me do<\/em>. The toolbox is pretty minimal, and exposes only a small fraction of even the basic path manipulation tools provided by Quartz. The documentation is also lacking and I find myself frequently discovering new tricks that are part of the code but simply not publicized. NodeBox is the beginning of something pretty amazing, and I&#8217;m excited to see where it leads. If this keeps up, I might end up influencing that direction by writing my own NodeBox libraries. It&#8217;s definitely as fun as most work gets.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve noticed that people are slowly discovering the new design of the blog. I meant to write a post about it when I &#8220;made it live&#8221; a week or so ago, but I have been putting it off for some reason. I think I didn&#8217;t want to waste a whole post on talking about my [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,19,4],"tags":[],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-programming","category-technology","category-web"],"_links":{"self":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":0,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"wp:attachment":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}