5
Mar 10

Julies Baby Shower

Julie just had a baby shower for our son Joshua – here’s the picture I drew for her. Love you Julie! You’re the best!


1
Mar 10


I don’t feel like it

What’s it?

Why do you need to feel like something in order to do the work? They call it work because it’s difficult, not because it’s something you need to feel like.

Very few people wake up in the morning and feel like taking big risks or feel like digging deep for something that has eluded them. People don’t usually feel like pushing themselves harder than they’ve pushed before or having conversations that might be uncomfortable.

Of course, your feelings are irrelevant to whether or not the market expects great work. Do the work. Ignore the feelings part and the work will follow.”

From Seth


9
Feb 10

The latest from FogBugz dev land

This is still pretty rough because I’m still hashing out where this whole thing is going. I figure it’s kinda hard to go wrong with wood and paper right? I keep choosing and un-choosing what language I’m writing this thing with, I should actually do a post on that someday! Just wanted to make sure that you knew that I was still up to something.


29
Jan 10

Todays Notes

Why Jonathan Ive? I already have one pad, it’s a cheap multitouch drawing pad but it works and it cost $2.79. Why have you shown up with your keen sense of industrial design and apparent need to have everyones money? WHHHHHHHYYYYYYYYY!?!?!?!


27
Jan 10

You’re supposed to blog about it when Apple releases something right?

I don’t have too much to say about the iPad yet. The thing is darn pretty but if I had to make a choice between this or the iPod touch I think I would still be leaning toward the touch. The big feature for me would be an awesome drawing app but it seems like that already exists for the touch?

Either way, Apple continues to do a great job in devising more clever and nimble ways to try and wrestle more money from our purses…


20
Jan 10

Fogbugz Day 2

In starting to write a fogbugz app, I thought this might be an ideal time to really start learning how to use Flex 4. Wow, I’m glad I did – although – there’s definitely a learning curve moving from 3 to 4. It’s a good thing though, I see where the developer is given a lot more freedom in creating and styling the components in the Flex framework and it’s nice to see states work in a way that is really useful. Here’s how it looks in my really really early early first stab at creating an item renderer:

	<s:states>
		<s:State name="normal" />
		<s:State name="hovered" />
		<s:State name="selected" />
		<s:State name="normalAndShowsCaret" />
		<s:State name="hoveredAndShowsCaret" />
		<s:State name="selectedAndShowsCaret" />
	</s:states>

	<s:Rect left="0" right="0" top="0" bottom="0">
		<s:fill>
			<s:SolidColor color="black"
						  alpha="0"
						  alpha.hovered="0.4"
						  alpha.selected="0.4"
						  alpha.selectedAndShowsCaret="0.4" />
		</s:fill>
		<s:filters>
			<s:DropShadowFilter />
		</s:filters>
	</s:Rect>

You can see where I’ve cleanly defined the states and how the properties correspond with each state. No more addProperty and removeProperty, just nice clean awesomeness. Yay!

As for the actual app, things went fairly fast today. I already was working on a small base of code but I ended up trashing it so I could start clean in Flex 4. I was able to create models for all of the FB objects and was able to knock out the login, syncing FB details (projects, areas, fixFors, etc) and getting the search to work in a fairly rudimentary way. Tomorrow I’m hoping to really clean up the case list area and start working on the view you see when looking at a specific case. Huzzah!


19
Jan 10

Adding more fruity treats to FogBugz

I’ve been using fogbugz for a while, we put in place at work to handle issue tracking and after using a slew of different bug tracking solutions (ok it’s like 6 or 7 but that’s slew enough for me) I have really become very happy using fogbugz. Plus, fogcreek sounds like an amazing place where the sofas are made out of donuts and the water fountains have perfectly carbonated mexican coke. The thing I really like about it though is the api. Knowing that there’s a way out in case some feature doesn’t work the way you want it to is a very comforting feeling. And having worked with it a little in the past I know it’s a very capable api that’ll allow you to code up quite a bit of functionality.

Having said all that, there are some things in fogbugz that don’t work well for me. Namely, time tracking. At work, we don’t use EBS, we use the time tracking feature to bill clients. Since we do that, we have to track every minute of our day. So, this takes some discipline to always remember to set the “Working on” which apparently I’m the only person in the world who has issues with this because I’m always forgetting and having to go back to fix it. When I was designing a small app to help me with this, I came across a few other features that I’d like and it started to develop into an actual app. So here I am, writing a fogbugz interface. Here are the features I’m throwing in here:

