Camelia, the Perl 6 bug

IRC log for #mojo, 2012-12-11

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:13 mandreacchio joined #mojo
00:25 egopro joined #mojo
00:33 jberger joined #mojo
00:33 jberger o/
00:34 jberger quick question for all you mojo devs
00:34 jberger why doesn't ::Lite have a `has`?
00:34 jberger I've been mulling it over since this: http://irclog.perlgeek.de/​mojo/2012-11-08#i_6136737
00:34 sri \o
00:35 jberger is there some reason not to make a `has` wrapper, like the other wrappers in ::Lite
00:35 jberger ?
00:35 sri since the "current" class is not actually the application class
00:36 sri you mean a "has" that just adds attributes to the application class?
00:36 jberger yes
00:36 jberger *{"${caller}::has"} = sub { $app->attr(@_) };
00:36 sri hmm, i kind of like the idea, but am concerned that it might cause confusion
00:37 jberger yeah, I can see that, but I worry more about preforking
00:37 jberger and with a proper note in the doc and in Growing, I think it makes sense
00:37 jberger it especially goes well with the concept of Growing
00:38 jberger you could even make it a little more half-way and have to request it explicitly
00:38 jberger ala
00:38 jberger use Mojolicious::Lite 'has';
00:38 jberger or some such
00:38 sri i've always been a little concerned about encouraging attributes in lite apps, since the application class is usually Mojolicious::Lite
00:38 * jberger looks at the code
00:38 sri more boilerplate is not a good solution imo
00:39 sri if we decide it's acceptable it should be the default imo
00:40 jberger re: boilerplate ... understood
00:40 sri there are more problems i believe
00:40 jberger re: application class, isn't the class 'main'?
00:40 sri Mojolicious::Lite exports a ->new
00:40 sri it might be main, but morbo and hypnotoad generate random classes
00:41 sri b/master/lib/Mojo/Server.pm#L28
00:41 jberger then I'm not sure what you mean by 'the application class is usually Mojolicious:::Lite'
00:41 sri ops
00:41 sri https://github.com/kraih/mojo/bl​ob/master/lib/Mojo/Server.pm#L28
00:42 sri the class you import ::Lite into is not the same class the app instance uses
00:42 sri thinking some more about it... i guess a "has" would be in line with the mock ->new
00:43 jberger what is the purpose of the ->new? I didn't even know it was there?
00:43 sri remove it and run the tests :)
00:44 sri it's the app embedding stuff
00:44 jberger oh, ok
00:44 sri Mojo::HelloWorld uses it for example
00:45 jberger anyway, I agree, I think that it parallels new nicely
00:45 sri i think lite apps as controllers require it too
00:46 sri yea, that was the original motivation AFAIR
00:46 sri http://blog.kraih.com/mojolic​ious-hack-of-the-day-mojolyst # this
00:47 sri i'm still worried about encouraging attributes though, especially with ::Lite controllers that could get out of hand
00:47 sri all controllers still share one Mojolicious::Lite namespace
00:48 jberger hmmm, that is cute
00:48 sri plugins, hooks and all that jazz is friendlier towards that, since it's all instance data
00:48 jberger helpers though
00:49 jberger those must be global-ish
00:49 sri helpers are also just instance data
00:49 sri AUTOLOAD ;)
00:49 jberger nice
00:50 sri only reason we can have helpers inside controllers is because they are hidden from the dispatcher with AUTOLOAD :)
00:50 sri the dispatcher can only reach "real" methods
00:51 mattastrophe joined #mojo
00:51 sri perhaps we should be looking for a better solution to the whole lazy instantiation problem
00:51 sri maybe a special attribute-ish type of helper
00:52 * sri is just brainstorming
00:52 jberger looking back at the mojolyst example
00:52 jberger (b/c that is the problem, if I understand you right)
00:53 jberger where would the attribute go if I were to use such a has in say the first file?
00:53 sri problem is two ::Lite apps with a "foo" attribute inside the same process will clash
00:53 sri with ::Lite controllers or embedded ::Lite apps in plugins that could be extremely hard to debug
00:54 sri not to mention plain old Mount plugin
00:54 sri global state always comes back to bite you
00:55 jberger are you sure? it seems like even though you eval in a sandbox, the types of files that you are talking about have their own `package` declarations
00:55 sri the package is meaningless though
00:57 jberger https://github.com/kraih/mojo/blob/​master/lib/Mojolicious/Lite.pm#L21
00:57 jberger caller isn't going to be the package?
00:57 sri nope
00:57 jberger ok, then I'm going to have to trust you on this one again ;-)
00:57 sri i can't tell you exactly why, but changing it makes many tests go into deep recursion
00:58 jberger I've already mentioned once that the preforking stuff is way beyond me
00:58 jberger which is why I'm trying to protect myself using `has` :-P
00:58 * jberger tries to figure out which way is up
00:59 jberger ok, well designer knows best
00:59 * sri would like a good solution for that too
00:59 laouji joined #mojo
00:59 jberger just been something that has been on my mind
01:00 jberger I can tell you why
01:00 jberger I came across this project
01:00 sri application embedding and global state for the DSL is a very tricky problem though
01:00 jberger https://github.com/davorg/matts-psgi-archive
01:01 jberger and it seemed like fun, and a way to show off mojolicious
01:01 jberger so I was going to try to make a counter (yes ... I know)
01:01 sri haha, plain psgi is so much better than cgi :D
01:02 jberger of course though, I wanted to store the count in an attribute, and here we are
01:02 sri you can always store it in app->defaults
01:02 jberger actually my biggest problem in trying to port any of those stupid old msa scripts is that most of the logic should be in the model anyway
01:02 jberger so the ports aren't scripts, they are model logic, ie. external
01:03 jberger I've never used defaults? I imagine that its what it sounds like
01:03 sri oh right
01:04 sri the problem with using the class you're importing to is of course that some ::Lite keywords would override class methods required by those keywords...
01:04 sri you get a deep recursion on app->hook and friends
01:05 jberger hmmm, right
01:05 jberger so you would have to be careful with names
01:05 jberger probably not good for beginners (as Lite it likely to be)
01:07 jberger oh one more question
01:07 jberger placeholders populate the param values
01:08 jberger as do get and post parameters (obviously)
01:08 jberger is there some way to declare say '/example/:myparam' to take either that route or use '/example' with the query parameter
01:09 jberger its exactly the same code, but two different routes to define
01:09 sri the router doesn't care about query params at all
01:10 jberger right, but can you define in one swoop '/example' and '/example/:myparam'?
01:10 sri just make myparam optional
01:11 jberger so you could equivalently call '/example?myparam=value' or '/example/value'
01:11 jberger kinda a stupid question, I only notice, because the code inside would be identical
01:11 sri and plain '/example'
01:12 jberger my $value = $self->param('myparam') || $default
01:12 sri if you want the router to handle query params too you'd have to write a condition yourself
01:12 jberger like I said, not actually important, and possibly not to be encouraged, but its funny that the code is the same
01:12 jberger that is all
01:13 sri with a combination of conditions and shortcuts you can make the router do basically anything :)
01:13 jberger yeah, I need to learn more of those things :)
01:14 sri i doubt you'll need them much ;p
01:14 jberger I haven't so far
01:15 Mike-PerlRecruiter_ joined #mojo
01:15 jberger the thing holding up Galileo right now is streamlining database upgrades
01:15 jberger its so tantalizingly close
01:15 sri that's a very annoying problem
01:15 jberger but DBIx::Class::DeploymentHelper is a MESS
01:15 * sri hugs mongodb
01:16 jberger yeah, its something I've thought about
01:16 jberger part of the reason I wrote Galileo was to learn DBIx::Class
01:16 jberger and its been fun, but you still feel the limitations of an relational database
01:17 jberger like, if I want just a few persistent configurations
01:17 jberger do I make a key/value table
01:17 jberger do I make a table for just this one thing
01:17 sri yea
01:17 jberger anyway, you know all this, I'm just learningz
01:18 sri i'm just pretending :)
01:20 jberger https://github.com/jberger/Galileo/blob/v​ersioned/lib/Galileo/Command/database.pm
01:21 * sri loves nosql
01:21 * jberger sees why
01:21 sri databases like redis are made for programmers, they are just fun to use
01:23 sri why shouldn't a database just be a global namespace you store data structures in? it's how we think!
01:24 jberger thank you! lets go drinking
01:24 jberger is there an SQLite-like thing for nosql
01:24 sri yea, it's called SQLite4 :D
01:25 jberger on cpan?
01:25 * jberger thinks I'm being mocked
01:25 sri there was a pretty epic article, let me look it up
01:25 * sri thinks sqlite4 is still in development
01:26 jberger haha, its Perl6!
01:29 sri http://www.sqlite.org/src4​/doc/trunk/www/design.wiki # this wasn't it, but is all i can find atm
01:30 sri sqlite is basically a key/value store internally
01:31 jberger its ok, I'll read more later
01:31 jberger I gtg for the moment
01:31 jberger lots of good stuff to think about
01:31 jberger :)
01:34 sri hmmmmm
01:35 sri perhaps we should encourage "helper dbh => sub { shift->app->defaults->{dbh} ||= DBI->new };"
01:36 sri bypassing the attribute step
01:39 sri or even "helper dbh => sub { shift->app->config->{dbh} ||= DBI->new };"
01:40 * sri pokes jberger
01:40 sri some more to think about :)
01:41 plu joined #mojo
01:42 tempire NO TIME FOR ATTRIBUTES
01:42 tempire THE ALIENS ARE COMING
01:42 tempire HIDE THE TACOS!
01:43 * sri is confused and hungry
01:43 tempire http://images.tempi.re/aliens-20121210-174325.jpg
01:43 sri :D
01:44 tempire I think I'm going to get the adobe creative cloud subscription
01:44 egopro joined #mojo
01:45 sri what's the us price?
01:46 tempire $50 per month
01:46 tempire Student $30
01:46 sri 62 euros :o
01:47 tempire you sure about that?
01:47 tempire purchased monthly or annually?
01:47 sri getting those bytes across the pond must be expensive
01:47 sri annually
01:47 tempire hmm.  you're right.
01:47 tempire that's crazy
01:48 tempire so find someone in the us
01:48 tempire I thought you hated adobe anyway
01:49 sri i do, and i don't really need it
01:49 tempire I really miss illustrator
01:49 sri sketch and pixelmator is more than enough for what i do
01:50 sri i'd rather invest the money in drawing lessons :D
01:50 diegok joined #mojo
01:59 d4rkie joined #mojo
02:00 d4rkie joined #mojo
02:00 d4rkie joined #mojo
02:15 jberger sri: the only reason you wouldn't want to do that, is that you might not want the attribute in the stash
02:15 sri that's why i also mentioned ->config
02:16 jberger ah, missed that
02:17 sri for plugins you could even hide it with a private prefix
02:17 jberger though now you're storing instance data in a plugin, not maybe a problem but not obvious either
02:17 sri {'mystuff.dbh'}
02:17 sri heck
02:18 sri in a plugin you can do $app->helper(dbh => sub { $self->{dbh} ||= DBI->new });
02:18 sri :)
02:18 sri keep the plugin instance around
02:18 jberger actually, should THAT be `has` for ::Lite
02:19 jberger ?
02:19 sri imo we should discourage attributes in ::Lite apps and just use helpers like that
02:19 jberger (with the default handling?)
02:19 jberger I was already getting to the edge cases in that
02:19 jberger k
02:20 bpmedley sri: r.e. Ticket 423: do you still think the refactoring should be done via a new layer or would multiplexing at the Mojo::IOLoop::Stream level be a worthwhile endevour?
02:20 jberger truth is, I don't use ::Lite except for examples anymore
02:20 jberger I really like the full interface, once you get it
02:20 sri bpmedley: i don't think that could work, SPDY is too high level
02:22 sri they would have to go with HTTP over SCTP for it to work imo
02:22 sri and the odds for that are not good
02:22 bpmedley sri: I didn't think about SSL; my bad.
02:22 sri you'll most likely start with an HTTP/1.1 connection and upgrade to HTTP/2
02:23 sri SSL doesn't really matter
02:23 sri it's all just higher level
02:25 sri bpmedley: if you want to work on it, i think a good first step would be to move transaction management from Mojo::UserAgent into Mojo::Channel::HTTP/WebSocket :)
02:26 sri no clue how the api should look like though... prolly a bunch of read/write-ish methods and events
02:26 crab joined #mojo
02:26 bpmedley sri: Hrmm.. That's a lot; perhaps I might start with an initial version that we poke sticks at.. :)
02:27 sri sure, any help would be appreciated
02:28 sri api can always be fixed later, i expect a first attempt to be extremely ugly :)
03:22 egopro joined #mojo
03:47 bpmedley So, is Mojo::IOLoop::Stream the wire protocol layer and Mojo::Server::Daemon the app layer, so to speak?
03:52 Foxcool joined #mojo
03:54 noganex joined #mojo
03:59 heytrav joined #mojo
04:11 asarch joined #mojo
04:16 heytrav joined #mojo
04:18 crab so to speak
04:21 bpmedley ty
05:07 laouji_rouge joined #mojo
05:48 rem_lex|pivo joined #mojo
05:49 Molaf joined #mojo
06:24 suy joined #mojo
06:31 spleenjack joined #mojo
07:05 dpetrov_ joined #mojo
07:27 Vandal joined #mojo
07:40 ladnaV joined #mojo
07:49 ispy_ joined #mojo
07:49 ispy_ Hi all.
07:50 ispy_ Has anyone ever used Mojolicious to handle rendering Perl scripts in a cgi-bin directory?
07:51 ispy_ I'm trying to create a Mojolicious wrapper over YaBB (kinda just playing around really)
07:51 ispy_ I may eventually start porting it over in a more Mojolicious style but for now? you know...
07:56 yakudza joined #mojo
07:58 zivester joined #mojo
08:03 batman joined #mojo
08:04 dod joined #mojo
08:18 suy joined #mojo
08:32 alexeiras joined #mojo
08:33 cosmincx joined #mojo
08:37 dod joined #mojo
08:42 cosmincx joined #mojo
08:43 nicomen joined #mojo
08:48 zdk_ joined #mojo
08:52 ver joined #mojo
09:06 Nom- joined #mojo
09:06 Nom- Hey guys... was wondering... does Mojo allow you to do something like this: %= link_to Edit => '/task/:id/edit' => {id => $task->id}
09:16 Nom- Ok, wow worked it out
09:17 Nom- The documentation really isn't obvious to me on that one :)
09:17 Nom- Of course, now that I know precisely what to look for I can see something that would have lead me down that path :)
09:26 dotan joined #mojo
09:37 crab what did you work out?
09:47 fhelmber_ joined #mojo
09:51 dod joined #mojo
10:11 dod joined #mojo
10:15 crab does anyone use the haml renderer? does it work well?
10:21 kitt_vl joined #mojo
10:26 SmokeMachine joined #mojo
10:36 egopro joined #mojo
10:37 egopro_ joined #mojo
10:38 Vandal joined #mojo
10:42 dabudabu joined #mojo
10:43 dod joined #mojo
11:16 sinkovsky joined #mojo
11:17 marty_ joined #mojo
11:18 mire__ joined #mojo
11:59 amirite hey anyone around
11:59 amirite what's the best way to perform a non-blocking routine on a request to a mojo app
12:02 amirite i.e. i want to call a related script for the app that does some work, but call it on-demand via an xhr request
12:02 amirite the result of the script doesn't matter, what matter is that it gets called
12:02 batman fork; ?
12:03 amirite will that work well in a server environment?
12:24 amirite only one way to find out
12:24 * amirite attempts a fork from the middle of a web daemon
12:28 amirite hmm, works great except for that it creates a new server client instance for each fork
12:28 amirite so how do i fold them back up into their parents' origami
12:28 amirite or what's the best way to do a non-blocking routine
12:30 egopro joined #mojo
12:30 suy amirite: haven't used it yet, but... have you tried system() ?
12:32 amirite doesn't system just do a fork/wait ? in any case system() would wait for the script response
12:32 suy mmm, true, sorry. Have you used exec after the fork?
12:32 amirite interesting proposition though, if a simple fork spins off another worker for hypnotoad i wonder what system() will do
12:33 * suy is still grasping the idea of the application being the web server
12:34 amirite hmm that solved it suy
12:34 amirite using exec after the fork
12:34 amirite i wonder why?
12:34 nic joined #mojo
12:35 suy well, that's the point of exec, i guess... replacing the newly created process with some other
12:36 ObseLeTe joined #mojo
12:36 suy there is also some spawn calls (and posix_spawn, etc.), but I don't see anything named "spawn" in perldoc
12:37 amirite really sweet, i thank you
13:12 Mike-PerlRecruiter_ joined #mojo
13:25 egopro joined #mojo
13:27 sinkovsky joined #mojo
13:28 Caelum how do I check if I'm running under mod_perl or CGI?
13:31 Caelum aha, it sets $ENV{MOD_PERL}
13:32 Vandal joined #mojo
13:33 Caelum wow, you just "use Mojolicious::Lite;" and it works as a cgi and in mod_perl with nothing that you have to do
13:33 Caelum that's very cool
13:37 mire__ joined #mojo
13:47 sinkovsky joined #mojo
13:54 rem_lex| joined #mojo
14:05 sinkovsky joined #mojo
14:11 d4rkie joined #mojo
14:13 phips_ joined #mojo
14:13 inokenty joined #mojo
14:16 bluescreen joined #mojo
14:34 amirite joined #mojo
14:37 egopro joined #mojo
14:43 jpn joined #mojo
14:52 alexeiras joined #mojo
14:57 jberger sri: what about just using a state variable inside the helper for storage?
14:57 jberger helper db => sub { state $dbh = DBI->connect(...) or die; return $dbh };
14:59 sri i suppose that would work too, each helper is a different closure in each app instance
14:59 anaio joined #mojo
15:00 sri needs ||= though
15:04 sri helper db => sub { state $dbh ||= DBI->connect(...) or die };
15:05 jberger I thought the point of state was that it isn't reinitialized?
15:06 jberger (besides of course being declared in the tighter scope)
15:07 sri wait, you're right
15:07 * sri has not used state much yet
15:07 * jberger uses state in map/greps often
15:08 jberger but this seems cooler
15:08 sri it's the last expression anyway
15:09 sri helper db => sub { state $dbh = DBI->connect(...) or die };
15:09 ispy_ joined #mojo
15:09 sri that should work too
15:10 jberger probably should
15:11 good_news_everyone joined #mojo
15:11 good_news_everyone [mojo] kraih pushed 1 new commit to master: http://git.io/EBAscg
15:11 good_news_everyone mojo/master c031d93 Sebastian Riedel: small optimization
15:11 good_news_everyone left #mojo
15:11 ispy_ joined #mojo
15:11 sri two bytes saved!
15:11 ispy_ hey sri
15:11 jberger hahaha
15:12 sri o/
15:15 Britzel joined #mojo
15:17 dvinciguerra joined #mojo
15:20 augensalat Hi all.
15:20 augensalat Is there a *reliable* way to check if hynotoad is running a particular Mojolicious application?
15:21 augensalat First approach is ps-ing with PID from hypnotoad.pid.
15:22 Caelum jberger: it's really better to use DBIx::Connector in any kind of persistent environment
15:23 augensalat But the pid_file might be configured to another location. A start-stop script should not need to know that pid-file location.
15:24 augensalat Something like  "hypnotoad -c myapp.pl"  would be nice.
15:29 knshaum joined #mojo
15:30 jnbek^dt joined #mojo
15:33 * sri wonders if this patch should be applied http://pastie.org/5511514
15:33 sri the old helper example is kinda redundant
15:39 good_news_everyone joined #mojo
15:39 good_news_everyone [mojo] kraih pushed 1 new commit to master: http://git.io/B1z0cA
15:39 good_news_everyone mojo/master d25f32d Sebastian Riedel: better helper example to demonstrate the use of state variables
15:39 good_news_everyone left #mojo
15:40 sri yea, i think it's a good example :)
15:43 sri jberger++
15:45 mire__ joined #mojo
15:47 * jberger looks
15:48 egopro joined #mojo
15:49 jberger very nice
15:50 jberger sri++
15:50 sri \o/
15:54 dvinciguerra joined #mojo
15:59 jzawodn /wi34
16:16 good_news_everyone joined #mojo
16:16 good_news_everyone [mojo] kraih pushed 1 new commit to master: http://git.io/FOw9qQ
16:16 good_news_everyone mojo/master a131c8c Sebastian Riedel: updated growing guide with state variables
16:16 good_news_everyone left #mojo
16:16 sri forgot about that :)
16:20 labrown joined #mojo
16:21 good_news_everyone joined #mojo
16:21 good_news_everyone [mojo] kraih pushed 1 new commit to master: http://git.io/Yzfm_g
16:21 good_news_everyone mojo/master 7322149 Sebastian Riedel: tweaked example in growing guide
16:21 good_news_everyone left #mojo
16:22 sri i can totally see this become a best practice, it's so convenient
16:26 phillipadsmith joined #mojo
16:37 good_news_everyone joined #mojo
16:37 good_news_everyone [mojo] kraih pushed 1 new commit to master: http://git.io/SFuaxg
16:37 good_news_everyone mojo/master e1c0194 Sebastian Riedel: helper is a function and not a method
16:37 good_news_everyone left #mojo
16:42 alexeiras joined #mojo
16:44 ladnaV joined #mojo
16:47 Vandal joined #mojo
16:58 tempire I use that extensively
16:59 tempire EXTENSIVELY
17:01 dod joined #mojo
17:02 xaka joined #mojo
17:03 mattastrophe joined #mojo
17:04 sri tempire: WHY DIDN'T YOU TELL ME?!
17:04 tempire I did
17:05 Caelum what's the best way to plug into an existing session system?
17:05 tempire WHY DON'T YOU LISTEN TO ME?!
17:05 sri i do
17:05 tempire YOU ALWAYS DO THIS!?
17:05 tempire wait
17:05 tempire that question mark doesn't make any sense
17:05 * tempire 's anger dissipates due to grammar
17:05 sri what were we talking about again?
17:08 sri http://www.youtube.com/watch?v=1R828rFd2aI
17:12 tempire I'm pretty sure that was it
17:21 dod joined #mojo
17:43 marty joined #mojo
17:53 mjy is it normal that an app skeleton (from "mojo generate app") does not pass the t/basic.t?
17:53 mjy => Can't locate object method "new" via package "MyMojoliciousApp" ...
17:55 rem_lex|pivo joined #mojo
17:56 vervain prove -l maybe
17:56 mjy ah thanks
17:56 spyder2010 joined #mojo
18:15 mjy hm why does a $r->get('/foo' => sub {}); delay "mojo get /foo" for several seconds (it does epolls ...) then output "Problem loading URL "/foo". (Premature connection close)"? What is it trying to do?
18:15 mjy does it try to call the sub several times because it returns undef? i.e. retries until successful?
18:17 ispy_ Hey all, anyone ever use Mojolicious::Lite to serve up a /cgi-bin/ directory?
18:18 ispy_ sri, I'm basically trying to create a Mojolicious wrapper that will run YaBB. To give you all an idea...
18:18 ispy_ I'll eventually port it over I think but for starters I just wanted to get the thing working without apache or mod_perl.
18:19 ispy_ Any suggestions? It's territory I've never messed with before...
18:21 xaka mjy: that is how mojo's rendering flow works - if you render nothing in handler, it tries to find the template to render and when it finds nothing, it thinks you gonna render later so it just waits for you call and after inactivity_timeout it drops the connections
18:22 xaka sri: correct me if i'm wrong, probably should be part of doc
18:22 mjy xaka: thanks, I'm just trying to understand the mechanics (maybe a common mistake to omit rendering in such a place)
18:29 mjy hm on some errors with render() it also waits for a while and exists with that message, e.g. when the template is missing
18:30 mjy exits
18:30 HtbaaPi_ joined #mojo
19:11 sinkovsky joined #mojo
19:22 batman joined #mojo
20:07 dpetrov_ joined #mojo
20:17 yakudza joined #mojo
20:22 dvinciguerra joined #mojo
20:25 marty joined #mojo
20:31 sinkovsky joined #mojo
20:36 perlite_ joined #mojo
20:38 lukep joined #mojo
20:41 lukep joined #mojo
20:55 ispy_ joined #mojo
21:04 * tempire sets marcus devices on fire
21:04 * marcus burns with a passion
21:06 * marcus doesn't understand state
21:06 * marcus reads docs, is enlightened
21:08 marcus actually, I found http://www.perlmonks.org/?node_id=659342 a lot more enlightening than perldoc -f state
21:08 marcus that's super neat, why haven't I been using that?
21:08 marcus sri++
21:12 amirite joined #mojo
21:13 xaka joined #mojo
21:15 * marty never knew about state.   sri++
21:15 sri jberger++ # he brought it up :)
21:19 marcus hmm, using a state variable also means it's only initialized on the first call
21:19 marcus could be a gotcha for preforking servers
21:21 sri marcus: same as attributes
21:22 marcus sri: yeah, but not same as my $foo=… ; $self->helper(foo => sub { $foo });
21:22 sri yea, my $foo is worse in any case
21:26 sri state is a big gain for preforking servers, because you can lazy initialize easily
21:39 b2b joined #mojo
21:51 marcus wow, the new gist is aweseom
21:52 marcus awesomesauce
21:52 sri ooooooh
21:53 marcus and you can frickin' drag and drop files directly from your textmate sidebar into the gist
22:15 Averna1 joined #mojo
22:23 * marty loves the github mac gui client
22:24 marcus I'm actually using SourceTree now
22:24 marcus it's a bit uglier, but you can actually do most things in it unlike the github one.
22:27 marty groovy.   I'll try it out.   Thanks, marcus!
22:27 marcus marty: you're welcome. it's on the mac app store, free.
22:42 b2b joined #mojo
22:52 jnbek^dt joined #mojo
23:13 dabudabu <@marcus> ッシ - Japanese seems like a very happy language <-- Are you learning Japanese?
23:14 marcus dabudabu: no, but I have a twitter search for 'Mojolicious' running :)
23:14 dabudabu ah ;p
23:14 marcus dabudabu: there tends to be a bit japanese in there.
23:15 dabudabu if you need something translated you can always ask me ;p
23:16 * dabudabu shaved 250 lines of code off his project without breaking anything today ~
23:22 jzawodn joined #mojo
23:59 sinkovsky joined #mojo

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary