Thinking Like a Programmer

April 23rd, 2009

Something that helps me immensely when I’m stuck with a programming/logic problem is to write it out in plain English as an “if/then” statement. In the following screenshot, I was trying to figure out how to keep a tooltip bubble from going off screen.

code_ex

Simple enough, right? If an item’s position is a certain distance from the edge, move the legend movieclip. After that simple statement, I added some definitions:

* item position (x,y)
* distance (position + (position and size of bubble)) as compared the width of stage

OK. Starting to get a bit more tricky. Let’s start with the x position. If the x position of the parent movieclip, plus the x position of the legend plus the width of the legend is greater then or equal to the width of the stage, move it. Soooo

var num:Number = event.currentTarget.parent.x + mc.legend.x + mc.legend.width;
if (num >= stage.stageWidth){//move it

}

OK, I see a few potential issues. Where are the origins of the legend and parent movieclip? In the center or upper left? I tested this by outputting “num”, outputting the stage width, and testing my if statement.

var num:Number = event.currentTarget.parent.x + mc.legend.x + mc.legend.width;
trace(stage.stageWidth);
if(num >= stage.stageWidth){
trace(”win: ” + num);
}else{
trace(”lose: ” + num);
}

And, it works like a charm! Now, I can add/subject amounts (maybe I don’t want it to be within 5px of the edge), and I can add my code to animate the label. The point, however, is to think like a programmer: Write a line, test it. Write a line, test it. If something is wrong (I initially typed this.stage.width and came up with a number like 568992 which isn’t what I was going for), then you catch it immediatly. If you’re confronted with a seemingly complex problem, and you have no idea where to begin, just write out what you’re trying to accomplish in plain english in if/then statements. You may end up having to break up your statements into smaller ones if your issue is very complicated, but then you end up with little bite-sized problems that can be tackled one at a time. Simplify, simplify, simplify.

Obviously this lesson in logic and problem-solving goes for any complex project, not just programming. If you feel overwhelmed by anything, break it up. For instance, if I have to race a 75 mile road race on my bike, I think of each hill as a seperate race. Each person as a seperate competitor to pass. It’s much easier to acheive small goals and solve small problems then try to wrap your mind around some huge complex project or problem. Play it one step at a time.

K Efficiency, Process

Rolling up the sleeves

April 23rd, 2009

I went to a recent event put on by a Flash user group in town that focused on the needs of small business and launching a business. How aprepoe. The speaker was from the Small Business Development Center, and talk about things such as Business Plans, cash flow, financial forecasting, distribution channels, revenue diversity and much more. Back that up! I knew there was more to this then I thought.

Time to roll up the sleeves and get dirty–er–serious. A friend asked me yesterday, “if one of your clients offered you a job, would you take it?” to which I replied, “they’d have to offer me a LOT of money.” A small part of me says yes, you would! Don’t be stupid! No more stress about where your next project is going to come from, no more stress about paying rent! take it! But a much larger part of me says Don’t abandon my dreams for money.

At this point, I’m not even sure what my dreams are. I know one thing for sure, though: I want to be the master of my universe. I want to set my own hours, my own schedule, I want to have the freedom to run away to Colorado to mountain bike. I want to create amazing things that I can be proud of. I want to build an empire–an empire of One.

When I think about living the life less ordinary, that does not revolve around the old 9-5, I get really excited and inspired. It makes me realize that anything is possible, I don’t have to put my head down and follow the Standard Procedure. Life is limitless, and I don’t want to limit my inspired, fun time to the weekend. I want to be creative and inspired ALL the time. Is this possible? I like to think so. Sure, I will have to deal with the dirty work (entering receipts into QuickBooks, calling clients, networking, sales), but it’s inspired because it’s ME. I’m building up my own business, and that excites me.

So, it’s time to make this thing sustainable. Diversify. Create amazing things that make me money when I’m on the trail, so I can live without bounds.

K Business, Entrepreneurship

Worry About It Later

April 20th, 2009

Sometimes the stress of finding new work and clients starts to creep up on me and threatens to crash down upon me like a tidal wave.

And then I shrug if off and think: I’ll just worry about that later.

The fact is, worrying never solves problems and often makes them worse. It’s simple: be confident, be proactive, do what you can do, and leave the rest up to fate. There’s no sense in worrying about things you can’t control.

K Uncategorized

Money vs Time; How much is yours worth?

April 13th, 2009

As a freelancer, I have the ability to work how much I want. I could work from January through May, take a 3 month trip to South America, then return and work again in the fall (presuming I’d have clients and contacts who are willing to put up with extended periods of disappearance).