Phase 1:

1. Quickly list,add,edit, and view cases.
2. Case search
3. Case history (keeping a running tab of the cases you have looked at)

Phase 2:

1. Automated time tracking: What ever the current case is that you are looking at, that is the case that gets time tracked to it. Switch case, new time entry.

It’s totally not a fleshed out attempt and it’s something I’m doing in my spare time so I don’t know what this will turn into – but – in the end I’m hoping to have a solution for me (and people like me) to easily track time in fogbugz. It’ll be an Adobe AIR app and will most likely be coded out in Flex. I’m wanting to really focus on the ui to create something a little slicker that what I usually do so having a Flash desktop app is the way to go. And considering I’m booted into Windows during the day and OS X at night, I need something that will work on both platforms. We’ll see what happens, I’ll keep you updated!


15
Jan 10

ID Day 1

from afsilva on flickr

Well, today wasn’t perfect. I opened my browser this morning to find a number of tabs containing content that I meant to read last night but ran out of time. I spend so much time consuming that I can barely take it all in that I’ve devised ways to make sure that I don’t miss anything. Anyway, I read the open tabs which led to opening a few more tabs. I caught myself early but still, no way to start an Information Detox (ID). But even though today wasn’t perfect it was certainly different and certainly for the better. It was funny, starting the ID actually left me more time to think and do rather than just consume. I had to find things to do to fill the time that I idly spent on the internet rationalizing that I was “keeping up” and “staying informed.”

The first thing I did? I went to work and I worked my ass off. I’m trying to think of a nicer way to say it but “worked my butt off” or “worked my tail off” do not do justice to what I did today. The only way that statement could be more accurate would be if I said “I worked my f***ing ass off.” Seriously. That’s not to say I don’t do anything at work on a usual basis but there was something totally different about today. I hit it like a freakin bengal tiger and I tore it up and it felt great. I don’t know if it was due to the ID or just from making a change in general but I just found my ability to focus today was unbelievable.

Some other things I did today? I went for a walk instead of cleaning out my feed reader and noticed a lot of cool stuff that exists downtown that I’ve never even seen before. Old interesting factories that were totally deserted (the one pictured above for instance.) Houses nestled between huge slabs of concrete whose front sidewalks seemed to bank at a 45 degree angle. People reading books and walking dogs. I walked through parking lots that I usually only drive by and smiled at people who smiled back at me. We were living our separate lives but for some reason we were together today. I wasn’t just there – I actually was in the moment – I was there.

I did some thinking, I did some walking. I planned, I read, I came, I left. It seems almost silly that I would spend so much time fooling myself that I was really improving my life with all of this information. The problem was that in one single day I feel like I’ve realized that consuming the information is really the tiniest part of the equation. If I’m not living the stuff that I’m reading then why am I reading it? Rather, why am I reading it over and over and over again?

And what else is taking root in my life that I can “detox?” What else can I get rid of that’ll free up more time for these wonderful feelings?

Anyway, on to the next day, I’m looking forward to see what will happen next.


14
Jan 10

My Information Detox…

So the trend in my circle of friends and family on facebook seems to be the idea of going on a detox. I’ve seen all kinds: fruit and veggie, water, snapple, clam and mushroom, boars head cheese and salami, etc. Apparently the idea is that by staying away from all of the delicious foods that we…well, I…consume everyday that they’ll emerge with more control, less weight, and ready to begin a new life free and devoid of the vices that got them there. Sounds great, not something I would be ready for…or would I? See, I’ve been having problems lately with data. Blogs, books, articles, magazines, newspapers, handouts – you name it – I consume it. I have so much advice across so many disciplines come across my eyeballs everyday that it’s almost ludicrous. I get up early to empty my blog reader, I use my lunch break to read email newsletters, I use the drive to and from work to listen to podcasts and I spend about an hour a night tearing through facebook, checking digg and reddit, and making my nightly pass around the blog reader, and I usually spend some time each night reading some sort of non-fiction book. As I type this out I think I’m actually getting a little nauseous…

So, I’m thinking it’s time for an information detox. I need to lay off the continuous stream that seems to be clouding my life and instead opt for things that bring results and satisfaction. So, starting now until March 1st, I’m going to abide by the following rules:

