tag:blogger.com,1999:blog-71356022024-03-21T14:21:13.313-07:00Isaac WhateverI'm making this up.Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comBlogger92125tag:blogger.com,1999:blog-7135602.post-67931607686744832742022-04-20T02:06:00.000-07:002022-04-20T02:06:16.363-07:00The Parable of the Bridge<pre>my team is asked to build a bridge.
i discuss with the team.
some of them have relevant experience.
built bridges before.
start looking at customer needs,
make sure we build a suitable bridge.
management comes down.
gives us an unreasonable schedule.
this bridge might be a bit shitty
but it should get the job done.
do a few sprints, making good progress.
this might actually work.
management comes down.
big problem.
stop everything, they say.
you're building the bridge wrong.
they show their marketing material.
it is the golden gate bridge photoshopped over the customer's dinky little canal.
my team are all stonemasons.
_fin_
The parable ends there but I need to get this out of my head.
We push back.
We can't build a suspension bridge on schedule or budget.
None of us know shit about steel cables or whatever the hell.
Management won't budge on schedule or features
but they promise to hire a guy who knows steel cables.
Our hiring process is completely fucked up.
Team doesn't get to interview the guy.
The head of our engineering org knows this cable guy.
He gets hired.
His start day is a week after our deadline.
He's a total asshole.
Nobody can work with him.
The bridge gets built.
It's a stone bridge with some steel cable bullshit propped up on top.
The steel cables are not load-bearing.
The cable guy couldn't work with the team.
The customer is unhappy.
The bridge looks like shit.
They want to drive box trucks over the bridge and the cable shit is in the way.
Six months later the cable shit separates from the bridge footing,
collapses, and kills a truck driver.
Cable guy has already left.
On to bigger and better things.
His resume says he single-handedly built all the steel cable shit for a bridge.
While he was here he got 3 promotions
and won the engineering "teamwork award" that gets you a trip to Bali.
Nobody on my team got promotions or raises.
Fallen below market rate.
People quitting.
Management telling me to convince people to stay.
No raises or promotions though.
Or autonomy.
Or job satisfaction.
Bad work environment.
I try to shelter my team.
Management comes to all my team meetings and micromanages my guys.
More people quitting.
I finally quit.
Good luck, assholes.</pre><p> </p>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-1878257359305449922014-12-25T12:51:00.000-08:002014-12-25T12:51:50.835-08:00Samsung P2770H Wall Mount<div dir="ltr" style="text-align: left;" trbidi="on">
The Samsung P2770H widescreen 27" monitor is not listed as VESA compatible. And it isn't, at all. However...<br />
<br />
First, remove the stand from the bottom of the monitor. Lie the monitor face down on a towel (I used a nice piece of cardboard) and pull the stand off. It takes some strength, just do it.<br />
<br />
There are no screws on the back of the monitor. It seems like there is a screw hidden under the sticker on the back, but this is just the dimple from molding the piece of plastic.<br />
<br />
The entire back of the monitor, including the area that the stand plugs into, is held on with little clips around the perimeter. It is possible to insert a knife blade into the seam, in the bottom, and putting your fingers into the hole for the monitor stand, start popping the little clips.<br />
<br />
As you reach the corners, make sure the monitor is face-down on something flexible. Push down and away on the bezel of the monitor, and pull the back plate up and away. The corner will pop out of the clips. This is a delicate operation, but you must also pull strongly.<br />
<br />
Continue all around, and pull the back off. Mine was safe to remove, but I shined a small flashlight into the crack and looked around the interior area to make sure no wires were connected, you might want to do the same.<br />
<br />
Once the back was removed, I simply screwed a VESA quick-release bracket directly into the plastic in the middle of the back panel. The back is curved, and there is a large enough area back there that short screws won't touch the interior components of the monitor.<br />
<br />
<a href="http://www.amazon.com/Ergotron-Quick-Release-Bracket-60-589-060/dp/B000W0ETD2">Here is a bracket similar to the one I used.</a> Although my bracket came with my adjustable monitor arm.<br />
<br />
Then, with the bracket screwed directly into the back plastic, I pressed the plastic back panel down onto the monitor, listening for all of the clicks as the little clips came back together.<br />
<br />
The mounting feels very solid, and since my monitor arm is adjustable, it doesn't matter that the bracket is not perfectly vertical on the back of the monitor.<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGKfZ5s5dXcHOnG3J9BOhv_ePDewLYyGwfpIUedsL9ROf6WIwg8QQ7nSAJjTm6zV1mt7J9dHhwp46wq66_H8QpZGEP6DmqsB6gpZV456BVtXmyHFV_3-tClTRp-oD9BddWMGC4mA/s1600/IMG_0005.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGKfZ5s5dXcHOnG3J9BOhv_ePDewLYyGwfpIUedsL9ROf6WIwg8QQ7nSAJjTm6zV1mt7J9dHhwp46wq66_H8QpZGEP6DmqsB6gpZV456BVtXmyHFV_3-tClTRp-oD9BddWMGC4mA/s1600/IMG_0005.JPG" height="640" width="480" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Finished Product</td></tr>
</tbody></table>
</div>
Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-49239507537983591722014-01-02T20:48:00.000-08:002014-01-02T20:48:06.411-08:00Instagram Woes<div dir="ltr" style="text-align: left;" trbidi="on">
My instagram account must have gotten hacked. I was following 7,500 people. Just opening up the app would cause my phone to get hot and kill the battery.<br />
<br />
Unfollowing everyone individually would never work. The app would stop responding after the first few unfollows.<br />
<br />
But they're a new, forward-thinking company. They have an API.<br />
<br />
Programming to the rescue!<br />
<br />
I found this:<br />
https://github.com/Instagram/python-instagram<br />
<br />
I got a little script up and running. I would fetch an access token manually and then plug it into the script. I read that the API had a limit of 50 unfollows per hour. I was careful to put in appropriate sleeps.<br />
<br />
I fired it up, and it worked:<br />
> ./bin/python unfollowr2.py 4d1918a69bbf400c81d0a06f8a948be8<br />
Unfollowing User: slinkii_athletic<br />
Unfollowing User: broxiesevents<br />
Unfollowing User: beingprincess<br />
Unfollowing User: rftm<br />
Unfollowing User: alhwaizi<br />
Unfollowing User: markthomps0n<br />
Unfollowing User: arifbader<br />
Unfollowing User: mira_sezar<br />
Unfollowing User: maksimtokaev<br />
Unfollowing User: michaelkors2014<br />
Unfollowing User: genesismusik<br />
Unfollowing User: projectcreator<br />
Unfollowing User: domanitime<br />
Unfollowing User: georgie_greig<br />
Unfollowing User: herbalifejackie<br />
Unfollowing User: benzkanyaphat<br />
Unfollowing User: label31<br />
Unfollowing User: kangcelvin_wae<br />
Unfollowing User: erniesingleton<br />
Unfollowing User: lovecreamskincare<br />
Unfollowing User: mary_kondra<br />
Unfollowing User: katya__lee<br />
Unfollowing User: bpeacemusic<br />
Unfollowing User: bta3_klooo<br />
Unfollowing User: 3iooy<br />
Unfollowing User: yourwardrobe_indo<br />
Unfollowing User: estabrq1<br />
Unfollowing User: ayo_dynasty<br />
<br />
And then, sadly, it quit working. There's also a limit on each access token.<br />
<br />
Ugh. Forget it. I deleted my instagram account and created another one with the same username but with a 2 on the end.<br />
<br />
Bleh.</div>
Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-44391372765162410702013-10-15T10:47:00.001-07:002013-10-15T10:47:18.621-07:00The Fear<div dir="ltr" style="text-align: left;" trbidi="on">
I fell off a 5.10c. Not right away. I clung on for a while, went off route and awkwardly clipped the first bolt. The rock was wet and cold and slippery. The feet were bad. Holds that looked promising from below offered no purchase for my hands. I was tense, my back rigid, straining for the holds.<br />
<br />
I clawed my way up next to the first bolt and my bad feet blew and I fell a few feet and bonked my ankle bone on the rock. Nothing too bad, just sad. I asked to be lowered and stood at the foot of the route.<br />
<br />
I could reach up, take my quickdraw, and walk away. That was the only gear on the route. Bailing wouldn't cost me anything. I thought about it.<br />
<br />
My head was in the wrong place. I was trying to half ass this route. Taking no chances, not committing to any hard moves, keeping my feet low and my hands high, trying to cheat my way up. It wasn't happening. I took some deep breaths and slapped my hands together to try to warm them.<br />
<br />
Something changed. I don't know why. Something drained slowly away. I felt light. I relaxed. The world went away. Falling didn't matter. I wasn't afraid.<br />
<br />
I put my hands back on the route and climbed up it. I trusted a high right foot. I palmed a sloper. I made some good moves. I got to the anchors and nobody else wanted to do it. I cleaned the route and came down. I couldn't tell you if the route was easy or hard.<br />
<br />
I don't know why the fear left me but I knew it might. It usually does. Not always, but usually. I don't make it go. I don't force it away. I don't even wish for it to leave. I look at the route, I check my harness and knots, I count my draws and make sure I have my ATC. I feel the change, the fear starting to recede. I try not to feel anything about it. It could come rushing back at any moment. It doesn't. I wait, without thinking about what I'm waiting for, and the fear goes away.<br />
<br />
5.10c isn't amazing but it's pretty close to my limit in those conditions. If I had to drag the fear up the route I would only make it up once in 10 or 20 attempts. I would be erratic, frustrated, and tired. Leading close to my limit would be a horrible experience. Instead, without the fear, it's fun.</div>
Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-27619611936977106242012-09-14T22:26:00.001-07:002012-09-14T22:26:21.340-07:00Hunk of Junk<div class='posterous_autopost'>"Sir, new contact, inbound sector six." <p /> "What is it?" <p /> "Looks like an old Corellian, sir, cruiser class." <p /> "Are we being flanked? Their main fleet came in through sector three." <p /> "No sir, I just finished a long range sweep. No other inbound craft." <p /> "I don't know what he's thinking, but we'll…" <p /> "Sir! Contact is accelerating! Inbound fast bogey, sir!" <p /> "Divert three intercepts." <p /> "No time, sir! Bogey still accelerating!" <p /> "What the hell! What kind of ship is she?!" <p /> "Damn thing looks like a hunk of junk. It's still coming hard. Wait! Course correction! It's heading straight for Lord Vader!" <p /> "Divert EVERYTHING! Get those turbolasers turned back on!" <p /> "We can't, sir. Lord Vader himself ordered them off." <p /> "…" <p /> pew pew <p /> boom <p /> "You're all clear, kid. Now let's blow this thing and go home!" <p /> PEW PEW <p /> BOOOOOOOOOM</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-35142209173454160262012-05-02T10:26:00.001-07:002012-05-02T10:26:44.990-07:00open source contributing<div class='posterous_autopost'>If you want to contribute to an open source project the first place to <br />start is by fixing a bug. This will have the following steps: <p /> 1. find a project to contribute to. <br /><a href="http://openhatch.org/search/">http://openhatch.org/search/</a> has some projects, but it is by no means <br />a full list. best are ones you use daily, if you can find one. <p /> 2. find the bug you want to fix by going to their bug tracker <br /><a href="http://flexget.com/report/1">http://flexget.com/report/1</a> is a typical example. this is a tiny <br />little python downloader and has a ton of bugs. <p /> 3. get your dev env set up. Many of these projects are on linux. I <br />recommend ubuntu, but some of the bugs may be platform-specific. <p /> 4. get the current dev version of the code and get it running. this <br />can be super fucking hard. <p /> 5. write a test and then fix the bug. <p /> 6. attach your diff to the bug ticket or mail it to the maintainer. be <br />prepared to explain yourself or rewrite your patch, or have somebody <br />else rewrite it and take all the credit. <p /> 7. update your resume. <p /> Another option is to maintain (for instance) a debian or ubuntu package. <br /><a href="https://wiki.ubuntu.com/BeginnersTeam/FocusGroups/Development/Devbeginnings">https://wiki.ubuntu.com/BeginnersTeam/FocusGroups/Development/Devbeginnings</a> <br /><a href="http://www.debian.org/devel/join/">http://www.debian.org/devel/join/</a> <br /><a href="http://www.debian.org/devel/wnpp/">http://www.debian.org/devel/wnpp/</a> <p /> with this, you won't usually write code directly on the project <br />itself. instead you will maintain that project's debian package. this <br />is taking care of the intersection of a project and an operating <br />system version. ensuring that the dependencies are correct in the <br />package, that it installs OK, that it doesn't cause trouble with other <br />packages, and that bugs are communicated upstream or wherever they <br />need to be. <p /> sounds terrible, right? why would you want to do that? because it gets <br />your name and email address on the list of package maintainers for <br />debian or ubuntu or whatever, which is a prestigious honor. kinda. <p /> good luck <p /> (mailed to a friend. posted because someone else might want to read it.)</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-58709998773491748782012-05-01T15:38:00.001-07:002012-05-01T15:38:31.434-07:00occupy the historical context<div class='posterous_autopost'>i like reading the occupy slogans and replacing 99% with "proletariat" <br />and 1% with "bourgeois". <br />makes it seem like a continuation of an old conflict... <br />the same one that got us 8hr working days as part of the original May <br />Day protests</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-13346586068419287712012-03-03T13:43:00.001-08:002012-03-03T13:43:17.951-08:00The Men That Don't Fit In<div class='posterous_autopost'>There's a race of men that don't fit in, <br /> A race that can't stay still; <br />So they break the hearts of kith and kin, <br /> And they roam the world at will. <br />They range the field and they rove the flood, <br /> And they climb the mountain's crest; <br />Theirs is the curse of the gypsy blood, <br /> And they don't know how to rest. <p /> If they just went straight they might go far; <br /> They are strong and brave and true; <br />But they're always tired of the things that are, <br /> And they want the strange and new. <br />They say: "Could I find my proper groove, <br /> What a deep mark I would make!" <br />So they chop and change, and each fresh move <br /> Is only a fresh mistake. <p /> And each forgets, as he strips and runs <br /> With a brilliant, fitful pace, <br />It's the steady, quiet, plodding ones <br /> Who win in the lifelong race. <br />And each forgets that his youth has fled, <br /> Forgets that his prime is past, <br />Till he stands one day, with a hope that's dead, <br /> In the glare of the truth at last. <p /> He has failed, he has failed; he has missed his chance; <br /> He has just done things by half. <br />Life's been a jolly good joke on him, <br /> And now is the time to laugh. <br />Ha, ha! He is one of the Legion Lost; <br /> He was never meant to win; <br />He's a rolling stone, and it's bred in the bone; <br /> He's a man who won't fit in. <p /> <br />Robert W. Service <br /><a href="http://www.robertwservice.com/modules/smartsection/item.php?itemid=82">http://www.robertwservice.com/modules/smartsection/item.php?itemid=82</a></div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-45245088516664418012012-02-15T09:33:00.001-08:002012-02-15T09:33:19.371-08:00Pinterest<div class='posterous_autopost'>I can't think of anything more perfectly pointless than Pinterest.</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-90080909015231714712012-02-07T10:56:00.001-08:002012-02-07T10:56:07.207-08:00when I hear about a book I might like, I immediately send a sample to my kindle<div class='posterous_autopost'>I have a new technique for keeping track of things I want to read: <br />using kindle samples. <p /> Previously, I would bookmark the recommendation page, or write it down <br />or something, and then when I finished my current book I would have to <br />track down these old recommendations, try to find the book, etc. <p /> Now when I finish a book I'm reading I have a bunch of samples ready <br />to go. I can start checking out a new book immediately. <p /> (If it has a kindle edition, if it has a preview, etc.)</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-37750492725499258952012-01-23T12:28:00.001-08:002012-01-23T12:28:47.473-08:00Luminous points glowed in the darkness<div class='posterous_autopost'>"I looked about me. Luminous points glowed in the darkness. Cigarettes <br />punctuated the humble meditations of worn old clerks. I heard them <br />talking to one another in murmurs and whispers. They talked about <br />illness, money, shabby domestic cares. And suddenly I had a vision of <br />the face of destiny. Old bureaucrat, my comrade, it is not you who are <br />to blame. No one ever helped you to escape. You, like a termite, built <br />your peace by blocking up with cement every chink and cranny through <br />which the light might pierce. You rolled yourself up into a ball in <br />your genteel security, in routine, in the stifling conventions of <br />provincial life, raising a modest rampart against the winds and the <br />tides and the stars. You have chosen not to be perturbed by great <br />problems, having trouble enough to forget your own fate as a man. You <br />are not the dweller upon an errant planet and do not ask yourself <br />questions to which there are no answers. Nobody grasped you by the <br />shoulder while there was still time. Now the clay of which you were <br />shaped has dried and hardened, and naught in you will ever awaken the <br />sleeping musician, the poet, the astronomer that possibly inhabited <br />you in the beginning." <br />-- Antoine de Saint-Exupéry, Wind, Sand, and Stars</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-133726917285920422012-01-17T21:55:00.001-08:002012-01-17T21:55:21.702-08:00Nanotechnology?<div class='posterous_autopost'>What do you think of when somebody says nanotechnology? Do you think <br />of little whirring insectoid machines clouding the air? Floating <br />robo-germs collecting on a piece of metal and eating it before your <br />eyes? <p /> Wrong. <p /> It’s more like being able to tell algae what to do. “Stop producing <br />that chemical. Instead take this nitrate and this oxygen and make <br />TNT.” <p /> Big flooded flats in Kansas like rice paddies bask in the sun. Funny <br />fractally-square duckweed covers the surface. Some paddies are <br />draining gently, slowly revealing a crystalline structure of an exotic <br />composite ceramic. A combine will trundle through later and collect a <br />single crystal forty feet long and six inches wide and strong enough <br />to support an entire city. <p /> A hobbyist in his back yard will dab a DNA marker around the edge of <br />a broken washing machine door. He drops the door into a temporary vat <br />made by laying a tarp over some boards and filling it up with his <br />hose. He drops in some sugar, a shredded old bike tire, and then <br />carefully opens a packet and drops in some special yeast. In three <br />days he comes back to find a new rubber seal attached around the edge <br />of the washing machine door. He trims it to size and takes it inside. <p /> Eventually we’ll work up genetic blueprints for specialized little <br />robots. The instructions will include starting soup conditions. They <br />will be a lot like recipes. DNA is the tip of the iceberg for a very <br />information dense process. The whole thing will have to be taken into <br />account, but we’ll move beyond raw materials and fab out whole complex <br />constructions, including cars, planes, robots, etc. They’ll have a <br />level of detail comparable with a human body or better, staying in <br />their fabs soaking up raw materials and sunlight for months or years. <p /> Or they’ll be powered more directly, by sugar or corn syrup or <br />something. That would probably result in faster fab times. It would <br />also be rare for things to be fabbed completely from scratch. <br />Unnecessary complexity. It would be simpler to make components and <br />stitch them together later. Still, it would be possible to fab entire <br />mechanisms, and might be the only feasable approach for some things. <p /> Things like tiny robotic flying drones, networked together, with chips <br />grown inside their tiny bodies like brains. <p /> Maybe nanotech would give us the whirring swarms after all.</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-30028586523712586542012-01-15T15:19:00.001-08:002012-01-15T15:19:34.684-08:00Untitled<div class='posterous_autopost'>I slip the rope through my fingers, toss it as if into the air, but <br />before it quite escapes, I have it again, looped peculiarly. I drop <br />the end, knowing how it will swing. I twist the loop, only as quickly <br />as necessary for my hand to turn and catch the end as it returns. I <br />touch the rope as little as possible. I know the fulcrums of the limp, <br />twisty seesaw. I move as slowly as possible, dictated by the constant <br />of gravity on the long loops. Flip flip flip, the flying end misses my <br />nose by inches. I feel the wind as it passes. My life hangs in the <br />balance of this dance. Literally. If I should fall, I will hang by the <br />knot I am constructing out of artistry and dance. I can’t help it, <br />can’t take it seriously. Moving like this is pure joy expressed and <br />echoed.</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-1951513960825159082010-12-09T20:06:00.001-08:002010-12-09T20:06:45.014-08:00These noodles taste funny and I don't know why because I can't read the package.<div class='posterous_autopost'><a href='http://posterous.com/getfile/files.posterous.com/isaachawley/l04Y78C8RfIVJvLacvA5HAgp7D490yhpeOeUECSNlDHeQZzrhzayoRwY5xCc/IMG_20101210_120440.jpg.scaled.1000.jpg'><img src="http://posterous.com/getfile/files.posterous.com/isaachawley/5IITv9w8SKWOKbhQmMwGsPAk61P5XcDaGqwjtabletwv0EK7UeQwgd8nzPM1/IMG_20101210_120440.jpg.scaled.500.jpg" width="500" height="667"/></a> </div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-1113179582163236842010-12-08T18:57:00.001-08:002010-12-08T18:57:28.427-08:00netcat one-shot webserver!<div class='posterous_autopost'><div class="posterous_bookmarklet_entry"> <blockquote class="posterous_long_quote"><h3><span class="mw-headline">Setting up a one-shot webserver on port 8080 to present a file</span></h3> <div class="CodeRay"> <div class="code"><div class="CodeRay"> <div class="code"><pre>{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat some.file; } | nc -l 8080</pre></div> </div> </div> </div> <p>The file can then be accessed via a webbrowser under <a href="http://servername:8080/">http://servername:8080/</a>. Netcat only serves the file once to the first client that connects and then exits.</p></blockquote> <div class="posterous_quote_citation">via <a href="http://en.wikipedia.org/wiki/Netcat#Setting_up_a_one-shot_webserver_on_port_8080_to_present_a_file">en.wikipedia.org</a></div> <p></p></div></div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-91726899923343553912010-12-08T18:43:00.001-08:002010-12-08T18:43:58.814-08:00http://vimcasts.org/<div class='posterous_autopost'><a href="http://vimcasts.org/">http://vimcasts.org/</a> - sweet vim tutorial videos.</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-27641823489043029442010-01-18T22:08:00.000-08:002010-01-18T22:15:54.478-08:00TookThisHere.appspot.comLook what I made ( a while ago, I've been neglecting my blog ): <a href="http://tookthishere.appspot.com">http://tookthishere.appspot.com</a><br /><br />It's photos on a map!<br /><br />I also put it on <a href="http://github.com/isaachawley/isaachawleyTestMaps">github</a><br /><br />You can change the url to look at different locations, like:<br /><a href="http://tookthishere.appspot.com/loc/place/seattle,%20wa">http://tookthishere.appspot.com/loc/place/seattle,%20wa</a> or<br /><a href="http://tookthishere.appspot.com/loc/place/lake%20magdalene,%20florida">http://tookthishere.appspot.com/loc/place/lake%20magdalene,%20florida</a><br /><br />You can also scroll the map around and search with the Search button.<br /><br />Posting works similarly.<br /><br />Unfortunately, the <a href="http://aralbalkan.com/1434">1MB App Engine limit</a> means you might have to resize pictures you upload.Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-11451069949198965752009-04-15T15:41:00.000-07:002009-04-15T15:59:45.369-07:00Firefox Tip: <button type="button">Firefox. You've got a form with <button>Whatever</button> on it. You don't want to submit the form, you want to do some javascript / AJAX magic. In IE this works fine, but in Firefox, clicking on the button submits the form! How annoying!<br /><br />How do you fix it? Like this:<br /><button type="button"><br /><br />I think this works because buttons in Firefox default to type="submit", maybe. Or maybe not. I'm not sure.<br /><br />Quick recap:<br />Firefox, <button type="button"> keeps the form from submitting when you click the button.Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-48945644347870030272009-04-13T16:18:00.000-07:002009-04-13T16:23:54.107-07:00Belaying tipsSpecifically for Stone Gardens in Seattle, but will probably work anywhere.<br /><br />C = climber<br />B = belayer<br /><br />When checking to make sure your partner's gear is on correctly, look at the buckles on their harness first, then how the rope/belay device is attached, then at the knot/belay device itself.<br /><br />The belay device you'll be using is also called an ATC.<br /><br />When climbing...<br />Both people get tied in / clipped to the rope.<br /><br />Then the climber checks the belayer's equipment, then the belayer checks the climber's stuff.<br /><br />Then, when they are ready to go...<br />C: on belay<br />B: belay on!<br />(the belayer has his hands on the rope and is all ready)<br />C: climbing<br />B: climb on!<br />(now the climber puts his hands on the wall and climbs up)<br /><br />The climber needs more rope, the rope is pulling too much...<br />C: slack!<br />B: ok<br /><br />The climber is going to fall, or wants to rest...<br />C: Take!<br />(the belayer pulls the rope until there is no slack and the rope is tight)<br />B: Gotcha!<br />(then the climber sits in the harness)<br />When the climber wants to climb again...<br />C: Climbing! (or "im going to climb")<br />B: ok<br /><br />The climber reaches the top...<br />C: Take!<br />(the belayer pulls hard on the rope until there is no slack)<br />B: Gotcha!<br />(the climber sits in the harness and lets go of the wall, now he's ready to come down)<br />C: Lower!<br />(the belayer prepares to lower the climber)<br />B: Lowering<br />(the belayer lowers the climber to the ground in a controlled manor)<br /><br />Where I have the belayer saying, "ok", this isn't really verbal. We nod at each other or whatever. If it's not loud in the gym and you're both paying attention, you don't really need to say anything.<br /><span style="color:#888888;"><br /></span>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-77584314701972109492008-12-01T18:33:00.000-08:002008-12-01T18:48:03.630-08:00The WebApp is up!<a href="http://isaachawleytest.appspot.com/">My hobby project is finally online!</a><div><br /></div><div>A Google App Engine webapp that gets location data from Fire Eagle, plots it on a Google Map, and lets you track players around.</div><div><br /></div><div>And it works! Kinda. Mostly.</div><div><br /></div><div>Eventually, a player would...</div><div>1. pick a target nearby</div><div>2. track him</div><div>3. take a picture of the target</div><div>4. upload the pic with location data</div><div><br /></div><div>Then they would get a neat little log with both players' locations as the game evolved, plus pictures at the start and end. Possibly annotated... maybe :)</div><div><br /></div><div>Next steps: pic uploading, actual CRUD instead of hackery, log views... score updating... OK there's actually a lot of work to go. But it works! Yay!</div><div><br /></div><div>Known issues:</div><div>-the map is always centered near my apartment</div><div>-the player page is a mish-mash of player page and user homepage</div><div>-lots of debug info everywhere, etc</div><div><br /></div><div>Anyway, it was fun.</div><div><br /></div><div>If you have any ideas, don't hesitate to share! Constructive criticism welcome also.</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-35164314456981946112008-11-03T22:59:00.000-08:002008-11-22T16:18:53.119-08:00Android + Fire EagleI spent a long time looking for a FireEagle API that would work on Android. Then I found it.<br /><br /><a href="http://code.google.com/p/jfireeagle/">JFireEagle</a> - a java fire eagle api implementation. It even<a href="http://code.google.com/p/jfireeagle/source/browse/#svn/trunk/jfireeagle-android-app"> includes an Android package </a>- that works!<div><br /></div><div>EDIT 11/22/2008 - JFireEagle is an active project and the SVN repo gets in a bad state sometimes. If the current version doesn't work, try revision 256. It might not be current but it's working.<br /><br />I've you've been looking for a FireEagle API that works on Android, look no further.<br /><br />I've got a few days of work left on my FireEagle updater service for Android, then I'll put it on the market and put the source up. Don't worry, I'll post about it.<br /><br />Normally I don't do this, but if you found this post helpful, please link to it.</div>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-17481113505965824572008-10-17T01:10:00.000-07:002008-10-17T01:30:57.597-07:00Google App Engine, Fire Eagle, Google Maps...I've been working on a hobby project lately - a webapp running on google app engine that gets location data from Fire Eagle and displays it in a google map on the page.<br /><br />To do this I had to slightly modify Steve Marshall's excellent python Fire Eagle API. Make no mistake, I suck at python, and I only edited Mr. Marshall's API until it stopped throwing errors. As soon as it worked for me I stopped, leaving the work half finished.<br /><br /><a href="http://github.com/SteveMarshall/fire-eagle-python-binding/tree/master/fireeagle_api.py">Here is Mr. Marshall's API</a>, and <a href="http://isaachawley.googlepages.com/ga_fireeagle_api.py">this is my version modified for google app engine</a>. I really only changed the http module. His version used httplib, which is unsupported in the app engine environment. Urlfetch is used instead.<br /><br />After that, it was off to the races. I used <a href="http://code.google.com/appengine/articles/rpc.html">google's RPC example for app engine</a> to pass my location data from the python (and database) to javascript on the client, after which I copied totally from the <a href="http://code.google.com/apis/maps/documentation/introduction.html">google maps beginner example for adding a map and markers</a>.<br /><br />That part went very smoothly - I practically made the google maps example into the<a href="http://code.google.com/appengine/docs/gettingstarted/templates.html"> django template</a> for my maps page.<br /><br />My app is far from finished (it really depends on mobile devices), but these wonderful mashable services made it lots of fun.<br /><br />Thanks especially to Steve Marshall. I can't tell you how much I appreciate that Fire Eagle API.<br /><br />When my app is finally finished, I'll let you all know, of course!<br />-IsaacIsaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-71136723390066165892008-08-12T11:39:00.000-07:002008-08-12T11:58:28.107-07:00Age of Conan - The QuittingI'm quitting Age of Conan.<br /><br />Why? It's too buggy.<br /><br />There are a bunch of other problems with it, things that make it less appealing, such as...<br /><ul><li>All of the races are the same.</li><li>The classes are not interesting.</li><li>The models look like crap, wooden and ugly and badly animated.<br /></li><li>The voice acting is boring and annoying.</li></ul>But the bugginess is what really kills it. I'm constantly dying for no apparent reason. I died because I got aggro'd during a quest sequence. I died while the bad voice actor droned on and on, while I couldn't do anything.<br /><br />The combat is much more active, you have to stay much more focused, true. But that makes glitches much worse. Lag is much more apparent. Death by lag or glitch is a constant occurrence.<br /><br />It comes down to this: even if the game was really attractive, the bugs would be deal-breakers. But the game isn't attractive, it's boring and annoying and stodgy...<br /><br />So I won't be back, even after the bugs are fixed. I don't like the game.<br /><br />Here's hoping Warhammer Online gets big-world pvp right. I loved that aspect of AoC.Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-47275003466944922442008-07-24T12:00:00.000-07:002008-07-24T12:26:10.640-07:00Project Idea -Source Control for Crowdsourced Movie CutsCrowdsourced movies like <a href="http://www.ironsky.net/site/">Iron Sky</a><span style="text-decoration: underline;"></span> are being produced by distributed teams. These teams face some interesting challenges because video is resource intensive to share.<br /><br />I propose a source control system based on non-destructive editing, where the raw footage is left untouched, and different cuts of the film are recorded in flat files which reference that footage. In this way, the teams only need to share expensive video files when raw footage is produced, and all of the editing can be shared in small flat text files, which are easily handled by source control.<br /><br />To view another collaborator's edits, you only need to download the text file which describes their cuts.<br /><br />Pros-<br /><ul><li>The raw footage, the actual heavy lifting, is downloaded only once, when it becomes available. You could obtain it from somewhere else, like take your iPod to another collaborator's house and get the raw footage from him.</li><li>You could even download a low-res version of the footage, or only the most heavily used sections.</li><li>Since edits are non-destructive, and serve as references to the raw footage, and do not change the video files, they can be represented in a file format approaching flat text. In this way they can be very small and quickly shared.</li><li>Hundreds of revisions from hundreds of collaborators can all be viewed on demand, all pulling from the shared raw footage and taking a minimum of space.</li></ul>Cons-<br /><ul><li>All of the editing needs to be non-destructive. I don't think totally nondestructive video editors exist.</li><li>Effects which can't be produced programmatically would have to be shared with their footage sections. A long section of effects might destroy the pro of easily shared edits. Perhaps layers?</li><li>Have to create not only a source control system, but a suite of editors, players, converters, effect systems, and possibly even codecs. Hard, hard work.<br /></li></ul><span style="font-size:130%;">Workflow scenarios:</span><br /><br /><span style="font-size:130%;">Individual contributor collaborator-</span><br /><br />I read about a crowdsourced movie being produced by hobbyists. I go to the website and find the source repository. Their website asks me nicely to use bit torrent when possible to download the raw footage. I spend two weeks with the torrent client going and end up with 30 gigs of raw footage.<br /><br />I fire up the movie source control and get the latest edits, which takes about 1/2 hour. I see that there are several major branches, "long-intro", "bryan-edit", "off-dialog-indie-songs-only", and "action-focus". I only download the edits, I choose not to get any extra raw footage, music, or effects.<br /><br />I start my editing suite and open the project file for long-intro. The editor informs me that some footage, music and effects layers are missing. I go ahead and watch the movie. There are some shots where the video is greyed out, and others where I get an indicator of missing music, but the editor never chokes.<br /><br />In the last third of the movie I notice that there are some sloppy cuts during some dialog. Rather than doing the work totally myself, I switch to another branch and see that in "bryan-edit" this section of dialog is very well done. I take that bit of index and copy it over to my current branch.<br /><br />After making sure it works, I commit my changes to the repository.<br /><br /><span style="font-size:130%;">Amateur Cinematographer-</span><br /><br />My buddy tells me about a hobby project he's involved with, and shows me about 20 minutes of footage on his iPod when we run into each other. I'm interested, but my internet connection isn't that great and it sounds like a hassle. He says he's got all 30 gigs of the raw footage on his laptop right now, so we go over to my place, copy it over to my pc, and he shows me some of the editing suite. I'm impressed.<br /><br />After about a week of fooling with the edits I decide I want to get involved, so I head to the project wiki and find a page listing shots that are missing or need improvement. They want a location shot in Seattle, where I happen to live, so I grab my camera and head downtown. I get about 20 minutes of footage around Seattle.<br /><br />Instead of uploading it myself, I call my friend, give him the footage, and he uploads it for me. Even before he finishes uploading it, I start adding my footage to some edits on my local machine. I like one of them and commit it. Since the footage hasn't hit the repository yet, the source control grabs a thumbnail from my footage, and everyone who views my edits sees the thumbnail until my friend finally gets it uploaded.<br /><br /><span style="font-size:130%;">What do you think?</span><br /><br />Is this an interesting idea? Is this a problem contributors have? Would this be useful? Is it prohibitively hard? Do you know of nondestructive video editors that could be used in this manner?<br /><br />Could we put together an already existing tech stack that accomplishes this? Git, for sharing both edits and raw footage, some video editor that can export/import flat files?<br /><br />Deserves some more thought.Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.comtag:blogger.com,1999:blog-7135602.post-85511377636193764232008-06-30T11:48:00.000-07:002008-06-30T12:00:41.611-07:00Mplayer boosting audio volumeTo boost mplayer's max volume add the following lines to your mplayer config (mine is at /etc/mplayer/mplayer.config).<br /><br /><code><br />softvol=1<br />softvol-max=250<br /></code><br />This forces mplayer to use the software mixer, and then sets the upper cap at 250% of normal.<br /><br /><a href="http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html#AUDIO%20OUTPUT%20OPTIONS%20%28MPLAYER%20ONLY">Mplayer manual</a><br /><a href="http://howto.wikia.com/wiki/Howto_increase_MPlayer_volume_above_sound_cards_maximum_volume">Wikia link</a>Isaac Hawleyhttp://www.blogger.com/profile/11819119827675929644noreply@blogger.com