This raises an interesting question: How much money do I need? If I manage to earn enough to cover my basic expenses in the first 6 months of the year, should I keep working? If so, how much? Should I scale back my hours, or take an extended leave? Or should I use the opportunity to work as much as I can to build my network, invest in my company, and save?

This is interesting to me for a number of reasons. When I worked a salaried job, I was spending 99% of my paycheck. But if I had been living like a scared freelancer, I could very well have a year’s worth of needed money in maybe 8 or 9 months. Obviously my boss wasn’t about to let me leave my job for 3 months, but think of it this way: look at all that extra money I suddenly could have had. Maybe I should have saved it? Invested? Take a leave of absence? If you’re anything like me, you never considered the idea of living below your means–or at least for some reason it just seems so impossible.

As a newbie freelancer, I really have no idea how much money I will make this year. I have no idea what I’m going to do 3 projects from now, or if I will be begging my parents for a loan 6 months from now. On the other hand I could be rolling in money–although in reality “rolling in money” at this point would just mean enough that I wouldn’t have to worry about rent for a while. Freelancing and entrepreneurship forces frugality and rethinking the way you spend and save money. Money, to me at least, is becoming very much cemented as time = money. I can have more money but less time, or more time and less money. Maybe I should rethink the way I do business, but this is generally how it works.

How much is my time worth to me? How much is money actually worth to me? Obviously this depends on how much your career and work are a part of your life (if you love your job and it IS your life, then getting paid is almost an added bonus, while if you hate your work then the money is hardly worth it). This is a question for everyone though, not just a contractor: how much is your time worth, and how much money do you really need to get by? What can you live without? Is that $200 coat really worth the few hours you spent behind a desk?

K Entrepreneurship, Money

Taking your own advice

April 9th, 2009

I tell a lot of my clients how important it can be to keep their sites fresh and update–and for godsake if you have a blog, don’t let it sit there and age.

Whoops.

Like many other web designers out there, I barely seem to have enough time to get actual work done, much less spend time working on my own sites and marketing materials. For instance, this blog seems to be a constant struggle (and yet my other bike blog I have no trouble with at all). Keeping a blog updated is a habit, like any other. I often think up topics but never seem to get around to writing them out. Well, times have certainly changed.

With the big Lay Off, my life has flipped upside down. I now find myself sitting in my own office, in front of a brand new laptop, LCD monitor, printer/scanner/copier, and a ton of other vital officey equipment (coffee maker!). How did all this happen? How did I go from an agency drone to a small business owner over night?

Sometimes we need a kick in the pants to get our dreams going. Striking out on your own is very scary. What do you do about insurance? Taxes? Retirement? What do you do if work dries up!? Those worries are dream-killers. You have to let yourself free fall and know that you have the ingenuity to figure it out. Going from a person who sits quietly at their desk all day to a person who is constantly answering emails and phone calls, sitting in meetings, scheduling deadlines and writing proposals, not to mention actually doing all the designing and programming–that is huge. It’s definitely not everyone’s cup of tea. But the only way you will find out if you have what it takes is to jump into the deep end and find out. There’s no half-assing it when you’re financial stability is on the line.

As I was returning from a meeting today, I considered the fact that I might have to take up something like bartending to make up any lack of income. But then I stopped myself: I want no crutches. I am 100% in or 100% out. You have to be totally commited to something in order to truly use your wits to get clients and make yourself valuable. Creativity from necessity: creative people thrive on boundaries, and I thrive on deadlines. I must have a client paying XX amount by XX date or I’m sunk. Sink or swim, suck it up and get yourself out there. There’s no time like the present.

K Business

Setting up

March 11th, 2009

So I’ve been mostly avoiding the couch-sweatsuit-daytimeTV-unemployment blues for the past 3 weeks by managing to find myself some work. And I have to say, getting my business off the ground has been immensely exciting.

I’m surprised by the amount of time I spend simply managing the projects and clients. Setting up meetings, going to meetings, organizing. The strangest part? I actually kind of like doing it. Interesting, very interesting. Another great part is that I actually get to do really design work again; I had been programming a lot at my old job, and I’ve been thrown back into design-land full force. I forgot how fun it is, and how good I am at it, especially with my current crop of clients. It’s really, really nice to get away from technology and get into working with small businesses and entrepreneurs.

I like working with people who are just as excited about their business as I am with mine. It makes for a dynamic relationship. Next on my learning agenda will actually be putting together pitches. Batter up.