1. No blog reader. If I’m searching for info that’s one thing, but to sit down and read everything that spills out of there is really quite the chore. When I’m done, I feel like I need to trim that thing down…

2. Podcasts are ok – but the list needs to be trimmed.

3. No digg, reddit, popurls, failblog, or other junk media sites. I don’t think I’m going to miss these – I can’t remember more than one of the things I saw on there today despite having just spent 20 minutes checking them all out.

4. Sitting down at the computer needs to require a plan and a purpose. No idle surfing because there’s nothing better to do.

5. Facebook is ok, but only once a day.

6. Books are ok too, but try to read something fun and not necessarily educational.

This has been a long time coming – I’ll post some updates to let you know how it goes. I’m off to delete some often used bookmarks…


8
Jan 10

Verbosity: A Silverlight Story

Ok, so this isn’t an outright rip on Silverlight – I did say this morning that it was something that I was going to invest some time and get more familiar with and…well…more on that later. This is a sample of my experience of playing with silverlight over the past couple of days. All I wanted to do was to create a circle, add it to the stage, and animate it. Let’s jump into some code.

First, a comparison. I’ve went ahead and opened Flex Builder, created a new actionscript project and created this really simple project – create a circle and animate it. The code looked like this:

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.filters.DropShadowFilter;

	public class CircleTest extends Sprite
	{
		public function CircleTest()
		{
			var circle:Sprite = new Sprite();
			circle.graphics.lineStyle(1,0);
			circle.graphics.beginFill(0x1d5d8f,1);
			circle.graphics.drawCircle(0,0,100);

                        this.addChild(circle);
			circle.x = 100;
			circle.y = 100;

			circle.filters = [new DropShadowFilter(2,45,0,.5)]

			circle.addEventListener(Event.ENTER_FRAME,moveCircle);
		}

		private function moveCircle(event:Event):void
		{
			event.currentTarget.x += 1;
		}
	}
}

I will say, I’ve done this a thousand times so writing this code was almost muscle memory. It’s almost an unfair comparison but still…Anyway, nothing too crazy here. Create a Sprite, define the line style, determine the fill, draw the circle, add it to the stage, determine the circle location, add a drop shadow filter as part of an array to the filters property on the Sprite and then add an event listener for the ENTER_FRAME event which occurs 30 times a second. In that listener, I’ll move the circle 1 pixel to the right until the end of time or whenever that page is closed. Not much to it.

On to Silverlight. Now you might think I’d use XAML and while it’s a perfectly acceptable assumption I’m just not crazy about coding things like this in xml. I don’t do it with MXML either in case you were wondering. So for this example, it’s all in C#. On with the code:

So I start with this very nice partial class here:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Shapes;

namespace TestSilverlightApp
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

        }
    }
}

Alright, let’s create a circle of some sort:

Ellipse circle = new Ellipse();
circle.Width = 100;
circle.Height = 100;

Great, now here is where things start getting a little…wordy.

SolidColorBrush stroke = new SolidColorBrush(Colors.Black);
stroke.Opacity = 100.0;
circle.Stroke = stroke;

Here I’m creating a new object to set the stroke on my circle. Not too bad, I can see where the SolidColorBrush actually has a ton of paramaters that you can set to really customize it so that’s nice. I probably don’t need to set the opacity but I do anyway. Let’s set the fill for the circle now:

byte r = System.Convert.ToByte("1d", 16);
byte g = System.Convert.ToByte("5d", 16);
byte b = System.Convert.ToByte("8f", 16);
Color s = Color.FromArgb(100, r, g, b);

SolidColorBrush fill = new SolidColorBrush(s);
fill.Opacity = 100.0;
circle.Fill = fill;

Now, to set the color on the fill you can use solid colors like Color.Blue or Color.Red but it only takes about 15 seconds with a designer before you realize that they will never ever ever use either 0×0000ff or 0xff0000 for anything ever for any reason ever. So we need to use a uint and you can see that requires some more code. Still not too bad, I can abstract some of that pain away into some function somewhere but on its face it seems to be a lot of code to set a particular color.

circle.Effect = new DropShadowEffect();
LayoutRoot.Children.Add(circle);

circle.SetValue(Canvas.LeftProperty, (double)100);
circle.SetValue(Canvas.TopProperty, (double)100);

