Very impressive! Where do I get a live version I can edit? Karl
On 28 Jun 2014, at 2:00 am, Zakariyya Mughal <[email protected]> wrote: > On 2014-06-27 at 14:19:36 -0400, David Mertens wrote: >> Hey everyone, >> >> Although I am very interested to see this happen, I have not done anything >> for it. However, just today I was hunting around Software Carpentry's web >> page and found that they are interested in a Perl backend for iPython >> <http://software-carpentry.org/pages/create.html> (scroll to the bottom of >> the list). In case you have not heard of Software Carpentry, it has become >> a go-to resource for grad students to learn Python. Their interest in >> adding Perl is unexpected, and worth contributing to, I think. > > Wow, I'm on the SWC mailing list and this is a pleasant surprise. > Perhaps we can work with them to develop a Perl curriculum. That would > certainly help PDL get better documentation for beginners. > >> Don't get me wrong: I'd like to eventually create a stand-alone pure-Perl >> application. However, I think that iPython integration is both a suitable >> goal and a suitable intermediate step towards the pure-Perl application. > > Agreed. > >> Zaki, what would be the must useful thing we can do to help with your work? > > I've uploaded an IPython notebook file with the current status of the > IPerl kernel which can be viewed here > <http://nbviewer.ipython.org/gist/zmughal/d8a37222c814956aebb8>. > > There are still a couple of bugs to fix. In particular, the interface > for displaying images is a bit rough, but that can all be addressed. Now > that the IPerl kernel exists and is somewhat usable, I think we can > start writing generic modules that would help with using Perl both in > the IPython Notebook and any future frontends. > > In terms of helping with the kernel, I would really like some feedback > on the code and future improvements I'm planning. And any patches are > welcome! > > Cheers, > - Zaki Mughal > >> >> David >> >> >> On Wed, Jun 18, 2014 at 3:39 PM, Chris Marshall <[email protected]> >> wrote: >> >>> On Wed, Jun 18, 2014 at 3:10 PM, Zakariyya Mughal <[email protected]> >>> wrote: >>>> On 2014-06-17 at 14:30:23 -0400, Chris Marshall wrote: >>>>> On Tue, Jun 17, 2014 at 1:13 PM, Zakariyya Mughal < >>> [email protected]> wrote: >>>>>> You can see in the second link that the architecture is made up of two >>>>>> parts: the frontend (the interface the user sees) and the language >>>>>> kernel (what evaluates expressions, returns data, and provides >>> services >>>>>> like completion). They communicate with each other over ZeroMQ. It is >>> a >>>>>> bit unnecessarily complex, but it allows for using multiple clients >>> with >>>>>> different capabilities at the same time. >>>>> >>>>> I like the layered architecture but it would be nice if we could >>>>> have a base implementation without adding a complex, 3rd party >>>>> networking and concurrency library to the mix. Any chance of >>>>> a simple framework that could be extended to full 0MQ features >>>>> if required? >>>> >>>> Yes, this is definitely possible. My design separates the wire protocol >>>> from the message format, so a simpler protocol is possible for >>>> communicating with just a single client. >>> >>> Sounds good. Is the implementation based on a plugin type >>> approach? >>> >>>> Another possibility is to fix Alien::ZMQ on Win32 (either by fixing the >>>> compilation or work on providing something pre-compiled from >>>> <http://zeromq.org/distro:microsoft-windows>). Every other platform >>>> has packages which work. I have some experience with >>>> Alien packages, so the latter shouldn't be too difficult >>> >>> Removing the hard dependency for 0MQ for the basic implementation >>> is preferred. There are a large number of partially implemented >>> Alien modules that only sort of work (usually if you happen to use >>> the OS/platform of the developer). I've been working to update the >>> Alien manifesto to be more usable: >>> >>> >>> http://blogs.perl.org/Fusers/chris_marshall/2013/12/a-framework-for-alien-modules-the-alien2-manifesto.html >>> >>> But getting traction and agreement has been slow/difficult. Lots of >>> differing opinions. :-) Fixing Alien:XXX for all the libraries that PDL >>> builds with is a definite goal to improve portability. >>> >>>> My current design requires IO::Async which seems rather portable >>>> by the results on CPAN Testers. >>> >>> One thing that often happens with portability for windows platforms >>> is that a module sounds great and tests pass *but* if you look at >>> the details it is possible that many of the key features actually don't >>> work for windows so if an implementation requires those features, >>> the result is non-portable (doesn't work) to windows. Looking at the >>> test output it appears that the usual suspects are missing for >>> IO::Async: signals and fork. >>> >>>>>> What I'm working on now is the language kernel (repo here >>>>>> <https://github.com/zmughal/p5-Devel-IPerl>). Right now I've just >>> got a >>>>>> prompt working — I need to connect it to Devel::REPL to support >>>>>> evaluation and completion events. I don't want to give any estimates, >>>>>> but I don't think that getting to an alpha version will take long. >>>>> >>>>> Do you have to hardwire in the REPL or is there a way to just >>>>> provide an IN and OUT handles for any REPL? Mentioning this >>>>> since I'm thinking to refactor pdl2 from Devel::REPL to Reply >>>>> which is lighter weight and cleaner for shell type applications. >>>> >>>> No, it isn't hardwired. All I'm doing is creating a Term::ReadLine >>>> subclass that feeds in commands from a string, so it should be >>>> compatible with anything that uses ReadLine including Reply or even >>>> Devel::Trepan. >>> >>> Ok. I would like to have the console interface (completion, syntax >>> coloring, ...) be generic enough to be usable with the GUI front end >>> as well to avoid duplication of code. >>> >>>> As a sidenote, as far as I can tell, IPython Notebook isn't attempting >>>> to deal with excessive output, so you can crash the browser by executing >>>> an infinite loop that quickly prints out lots of data. I will probably >>>> try to deal with those problems later as an unresponsive REPL is >>>> unacceptable (this actually leads to losing code). I think it will have >>>> to be dealt with both on the kernel side and frontend side. Just >>>> thinking ahead. >>> >>> Definitely something to be avoided. --Chris >>> >>>> Cheers >>>> - Zaki Mughal >>>> >>>>> >>>>>> The main reason I'm working with IPython is because it has a spec and >>>>>> coding to a spec is easier than coming up with everything from >>> scratch. ;-) >>>>> >>>>> Definitely. >>>>> >>>>>>> As for the IDE/workbook style, maybe we could start with something >>>>>>> like the LCD of the current implementations: iPython, Matlab, Maple, >>>>>>> Mathematica, Spyder(?),... Once this interface is architected, the >>>>>>> next step would be to implement it. At this point, it would be >>> possible >>>>>>> to hack in an iPython version but that would probably have >>> portability >>>>>>> problems and only of use for Python + PDL users which is a step >>>>>>> backwards from making PDL easy to install/use. >>>>>>> >>>>>>> --Chris >>>>>>> >>>>>>> On Tue, Jun 17, 2014 at 7:05 AM, David Mertens < >>> [email protected]> wrote: >>>>>>>> Hey everyone, >>>>>>>> >>>>>>>> This and another recent conversation prompted me to dust off >>>>>>>> App::Prima::REPL last night. I was in the middle of a refactoring >>> effort >>>>>>>> when I left it off, so I hammered through that last night. The >>> only obvious >>>>>>>> difference between what's on Github and what's on CPAN is the >>> handling of >>>>>>>> the output window, but a more important refactorization underlies >>> that >>>>>>>> difference. I feel a lot better about it. >>>>>>>> >>>>>>>> It seems that we could pretty easily move forward on two >>> independent fronts. >>>>>>>> Perl has some very nice web frameworks, but since the iPython code >>> is >>>>>>>> already available, we could hook into iPython's framework for the >>> first cut >>>>>>>> of the web stuff. If we later want a pure-Perl solution, we could >>> build a >>>>>>>> Perl web front end that could be swapped out for the iPython one. >>>>>>>> >>>>>>>> Then we'd have to get the GUI side working. One hard part will be >>> the math >>>>>>>> typesetting, but I have a shortcut in mind that we can try using. >>> Another >>>>>>>> hard part will be changing the workflow and layout to mimic >>> iPython instead >>>>>>>> of Matlab. That will take a bit of study, and it may be better to >>> write a >>>>>>>> different GUI app (called perhaps iperl) rather than try to fold >>> this >>>>>>>> functionality into the current GUI (prima-repl). >>>>>> >>>>>> Hmm, after looking at the App::Prima::REPL code, I don't see a >>>>>> structured output format. I was wondering if you've considered looking >>>>>> at the .ipynb format for serialisation. It's just JSON and seems >>>>>> extensible (even though the frequent use of data: URIs feels wrong to >>>>>> me). Using this format means that all notebooks can be viewed online >>>>>> using <http://nbviewer.ipython.org/>. Unfortunately, there is no easy >>>>>> way to add POD formatting to that site instead of Markdown, but I can >>>>>> think of some workarounds. >>>>>> >>>>>> There's a schema for the JSON here: < >>> https://github.com/ipython/ipython/blob/master/IPython/nbformat/v3/v3.withref.json >>>> . >>>>>> >>>>>> Cheers, >>>>>> - Zaki Mughal >>>>>> >>>>>> >>>>>>>> >>>>>>>> I suspect that anybody who wants to get involved can begin by >>> downloading >>>>>>>> and digging into the notebook software. I wonder if the Julia >>> bindings might >>>>>>>> serve as a good reference? >>>>>>>> >>>>>>>> David >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Jun 16, 2014 at 8:32 AM, Chris Marshall < >>> [email protected]> >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Very interesting discussion so far. A focus on PDL >>>>>>>>> development for me as release manager has been to >>>>>>>>> improve the portability and buildability of PDL across >>>>>>>>> all major perl platforms (windows, macosx, and unix/linux/bsd/*). >>>>>>>>> >>>>>>>>> We've made steady progress but once PDL is installed >>>>>>>>> the user might ask "Now what?". It would be nice to >>>>>>>>> have a clear and simple answer for that. (In addition to >>>>>>>>> the use case of supporting better scientific development >>>>>>>>> and collaboration). >>>>>>>>> >>>>>>>>> The good news is that we have two key pieces already >>>>>>>>> available that could be a foundation for iPDL: >>>>>>>>> >>>>>>>>> (1) Interactive PDL shells (perldl, pdl2) >>>>>>>>> >>>>>>>>> We've already made a start at integrating multiple GUI >>>>>>>>> toolkit event loops. Stalled for now but I think we know >>>>>>>>> what is needed. >>>>>>>>> >>>>>>>>> (2) Prima and Prima::OpenGL >>>>>>>>> >>>>>>>>> This gives us a baseline, *extremely* portable GUI >>>>>>>>> toolkit to build on. We could use other toolkits but >>>>>>>>> it is really difficult to beat the portability of Prima as >>>>>>>>> a powerful GUI for perl. In a sense it is a little known >>>>>>>>> super-power perl module. :-) >>>>>>>>> >>>>>>>>> NOTE: I explicitly call out Prima::OpenGL because >>>>>>>>> I think for high performance and portable graphics and >>>>>>>>> realtime visualization, OpenGL is now the default >>>>>>>>> standard---even including GPU compute shaders in >>>>>>>>> the latest version. >>>>>>>>> >>>>>>>>> I'm sure there are some other ideas but, like the PDL3 >>>>>>>>> development discussions, I think the best approach is >>>>>>>>> to KISS as much as possible. Avoiding outside toolkits >>>>>>>>> and libraries where possible is a win for portability, >>>>>>>>> especially for non-unix-ish platforms such as windows. >>>>>>>>> >>>>>>>>> --Chris >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Jun 16, 2014 at 7:10 AM, Paul Goodall >>>>>>>>> <[email protected]> wrote: >>>>>>>>>> Hi David, Craig, >>>>>>>>>> >>>>>>>>>> I’d be happy to help with this - I should have spare time in >>> between >>>>>>>>>> projects to contribute to it. >>>>>>>>>> >>>>>>>>>> Personally, I don’t think it would be a bad thing for PDL to be >>> more >>>>>>>>>> accessible to the general community. Typically when I explain >>> to others >>>>>>>>>> that I use PDL, I’m met with a blank face, prompting for an >>> explanation. >>>>>>>>>> It >>>>>>>>>> would be nice if PDL were to be recognised as a desirable skill >>> in the >>>>>>>>>> same >>>>>>>>>> way that Python is (particularly, for example, in job interview >>>>>>>>>> situations). >>>>>>>>>> It is a shame that more people don’t know about/have the power >>> of PDL at >>>>>>>>>> their fingertips :-) >>>>>>>>>> >>>>>>>>>> Paul >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 13 Jun 2014, at 18:12, David Mertens < >>> [email protected]> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Paul, >>>>>>>>>> >>>>>>>>>> To clarify, the notebooks that you mention in your link have >>> two key >>>>>>>>>> features. First, they provide online sharing, so it is very >>> easy to show >>>>>>>>>> your colleagues some ideas and calculations. Your colleagues can >>>>>>>>>> probably >>>>>>>>>> even try manipulating the data in their browser, if it's fancy >>> enough. >>>>>>>>>> Second, they provide means for (1) writing code, (2) writing >>> prose, (3) >>>>>>>>>> typesetting math, and (4) embedding media such as pictures. >>> They are, in >>>>>>>>>> essence, Mathematica clones for their respective languages. >>>>>>>>>> >>>>>>>>>> PDL does not have an equivalent to this sort of tool. I wrote a >>>>>>>>>> rudimentary >>>>>>>>>> offline GUI data analysis program called App::Prima::REPL, but >>> that was >>>>>>>>>> more >>>>>>>>>> targeted at the Matlab audience, not the Mathematica audience. >>> It was >>>>>>>>>> also a >>>>>>>>>> giant pile of spaghetti, and I got stalled partway through a >>> refactoring >>>>>>>>>> effort. It is not document focused, but rather tab focused. >>> There is an >>>>>>>>>> API >>>>>>>>>> for building our own custom tabs, but it's really more of a >>> programmer's >>>>>>>>>> tool, not a scientists log book. >>>>>>>>>> >>>>>>>>>> I have lately found myself doing a lot of thinking in LyX, then >>>>>>>>>> programming >>>>>>>>>> in Perl. I would really like if there was some way for me to >>> combine all >>>>>>>>>> of >>>>>>>>>> that into a single document, much like the notebooks that you >>> mention. >>>>>>>>>> However, my programming time has lately been dedicated to other >>> projects >>>>>>>>>> (especially, this last week, polishing off some final work on >>>>>>>>>> PDL::Graphics::Prima for a forthcoming release). >>>>>>>>>> >>>>>>>>>> If you are interested in helping, please let me know. I'd love >>> to work >>>>>>>>>> with >>>>>>>>>> somebody on this. :-) >>>>>>>>>> >>>>>>>>>> David >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, Jun 13, 2014 at 12:32 PM, Craig DeForest >>>>>>>>>> <[email protected]> >>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> I wouldn't say there's an online notebook viewer so much a >>> powerful >>>>>>>>>>> toolkit to build one. David Mertens recently implemented >>>>>>>>>>> PDL::Graphics::Prima, which is an object framework that can be >>> used to >>>>>>>>>>> construct interactive notebooks very simply and quickly. For >>> example, >>>>>>>>>>> you >>>>>>>>>>> can generate a plot object and connect it to a PDL, and very >>> easily >>>>>>>>>>> update >>>>>>>>>>> the plot as the PDL evolves - or autogenerate/autoupdate plots >>> as you >>>>>>>>>>> carry >>>>>>>>>>> out a calculation. >>>>>>>>>>> >>>>>>>>>>> That is sort of in keeping with the PDL "style" -- our niche >>> seems to >>>>>>>>>>> be >>>>>>>>>>> powerful tools that are expert-friendly, rather than polished >>> packages. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Jun 13, 2014, at 9:27 AM, Paul Goodall >>>>>>>>>>> <[email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> Apologies if this has a very obvious answer, but does PDL >>> have an >>>>>>>>>>>> equivalent to the online notebook viewers available to the >>> likes of >>>>>>>>>>>> Python, >>>>>>>>>>>> Ruby and (even) Julia? >>>>>>>>>>>> http://nbviewer.ipython.org >>>>>>>>>>>> >>>>>>>>>>>> I’d really like to make use of this ‘IPDL’ if it exists. >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Paul >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> "Debugging is twice as hard as writing the code in the first >>> place. >>>>>>>> Therefore, if you write the code as cleverly as possible, you >>> are, >>>>>>>> by definition, not smart enough to debug it." -- Brian Kernighan >>> >> >> >> >> -- >> "Debugging is twice as hard as writing the code in the first place. >> Therefore, if you write the code as cleverly as possible, you are, >> by definition, not smart enough to debug it." -- Brian Kernighan > > _______________________________________________ > Perldl mailing list > [email protected] > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl _______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