K Uncategorized

Starting from scratch

February 24th, 2009

It seems as though Portland is in some kind of nuclear winter, where massive layoffs/high unemployment has left an unruly crowd of highly educated, creative people sitting around on the couch refreshing Facebook every ten minutes.

How terribly exciting.

Due to necessity, people are striking out on their own, starting those businesses for which they never dared risk their stability. It was a pipe dream, to work from home and be in charge of my own projects. Too little experience. Not enough connections. Too scary.

Not anymore.

As I meet with other people in similar situations, small business owners, friends, industry people, strangers, and everyone in between, I get mixed emotions. People are worried, but people are also excited about what’s to come. Successful companies always rise out of the ashes of a dire economy; the optimists, the industrial problem-solvers get right to work, envisioning solutions that would never have otherwise come to fruition without the constraints of the current situation.

Talk now is on results. Running lean. Measurable, tangible sales. The Old Agency Model is quickly disappearing, the bloat and wasteful spending sinking previously successful businesses. Agile, small companies and individuals can move rapidly, efficiently, and cheaply, but it requires multi-skilled individuals who can create, problem-solve, manage, network, and sell. Those of us venturing out into this barren economy alone need to lean on each other to compliment each other’s skills and knowledge, to not be afraid to ask for help, and to finally take those chances we were too comfortable to take before

K Uncategorized

The Recession Mambo

February 17th, 2009

Well, you can add my name to the list of casualties in the current economic battle recession. My agency laid off 30% of its workforce last Friday, and I’m afraid I was among them.

Apparently the first thing to go in a recession is Flash.

Thankfully, my skills and talents go beyond the Flash platform, but this is a good reason to make sure that you’re skill set doesn’t rely too heavily on one technology; what is king one day is but a frivolous financial risk the next. I have been reading the Pragmatic Programmer recently, and one of their recommendations is learning a new language every year. So my question: continue with Flex, or abandon to another language?

Or do something else completely?

As much as it sucks to be jobless in a bad economy, there’s also something terribly exciting about it. I have the knowledge and potentially the connections to start my own business; my interests vary widely, and I know I can manage my own projects, I would love to delve into the strategy and integrated marketing solutions that everyone is looking for right now.

Does this leave time to learn PHP or Ruby or Java?

If anything, I think this is an opportunity to remember to follow my passion. If you follow your passion and put yourself out there and take risks, opportunities will find you.

K Uncategorized

Designing for Yourself

February 5th, 2009

Perhaps the toughest client you could ever possibly have is yourself.

I’m tough to please. I’m a perfectionist, especially when it’s something that will represent me and my work so intimatly. It seems to me that designer’s own website either change constantly (never happy), are almost entirely void of design (use of templates with lots of white space), or non existant. My blogs are all from templates; I’m too busy/tired at the end of the day to re-open Illustrator and make my own designs. Actually I did create a whole new look for my cycling blog, but ended up tossing it because I suddenly decided I didn’t like it. Funny how that works.

Despite years of designs and thought, I have yet to post a portfolio anywhere. I have done maybe 3 complete designs over the past 2 or 3 years; I was even excited about a few of them. But at the end of the day, I do not treat myself like a client. I could work on my website or I could sit down and finally relax… Gee, I wonder which I will choose? I can always reschedule myself, it’s not like I’m going to fire myself.

If you’ve been trying to build yourself a portfolio, blog, or professional website, perhaps it’s time you treated yourself like a client. Would you settle for a single, half-thought out design? At the same time, would you really have time to make 50 iterations of the same design, toss it in the end anyway, and start again after a few months? Not unless you have the richest and most patient client ever.

Treat yourself like a client: give yourself deadlines, a set number of design rounds, and bill yourself for it. How much would you charge someone for your time? If you realize your half built portfolio is the most expensive site you’ve ever built, perhaps you need to speed things up a bit and let go the perfectionism. Outline your goals for the site, as you would for anyone else. Many designer’s sites seem to be aimed at other designers; are you designing to show off to the industry, or is this a site you want current and potential clients to see to get information? Are you going for the wow factor, or do you just want to simply showcase past work? 

Perhaps an even more startling idea: trade designs with another designer! Do each other’s websites and see what happens; you will either hate each other by the end of it, end up liking the one you did for your friend so much you both keep your own designs, or who knows? Maybe some magic will happen.

Alright, time to pencil myself in :)

K Design

Rapid Prototyping for Designers

February 3rd, 2009

