ruote log_2010-04-08

2010-04-08 01:40:17 utc LogicallySound_ Hi
2010-04-08 01:40:39 utc jmettraux Hi Enrico, how are you doing ?
2010-04-08 01:40:59 utc LogicallySound There we go. =)
2010-04-08 01:42:48 utc LogicallySound So far so good on our launch.
2010-04-08 01:43:11 utc LogicallySound Though I really want to put our app on Ruote 2.1 with RuoteKit.
2010-04-08 01:43:25 utc jmettraux me too ;)
2010-04-08 01:44:51 utc jmettraux congrats on the launch anyway !
2010-04-08 01:45:22 utc LogicallySound Thanks.
2010-04-08 01:48:11 utc LogicallySound I got tosch's ruote_on_rails bit running on Ruby 1.9 and Rails 3, but haven't gone deeper yet.
2010-04-08 01:50:19 utc jmettraux I have two applications in dev with the ruote-kit and rails3, one 1.8.7 and one 1.9.1, so far so good
2010-04-08 01:57:16 utc LogicallySound Big thing I've been thinking of is how to work with workitems through the Rails application.
2010-04-08 01:57:27 utc LogicallySound RuoteKit's interface isn't, as far as I can tell, ActiveResource-compatible.
2010-04-08 01:58:27 utc jmettraux that's how I've been doing it : http://gist.github.com/359699 "activewise"
2010-04-08 01:58:57 utc jmettraux I don't care too much about ActiveResource, it's far from RESTfulness, though it's handy
2010-04-08 01:59:03 utc LogicallySound Yeah, for Rails 3 that would work rather well.
2010-04-08 01:59:14 utc LogicallySound For Rails 2.3, not as much.
2010-04-08 01:59:26 utc jmettraux :(
2010-04-08 02:01:26 utc LogicallySound The combination of DRb ruote_plugin and Validatable kinda works for that, but is very brittle.
2010-04-08 02:02:35 utc jmettraux with 2.1 you kind of can communicate with the "engine system" via the storage
2010-04-08 02:03:11 utc jmettraux the Engine instane becomes some kind of dashboard, showing levels and offering a few levers
2010-04-08 02:03:24 utc jmettraux instance
2010-04-08 02:05:33 utc LogicallySound So the workers are threads, right?
2010-04-08 02:06:01 utc jmettraux they can be in other processes
2010-04-08 02:06:25 utc jmettraux the most simple is to give a thread to a unique worker
2010-04-08 02:06:42 utc LogicallySound So multiple workers interacting with one engine which in turn interacts with one storage?
2010-04-08 02:07:38 utc jmettraux yes
2010-04-08 02:07:44 utc jmettraux 1 unique storage in the middle
2010-04-08 02:08:09 utc LogicallySound Do the workers interact with the storage?
2010-04-08 02:08:14 utc jmettraux work in progress : http://ruote.rubyforge.org/configuration.html
2010-04-08 02:08:20 utc jmettraux yes, they have to
2010-04-08 02:08:37 utc jmettraux it's the central "message board"
2010-04-08 02:09:18 utc LogicallySound Hmmm... so really the engine does very little now.
2010-04-08 02:12:18 utc LogicallySound Looking at the storages available... Ruote::Redis::RedisStorage sounds pretty awesome.
2010-04-08 02:12:38 utc jmettraux :)
2010-04-08 02:13:23 utc LogicallySound And... composite storage?
2010-04-08 02:13:30 utc LogicallySound =)
2010-04-08 02:13:56 utc jmettraux redis has lots of advantages, you just have to have memory
2010-04-08 02:14:29 utc jmettraux with the upcoming redis virtual memory, the constraint will boil down to "have memory to hold the whole key set"
2010-04-08 02:14:37 utc jmettraux "have enough"
2010-04-08 02:16:10 utc jmettraux composite storage could fun for scenarii where you put workitems in CouchDB and msgs/schedules/... (things that have to be fast) in Redis
2010-04-08 02:16:52 utc jmettraux well, as soon as you have human participants, speed is not so important
2010-04-08 02:18:10 utc LogicallySound Yeah.
2010-04-08 02:18:25 utc LogicallySound Except if you're running a lot of process instances, I guess?
2010-04-08 02:19:13 utc LogicallySound (and much more complex processes where a lot of expressions are being stored)
2010-04-08 02:19:21 utc jmettraux it's depends on their respective activity, but yes
2010-04-08 02:20:23 utc LogicallySound But at that scale, everything becomes much more complex.
2010-04-08 02:23:45 utc LogicallySound I'm still interested in seeing an ActiveRecord storage, but I haven't had time to look at the one that Kenneth was working on before.
2010-04-08 02:24:29 utc jmettraux Kenneth hasn't had much time for open source these days
2010-04-08 02:24:36 utc LogicallySound Also, I see some skeletal documentation for process testing.
2010-04-08 02:27:11 utc jmettraux sorry, LimeChat crash
2010-04-08 02:29:32 utc LogicallySound It's OK.
2010-04-08 02:29:44 utc LogicallySound I saw some skeletal documentation for process testing as well.
2010-04-08 02:30:30 utc jmettraux yes, it's coming along
2010-04-08 02:32:48 utc LogicallySound That yields another interesting idea: implementing Cucumber step definitions (or some way to have Cucumber drive for acceptance testing)
2010-04-08 02:34:24 utc jmettraux announced this a few weeks ago : http://github.com/jmettraux/ruote-cukes maybe that's of value to you
2010-04-08 02:35:50 utc LogicallySound Slick. =)
2010-04-08 02:41:29 utc LogicallySound So much neat stuff coming out of the ruote ecosystem.
2010-04-08 02:42:24 utc jmettraux :)
2010-04-08 02:51:44 utc LogicallySound I tend to use a lot of custom participants that interact with the Rails application and wonder if that's a sort of anti-pattern. =P
2010-04-08 02:52:06 utc jmettraux you should blog that ;)
2010-04-08 02:53:12 utc jmettraux I'm experimenting with ?workitem_id=xxx
2010-04-08 02:53:28 utc LogicallySound ??
2010-04-08 02:53:30 utc LogicallySound Elaborate?
2010-04-08 02:53:53 utc jmettraux workitems forms linking to resource edition with correlation
2010-04-08 02:54:12 utc jmettraux I have a workitem for "adding motherboards to a new batch"
2010-04-08 02:54:38 utc jmettraux the workitem form links to /boards/new?workitem_id=xxx
2010-04-08 02:54:51 utc LogicallySound Oh, so giving the workitem along with the actual resource itself and letting the controllers submit that to the engine?
2010-04-08 02:55:05 utc jmettraux when the edition of the new board is over, it gets back (redirect) to the workitem/edit
2010-04-08 02:55:13 utc jmettraux yes, that is possible too
2010-04-08 02:55:33 utc jmettraux "I'm doing this in that context"
2010-04-08 02:55:42 utc jmettraux it's experimental but works well
2010-04-08 02:56:19 utc jmettraux in the context of a process I'm changing the state of multiple objects
2010-04-08 02:56:27 utc jmettraux of course, it works with 1 object as well
2010-04-08 02:56:29 utc LogicallySound I've thought about that, because I've found that the "open-and-submit-task-items" model is not really doing it for our staff.
2010-04-08 02:57:13 utc jmettraux ACTION listens carefully
2010-04-08 02:57:39 utc LogicallySound Well, the task items idea is separated from the actual process itself.
2010-04-08 02:57:56 utc LogicallySound Like, submitting a task item for accepting required documents for an application?
2010-04-08 02:58:53 utc LogicallySound Why not submit the workitem in the background when the documents are being uploaded to the system?
2010-04-08 02:59:30 utc jmettraux exactly
2010-04-08 03:00:22 utc LogicallySound But that would require some much more clever integration.
2010-04-08 03:00:47 utc LogicallySound You have the engine, you can look up the process that's running, you can query for the appropriate task item...
2010-04-08 03:01:07 utc LogicallySound Errm.. workitem.
2010-04-08 03:01:08 utc jmettraux yes
2010-04-08 03:01:17 utc LogicallySound (Also, confusing vocabulary)
2010-04-08 03:01:23 utc jmettraux no worries
2010-04-08 03:01:54 utc jmettraux many possibilities
2010-04-08 03:01:58 utc LogicallySound Yeah.
2010-04-08 03:02:09 utc LogicallySound And exploring them could make some great blog and presentation topics.
2010-04-08 03:02:27 utc jmettraux yes
2010-04-08 03:02:38 utc jmettraux you're not limited to ruote, it's just a tool
2010-04-08 03:02:54 utc LogicallySound but a very flexible one.
2010-04-08 03:03:20 utc jmettraux thanks !
2010-04-08 03:05:01 utc LogicallySound And it seems like state machine and process are still interchangeable in Rails dev circles.
2010-04-08 03:05:20 utc jmettraux aaah
2010-04-08 03:05:29 utc jmettraux that's an epic subject
2010-04-08 03:05:34 utc jmettraux what's your take on it ?
2010-04-08 03:05:53 utc LogicallySound Point in case: http://github.com/ryan-allen/workflow
2010-04-08 03:06:36 utc LogicallySound The registration processes I've implemented couldn't have been done with a state machine alone.
2010-04-08 03:06:57 utc LogicallySound Mostly because of the scheduling stuff.
2010-04-08 03:07:07 utc LogicallySound (Timeouts, waits, and so on)
2010-04-08 03:07:32 utc jmettraux spot on : http://blog.codesherpas.com/on_the_path/2010/03/accounting-for-time-in-a-statebased-workflow.html
2010-04-08 03:08:30 utc jmettraux ACTION thinks that maybe he will lose Enrico
2010-04-08 03:08:50 utc LogicallySound That separation between process and underlying object state is something I learned in the process (ha ha) of implementing the registration processes in our app.
2010-04-08 03:09:31 utc LogicallySound I was initially storing a lot of stuff in process-level variables.
2010-04-08 03:11:22 utc jmettraux sorry you had to learn that the hard way, I'm learning it every day myself
2010-04-08 03:11:35 utc LogicallySound The hard way is one of the best ways to learn something. =)
2010-04-08 03:11:53 utc jmettraux :)
2010-04-08 03:14:18 utc LogicallySound Even state_machine + cron/delayed_job/whenever doesn't quite match what a well-designed ruote process definition can capture.
2010-04-08 03:19:39 utc LogicallySound But I haven't explored it enough to say with 100% confidence that there aren't better/equal alternatives out there.
2010-04-08 03:20:06 utc jmettraux I like those discussions, I want to keep ruote lean, I also want to avoid people shooting themselves in the foot with ruote
2010-04-08 03:21:29 utc LogicallySound Like many things, there are right and wrong ways to use it based on the situation/problem.
2010-04-08 03:25:23 utc jmettraux I'd love to implement a "business days" module for ruote
2010-04-08 03:25:40 utc jmettraux to make the timeouts and co more "business friendly"
2010-04-08 03:26:09 utc jmettraux toto :task => 'maw the lawn', :within => '3 business days'
2010-04-08 03:26:26 utc LogicallySound I was lucky not to have to deal with business days.
2010-04-08 03:28:56 utc LogicallySound :within?
2010-04-08 03:29:03 utc jmettraux :timeout
2010-04-08 03:29:09 utc LogicallySound Interesting formulation.
2010-04-08 03:29:10 utc jmettraux just spat it out like this
2010-04-08 03:29:32 utc LogicallySound Like syntactic sugar for certain uses of the timeout expression...
2010-04-08 03:30:04 utc LogicallySound sequence :within => '5 business days' do participant1; participant2; end
2010-04-08 03:31:39 utc LogicallySound Well, it's about time I headed to bed.
2010-04-08 03:31:55 utc LogicallySound Nice chatting with you though. I usually don't catch you on #ruote. =)
2010-04-08 03:32:28 utc jmettraux was a pleasure !
2010-04-08 12:14:03 utc irfn Hi all
2010-04-08 12:14:09 utc jmettraux Hi !
2010-04-08 12:14:35 utc irfn I was trying out ruote-dm support
2010-04-08 12:15:40 utc irfn the Readme doesnt talk abt database setup
2010-04-08 12:15:53 utc irfn via automigrate etc
2010-04-08 12:16:21 utc jmettraux ACTION checking out ruote-dm
2010-04-08 12:17:43 utc jmettraux Ruote::Dm::Document.auto_migrate!
2010-04-08 12:17:49 utc irfn yeah
2010-04-08 12:17:57 utc jmettraux I will add that to the readme right now
2010-04-08 12:17:58 utc irfn i get this error Specified key was too long; max key length is 767 bytes
2010-04-08 12:18:27 utc irfn i was assuming that i missed out some step.
2010-04-08 12:18:58 utc jmettraux :( It should be OK after that step
2010-04-08 12:19:06 utc irfn All i have is a vanilla Rails app(2.2.2)
2010-04-08 12:19:16 utc irfn dont ask why i am using 2.2.2 :(
2010-04-08 12:19:46 utc jmettraux What database is it ?
2010-04-08 12:19:46 utc irfn i have Ruote and deps and datamapper deps etc
2010-04-08 12:19:50 utc irfn mysql
2010-04-08 12:20:40 utc jmettraux I guess I'll have to reduce the key size in lib/ruote/dm/storage.rb
2010-04-08 12:21:14 utc irfn hold on
2010-04-08 12:21:28 utc irfn i got the log trace
2010-04-08 12:21:30 utc jmettraux it's at 2048 for now
2010-04-08 12:21:43 utc irfn oh
2010-04-08 12:21:57 utc irfn what "key" is too large
2010-04-08 12:22:18 utc jmettraux the :ide key
2010-04-08 12:22:23 utc jmettraux probably
2010-04-08 12:22:59 utc jmettraux http://github.com/jmettraux/ruote-dm/blob/ruote2.1/lib/ruote/dm/storage.rb#L36
2010-04-08 12:23:35 utc irfn oh ok
2010-04-08 12:23:43 utc irfn what would this map to my setup
2010-04-08 12:24:00 utc irfn i can change my code to suit this key size
2010-04-08 12:24:02 utc jmettraux MySQL is widespread I guess that shortening it to a length of 700 would be OK
2010-04-08 12:24:25 utc jmettraux is the error a MySQL limitation ?
2010-04-08 12:24:50 utc irfn yeah i need to use mysql
2010-04-08 12:24:54 utc irfn if possible
2010-04-08 12:25:29 utc irfn should locally change this for now
2010-04-08 12:25:33 utc irfn the key size
2010-04-08 12:26:26 utc jmettraux pushed on my side http://github.com/jmettraux/ruote-dm/commit/c73f1da6c0ac1974b458328c7951c2aef2c10f81
2010-04-08 12:27:48 utc jmettraux thanks for reporting !
2010-04-08 12:30:27 utc irfn thanks! ill test out the change.
2010-04-08 12:31:57 utc jmettraux you're welcome
2010-04-08 12:43:27 utc irfn jmettraux just tested this
2010-04-08 12:43:51 utc irfn and somehow its still not working for 700
2010-04-08 12:44:04 utc jmettraux what are the symptoms ?
2010-04-08 12:44:23 utc irfn i tweaked this and found that it works for max of :length => 255,
2010-04-08 12:44:29 utc irfn for me
2010-04-08 12:44:55 utc irfn any idea if this is related to any mysql setting etc
2010-04-08 12:44:58 utc jmettraux ah ok, what kind of storage engine does your MySQL use ? InnoDB ?
2010-04-08 12:45:18 utc irfn Yes i am using InnoDB
2010-04-08 12:45:22 utc jmettraux 2048 works fine with PostgreSQL
2010-04-08 12:45:28 utc irfn oh ok
2010-04-08 12:45:49 utc jmettraux http://bugs.mysql.com/bug.php?id=32915 says "The InnodB maximum key length is 767 bytes. "
2010-04-08 12:45:59 utc irfn true
2010-04-08 12:46:04 utc irfn even i get that error
2010-04-08 12:46:09 utc jmettraux what version of MySQL do you use ?
2010-04-08 12:46:20 utc irfn but to get it working i had to change it to as low as 255
2010-04-08 12:46:36 utc irfn even 256 doesnt work
2010-04-08 12:46:47 utc jmettraux 2^8-1
2010-04-08 12:46:50 utc irfn is there some bytes conversion?
2010-04-08 12:46:57 utc irfn ah
2010-04-08 12:47:08 utc jmettraux 0 to 255
2010-04-08 12:47:47 utc irfn i hope this doesnt change between mysql versions
2010-04-08 12:48:16 utc jmettraux 255 sounds low enough
2010-04-08 12:48:32 utc irfn yeah
2010-04-08 12:49:14 utc irfn im going down mysql path and soon enough should find out all the possible errors :P
2010-04-08 12:49:30 utc jmettraux great
2010-04-08 12:49:44 utc irfn thanks again for the help
2010-04-08 12:49:48 utc jmettraux :)
2010-04-08 12:50:30 utc irfn what workflow storage would you recommend for a large distributed system
2010-04-08 12:50:41 utc jmettraux it depends
2010-04-08 12:50:50 utc irfn i am using mysql for now
2010-04-08 12:51:15 utc jmettraux http://ruote.rubyforge.org/configuration.html#storage
2010-04-08 12:51:37 utc jmettraux this week I have been working on allowing more than 1 ruote worker with ruote-dm
2010-04-08 12:52:00 utc jmettraux hardening against conflicts between workers, it's getting better
2010-04-08 12:52:19 utc jmettraux but ruote-dm 2.1.9 is thus limited to 1 worker
2010-04-08 12:52:34 utc jmettraux it really depends on what kind of system you are building
2010-04-08 12:52:59 utc jmettraux are there human participants ? Or is it pure "automatic" participants ?
2010-04-08 12:53:19 utc jmettraux so, "it depends"
2010-04-08 12:53:28 utc irfn 90 % of the time the particiants are services
2010-04-08 12:54:04 utc jmettraux are there processes that have 0 human intervention / participants ?
2010-04-08 12:54:16 utc jmettraux is speed a top priority ?
2010-04-08 12:54:39 utc jmettraux these are some of the determining questions
2010-04-08 12:54:52 utc irfn since this is a long running thing
2010-04-08 12:55:01 utc jmettraux for now you should get used to the system with 1 worker and ruote-dm
2010-04-08 12:55:03 utc irfn i guess speed is not that important
2010-04-08 12:55:16 utc irfn ok
2010-04-08 12:55:19 utc jmettraux after some time you'll have enough experience to decide on the right settings
2010-04-08 12:55:42 utc irfn thats sounds right
2010-04-08 12:56:10 utc irfn hey thanks
2010-04-08 12:56:15 utc irfn for all the help
2010-04-08 12:56:17 utc jmettraux :) you're welcome
2010-04-08 12:56:27 utc irfn i gotta go into a really long meeting now :D
2010-04-08 12:56:33 utc irfn bye
2010-04-08 12:56:34 utc jmettraux ouch
2010-04-08 12:56:39 utc jmettraux bye !
2010-04-08 17:17:35 utc tomcopeland Hello there. Does anyone know if there's a tokyo tyrant channel? I tried #tokyotyrant, but no luck.
2010-04-08 17:30:34 utc wayneeseguin tomcopeland: alas not that I'm aware of... The author is a black hole for communications and such... This channel is closed to it really.
2010-04-08 17:31:08 utc tomcopeland wayneeseguin: ah well, ok, thanks for the info
2010-04-08 17:31:26 utc tomcopeland one does what one can
2010-04-08 17:31:43 utc tomcopeland incidentally, rvm is very cool, nice work!
2010-04-08 18:12:44 utc wayneeseguin tomcopeland: Very good to hear :) Thanks!
2010-04-08 23:55:06 utc jmettraux wayneeseguin: many thanks for helping out tomcopeland yesterday/today