Instead, what I want...

Blog

What I really want is the "Always Deny" button. twitter.com, for example, asks this question five times per page load.

WELL SHIT.

That was a KeyChain access problem. When I deleted the Keychain rule, the dialog went away.

Again, learning that looking at the root of a problem, even when a minor annoyance, is worth the time spent.

Yes, I'm sure.

Blog

Feedback from my OWC talk

Blog

After my talk at Open Web Camp I asked for feedback from several people. I really love getting feedback on my talks. I wish more people actively gave feedback, even if negative, so that I could improve my talks, deliver something more useful. The feedback I had from this talk included:

  1. Try videos
    Dirk had videos of the terminal, demonstrating the typing he does to get things working. This "show don't tell" approach is fantastic. Create videos and talk over them.
  2. Pause on slides longer
    My slides have code, CSS and HTML on them. Pause long enough for them to be read.
  3. Make sure everything works
    It's easy to change one little thing to improve one part of the talk. Small changes like that propagate, so make sure the rest of the talk works the way I say it will work.
  4. Fill out some sections
    • Expand the transforms section
    • More animations

Overall, I'm happy with this talk. It's an introduction talk. At some point, I'll expand it to be more intermediate / advanced. For right now, I'm tickled about this feedback.

My first irrigation attempt

Blog

Well, today was the day.

The reason I was here in Arizona on this particular day, at this particular time.

Irrigation.

My mom's irrigation started at 11:50 last night. I have to say I wasn't particularly excited to have to get up at 3:15 in the morning to handle my irrigation. I was hoping the excitement of a first time would make any horrible hours bearable.

Fortunately, my time slot was 5:35. Totally bearable, given that I'm still jetlagged and waking up before 6:00 am anyway.

Unfortunately, like every other time I set an alarm and am not completely used to my surroundings, I woke two hours early and drifted, checking my clock every 20 minutes or so.

Time to rise?

No.

Time to rise?

No.

Time to rise?

No.

Time to rise?

No.

Hate that.

At 5:15, I gave up, rose and dressed. Mom seemed a little surprised to see me, and went with the flow. Told me to head over, and don't forget the irrigation boots. Right.

The idea with the irrigation is that you set up gates, braces that act as mini dams, then open up the portals that send the water coming down the canal through the conduit into your yard. The yard is flooded with the irrigation water, eventually soaks into the ground, and you have happy, typically well-adapted, vegetation.

That's the idea, anyway.

Mom and I had reviewed the theory yesterday. Today, I was over to set these things up. For my yard, I had two portals, one for each side of the yard. I would place a short gate behind the first portal, upstream, so that the first flow of water would go into the first portal, and the overflow would go down-canal and be stopped by the second, taller gate set before the second portal. The second gate should force the rest of the water into the yard, and I'd have my full allotment of water.

That was the plan, anyway.

What I didn't know is how the yard sloped, and this was the way I was supposed to irrigate this yard. I didn't know how much water to expect. I didn't know the nuances of irrigation.

Today ended up being a good day to learn.

I went over and talked briefly with Dale, who was finishing up the irrigation on the property backing the one I was about to set up. He encouraged me with the gate, just drop it there after the first portal. With the first, shorter gate set up, I opened the portal and in went the water.

Mom was over to help me out. With her help and Dale's help, we had the taller, second gate in place, with the portal open and drawing water. It seemed like we had everything all set up. I had a pile of items from Mom: my breakfast of nectarines and clif bars, loppers, tree saw, plastic bag for trash, water bottle, camera, phone; the water was coming in seemingly well. Yeah, I was set.

Mom went home to ready for her day, while I sat around, not quite sure what I was supposed to be doing. I checked a bit on the water, no much to do there. I used the loppers Mom had offered I bring over, trimming branches on a tree that needs to come out, mostly so that I could see where it was growing. I read for a while.

I was reading when Mom came back, an hour into the irrigation. "What is going on?" I was confused, but followed her out. Turns out, the second portal wasn't pouring water fast enough. I knew I had problems with the seal, and about a third of my water was heading down-canal, but I couldn't figure out how to stop it, and didn't have any towels to use as seals, so I had resigned myself to less water.

Mom said, no, I should be getting water to the front, pull the low barrier, and let the water flood the lower half of the yard. She gave me instructions, gave me a hug, and went off to work.

After she left, I wandered back to the canal, looked at the shorter gate, and pulled it up.

Not my best idea ever.

You know what happens when you blow a dam?

Yeah.

The water floods down the river, wiping out everything in front of it until the built up energy is spent.

As I pulled up the gate, I realized my error. I hustled after the head of my mini dam burst, I wondering if the second gate would hold.

It didn't.

As I watched, the second gate washed sideways, and all the water started hurtling down the canal.

Ever try to stop a flow of water mid-stream?

Yeah, something like that.

I couldn't get the taller gate unwedged from under the pallet used to cross the canal, so jammed the shorter gate into the water, letting the water push it into place. With the reduced flow, I pulled the taller gate out from under the pallet it had stopped against. I braced the taller gate with bricks floated down from the water surface. I then wandered along the canal to retrieve Dale's gate, and put that up in front of the other two gates. With three gates, maybe I'd stop enough water to flood the second half of the yard.

Maybe.

Maybe not.

