-
First day on the job
Nov 28, 2022 - 1 min read
As a software developer that gets loaned out to other companies, I tend to have quite a few “first day on the job” days. Today was one of them, joining a team working hard to get a new bio-lab robot on the market.
As is typical with joining a new project, I spent the entire first day trying to figure out why nearly nothing in the README actually worked.
Computers are the worst.
-
Like the legend of the phoenix
Nov 28, 2022 - 2 min read
I used to be a prolific blogger, back in the very early days of the form. Had a few things “go viral” before that was a thing, meaning they were seen and talked about by dozens of people, but I was comfortably C-list in that small world.
As my online time got eaten up by other things, like farming and starting a family, my posts became shorter and less frequent and eventually just … stopped. Instead of using my own space to keep my words, I unconsciously switched over almost exclusively to a hot new microblogging platform started by some podcasting tooling developers called Twttr.
Twitter’s very short character limit made it ideal for the short bits I was writing anyway, and it was easy to write them more often. This only increased the ephemeral quality of them and I didn’t even notice really that I was just creating a gap in my once exhaustively documented life. I’ve got all my tweets downloaded and stored away, but they’re not something I can really go back and read. Those years are essentially lost to me.
But now an egomaniacal billionaire troll has taken over and is systematically destroying Twitter and that has shocked me awake. It’s well past time to start owning my words again and, more importantly, treating them like they matter and kept and displayed and shared.
So, here’s Kestrel’s Nest back from the dead.
I’m using Hugo to power it, displayed using the m10c theme. I might charge all that, and this is certainly a rough draft, but it’s a good place to start.
For a laugh, I used a page from February 2001 from my old blog here as a placeholder. I thought about making this style match that exactly, but if I go that route I’ll do it another day. It’s here if you want to have a laugh too.
-
It's been over a year?
Nov 18, 2008 - 1 min read
Just stopping by to note that it’s been over a year since I wrote anything here. Huh. All my action these days is on Twitter (and echoed on my right sidebar under the old musty photos).
-
More Delays
Oct 25, 2007 - 1 min read
Just popping in to say that the Food Network deadline was extended again, to November 15. I think the reason is the unexpected departure of Mario Batalli from the network. As one of the Iron Chefs, they needed to replace him. Which they’re doing with a show very similar to “The Next Food Network Star” – “The Next Iron Chef”. Which makes me wonder… do I want to win, now that I won’t be a colleague of Mario’s? Yeah. Yeah I do.
-
Food Network Contest Delayed
Sep 3, 2007 - 1 min read
When I made the video, the deadline was July 31, and I pretty much had to throw the video together over a weekend. Then, the deadline was extended to September 1st. Just now, I see it has been extended again to mid October. So, more waiting.
-
The Final Cut (Maybe)
Jul 17, 2007 - 1 min read
I got some great feedback on my video, and I’ve made another cut to reflect them. I inserted 11 seconds at the beginning to set up the local food idea (something I’d cut out earlier in the editing), and to make up for that time I trimmed 11 seconds in several bits throughout the rest of the video. The result is a better story, but with maybe slightly less production quality. It’s supposed to be amateur, and the story is paramount, so I’m OK with that. What’s this for again? Think “American Idol”, only with cooking instead of singing. Hopefully “instead”, anyway. I’m not exactly known for my singing.
-
Another Victim of Reality TV Syndrome
Jul 15, 2007 - 1 min read
So, I’ve been watching “The Next Food Network Star” on (of all places) the Food Network, and I get to thinking, “Hey – I can do that better than they are!” And a little ad comes up saying that the network is now looking for contestants for the next season, and all it takes is a three minute video showing what I’ve got. And here it is. I’ve got a few more days to re-edit it if I want before submitting, but I’m rather happy with it just as it is. How about you? Would you watch my show? If you’re feeling adventurous, here’s anine and a half minute lightly edited first cut of the video.
-
Well, this is easy.
Jul 2, 2007 - 1 min read
Turns put to be very easy to write on the weblog from the iPhone. Does this mean I’ll write more? Don’t know, but it can’t hurt.
-
Live Demonstration of Slingshot
Apr 30, 2007 - 1 min read
The last week has seen a lot of changes to the Slingshot codebase that have made much of my previous work obsolete. That’s OK, though… the newest code takes care of a lot of the troubles I had getting things going. I’m going to be doing a live demonstration of Slingshot in its entirety tomorrow evening at the Atlanta Ruby User Group meeting. I’ve spent the weekend making a dirt-simple Personal Inventory Application. It’s up and running on my accelerator right now, and I’m packing up a Slingshot application to download. I’ll show what goes into making an application Slingshot-ready and how to create the Slingshot application itself. Those in attendance with Macs* will be able to get online, create an account, download the Slnigshot application, sync the data down, go offline, make changes, go online, and sync those changes back up. Should be good times! If you’re at all interested, come on by. If you RSVP, we’ll even have enough pizza to go around. *Slingshot is not yet ready for Windows. If it is by tomorrow and I can easily package the app, I’ll let the Windows users play along too.
-
Slingshot On Target
Apr 25, 2007 - 4 min read
When I last left you, I had moved a scratch copy of my application to a shiny new Joyent Accelerator, brought it current with Rails, and was preparing to migrate new created_at and updated_at columns to my database. All that went well. Several of my models already had created_on (date) fields, but Slingshot needed more detail. Those got converted over to full datetimes. I also inserted raw SQL into my migration to quickly set all of the new created_at and updated_at to the current date/time. The Slingshot synchronization process has two components: a plug-in/generator that adds a new controller and several methods to the “live” application and a somewhat complicated rake task that resides on the client side. In the new controller you build an array of arrays that contain the data that is able to be brought up and down, using any rules and logic you need. For my first tests, I went ahead and included almost everything. In future work, it’ll have to be much more complicated, as my application has a three-tiered authentication scheme. First, each registered subdomain acts as a standalone instance of my application (though in truth they’re all served up by the same mongrel processes). Second, each subdomain has a set of users. Third, each user has a set of roles. There is a mechanism for passing authentication information from the client to the server, but in the interest of just getting things working I only bothered to check subdomain. The controller (named in my routes.rb “sync”) has three main actions: “down”, “up”, and “log”. The down action builds the array of arrays of allowed data and the serves up an XML file containing the data as well as a number of meta data. The up action…. well, I actually haven’t yet gotten that far. The log action records the successful imports and exports, so it knows where to pick up next time. The rake script does all of the client side work. It calls sync/down from the server, receives the XML data and saves it to the local /log directory, parses it, and performs the necessary deletes, updates, and inserts to the local sqllite database. It took me a long time to get that part to work properly. First, it was silently failing and I didn’t know enough to be watching OS X’s terminal log to see what was going on. I actually opened it up by accident and found the error messages I had been looking for. The first few were related to errors in the documentation (then very meager but now much better as Joyent prepares for a general release), but I was able to get past those in pretty short order. The rest were my fault. The data transfers are not raw SQL. They create instances of your Models and use all of the regular model methods, including validations. First, the instances were failing because I did not include all of the gems required by my application into Slingshot’s local VM (more on that in another post). Once I took care of that, then they were failing on the save validations. I have a number of custom validations that check for things such as uniqueness within a subdomain, and as I mentioned above, I was skipping most of my authentication for this test. I got past this by modifying the rake task to use save(false) (and thus bypassing validations). I think it’s safe to say the data coming from the live app has already been validated, so I was fine with that change. Then, saves were failing because of database integrity constraints. You see, when my real app first went live, I allowed null values for several fields that I had since switched to not. The old null values were still in the database, though, so when the imported data was saved, sqlite rejected them. I fixed that by changing the nulls to “Unknowns” and everything was fine. So that’s where I stand. Slingshot is able to pull data down and I can interact with that data locally. Next up, sending the changes back up. And then, adding the real authentication.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177