03.02.07

InfoQ Intro to ActiveMessaging Article

Posted in code at 2:01 pm by Andrew Kuklewicz

The article I wrote on ActiveMessaging is up - enjoy!
It includes the latest and greatest on how to get started using a13g.

02.10.07

Yahoo pipes foray

Posted in code, folly at 8:08 am by Andrew Kuklewicz

New free toys!
Everyone can appreciate the Unix pipe concept, even if it was a slow start to get it added. It’s nice to see |s inspiring folks still, as with Yahoo pipes.
Did my own based on prx and flickr, give it a run.
I find it only works right about 50% of the time - seems like it doesn’t retrieve all the feeds each time I request, so sometimes all I get are PRX listings, other times I get prx with the associated flickr images based on the pieces.
A few things I think could improve:

  • When dragging the end of a control, like a Text Input, to be the input to another form value, like in a URLBuilder, the drag and drop is very imprecise. In a list of three Query Parameters, I could never drop onto the middle element, it just wasn’t able to only select that one middle parameter
  • Add a For Each: replace that does an element in a feed item, rather than the whole element. Or adds to it, hard to actually combine feedw without something like this
  • Have a smarter Union with options like interleaving rather than just putting all of one feed after another
  • The URLBuilder does not put the arguments into the query string in the order you have them in the form
  • While I love the debugger, there is no way to immediately run a pipe, you can only see debugger output, I want a way to preview the run
  • The output from a given source can only go to one widget - it would be great if the output of a fetch could be used for different processing, then recombined. I did this, but needed 2 almost identical Fetch controls to make it work, and adds another request to the processing time
  • Save is buggy - I have made changes to the URLBuilder, but Save would be disabled till I changed a different control. I also had once where I had saved some changes, then gone back to edit after running, and the changes were goe…
  • Consistent behavior of the fetch/content analysis/for each replace. I see times when I run it that no results come back, other times they work great. I have often seen that running a Content Analysis operation would flake out and show no results, even though the fetch above it would have results when I debug it. This same inconsistency seems possibly related to the general inconsistency of results mentioned above.
  • Also saw another bug after adding a For Each where I could not add the sub source to the For Each. Had to save, close up, and come back in to get it to work.

So all in all a good toy, but not ready for anything real - but I see the potential. Really the UI is unbelievable, and while a bit buggy still, I do not know how they made it such a rich UI - the pipes alone are an amazing bit of work.
Having used lots of GUI based tools like Informatica Powermart or the Weblogic Integration tools, or even just Rational Rose or Visio, I see where something like this is not far from being a very competitve interface, and incredibly light weight and responsive.

01.20.07

Contegix support perhaps too good

Posted in code at 2:30 am by Andrew Kuklewicz

I’m writing this w/o any prompting from the folks at Contegix, I ‘ve been just really pleased with these guys this week, and wanted to put a few kind words out there.

So we switched to Contegix not that long ago for prx, and I have to say, these guys are a class act. It’s not that our last hosting provider was bad - they weren’t - it’s just that Contegix is that much better.

The support just may be too good. They are spoiling me; what will I do if I have to deal with a different host?

I fear I may never get better at any sysadmin tasks, it is all too easy to simply write a request, and in moments you have a response, and in minutes you have it done. I have never had better support, even when I had a dedicated team of admins around the corner. And I’d say about half the time I ask for something, the response includes analysis and suggestions on how to do it better.

So this week alone, I can’t say enough about the strong work from Craig, Eric, Joe and Brian - thanks again guys!

01.12.07

Amazon Web Services (AWS) S3 working, now back to the plan

Posted in code at 3:43 am by Andrew Kuklewicz

I’ve been spending the last few days working with the AWS::S3 library.

Works well - we are streaming large audio files over it, so we needed something better than the ruby s3 bindings amazon released (though they are very clear in their code that they do not handle big files well).

Only hitch was setting metadata when creating an AWS::S3::S3Object - couldn’t get it to work.
Tried creating a 1 byte file to start, then updating with metadata, that was fine, but the initial create was erroring out, or the metadata would not take.

Luckily, there is a patch offered by ‘Lars’ which makes it all work for me now.

I posted this to the list, but here is some sample working code for setting metadata on create (once the patch is applied):

1) Using the store class method:

AWS::S3::S3Object.store(
'myfile-81805',
open('/data/production/amazon/myfolder/myfile-81805'),
'my-s3-bucket',
:content_type=>'audio/mpeg',
'x-amz-meta-my-file-name'=>'my.mp3')

2) Using the Bucket new_object method, and then store, you don’t have to include the metadata prefix ‘x-amz-meta-’:

my_bucket = AWS::S3::Bucket.find('my-s3-bucket')
s3o = my_bucket.new_object
s3o.key = 'myfile-81805'
s3o.value = open('/data/production/amazon/myfolder/myfile-81805')
s3o.content_type = 'audio/mpeg'
s3o.metadata['my-file-name'] = 'my.mp3'
s3o.store

So with that working, back to ActiveMessaging, and getting changes fully tested and checked in.

01.05.07

ruby stomp gem version 1.0.3 released

Posted in code at 10:18 pm by Andrew Kuklewicz

Thanks to Brian McCallister, he put in the changes I mentioned.

This should make the changes to a13g cleaner, and we can now take advantage of having the reconnect wait time configurable.
All in all, it makes a13g closer to implementing a ‘reliable’ listening service.

There is one sorta ugly bit, the __old_receive method was a fine way to do this when I was extending the Connection class, but could use refactoring…after I get a good check in of fixes to a13g, I’ll submit something prettier. But as we used to say back in Stanley Eisenstat’s classes (which I wish I had taken more of): good is great, but done is better.

« Previous entries · Next entries »