The web in a box - a next generation web framework for the Perl programming language

IRC log for #mojo, 2015-11-02

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

All times shown according to UTC.

Time Nick Message
00:00 FatalNIX I'm sure it wont
00:00 preaction that was the key bit of unix: if you could learn the shell, you could do anything!
00:00 FatalNIX they*
00:00 jberger TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ
00:00 FatalNIX the rc system is pretty nice
00:00 FatalNIX in FreeBSD that is
00:00 jberger (I just tested all your unicode fonts)
00:01 * FatalNIX has unicode disabled
00:01 FatalNIX in urxvt. ironic eh?
00:01 jberger I meant for it to be after "all is lost" but you guys are quick
00:04 jberger zomg I want it: http://meta.stackexchange.com/a/35432/153062
00:05 FatalNIX funny, I am quick enough to IRC reply and MUd ta the same time
00:05 FatalNIX at*
00:05 FatalNIX on two seperate computers
00:05 FatalNIX .... I have laptop in right hand, desktop keyboard in left
00:18 jberger "They say when you play that Microsoft CD backward you can hear satanic messages ... but that's nothing. If you play it forward it will install Windows."
00:22 FatalNIX XD
00:33 mattastrophe joined #mojo
00:43 FatalNIX oh wow. I guess if you use Mojo::Server::Daemon the way you build your setup is a tad different...
00:44 FatalNIX at least I can't use get '/' => sub {} etc
00:44 FatalNIX which makes sense
00:45 preaction sure you can. how are you starting your app?
00:45 FatalNIX $daemon->run, where $daemon is a blessed instance of Mojo::Server::Daemon
00:47 preaction right, but there should be a script like (myapp.pl) that does MyApp->start; and then you can do: myapp.pl daemon to run Mojo::Server::Daemon
00:47 Grinnz uh, why not just use the daemon command?
00:47 Grinnz yeah that
00:47 FatalNIX I suppose I could. but then I have to specify I want it to listen on ipv6 from the command line
00:48 Grinnz if not using hypnotoad, yeah you have to specify the listen arg or use MOJO_LISTEN iirc
00:49 FatalNIX I guess it's not way too big of a deal
00:50 preaction i've found it's much better to not fight the standard way of doing things ;)
00:51 FatalNIX wow I just had a super noob moment right now
00:51 FatalNIX I almost asked how I can put startup code in my mojo app
00:51 FatalNIX ..
00:52 jberger You can (though it might not be officially recommended) munge command line arguments in your script
00:53 FatalNIX meh
01:00 jontaylor joined #mojo
01:01 jberger Or else you could subclass the daemon command to default to do it
01:01 jberger I've done both at different times
01:06 jberger This one is my favorite
01:06 jberger https://github.com/jberger/Galileo/blob/master/lib/Galileo/Command/setup.pm
01:07 jberger I completely replace the routes of the app with new ones that do the setup
01:08 jberger But it still has the paths and config locations from the original (main) app
01:09 mattastrophe joined #mojo
01:33 mattastrophe joined #mojo
01:47 aborazmeh joined #mojo
02:02 jontaylor joined #mojo
02:18 inokenty-w joined #mojo
03:05 huihui joined #mojo
03:05 kaare_ joined #mojo
03:26 jontaylor joined #mojo
03:32 aborazmeh joined #mojo
04:15 jontaylor joined #mojo
04:46 irqq joined #mojo
05:01 jontaylor joined #mojo
06:01 jontaylor joined #mojo
06:37 good_news_everyon joined #mojo
06:37 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/vl07I
06:37 good_news_everyon mojo/master 45ac0d8 Sebastian Riedel: mention acceptor ids
06:37 good_news_everyon left #mojo
07:00 jontaylor joined #mojo
07:05 PopeFelix joined #mojo
07:33 kes joined #mojo
07:45 Vandal joined #mojo
07:58 Lee joined #mojo
08:02 jontaylor joined #mojo
08:10 eseyman joined #mojo
08:16 AndrewIsh joined #mojo
08:20 trone joined #mojo
08:58 McA joined #mojo
09:01 jontaylor joined #mojo
09:48 jontaylor joined #mojo
09:49 berov joined #mojo
09:59 irqq joined #mojo
10:01 kes Hi
10:01 kes Why when I run application under PSGI the Mojolicious does not update psgix.session object?
10:09 jontaylor joined #mojo
10:17 Lee joined #mojo
10:27 jontaylor joined #mojo
10:35 meshl joined #mojo
11:11 kaare_ joined #mojo
11:36 bpmedley joined #mojo
12:02 neilhwatson joined #mojo
12:11 good_news_everyon joined #mojo
12:11 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/vlgKI
12:11 good_news_everyon mojo/master 3d149c6 Sebastian Riedel: more consistent event examples
12:11 good_news_everyon left #mojo
12:15 sri every now and then i still want to rename ->unsubscribe to ->off :)
12:17 batman sri: +1
12:25 crab heh
12:37 aborazmeh joined #mojo
12:44 sri on/off is the jquery convention
12:50 batman same with riot: http://riotjs.com/api/observable/#off
12:55 ajr_ joined #mojo
13:01 jberger From an English language perspective "off" isn't as nice
13:01 jberger on can be a synonym for when
13:01 jberger off does not mean the opposite
13:04 nic I read 'on' as 'upon'
13:21 mattastrophe joined #mojo
13:30 Dandre joined #mojo
13:34 gryphon joined #mojo
13:43 cpan_mojo Test-Clustericious-Cluster-0.22 by PLICEASE https://metacpan.org/release/PLICEASE/Test-Clustericious-Cluster-0.22
13:44 Grinnz same nic
13:59 FatalNIX Jberger: that explains why the old farts day on all the time when it makes no sense
13:59 FatalNIX On Dr Seuss
14:00 FatalNIX I was always super confused as a kid
14:07 * nic can't understand what FatalNIX is saying    ;)
14:08 FatalNIX :)
14:08 FatalNIX Neither can I.
14:09 FatalNIX Because I never asked for keys I am stuck outside of work
14:10 nic that's usually a bad sign
14:10 nic just saying
14:10 FatalNIX Nah I was told to pick them up a while ago just never did
14:11 FatalNIX The secretary person that keeps track of that stuff isn't in a lot
14:21 zivester joined #mojo
14:25 marty joined #mojo
14:26 mdbuerkle joined #mojo
14:27 marty joined #mojo
14:31 kes Why expired session is saved?
15:06 PryMar56 joined #mojo
15:09 genio joined #mojo
15:12 FatalNIX What a fun morning replacing ups by myself
15:13 FatalNIX Considering these E still sizes and at least 70 pounds but at the same time you don't want to drop it
15:15 good_news_everyon joined #mojo
15:15 good_news_everyon [mojo] kraih tagged v6.28 at bd09de5: http://git.io/vlax4
15:15 good_news_everyon left #mojo
15:17 good_news_everyon joined #mojo
15:17 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/vlapZ
15:17 good_news_everyon mojo/master 3daee06 Sebastian Riedel: bump version
15:17 good_news_everyon left #mojo
15:20 espent joined #mojo
15:22 PopeF joined #mojo
15:22 Grinnz_ http://www.cpantesters.org/cpan/report/55d9e70d-6bf6-1014-a013-d7a12f001dbe sigh, windows...
15:23 romel hello. are there any options for server-side javascript rendering to use mojolicious with reactjs? has anyone had to deal with it?
15:25 romel i'm talking about something like react-rails
15:28 jberger romel: you can investigate Mojo::Phantom
15:29 jberger I built it for Test::Mojo::Role::Phantom but it should be more general purpose than that
15:30 romel thanks i'll check it out
15:32 mattp_ joined #mojo
15:56 bwf joined #mojo
16:04 bpmedley joined #mojo
16:07 punter joined #mojo
16:10 genio joined #mojo
16:13 mmp joined #mojo
16:20 zivester joined #mojo
16:32 * sri wonders when people will start programming on twitch
16:33 Grinnz_ i'm sure someone somewhere has already :P
16:33 sri think that was against the rules until a few days ago
16:36 sri impressive how adobe has their own design channel on twitch
16:38 FatalNIX Lol
16:38 crab what is twitch?
16:38 sri gotta keep an eye on this category http://www.twitch.tv/directory/game/Creative
16:49 meshl joined #mojo
16:54 kes I try to fallback to psgix.session when running under PSGI. I create my own Mojolixious::Session::Plack::load and copy paste code from Mojolicious::Session::load to not make wheel for session expiration, but line: return   if !(my $expires = delete $session->{expires}) && $expiration; return all time when session is empty. can anyone explain what this line do?
16:55 punter joined #mojo
16:58 jberger kes: I think we'd need to see more code to have any idea
17:00 kes http://paste.scsys.co.uk/500768
17:00 kes line 39
17:03 cpan_mojo Test-Clustericious-Cluster-0.23 by PLICEASE https://metacpan.org/release/PLICEASE/Test-Clustericious-Cluster-0.23
17:04 jberger kes: low hanging fruit, you can have a lazy default for an attribute
17:05 jberger you shouldn't use mojo. variables of course
17:05 jberger though I
17:05 jberger though I've never tried to implement a replacement for Mojolicious::Sessions so I don't know if there is some place where that isn't possible
17:06 jberger if not I suspect that could be discussed for encapsulation issues though
17:06 sri jberger: you're not in #mojo-core
17:06 jberger oh, right
17:06 jberger good news on that, my internet should be much more stable now
17:06 kes I see analogues modules
17:06 sri neither are tempire and crab
17:07 kes and they are also copy past this part of code from Mojolicious::Sessions::load
17:07 jberger kes: that doesn't necessarily mean that those implementations are good
17:08 jberger mojo. variables are explicitly reserved for internal use
17:10 kes it seems when we work with session and it is no activated we always try to load session data. with every $c->session->... call
17:11 jberger what do you mean "no(t) activated"
17:12 jberger the session is a built-in functionality, which doesn't have to be activated
17:12 kes mojo.active_session
17:12 jberger I don't know what that means, and nor should you
17:13 jberger mojo. variables are reserved for internal use
17:13 kes yes, but without that the sessions will not work
17:13 kes see Mojolixious::Controller::session
17:13 jberger for guidances purposes, I suspect that means "currently active" not "is it active"
17:14 jberger well those are the kind of encapsulation issues I was worried about
17:15 kes when we run application the mojo.active_seesion - does not exists, so when we first access session we are load it.
17:16 kes but we return from load too early because of line 39:
17:16 kes so active_session still does not exists
17:16 kes the implementation of session expiration must be removed from store/load and placed to its own subs, I think
17:17 kes so in my own module I can call 'is_expire', for example
17:17 kes and do not touch mojo.* variables
17:19 kes What do you think?
17:20 stephen joined #mojo
17:20 jberger reading stuff over at the moment
17:28 jberger kes it seems that those variables are certainly off limits and while we might discuss improving the tightly-bound nature of those classes, there are some components of the system that aren't going to be replaceable
17:28 jberger I suggest that you implement SIMILAR functionality to the core session via your own implementation
17:28 jberger and just add a helper for accessing it
17:28 jberger $c->helper(psgi_session => sub { ... });
17:29 jberger which would be used ($c->psgi_session-> ... ) rather than the core one
17:29 kes How I can replace $c->session sub?
17:29 jberger you could either subclass the controller or just as I said, implement your own helper
17:30 jberger I would suggest implementing a helper
17:30 jberger that would make it easy to distribute your result as a CPAN pluging
17:30 jberger plugin
17:31 kes but when I use $c->psgi_session, then I can not easily move my app from PSGI env
17:32 jberger correct
17:32 jberger but psgix.session is not a standard either
17:33 jberger remember, mojolicious is not a psgi application, it simply provides psgi compatibility for portability reasons
17:33 jberger but psgi is not (and to my knowledge cannot be) asynchronous in the way that Mojolicious needs it to be
17:34 Grinnz_ not in the current state
17:34 jberger psgi is cool and all, but application servers with reverse proxies in front achieve the same purpose (decoupling the app from the deployment server)
17:35 Grinnz_ perl 6's version should be, and leonerd was pondering an async PSGI spec for p5 that could work, but it would not be compatible with the current PSGI directly
17:35 Grinnz_ and i guess discussions about it havent gotten anywhere
17:36 kes but psgix.session is used under Plack::. It is enough for my task. I just need to share session data while porting mason to Mojolicious
17:37 kes Some ported parts I planning to mount "/some/point" => PortedMojo->new->start
17:38 kes like this http://paste.scsys.co.uk/paste
17:39 kes And I have two small issues I have faced. Can we disscuss?
17:46 kes When running default myapp under different mount point than site root we must not redirect to siteroot "/" (<a href="/">click here</a>), but must redirect to application mountpoint (PATH_INFO)
17:48 kes 2. if server has configured: DirectoryIndex(apache)/index(nginx) it is not possible to make query to '/'. It takes some time to figure out what is coming wrong and why the SafeVPN::Controller::Example::wellcome is not called.
17:49 kes "2." is good note to have in DOC when we deploy under some environment
17:56 jberger that sounds more like something for external documentation
17:56 jberger say the wiki or a blog post
17:57 jberger certainly we cannot address ever issue when doing a complex deployment scenario in the core documentation
17:57 jberger every
18:02 tempire The password for mojo-core must have changed
18:03 sri there is no password, you invite yourself with chanserv
18:08 * tempire is a chanserv n00b
18:09 tempire "/msg ChanServ INVITE mojo-core" ?
18:10 buu It has help documentation!
18:10 buu Generally the channel name comes first though
18:11 jberger invite #mojo-core
18:11 jes joined #mojo
18:13 tempire Hmm
18:13 tempire I must have added a password for IDENTIFY that I no longer remember
18:14 kes jberger: there is problem, when inheriting from Mojolicious::COntroller
18:15 kes When I create M::C::Plack, the MyApp::Controller::Example must also inherit from it, but it inherit from 'Mojolicious::Controller' (M::C)
18:16 kes So inheritance can not be used for implicitly select Controller
18:16 kes if something 'use
18:17 kes can I use something: 'use Mojo::Base $app->controller_class' ?
18:24 trone joined #mojo
18:29 csson kes, why not just "use Mojo::Base 'Mojolicious::Controller::Plack';"?
18:30 kes For same reason I do not use helper $c->psgi_session
18:30 kes I must have ability easy port from one env to other
18:31 kes I am looking for a way do not hardcode that
18:34 kes hmm... I will create bare MyApp::Controller and will inherit from it =). So I have two places to hardcode controller name:
18:35 kes 1. MyApp::Controller
18:35 kes 2. controller_class parameter , when I create application
18:57 asarch joined #mojo
18:57 jberger by that token you could make a helper like my_plugin which either delegates to a psgix.session based session or else the default session handler
18:57 jberger then you could choose the implementation you need
18:58 jberger doesn't this just all stem from the fact that you didn't want to use the keyword "hypnotoad" in your configuration though?
18:59 jberger so you mount it in psgi instead and now are mocking all the other stuff out?
19:15 disputin joined #mojo
19:16 kes no, it does not
19:18 jberger my mistake then
19:41 irqq joined #mojo
19:42 jes joined #mojo
19:51 Grinnz http://imgur.com/gallery/TNLQpyv
19:52 jberger Grinnz++
19:52 jberger oh, new Star Trek tv series?
20:00 genio jan 2017.  don't go prematurely getting my hopes up like that :)
20:10 Grinnz_ best to keep your hopes low for these things anyway :P
21:01 espent_ joined #mojo
21:05 espent joined #mojo
21:51 dustinm joined #mojo
21:52 Mikey joined #mojo
22:18 zivester joined #mojo
22:29 marty joined #mojo
22:32 meshl joined #mojo
22:41 mudler joined #mojo
22:44 jberger hmmm free alternative to slack
22:44 jberger http://www.ryver.com/
22:44 jberger found via twitter ad
22:44 * jberger wonders
22:56 lluad There are several out there.
22:57 lluad (Not least because "Watch us make a slack clone in $FRAMEWORK" appears to be the new TODO list demo.)
23:06 genio no more Slack, please!  Worst thing ever created.
23:06 Grinnz_ i dunno. it kept our team from being forced to use Skype for internal messaging, so there's that
23:07 genio leave it to Grinnz_ to find maybe the only thing about slack I might find as an upside :)
23:07 Grinnz_ so yeah. Who's up for making a mojolicious websockets slack clone :P
23:10 mishanti1 Webscale! Synergies! Rockstars!
23:10 * mishanti1 can supply buzzwords
23:12 genio slack just solves a problem set that doesn't exist.  IRC isn't broken
23:12 genio and there are many web-to-irc thingies already.
23:12 Grinnz_ they all suck horribly though
23:12 meredith i see irc come up in response to slack quite often, and the complaints about irc usually come down to "onboarding", channel and identity management, and inline images and link blurbs.
23:12 meredith convos covers a lot of this already
23:12 Grinnz_ nboody knows about convos though ;)
23:13 meredith i'd love to see a mix of it that integrates the server side and includes tighter integration with irc services since it'll know the exact variant it gets.
23:14 meredith ... as long as no one demands the "edit my past mistakes" slack feature ;)
23:14 Grinnz_ oh man, historical revisionism in chat :)
23:14 Grinnz_ always fun
23:15 Grinnz_ anyway, the benefit of slack is the interfaces. as in, i can get the same slack channel on my phone, on my browser, on my desktop app
23:15 preaction Grinnz_: Mercury could do it, if you put a UI on top of it
23:16 meredith yeah the phone app is nice
23:16 Grinnz_ and the "backlog" is in the cloud, so there's no futzing with a server
23:16 meredith except when people abuse mentions
23:16 Grinnz_ heheh
23:16 preaction i've been building an example chat, even: https://github.com/preaction/Mercury/blob/chat/eg/chat.html
23:16 Grinnz_ i love doing a @channel and hearing 2 developers phones buzz
23:17 meredith then the chorus of "can you use @here please"
23:17 Grinnz_ ooh, i didnt even know that was a thing
23:17 Grinnz_ gg slack tutorials
23:17 Grinnz_ but usually i want to notify away people if i use that
23:17 genio Today I had a horrible experience with Slack.  I visited ##osx-server on FreeNode and it was dead.  The topic had a "join our Slack community: URL Here" blurb (paraphrasing).  The Slack community was broken into so many channels that were also seemingly dead (minus the main generic channel) that it was past pointless.  I then got bombarded with emails after I left the Slack thing due to not liking the experience.
23:17 Grinnz_ so i guess that doesnt help much :P
23:18 preaction genio: how dare you express your opinion!
23:18 genio and the redo of regex101.com project lead chose slack too.  I hates it
23:18 Grinnz_ yeah i wouldnt use it outside of a corporate context until they officially support it
23:18 meredith yeah slack groups seem to go through cycles of fragmentation and defragmentation by channel
23:19 Grinnz_ i dont know why you'd use slack for an open group right now
23:19 Grinnz_ its just annoying
23:19 meredith i really don't like having to flip between entire "teams" but i'm not sure of a better UX
23:19 genio beyond belief annoying
23:19 Grinnz_ "lack of better widespread options", i guess
23:19 meredith yeah, plus your history is a) truncated and b) behind barriers instead of on google
23:19 genio And when I've already signed up for an account, but keep having to sign up for team this and team that, I get more annoyed.  There is absolutely nothign I like about Slack
23:19 preaction maybe slack will be the kick-in-the-pants that IRC advocates need?
23:20 Grinnz_ genio: thats all because it's not set up to be used that way
23:20 preaction i liken it to all those startups that say they're trying to replace e-mail. poor deluded souls...
23:20 genio preaction: Can we fastforward in time where it's no longer a thing?
23:21 meredith yeah there's also notably no "ignore" in slack clients
23:21 Grinnz_ eh, IRC will keep dying until it's properly cloudified
23:21 preaction likely no. it's by the same people who made Flickr.
23:21 preaction properly cloudified?
23:21 Grinnz_ think IMAP vs POP3
23:21 genio EFnet's dead.  I haven't really seen a decline in FreeNode though
23:22 preaction they're both terrible protocols? :p
23:22 Grinnz_ heh
23:22 Grinnz_ genio: decline maybe not, its just the same hundreds of people sitting idle though :P
23:22 preaction i'm at the point that i really don't know which was meant to replace which anymore ;)
23:23 meredith hey someone sat down one day and thought "pop3 is awful i can do better" then made something better at being awful. that's a feat, don't knock it
23:23 preaction okay, so imap _was_ meant to replace pop3. wow...
23:23 Grinnz_ preaction: "reading a message" on POP3 is a "download"; "reading a message" on IMAP is a "mark as read"; it's a paradigm shift that lets you start using multiple clients more seamlessly at once
23:23 genio I haven't worried about a client or protocols since gmail :)
23:23 Grinnz_ trudat
23:23 preaction part of it likely is that the last time i dealt with imap was via MS Exchange, so, i mean, there's that...
23:24 meredith i honestly don't mind imap, i first learned it just talking directly to test my own servers
23:24 Grinnz_ it's not horrible... a little dated of course but...
23:24 preaction can't add my own tags... what's the point of the thing if i can't add arbitrary tags to messages?
23:24 meredith some gripes i hear from devs are well-informed, most are just angry that it's async
23:24 Grinnz_ wut?
23:24 preaction is it? it's certainly not push-based. you can poll, but it can't push
23:25 preaction which was another problem. my project was scanning e-mails for excel/csv data (financial data which i had to store in a time series database)
23:26 meredith it's tagged async request-response rather than just a serial request-response, is what i mean here.
23:26 preaction but yeah, now that you mentioned multiple clients for the same mailbox, there are lots of things in the spec that are weird unless you consider that you don't know how many people are working with the mailbox at the same time
23:27 preaction \Seen vs \Recent for example
23:27 preaction or the identifier debacle :p
23:27 Grinnz_ preaction: exactly
23:28 Grinnz_ designing from the ground-up so you can attach an arbitrary amont of times leads to a very different design
23:28 preaction side note: i've had a lot of people say that learning about these protocols is boring/annoying, but i find it fascinating. it's history + puzzle-solving!
23:28 Grinnz_ and there's RFCs for (almost) everything
23:38 Nemix https://tools.ietf.org/html/rfc1111
23:38 Grinnz_ heh
23:40 jberger I'm a teapot
23:40 jberger I love that convos looks and works great on all my devices
23:40 * jberger hugs convos
23:41 jberger I expect that something that companies want that slack gives them (I think? I haven't actually used it) is logs
23:41 Grinnz_ eh.. logs, ease of setup, integration
23:41 jberger convos having a nice way to log everything and display it would be nice
23:41 jberger setting up an irc server is insane
23:41 Grinnz_ sure you "can" do all this stuff with IRC, but its not doable by a manager
23:41 jberger seriously wut
23:42 meredith slack tries to sell the searchable logs thing but IME it hasn't been incredibly useful
23:42 meredith if you're not a paid org, it only keeps 10k log lines across the *entire* team
23:42 jberger "deployable by non-technical user" was one of my few design goals in Galileo
23:42 Grinnz_ yeah that limit is a bit rough
23:43 jberger cpanm Galileo; galileo setup; (setup in browser); galileo daemon;
23:43 Grinnz_ storage isn't that expensive....
23:43 Grinnz_ most of our slack traffic is the pivotal and git hooks hehe
23:50 disputin joined #mojo
23:52 preaction couldn't one use Mojo::IRC to make a server?
23:52 ajr_ joined #mojo
23:54 Grinnz_ no
23:54 Grinnz_ Mojo::IRC is a client, there's quite a lot more that a server needs to do
23:55 Grinnz_ most of the stuff you could reuse is probably already from external modules like IRC::Utils
23:57 Grinnz_ (also, IRC servers have been reimplemented enough as it is :P)
23:57 Grinnz_ might be nice to make a quick-set-up mojoish one though.
23:57 preaction in the Mojo::IRC dist, there's a parser and such though. you could take those bits and do what you will
23:58 mgrimes joined #mojo
23:58 Grinnz_ the parsing is from Parse::IRC
23:59 Grinnz_ there is really very little in Mojo::IRC that isn't just the client implementation
23:59 preaction ah, ha. okay, so just a trivial bit of programming then ;)

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