Our design process goes something like this: create mockups in Illustrator and Photoshop, typically a screen shot of the home page and a secondary page or two. Maybe an “over” state or two to show interaction, although usually not. Get approval from client, then toss over the wall to the programmers. They ask for overstates. Create them. They ask for more images. Create them. They need a layout for some interactive form, for a thank you page, for a 404 page. Emails fired back and forth. They send the beta site over for review when they’re finished. It doesn’t behave quite like how the you envisioned; somethings are broken, some things act strangely, you think they might have taken it upon themselves to design their own states or layouts because they got sick of the back and forth.

Let’s face it, no one is happy in this situation, a lot of time is inevitably wasted, and the end result is not what the designer envisioned in the first place. I’ve managed to extract myself from this situation from designing and developing in Flash, the ultimate playground for a programmer-designer hybrid like myself.

The problem with this process is that the designers, who are trained in print design, are completely removed from the interactive design process. Creating the flow, the animations, the experience of a website should lay with the designer, not the programmer. But let’s face it, not every designer should or wants to learn to program. So what does it mean for a designer to do rapid prototyping? A prototype is not the design of a screen shot, it’s a working, clickable page that actually shows the interaction that the user will go through. It may just be HTML with latin text, but it similates the experience. So how does a designer create this without learning HTML?

Adobe has a few tools that are aimed at this very process. One of them is the very mysterious Fireworks; while I have had Fireworks for years, I have never actually used it, and it seems really complicated. According to Adobe, here is the feedback on the CS4 version:

Existing Fireworks users love the workspace improvements, specifically the ones that help them quickly prototype and design web pages and applications. And newer users, especially those who are familiar with Adobe Photoshop and Illustrator, find the improved user interface more approachable and intuitive.

There is an interesting article on Adobe’s site about prototyping.

Prototypes also provide extremely valuable insight into transitions between state and more dynamic interactions. Interactivity is about behavior—how a product or artifact changes over time in response to user input and events in the world.

Adobe’s website also have a ton of instructional videos on it, none of which will stream for me, in any browser. So I’m just going to play around and see what happens.

  1. I found an old design comp I did in Photoshop a long time ago. First a create a new document in Fireworks. Then I import my PSD, and I am confronted with a window that asks me what size I want the file to be. It’s nice to know that I can easily resize my file, but it’s a bit confusing, since I designed it at the size I want it.
  2. Then I get a weird tool that is simliar to the paste-in-place tool in inDesign. Not really sure why…because I already said what size I want my file. I am confused. I don’t think this ended up the right size.
  3. I right-clicked on some text to turn into a clickable link. Convert to symbol, button. I see properties/symbol properties panels at the bottom. You can specify the link, alt, text, style, target, the export type and file name. Looks pretty straight forward. 
  4. I created a new page in the page panel; looks like a completely seperate page/file (I lose all my layers)
  5. I creeated a new state, and my slice for my button is still there, but again my layers have dissapeared. I’m not sure if this is supposed to be like a “down” state for the entire page or what. OK, double clicked my button, and I see within the button are the state layers (reminds me of making button in Flash, also similar to making animated GIFs in Photoshop).
  6. I tried just exporting HTML and images from here, and the link is an image, but its black when I rollover it. Considering I only had Fireworks open for about 5 minutes, I’m feeling pretty good that I made a button and exported to HTML, although its far from workable at this point.

Another tool I have been eyeing is Flash Catalyst (used to be called “Thermo”).

Adobe® Flash® Catalyst is a new professional interaction design tool for rapidly creating application interfaces and interactive content without coding.

From their little demo video, the designer creates their normal static page in Illustrator or Photoshop, imports it into Catalyst, and then can simply click on groups and shapes and create buttons. Unlike importing artwork into Flash, the Catalyst has the same tools as Illustrator (I think?), and maintains layers and generally looks identical. From the looks of it, this tool is aimed at designers passing things off to Flex developers, as the end result is a SWF or AIR file. I’m not sure how well it work work to prototype HTML, but it looks pretty slick for Flash.

The point of all this is simple: design in your real medium. Creating an Illustrator drawing and handing it over for programming is a lot like creating a sketch in pencil and handing it to a painter. Chances are it won’t look anything like what you intended. And even if it did, most of the process of painting is in the handling of the paint; you start with one idea, and it evolves and changes as you work with the medium. Even if you know nothing about programming, take a step towards learning a bit or using a tool to help you with the process so you can design with your real medium. You might just find yourself with a whole new source of inspiration and ideas.

K Design, Process, Prototyping