After this disaster of a manuever happened, I wandered down the canal to talk to a neighbor who was putting in a gate and opening up her portals. Sure, have my water, I'm okay with it. Not like I'll be using the stuff gushing down anyway. What a disaster this was turning out to be.

We chatted for a short bit, with promises to discuss lawn-mowing-by-sheep at a later date, and I wandered back to the porch, wading through the rising water in the yard.

Another hour passed and the yard seemed good and filled. I walked over to the neighbors scheduled for water after me, and to the second, he dropped his gate and opened his portal. His gate was shiny with rubber seals along the edges. As he was dropping the gate in, I was thinking, "Wow, that'll seal well, I need to make or buy myself one of those."

Only to watch about the same amount of water leak around his gate as had leaked around the ones I dropped in.

Oh.

We said our good-byes, and I went to close the portals. The water level had dropped to the point where I was unsure if water wasn't reversing back out of the yard, so was happy to shut them.

Elaine, the non-sheep neighbor, followed me back across the canal, watched me pull the bricks and gates, commented on the canal bridges I had. Another thing I need to replace: probably with wire shelving, the 2' by 6' braced ones, add feet and a rubber surface.

We waded through the water and stood on the back porch for a bit, before Elaine and I went inside to talk about the history of the house. As we were walking through the water, I heard a running water noise. It sounded louder than the canal water had before, which confused me.

Turns out, the yard is subtly sloped, and I had overflooded the second half of the yard. The berm on the west side broke, flooding my water into the west neighbor's yard. I noticed this as we were walking in the house, and commented on it. Elaine responded, "Oh, there's nothing you can do about it now," so we went in.

Elaine and I toured the house as she reminisced. She let me know aobut her blue period, why some of the rooms were so dark, who the owners all were (she and her husband, the nances, bernie), and how the house had changed (it hadn't). She and her husband had built the house, before building the one next door. He had tiled the house, she had decorated it. The tile was still there, and in fantastic shape, but very 70s, which was when the house was built. Her husband liked the dark, so the living room was womb-like. I prefer light, and would be inclined to put a skylight in the ceiling.

It was a nice tour.

When she left, I wandered back to the porch, and started gathering my things to head back to Mom's. The water noise bothered me, however, so I put the irrigation boots back on and wandered over to the hole.

"Nothing to be done? Meh," I thought, and walked back over to the house to pick up a brick I had seen. One big swing of the brick, followed by a couple minutes of moving dirt and packing it, and the leak from my yard to the neighbor's yard was temporarily patched. The yard will receive more irrigation in two weeks' time, so I'll need to fix the berm better for that flooding. For now, the brick is sufficient.

I gathered the rest of my items, wandered out the garage door, and chatted briefly with Dale and Kristina, who had stopped by to see if I had managed to flood to the front of the house. He commented the west berm is always weak, so it seems to be a known issue.

At one point during the whole thing, some time between the gate disaster and the berm repair, I texted Mom, "I very clearly have no idea what I am doing." She responded with "You're doing great!! An adventure!"

An adventure, indeed!

Keith and Mario FTW

Blog

Some time ago, I opened up Keith and Mario's Guide to Fast Websites, a presentation by Keith Pitt and Mario Visic at the Ruby Conference Australia 2013. The slides link to the video of the talk.

Seriously, a great walk through of how to speed up a website. They talk about how to figure out what's wrong, and how to fix the problems they, in particular, had. My notes on their talk:

Figure out what's wrong

  1. Look at the network and render times
    • do the 90% rule: find the biggest problem, solve it
    • in this case, find the longest delay, fix it.
  2. tools
    • google chrome developer tools (network tab for local connection)
    • wbench (find which stage is slow)
    • webpagetest.org (elsewhere)
  3. Use different connection speeds
    • network link conditioner
    • charles (my note)

Fix the problems

  1. You want smaller files
    • aggregate files for fewer HTTP calls: css, js, images (sprites)
    • enable gzip
  2. Fix images
    • strip meta data
    • smaller file size (quality reduction)
    • imageoptim
  3. Use font libraries
    • vector images in a font file (bonus: retina for free!)
  4. Handle javascript loading well
    • move to bottom of file (mostly)
    • use async loading
      1. use js lib to handle old browsers
      2. embed async code into page
      3. head.js (1 point something k)
    • split javascript into non-changing and changing (commonly edited) libraries, cache the non-changing libraries
    • Know .documentready and .ready diffs with jQuery
  5. Fix latency issues
    • Use a CDN for assets
    • Consider Cloudflare over Cloudfront
    • don't forget to set gzip on their delivery
  6. Multiple asset host
    • Watch out for dns lookups
      1. reduce them if possible
      2. prefetch with links:
              <link rel="dns-prefetch" href="//a01.example.com">
              <link rel="dns-prefetch" href="//a02.example.com">
              
      3. Use a cookieless domain (don't send cookies back and forth)

Bonus

  1. SPDY
    • single connection
    • don't need multiple asset hosts
    • can do prefetch
  2. Avoid 3rd party JS
    • host locally if you can
    • not for giant libraries you expect to be cached from elsewhere (jquery)

It was a good presentation. If you aren't familiar with these techniques, or with the process of how to speed up a website, this is a great presentation. I was pleased to have the techniques I do nearly automatically validated.

I recommend watching the video if you need an introduction to website optimization.

Pages