Staydecent / Web, design & sustainability 2012 Moving Off App Engine Adrian Unger Fri, 24 Feb 2012 00:00:00 -0600 /articles/moving-off-app-engine /articles/moving-off-app-engine <p class="big">Google App Engine provided a slew of learning, and allowed me to rapidly build my side-projects. But, it's time to move on.</p> <p>Google App Engine was exciting, and gave me an easy to run environment to learn Python. I built my portfolio and blog on GAE, as well as the original <a href="http://fullioapp.com">Fullio App</a> and the current <a href="http://cookitlocal.com">Cook It Local</a>. But, each of those projects, for their own reasons, has outgrown (or no longer feels at home) on Google App Engine. Let's go over the migration of each project!</p> <h2>Staydecent.ca</h2> <p>The GAE version of my website is pretty awesome. It's flexible, fast and allows me to update everything <a href="http://www.staydecent.ca/bits/publishing-by-email-app-engine">by email</a>. But, I also have a few static mini-sites for clients, fun projects and tests that I like to keep under the staydecent.ca domain. Uploading a folder of HTML and CSS isn't so simple on GAE compared to Apache. I also want to have my entire site backed up with Git. After finding <a href="https://github.com/mojombo/jekyll">Jekyll</a> inflexible (at least with my lack of Ruby knowledge) I spent a day building a <a href="https://github.com/staydecent/staydecent.ca">ridiculous <em>build</em> script</a> for a static website. It seems to be working&mdash;you're looking at it!</p> <h2>Fullio App</h2> <p>This was the most painful. Trying to get this idea out fast, while battling with actual client work, I hit a major roadblock with GAE. Fullio processes emails with large, full-sized image file attachments and uploads them to Amazon S3. GAE has (had?) a limit that prevented me from sending requests larger than 10 mb to S3. This just would not fly, as I wanted to allow people to host their mega-images. Failing to get Flask or Django (or Python for that matter) running smoothly on my Windows based laptop wasted days! So, I wrote a <a href="https://github.com/staydecent/Mud">framework inspired by GAE's webapp</a>, so even though I had to rewrite all the code, at least the concepts were the exact same. I also used <a href="http://www.mongodb.org/">MongoDB</a> to keep my data structures relatively the same. Fullio has seem some huge delays, but it's super close to a beta-launch. If you're interested, please bug me to get it out.</p> <h2>Cook It Local</h2> <p>Holy neglected project, Batman! Food, nature and sustainability seem to be my passions, so it's saddening to see this project sit idly by. Cook It Local, is an ever adapting idea, web app, resource, tool etc. to inspire people to eat and cook with local, seasonal ingredients. So, many mini-apps and components will end up existing. I don't feel GAE allows for rapid, frequent iterations. So, I am creating a set of libraries for rapid prototyping. The base of this endeavor starts with my HTTP router, <a href="https://github.com/staydecent/Gum/blob/master/Gum.php">Gum</a>. I'll soon have a post on <em>rapid prototyping with PHP</em>.</p> <h2>Closed platforms never win</h2> <p>Is that the lesson? Google App Engine is quite an amazing platform. The cost was basically zero to get my ideas up and running&mdash;I've been hosting staydecent.ca for zero cost for over a year now. But, my current emphasis is on flexibility and so I'll continue to move away from App Engine.</p> Responsive Web Design Adrian Unger Sun, 12 Jun 2011 00:00:00 -0500 /articles/responsive-web-design /articles/responsive-web-design <p class="big">The implementation and advocacy of responsive web design is increasing, and possibly fully manifested in the web design community. Are you taking part?</p> <h3>What Is Responsive Design?</h3> <p>Responsive web design, basically means your website responds to different screen sizes. So, people browsing your site on a Smartphone, Tablet, Netbook or Desktop all get a usable (and hopefully similar, but not exact) experience.</p> <h4>Types of Responses</h4> <p>There are two main ways to respond to various screen sizes and devices, with: <em>responsive designs</em> or <em>adaptive designs</em>. Responsive design usually means a fluid grid, using percentages. See: <a href="http://stephencaver.com/">Stephen Caver's Portfolio</a> and <a href="http://www.miekd.com/">Maykel Loomans' Blog</a>. And, adaptive design usually means you have fixed grid, that adapts (changes) depending on the screen size. See: <a href="http://colly.com/">Mr. Simon Collison</a> and <a href="http://www.authenticjobs.com/">Authentic Jobs</a>. You could also use a combination of both, sort of like my Blog that you’re reading now.</p> <h3>Media Queries</h3> <p>CSS3 media queries, quite literally, let you query different media types, <code>screen</code>, <code>print</code> and <code>handheld</code> as well as other helpful properties such as <code>min-width</code>, <code>max-width</code>, <code>orientation</code> and others. <strong>Media queries easily let you define your CSS for any screen size by querying the <code>min-width</code> and <code>max-width</code>.</strong> So, all you really need to know are the common screen widths. According to <a href="https://twitter.com/#!/bryanrieger/status/75597655870406656">Bryan Rieger</a> the “major breakpoints are 0-320, 320-720, 720+ with minor breakpoints dependent on content and key devices (ie: 360, 480, 768, etc).”</p> <h4>What Does This Mean?</h4> <p>In the below snippet, I have included the exact media queries that I use, as well as a few (one, for now) examples from popular CSS frameworks and authors. <script src="https://gist.github.com/1021805.js?file=media_queries.css"></script></p> <p>So, if you’re like me and usually develop a new grid for each website you design (which, I highly recommend) those media queries are really helpful in adjusting your design for specific devices and screen widths. And, if you like using boilerplates/frameworks and often design a 960px grid, <a href="http://getskeleton.com">Skeleton</a> is great.</p> <h3>But How Should I Adjust My Design For Each Query</h3> <p>Obviously, you can’t just continuously shrink your column widths—eventually you’d have content trying to fit into 20px columns! So, commonly, you'll end up dropping the number of columns. If you’re full-width design has 6 blocks floating together, you might have to drop that for each query: 4 blocks a row; 3 blocks a row; 2 blocks a row; everything in a single column.</p> <h3>That’s It!</h3> <p>Really. Responsive web design is not much work. I would say, for the bare minimum, design your full width site, Ipad width of 768px and mobile width of 320px.</p> <p>For corrections, comments and questions message me <a href="http://twitter.com/staydecent">@staydecent</a>.</p> Omtask, A Simpler Task List Adrian Unger Wed, 04 May 2011 00:00:00 -0500 /bits/omtask-simpler-task-list /bits/omtask-simpler-task-list <p class="big">Omtask is an omnibox task manager for people that want to finish tasks, not organize them.</p> <h3>Why Omtask?</h3> <p>When I came across <a href="http://stevelosh.com/projects/t">Steve Losh's t</a>, I loved the idea of it. But, I also realised the extent of my <em>bashing</em> was updating git and svn repositories. Being mostly, a front-end web developer—and addicted to the internet—I spend a huge amount of time in my Web Browser, which happens to be Chrome. <em>Hey, wait a minute! Aren't I able to run commands from Chrome's address bar?</em> Yes! So, I set out to implement the exact same feature set as <code>t</code> in a Google Chrome Extension.</p> <p><em>Not Quite There</em></p> <p>There is no marking tasks as <em>complete</em> and editing still needs to be added. But, you can add tasks, view them, and delete them. All from the Omnibar (this is what Chrome calls its address bar)! But, this is enough functionality for me to already begin using it. I stopped using <a href="http://taskthing.appspot.com">Task Thing</a> awhile ago.</p> <h3>It's So Easy!</h3> <p><code>t Blog about omtask.</code></p> <p>There is no package yet, as I think it needs some more testing and editing of tasks implemented. But, you can check out the source on <a href="https://github.com/staydecent/omtask">GitHub</a>. If you'd like to try it out right away, clone the repo, then on Chrome's Extension page click <em>Developer Mode</em> and <em>Load unpacked extension</em>.</p> Managing Coworking Adrian Unger Sat, 29 Jan 2011 00:00:00 -0600 /articles/managing-coworking /articles/managing-coworking <p class="big">When I was working in a team of about ~15 at an Advertising Agency, we were commonly trying to perfect how we all interacted with each other.</p> <p>Building off of 37Signals concept that work doesn't get done at work, we wanted to prevent intrusive chit-chatting and undelivered IMs. The main problems were: <strong>Is this person currently in the office? What is the person currently working on? Is this person available to talk about current projects, new projects or other matters?</strong> I recently saw a <a href="http://techcrunch.com/2011/01/05/yammer/">TechCrunch post</a> about <a href="http://yammer.com">Yammer</a> which was a potential solution to those problems that never really worked. It's very hard to integrate <em>yet another</em> app into a teams workflow. We already had Basecamp, Jira, Google Docs, IM, etc. so adding Yammer, which needed to be consciously updated every time someone switch gears (left the office, started a project, switched to another project, had a meeting), had a high barrier for most people.</p> <p>Every team has a suite of apps they use to manage all of their internal workings; the problem of perfecting internal interactions shouldn't be handled by another app to add to the suite. Instead, we should refine the way we access that suite of apps.</p> <h3>The Internal Start Page</h3> <p>Lots of you already use a start page for your web browsing and if you're like me you probably have your business apps (time tracking, invoicing etc.) pinned to your start page for easy access. This has always helped me in remembering to sign into Basecamp and log my hours, or check out the bug tracking app to see what should be resolved today. But, it's not a perfect fit. This is where the <strong>internal start page</strong> comes in.</p> <p><img src="http://lh5.ggpht.com/_OWzPdn_VEvM/TUR-UGUgvQI/AAAAAAAAAA0/yGQmXGploTE/s640/InternalStartPage.png" alt="Internal Start Page porotype" /></p> <p>The above is a very simple prototype, that could potentially solve this inter-office interaction problem. Like the <em>suite</em> offered from 37Signals for accounts using more than one product, there is an area containing unique icons for each app used by a team. This provides the basis of an internal start page. Where it becomes useful in improving interactions with coworker is the team list on the right (this layout would only suffice for small &lt; 25 person teams) where it shows all members of the team, and their current status.</p> <h3>Where's The Magic?</h3> <p>On it's own, this is just the same nuisance as when we tried to use Yammer—each person is required to update their status every time the are busy, available, in office, on the phone, etc. The magic idea is in the <em>portal</em>. Each linked app would have API access (most web based apps for teams have API's). When a person accesses an app and does some kind of unique activity, the <em>start page</em> would know, automatically adjusting that person's status.</p> <h3>Why Am I Sharing This Idea?</h3> <p>This <em>internal start page</em> idea would require a decent barrier to setup each app and team member's account. It would also require a decent amount of programming to make this work. And, could it <em>really</em> work? Let me know what you think <a href="http://twitter.com/staydecent">@staydecent</a>!</p> Being Self Taught Revisted Adrian Unger Wed, 05 Jan 2011 00:00:00 -0600 /articles/being-self-taught-revisted /articles/being-self-taught-revisted <p class="big">A few weeks ago I posted about possible drawbacks of being a self-taught web developer and I got some really good feedback.</p> <p>The two main problems I illustrated were: <strong>How to your asses your own ability and properly convey it</strong> and after assessing your ability <strong>how to properly determine the next step of progression.</strong> I now think both problems are futile. I'm self-taught because I didn't agree with the requirements and structure of schools and assessments are inherently part of schooling&mdash;So, why am I trying to assess myself?</p> <p>You can't just tell people you are an expert; that's for them to determine. Rather, show them what you do, and how it's helped people in the past.</p> <blockquote> <p>&ldquo;I&rsquo;ve never been asked for proof of my qualifications &mdash; my work speaks for itself and the majority of my new work comes from current, happy clients telling others about me.&rdquo; &mdash; <a href="http://www.drawar.com/posts/The-Unforeseen-Consequence-of-Being-Self-Taught#comment-9047">webecho</a></p> </blockquote> <h3>How to properly progress without assessment</h3> <p>Being a self-taught web developer, I already know how to keep up with a radically evolving industry. Where as, graduating from a rigid web design program, you may assume you have reached a certain level of knowledge and skill that will maintain your elligibility in getting work. But, <strong>Regardless of a formal or informal educational background in this field, the technology will permeate anyones&rsquo; experience and knowledge if they don't constantly learn.</strong> Being self-taught, I've become a proactive learner: When I wanted to know how to create a webpage I scoured the internet for tutorials, guides, blog posts and spec sheets.</p> <blockquote> <p>&ldquo;An earnest personal motivation to learn is not something you pick up in a structured learning environment, and this skill will help you stay on top of trends and developments in the field.&ldquo; &mdash; <a href="http://www.drawar.com/posts/The-Unforeseen-Consequence-of-Being-Self-Taught#comment-9046">eggNrice</a></p> </blockquote> <p>However, being solely self-taught may not work for every field related to web design and develoment. When it comes to designers <a href="http://www.drawar.com/posts/The-Unforeseen-Consequence-of-Being-Self-Taught#comment-9072">benek</a> argues:</p> <p><q>&ldquo;[&hellip;] having formal education in design is huge if you&rsquo;re a designer. Most self-taught designers I see with little experience are just copying trendy tutorials online and they have no foundation in the principles of design.&rdquo;</q></p> <p>Though, it's very possible one could also teach themselves the fundamentals. I suppose it's just more common place that purely self-taught designers often miss the foundation of good design.</p> <p>In the end, the educational background of someone shouldn't be the primary tell for their perceived ability. Your passion and hunger within your respective field guarantees much more. It's actually pretty prevalant in the design and web industry that a your work outweighs your educational experience.</p> The Unforeseen Consequence of Being Self-Taught Adrian Unger Sun, 12 Dec 2010 00:00:00 -0600 /articles/consequence-of-being-self-taught /articles/consequence-of-being-self-taught <p class="big">I had yet to notice any drawbacks of working in a field where I have either taught myself what I need to know or learned through work experience. Until now.</p> <p>Hopefully you have realized, that I am a Web Designer &amp; Developer. And, I'll now let you know, that I learned nearly everything for this career with trial &amp; error and the internet. And, perhaps more surprising, I can honestly say that my gateway into this career was playing a <a href="http://en.wikipedia.org/wiki/Counter-Strike">popular</a> computer game nearly nine years ago.</p> <h3>Becoming A Self-Teacher</h3> <p>Sure, Counter-Strike itself was rather addicting but what really got my attention was all those files (just left there for me to explore!) inside the install directory. There were graphics, sounds, levels and even a unique <strong>scripting language</strong>! So, through the power of the internet, I taught myself how to write Counter-Strike scripts. But, after finding or reading about most of the exploits, scripting became dull—I wasn't actually playing the game that much at this point, so there was no utility left. Soon after, I discovered <a href="http://en.wikipedia.org/wiki/Wallhack#Wallhacking">hacking</a>. Naturally, I <a href="http://www.gamedeception.net/">taught</a> myself <strong>how to create multiplayer hacks</strong>. Actually, I even worked on some of most popular public cheats of a rather limited time. From the amazing scripting community to the even more amazing hacking communities, I found a viable way to learn whatever I was interested in. And, I continue this approach even today.</p> <h3>Relevant Lessons</h3> <p>My foray into creating websites was <a href="http://www.crunchbase.com/company/geocities">Geocities</a>. Thankfully, I desired more control and eventually learned HTML; my resource was the <a href="http://www.htmlgoodies.com/primers/html/">HTML Goodies Primers</a>. Which, looking back on it now, seems like a well structured lesson plan that could resemble what's taught in school. Sadly, I can't recall what my main resource was for learning CSS, but for PHP <a href="http://tizag.com">Tizag</a> covers the basics pretty well. From that point, I had developed a strong enough base, that the rest of my learning could be achieved by reading the <a href="http://docs.python.org/">docs</a> and <a href="http://dev.w3.org/html5/spec/">spec sheets</a> for the technologies I was interested in.</p> <h3>The Problems</h3> <p>Recently, I was reading a bunch of the latest articles on <a href="http://www.alistapart.com/">A List Apart</a> and I noticed something I didn't have an answer too. Which was, half the articles seemed useful and applicable while the other half seemed obvious. My opinion is that A List Apart offers the highest level of HTML (and similar technologies) understanding. Which lead to my confusion: are only some of the articles aimed for professionals while others are well-suited for beginners? Or, since after following the HTML Goodies Primers I learned much of everything else <em>as it came up</em> in actual work experience, that my knowledge is scattered? Perhaps, I have an understanding of some seemingly expert-level front-end development concepts, while missing other, intermediate or even beginner-level concepts? At the moment, I can't answer those questions. And, that brings up two problems: <strong>Even though I spend almost every hour living inside Web Development, can I claim expertise?</strong> I don't have any physical or widely-accepted <em>certification</em>—just experience. This is a problem, because I don't want to lie and I don't want to claim more than I mean. Another problem is, where do I go from here? <strong>How do I determine what level of knowledge I have of Web Development, and how do I properly determine the next step of progression?</strong></p> <p>Is anyone else self-taught? Have you found any problems associated with being self-taught? I'd love to hear from you either via [email](mailto: comments@staydecent.ca) or <a href="http://twitter.com/staydecent">Twitter</a>.</p> My First Visit To Seattle Adrian Unger Sun, 28 Nov 2010 00:00:00 -0600 /articles/my-first-visit-to-seattle /articles/my-first-visit-to-seattle <p class="big">Since I missed the chance to see one of my all-time favourite people live, in Vancouver, I had an all-too-good reason to visit Seattle for the first time.</p> <p>Grinderman, the newest project of Nick Cave and most of the Bad Seeds, is finishing up their North American tour. It seems the show in Vancouver sold out too fast for me and, without hesitation, caused me to buy tickets to the Seattle show. Incredibly excited to see Nick Cave in the flesh—I just can't help but enjoy <em>almost</em> everything he produces—I was also excited to visit Seattle for the first time. Which is a strange thing as I have, thanks mostly in part by my Dad, seen more American soil than Canadian.</p> <h3>Belltown</h3> <p>My girlfriend and I decided to stay at the Belltown Inn(in Belltown!), which I booked through Hotels.ca. The process was easy enough, and it landed us right in between the concert Venue and Pike Place Market. The Hotel itself isn't much to talk about: it's clean; friendly staff; free bicycles; whatever. Thanks to Hotels.ca we stayed one night at half price, but I can't see myself going back at full price.</p> <p>Now, the neighbourhood of Belltown is pretty interesting. Though I haven't seen much of Seattle(stayed within Belltown, West Edge and the Seattle Centre) I came to like it immediately. Maybe because it's like Gastown but not dark, dirty &amp; depressing. Belltown is interesting because there is no apparent sign of generic and duplicated business. Actually, from what I saw, Seattle has far less fast-food joints and chain restaurants than Vancouver(I'm probably thinking of Downtown and Gastown). I was really surprised that I only came across two Starbucks, and yet both of them had unique and rather interesting storefronts.</p> <h3>Eating</h3> <p>It was rather easy to find online restaurant recommendations for Seattle and perhaps through instinct shortlisted about 6-8 for my Girlfriend and I to choose from once there. Le Pichet easily got both of us excited and we went for our first meal(brunch/lunch thing) there. Le Pichet serves traditional and regional French food. We shared a plate of charcuterie and a Black Cod, Orange &amp; watercress salad. Awesome. It may not have been the best plate of prepared meats I've had, but it was damn tasty, as was the bread and salad. What I really enjoyed was the atmosphere: totally relaxed, subtle decor, really attentive service and Massive Attack on the playlist.</p> <p>As a snack while browsing the Pike Place Market, I grabbed a BLT from Three Sisters Cafe. Perhaps a bit pricey, but good ingredients and just made simply. No fluff.</p> <p>For dinner, we went to the frequently recommended Zig Zag Cafe. First impressions are tough, and it didn't go too well for this Cafe: a mentally distant hostess, red lighting and purple velvet. Not my vibe. I think the high-mark of this place is the drinks—the beverage menu is massive—but we don't care much for this as we're more interested in food. Oh well, we ordered the Boar Bacon Risotto and Full Quail. The food is well prepared and mostly flavourful. The risotto came with big cubes of Boar, which was great! But, Istill prefer a simple Mushroom risotto. The quail was good…just a bit boring. Maybe, if the skin was crispy, or there was more fat, or a tasty sauce all over it. But it was basically just a seasoned bird on top of some seasoned vegetables. Well made, but not exciting.</p> <h3>Grinderman</h3> <p>We caught Grinderman at the King Cat Theatre, a movie-theatre-turned-venue which works quite well. I'm never really sure how to describe Grinderman. I've heard the term, Garage Rock, thrown around. But it's not exactly the sound I think of when I hear that term. Basically, they're a bunch of bearded baddasses(and Nick) who've been playing music for at least 30 years. Nick Cave's writings and lyrics are usually pretty dark and disturbing, but Grinderman really pushes the dirt. The show was loud, dirty and full of energy—they are just amazing to watch.</p> <h3>I'll be back</h3> <p>I <em>really</em> enjoyed Seattle. I couldn't help but compare it to Vancouver and, though my experience is limited, Seattle is a golden city to me right now. It was just so relaxed: big sidewalks, much less inner city traffic, and just so many <strong>unique</strong> restaurants, cafe's, bars and shops. Walking aimlessly, we never were far from yet another local food spot.</p> <p>Seattle is just easy.</p> Logicalism Over Minimalism Adrian Unger Wed, 08 Sep 2010 00:00:00 -0500 /articles/logicalism-over-minimalism /articles/logicalism-over-minimalism <p class="big">I don't subscribe to any sort of minimalist way of life. But, that word seems to have a meaning that I can often attest to my life. The funny thing about words and their meaning is that they aren't consistent across all means.</p> <p>In my very limited scope of <a href="http://mnmal.org/">minimalist inspiration</a>, <em>the word</em> often is attributed to Apple—or the other way around. I mention this, firstly, because labeling and brands are things I attempt to avoid. Secondly, when I said <em>often</em> I meant blindly and always. If anyone shares this limited scope with me, I would like to let them know: <strong>Minimalism is a jaded word with lost meaning, and is more keen to be a fad or popular tag.</strong> And, on the reverse, Windows is hailed as the anti-christ of minimalism. Don't be fooled.</p> <p>In all senses and progressions of my life, I tend to believe I think about things logically. And especially when I started freelancing. I think logically about the way I <strong>work, and the devices used for work and communication; about food, where it comes from and how it's prepared; material items I own, like my clothing, furniture and other equipment</strong>; and, basically anything else I deal with on a day-to-day basis.</p> <p>I'm going to split up each one of these things into separate posts. And, because Apple, computers and gadgets seemed to spark my definition debacle(maybe not quite <em>that</em> serious), I will start there:</p> <h3>The End Of The Branded, Labeled Minimalism In The Office</h3> <p>These <a href="http://mnmal.org/">blogs</a> and <a href="http://usesthis.com/">semi-popular internet figures</a> will have you believe that you need to own 2 to 4 Apple made products to complete your minimalist lifestyle. Now, they may not make this statement outright, but in their act of sharing their all-too-similar ways of life a very pretty, brushed-steel picture is painted. Actually, <a href="http://www.flickr.com/photos/radiantmark/3267684305/" title="Laptop and desktop? Not very minimal">this picture</a>. And, <a href="http://www.vistaload.de/bilder/arbeitsp2.jpg" title="Laptop and desktop? Not very minimal">this one</a>.</p> <p>In multiple, thousand-word essays these authors have shown that you <em>need</em> an Ikea tabletop, some kind of fancy desk chair, the prominent desk lamp, a mac computer, a mighty mouse(such garbage), a cinema display, an iphone, a sleek dock, an ipod, an ipad, and no one cares anymore.</p> <p>In absolute, hellish contrast I am able to Design(even for print!), write markup, code(in multiple languages!), record, produce, take notes(<em>GASP</em> without Word! And, without awesomely, cult loved "minimal" note taking apps exclusive for some other OS!) all with my…Windows 7 based laptop. Now, I'm not going to go into great detail about how <strong>you can work on windows just as minimally and simply as on a mac</strong>. Because you're a grown-up, and you know that you can have a happy computing life without selling your soul to some <a href="http://microsoft.com">corporation</a> or <a href="http://apple.com">brand</a>. You don't have to do any one thing any one way, for the rest of your life and never fell that way of life. You can adapt. You can stop caring. You can still be efficient.</p> <p>Now, I'd like to believe that people will agree with me that this is a rather unimpressive yet beautiful space to work in:</p> <p><img src="http://imgur.com/16W6K.jpg" alt="My Current Workspace. I am still looking for a desk." class="photo" /></p> <p>And now, you may argue "it would look <em>even better</em> with a macpro." And I retort "Suckas! I don't have an office—I just put my computer away in its hiding place, when I'm finished working."</p> <p>And even now, you may think that I, the author, has gone astray, and lost his original point. But, I will emphasize that my point is to stop caring. This is so silly. If you <strong>honestly</strong> believe that you cannot share the same minimalist lifestyle of simplicity and happiness and zen and organization and flowing water and grooveshark and starbucks and meetups with a Windows based machine in place of a Macintosh, then you should add the following disclaimer to your blog and every accompanying brand hugging post:</p> <p><strong>I am unwilling to be adaptable. I am unwilling to take matters into my own hand and consider all possibilities. I believe minimalism is always the easiest most obvious solution, and let the past dictate the future. I am set in stone. I am a minimalist without logic.</strong></p> Minor Update to Task Thing Adrian Unger Wed, 01 Sep 2010 00:00:00 -0500 /bits/minor-update-task-thing /bits/minor-update-task-thing <p class="big">While remaining rather minimal, Task Thing has a new feature—more specifically a helpful piece of data is now displayed on completed tasks.</p> <p>For anyone who is unaware, I created a little app called <a href="http://taskthing.appspot.com">Task Thing</a> a <a href="http://blog.staydecent.ca/entry/task-thing">few months ago</a>. It hasn't gained much traction, but a couple people seem to be using it(Woo-ee!).</p> <p>With the hope that I will be more efficient and precise at tracking my time, <strong>Task Thing now tells you how long it took for you to complete a task</strong>. This functionality was already implemented as Task Thing logs the creation date and last modified date for each task. Using this data, when a task is marked as completed(which logs the time of this action) Task Thing displays that time relative to the time since creation.</p> <p>Because I use Task Thing at a very micro scale—I only add tasks that I am tackling that day, and usually as I begin working on them—I can actually reference this <em>time to complete</em> when logging my hours for the day. Obviously, if I create a task one day, ignore it for a few days, then work on it, and mark it complete, it's not an accurate measure of <strong>actual time</strong> committed to that task. But, still an interesting piece of data. Maybe I should start logging average time to complete tasks?</p> <p><strong><a href="http://taskthing.appspot.com">Try Task Thing today</a></strong></p> Publishing By Email With Google App Engine Adrian Unger Sat, 03 Jul 2010 00:00:00 -0500 /bits/publishing-by-email-app-engine /bits/publishing-by-email-app-engine <p class="big">I really like the Posterous approach to publishing online—I often write my ideas down in GMail. So I decided to enable posting by email on my blog.</p> <p>The concept needs some work, but could very easily be adapted to a multi-user environment. In that case, some serious security work would be required. But for my personal blog, it should suffice.</p> <h3>How It Works</h3> <p>Google App Engine has amazing Email handling built in. Just check the <a href="http://code.google.com/appengine/docs/python/mail/">docs</a>. Because of this, not much code is required. Anyway, here's what I've accomplished:</p> <ol> <li>Write posts in email</li> <li>Process those emails for <em>YAML Front Matter</em></li> <li>Continue using Markdown</li> </ol> <p>Pretty basic. I haven't got into checking attachments, but I don't think it would be too much more work. As for the <a href="http://wiki.github.com/mojombo/jekyll/yaml-front-matter">YAML Front Matter</a>, a concept taken from <a href="http://jekyllrb.com/">Jekyll</a>, I follow <a href="http://hunch.se/">Rasmus Andersson's</a> formatting exactly as it <a href="http://github.com/rsms/gitblog/blob/master/docs/content.md">appears</a> in <a href="http://github.com/rsms/gitblog">Gitblog</a></p> <h3>How I Did It</h3> <p>I just read through those <a href="http://code.google.com/appengine/docs/python/mail/">docs</a> I mentioned above and wrote an Email Handler. My blog has a very simple Entry handler, so saving new entries is pretty easy.</p> <script src="http://gist.github.com/462907.js?file=email.py"></script> <p>If you have any questions or input, message me on [Twitter]( http://twitter.com Staydecent on Twitter).</p> Installing App Engine On Windows Adrian Unger Wed, 30 Jun 2010 00:00:00 -0500 /bits/installing-app-engine-on-windows /bits/installing-app-engine-on-windows <p class="big">The most difficult part of installing Google App Engine on Windows is the SSL module. But I've decided to compile a very simple guide for the whole process.</p> <p>I am not going to cover any sort of usage guides. This is just a list to installing everything required(on Windows) to deploy an App to the GAE cloud.</p> <ol> <li>Download &amp; Install <a href="http://www.python.org/download/releases/2.5">Python25)</a></li> <li>Download &amp; Install <a href="http://code.google.com/appengine/downloads.html">App Engine</a></li> <li>Download &amp; Install <a href="http://beautifulisbetterthanugly.com/s/uploads/python/ssl-1.15.win32-py2.5.exe">Python25 SSL Installer</a></li> </ol> <p>The hardest part: Installing the SSL Module. Python25, unlike 26 and newer, does not come with the SSL Module and must be installed. The normal route of <code>python setup.py install</code> will produce errors. Something about wrong compilers. There are <a href="http://malei39.blogspot.com/2010/02/install-ssl-module-for-pyhon-254.html">tutorials</a> out there for installing all the dependencies manually. Luckily, someone has created an installer exe. I have tested this on WindowsXP and Windows7 and it works.</p> <h3>32bit Versus 64bit</h3> <p>Do not install the 64 bit version of Python on Windows. If you do you will have to compile everything yourself. Including that installer, that installer is 32bit only. I really don't know any benefit to installing the 64bit version of Python.</p> <p>Unless I am forgetting something, that is all you need.</p> Wordpress Featured Post Slider Adrian Unger Thu, 24 Jun 2010 00:00:00 -0500 /bits/wordpress-featured-post-slider /bits/wordpress-featured-post-slider <p class="big">WordPress 3 is out: And it makes developing feature rich, user maintainable websites possible with the just the core.</p> <p>WordPress is already known for its ease of development, deployment &amp; maintainability. Well, maybe not always the last one due to unmaintained plugins. This is addressed in WordPress 3.0 by <a href="http://codex.wordpress.org/Version_3.0">adding</a> to the expansive core. Anyway, here's an example of how to build a common blog feature with just core functions and some jQuery.</p> <h3>Featured Image Slider</h3> <div class="aside">Note: Featured Image—as it's called within the admin UI—is synonymous with Post Thumbnail—as it's called in the function references.</div> <p>What is it? It's a way of showcasing all of the posts with a <a href="http://markjaquith.wordpress.com/2009/12/23/new-in-wordpress-2-9-post-thumbnail-images/">featured image</a> in a simple slider (or other jQuery animation). All we have to do, is add support for post thumbnails and display them within the loop, and jQuery will handle the animation.</p> <h3>The WordPress Code</h3> <p>For a deeper explanation of post thumbnails, read <a href="http://markjaquith.wordpress.com/2009/12/23/new-in-wordpress-2-9-post-thumbnail-images/">Mark Jaquith's Post</a>. For now, here is the code to add support and define the sizes of our post thumbnails:</p> <pre><code>add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 300, 100, true ); // Normal thumb size add_image_size( 'featured-image', 900, 300, true ); // Slider size </code></pre> <p>I displayed the slider on the homepage only, but pick a theme file and add the following within the loop:</p> <pre><code>&lt;?php if (in_category('10') &amp;&amp; has_post_thumbnail()) : // Category 10 is my 'Featured' category ?&gt; &lt;a href="&lt;?php the_permalink() ?&gt;" title="Permalink to &lt;?php the_title() ?&gt;" rel="bookmark"&gt; &lt;?php the_post_thumbnail('featured-image'); // Make sure you call the image size you defined in functions.php ?&gt; &lt;/a&gt; &lt;?php endif; ?&gt; </code></pre> <h3>The jQuery Code</h3> <p>This is covered everywhere. You can use <a href="http://sorgalla.com/projects/jcarousel/">jCarousel</a> or any other jQuery(or other framework) plugin. Otherwise, check out my live <a href="http://highfivecamp.com">implementation</a> and feel free to view the source.</p> Staying Productive With Task Thing Adrian Unger Tue, 25 May 2010 00:00:00 -0500 /bits/task-thing /bits/task-thing <p class="big">I have recently jumped back into the freelance world. And I need ways to stay productive.</p> <h3>Why I am freelancing</h3> <p>Growing sick of the <em>office</em> &amp; meetings &amp; commuting &amp; packed lunches &amp; disagreements, I decided to get back into freelancing—effectively taking control of my life. The first day I sat down at my desk, I asked “What the fuck am I supposed to do today?” I needed a list of things(tasks) to keep me in check.</p> <h3>Available tools</h3> <p>Of course, the first thing I did was consider all of the to-do lists and task lists I have used in the past or just heard of(there are lots): <a href="http://todoist.com/">Todoist</a>, too much; <a href="http://tadalist.com/">Ta-da List</a>, I may as well used pen &amp; paper; <a href="http://teuxdeux.com/">Teux Deux</a>, this was a close winner, but I don't like the multiple lists concept, or the small font-size. Naturally, if I wanted something I wouldn't complain about and could use every day, I needed to create my own.</p> <h3>Introducing Task Thing</h3> <p>This brings us to <a href="http://taskthing.appspot.com">Task Thing</a>! I would say this is very similar to Ta-da List, but with actual benefits over using just pen &amp; paper. I say so because of drag &amp; drop, inline editing and an understandable interface. Maybe I'm wrong, but feel free to <a href="http://taskthing.appspot.com">give it a try</a> yourself!</p> <div style="background:url(http://taskthing.appspot.com/goods/png/screen.png);width:500px;height:200px;margin:0 auto 2em;-webkit-box-shadow: rgba(0, 0, 0, 0.199219) 0px 0px 15px;"></div> <h3>Building Task Thing</h3> <p>I built Task Thing over the better part of a day. This was possible because I was using a bunch of code I had written for another concept of mine(Hint: Panic Status Board). I won't go into too much detail, but Task Things' functionality is broken up into two models: list &amp; task. The list model represents the page which gets one owner and any amount of tasks(owned by the same owner). A task has two editable fields, title &amp; description as well as some other internal data(dates, priority, etc). Linking the tasks to the proper list is rather simple: the list attributes a unique slug and owner. When you view that list, you must login as the owner(logging in, you are redirected to your list). The tasks also have an owner field, which is matched with the list. Learning how to link different values in the App Engine datastore has been a lot of fun and so much lighter than MySQL joins. Also, I <a href="http://noahstokes.com/">Ajaxed</a> the shit out of it.</p> <h3>Staying Productive</h3> <p>Creating a task list was the first step I took in helping myself <em>stay productive</em>, and I am sure there will be more. So, if you care, <a href="http://feeds.feedburner.com/staydecent" title="the Staydecent™ Blog feed">check this blog often</a> as I post more things.</p> jQuery Random Each() Function Adrian Unger Fri, 19 Mar 2010 00:00:00 -0500 /bits/jquery-random-each /bits/jquery-random-each <p class="big">Fading in elements incrementally in order of the dom tree is cool, but so is fading in elements in random order.</p> <p>The former is pretty simple, you iterate through each element while setting a timeout for fading in:</p> <pre><code>$("div").each(function(i) { var e = $(this); e.fadeTo(0, 0.05); setTimeout(function(){ e.fadeTo(250, 1); }, i*25); }); </code></pre> <p><code>i</code> is the index of each found element in order of the dom tree. As we get further down the tree the timeout is longer and longer—since the animation lasts longer than a couple timeouts the animations will overlap.</p> <p>To make it random, we still follow the dom tree in order, but we set the timeouts at differentiating lengths(randomly). Say we have 10 elements total, we can assume the indices are <code>0,1,2,3,4,5,6,7,8,9</code>, We just need to sort those numbers randomly. Enter <code>randsort()</code>:</p> <pre><code>function randsort(c) { var o = new Array(); for (var i = 0; i &lt; c; i++) { var n = Math.floor(Math.random()*c); if( jQuery.inArray(n, o) &gt; 0 ) --i; else o.push(n); } return o; } </code></pre> <p>We pass the function the number of found elements and it loops through them creating new numbers(within the range of <code>c</code>). To avoid duplicated numbers we use jQuery's <code>inArray</code> and “skip” it if true. In the end, you have those indices in a random order. Moving along:</p> <pre><code>var e = $('div') // The elements we're searching var c = e.size() // Total number of those elements var r = randsort(c) // an array of the element indices in random order </code></pre> <p>Now an ever so slight variance on that original each function:</p> <pre><code>// the jQuery selector could be replaced with e $("div").each(function(i) { var e = $(this); e.fadeTo(0, 0.05); setTimeout(function(){ e.fadeTo(250, 1); }, r[i]*10); }); </code></pre> <p>So what's different? <code>r[i]*10</code>. We are using the <code>i</code> index to call the <code>r</code> array in order, but since the values are a random representation of the element indices the timeouts differentiate. Boom!</p> <p>Check out a <a href="http://staydecent.nfshost.com/demos/js/randomeach.htm">demo here.</a></p> An Introduction Adrian Unger Thu, 18 Mar 2010 00:00:00 -0500 /bits/intro /bits/intro <p class="big">I have relaunched my website and launched my blog as a separate website. Here's how and why.</p> <div class="clearfix"> <div class="col size1of3"> <h3>In The Old Days</h3> <p>A few(or several) years back I had an account at a host named FreePGS, they offered PHP and MySQL at no cost! It housed numerous iterations of my homepage even up until Staydecent. FreePGS' offered service changed numerous times while I was there: From completely free, to $3 a year, to no longer accepting new accounts. Even when they started charging, I won a design contest and got to remain there for free, surviving through the death of FreePGS. In the end, I was plopped onto some reject GoDaddy reseller server that barely had enough power to load Plesk, while they asked me for $3 a year. Eventually, I stopped paying for that account.</p> </div> <div class="col size1of3"> <h3>The Hiatus</h3> <p>I spent too much time researching hosts. Web Faction, Linode, Slicehost, PRGMR, all promising and none were a clear winner for me. So, I ended up with a static landing page for maybe a year? Anyway, I was serving this static page up on Nearly Free Speech, a pay for what you get service. Simple and cheap. Going back to those other hosts: the main reason I was considering them was because I wanted to learn the ins and outs of a VPS(or similarly free[as in freedom] service). But, VPS is dated and <em>The Cloud</em> is in. So, I started playing around with Google App Engine.</p> </div> <div class="col size1of3 last"> <h3>In The Cloud</h3> <p><em>Here's lookin’ at you, kid!</em> What's that mean? Who cares, Rejoice! I built a Blog in Python on GAE.</p> <p>This blog is hosted on App Engine, but what about the portfolio? It's still on Nearly Free Speech, serving up static files. Why not? And, this is the first time I've split my blog away from the main site. Now, I have <strong>two</strong> sites to mess around with, constantly!</p> <p>If you haven't noticed, or realized from this post: I change my website all the time. It constantly evolves as I learn new things and try new things with it. And so will this blog! I will try and be more consistent and make sure permalinks live on and keep downtime to a minimum. And, at least for now, the current Staydecent Blog and Staydecent Portfolio are not going to change much.</p> </div> </div> An Interview With Chris Allen Adrian Unger Wed, 04 Feb 2009 00:00:00 -0600 /articles/interview-chris-allen /articles/interview-chris-allen <p class="big">Chris Allen is a Vancouver based freelance Graphic Designer and Art Director, an Emily Carr Institute of Art and Design graduate and has strong roots in the Skateboarding industry.</p> <p><em>Check out this interview I conducted with him to find out more!</em></p> <p><img class="photo" src="http://lh6.ggpht.com/_Z_QjhvaYEE4/SYnvFY2fjTI/AAAAAAAAAKk/4fQwJrlXCRY/s800/c-allen02.jpg" /></p> <h4>Hey Chris, could you tell me a bit about your background(live, born, age, work, school, whatever!)?</h4> <p>Age 31; Work and live in Vancouver, BC Canada; Studied graphic design at ECIAD; Freelance designer currently working with Studio: Blackwell.</p> <h4>What do you think of Vancouver, in terms of graphic design work and whatever else stands out?</h4> <p>Vancouver is a beautiful city and [has] recently been rated as one of the worlds move livable cities. In regards to graphic design, I feel opportunity is a little lacking and as a result Vancouver has an over abundance of interactive studios and advertising agencies. Vancouver is not on the international radar of design hotspots by any means, but I feel confident in saying that good work is good work and can be produced anywhere. At the moment Vancouver seems to be working for me but [I] would love to experience living and working in a large city like London or New York.</p> <h4>Do you remember working for your first client? Anything to tell?</h4> <p>My fist client was a friend who required help in branding a small clothing line he was developing. With no formal training, technically or theoretically the intent was there and at the level we were operating it that was the most important thing. We knew what we wanted to do and how things should look it was just a matter of making it happen. No rationale, no theory—just make it look good. We photographed and produced a brand book/catalogue and developed a logo. It was all very simple but proved to be effective and as a result landing him the Urban Outfitters account.</p> <blockquote class="col size2of5">We knew what we wanted to do and how things should look it was just a matter of making it happen. No rationale, no theory—just make it look good.</blockquote> <h4>I noticed your older work is largely based around the skateboarding and street cultures, how did that come about?</h4> <p>As a freelance designer I try and pursue projects that compliment and reflect my interest. Much like the work I did with Transworld Skateboarding. At that point of my life I was was heavily involved in skateboarding industry and also being a skateboarder myself it was only natural that I pursued work in which I was knowledgeable and had a love for. A Canadian friend of mine was the art director at Transworld in San Diego while I was attending Emily Carr. He contacted me to design an editorial feature figuring I could use the break, not to mention the cash. This proved to be a great way to get my feet wet in editorial design and also achieve a childhood dream of working at a skateboard magazine.</p> <h4>And now, your new work shows some great strategic branding, was this a natural progression moving to that kind of work? Which type of work do you prefer?</h4> <p>I think this is a natural progression for most designers. The more experience a designer gains the more knowledge they can apply to larger more complex projects. Honestly I prefer whatever project allows for the greatest opportunity for a new experience and a chance to create something I have not done before allowing me to constantly progress as a designer. My fear is doing the same thing over and over again, I think that is why I have been so reluctant to work in advertising, I am scared of the formula, the punch lines.</p> <p><img class="photo" src="http://lh4.ggpht.com/_Z_QjhvaYEE4/SYnvFd91AeI/AAAAAAAAAKs/lMtDTFxdFQM/s800/c-allen03.jpg" /> <img class="photo" src="http://lh3.ggpht.com/_Z_QjhvaYEE4/SYnvFs-L51I/AAAAAAAAAK0/OuKUotaAeiE/s800/c-allen04.jpg" /></p> <h4>Are you able to tell us about any current or recent projects you are working on?</h4> <p>Currently I am working with Studio: Blackwell designing exhibition catalogues and artist monographs for the Gagosian Gallery and Rizzoli. Kelsey Blackwell is amazing and has taught me so many valuable lessons, not just with regards to design but theory and life itself. I feel honored to have such an incredible mentor.</p> <h4>What would be your ultimate dream project?</h4> <p>At this point I can't really give you a specific answer to that question. I guess my dream project would be to start a small publishing company and work remotely from a detached home studio with floor to ceiling glass in the middle of a forest.</p> <h4>What tracks, artists or albums are you listening to right now?</h4> <p>This is an interview in itself. The following are what I pulled off the records shelf in no particular order:</p> <ul> <li>Led Zeppelin - II </li> <li>Booker T &amp; The M.G.'s - Melting Pot </li> <li>Bob Dylan - Blood On The Tracks </li> <li>Black Sabbath - Sabbath Bloody Sabbath </li> <li>The Doors - Strange Days </li> <li>David Bowie - The Rise And Fall OF Ziggy Stardust And The Spiders From Mars </li> <li>Bill Withers - Still Bill </li> <li>Pink Floyd - Dark Side Of The Moon </li> <li>Heart - Little Queen </li> <li>Jane Birkin, Serge Gainsbourg - Self Titled </li> <li>Santana - Abraxas </li> <li>Unicorn - Tyrannosaurus Rex </li> </ul> <h4>Some Artists, designers, companies your into right now?</h4> <p>There are too many to list but I do find the following people although contemporary very interesting and influential: Storm Thorgerson (Hipgnosis), Bruce Mau Design, Spin, Build, Underline Studio, 2x4, Made Thought, Browns, Pentagram, Experimental Jetset, Non Format, Graphic Thought Facility, NB: Studio........</p> <h4>The essentials of every day life?</h4> <p>Family, my lovely girlfriend, friends, my animals, nature, food, music, photography, art and design.</p> <p><em>Many thanks to Chris Allen for being my first interviewee! Please check out his <a href="http://christopherallen.ca" target="_blank">website</a> for more work and info.</em></p>