Alright, from here we set a DropShadow on our circle, add it to the stage and….place it? Wait, what’s going on here? I honestly searched for X. I was like “Hmmmm, where did they put x?” but what I should have been looking for was Canvas.LeftProperty. Hmmm, I can understand why it would like that, I’m just not sure if I like it? It’s certainly more elegant that x but x = y is a lot easier to write and comprehend than SetValue(Canvas.LeftProperty,(double)y). Anyway, in case it’s not clear, I set the circle 100 pixels from the left and the top of the window.

Now, I’m just going to put the code to animate this circle and I’m not going to walk you through it. Just look at it and we’ll regroup on the other side:

Duration duration = new Duration(TimeSpan.FromSeconds((double)6));
DoubleAnimation animation = new DoubleAnimation();
animation.From = 100;
animation.To = 600;
animation.Duration = duration;

Storyboard storyboard = new Storyboard();
storyboard.Duration = duration;
storyboard.Children.Add(animation);

Storyboard.SetTarget(animation, circle);
Storyboard.SetTargetProperty(animation,new PropertyPath("(Canvas.Left)"));
storyboard.Begin();

I’m not exactly sure of what all is going on here – what I do know is that it’s take my circle, moving it from 100 pixels from the left to 600 pixels from the left over the course of 6 seconds. It works, but great day, that is a lot of code. 3 different objects need to be instantiated so that I can move a circle. Granted, there is a plus here – there’s not the ever present and always ticking timeline like you find in Flash. I do like that you create your animation for a specific point and time and when you don’t need it anymore, you throw it away. That pretty cool. But what make me nervous is that if this is the most simple of things that you can do in Silverlight, what does it look like when you try to accomplish something more complicated? I can see how you’d be able to start stringing things together to make a predetermined animation but how do you implement physics or changing directions based on a changing variable in the browser (like a mouse?) Here is the complete Silverlight class:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Shapes;

namespace TestSilverlightApp
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            Ellipse circle = new Ellipse();
            circle.Width = 100;
            circle.Height = 100;

            SolidColorBrush stroke = new SolidColorBrush(Colors.Black);
            stroke.Opacity = 100.0;
            circle.Stroke = stroke;

            byte r = System.Convert.ToByte("1d", 16);
            byte g = System.Convert.ToByte("5d", 16);
            byte b = System.Convert.ToByte("8f", 16);
            Color s = Color.FromArgb(100, r, g, b);

            SolidColorBrush fill = new SolidColorBrush(s);
            fill.Opacity = 100.0;
            circle.Fill = fill;

            circle.Effect = new DropShadowEffect();

            LayoutRoot.Children.Add(circle);

            circle.SetValue(Canvas.LeftProperty, (double)100);
            circle.SetValue(Canvas.TopProperty, (double)100);

            Duration duration = new Duration(TimeSpan.FromSeconds((double)6));
            DoubleAnimation animation = new DoubleAnimation();
            animation.From = 100;
            animation.To = 600;
            animation.Duration = duration;

            Storyboard storyboard = new Storyboard();
            storyboard.Duration = duration;
            storyboard.Children.Add(animation);

            Storyboard.SetTarget(animation, circle);
            Storyboard.SetTargetProperty(animation,new PropertyPath("(Canvas.Left)"));
            storyboard.Begin();

        }
    }
}

So, wow. This makes me think of the designer exodus from Flash when they switched from AS2 to AS3. Teaching a designer how to add an event listener is really kinda hard because animation used to be fairly easy. I certainly could not teach them this. Sure, you can create this stuff in XAML and configure all of your animations but even that seems like you’d end up with this really difficult pointy and stabby xml file, one which a developer would have to rewrite in C#. I’m probably making too much out of it but as I was going through this exercise and having waves of doubt as to my proficiency as a developer I came across a sobering revelation:

I’m not having fun.

For me, the end result to gauge my satisfaction by shows up in the browser, not in the code. I certainly felt awesome being able to wield this powerful language with this awesome set of tools but after messing around with this for what seems like way too long, I was getting bored…I was doing work. Is it fair to stop playing with Silverlight based off of one example? Well…yeah. Learning a new language should be somewhat invigorating, like getting a new axe and finding trees to cut down. I’m just trying to get through the examples here, getting bored and frustrated and not being too excited about the payoff. I’m not going to end with some proclamation of one tech over the other, but I will say, I’m totally impressed with Silverlight and the tools to create Silverlight content are top notch – but it’s not a lot of fun to play with. I may do some more with it but I’m going to go play with something else for a while. :(