OrderedCollection [ GrafoscopioNode { #header : 'Kanban', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'To do', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Increasing / Decreasing font sizes for text nodes', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'In Spec', #body : 'StandardFonts defaultFont pointSize: 12', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @6, #level : 4, #links : OrderedCollection [ '', '', '', '', '' ] }, GrafoscopioNode { #header : 'Exploring Doru\'s Pillar editor', #key : '', #body : '', #tags : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Installing', #key : '', #body : 'Gofer new smalltalkhubUser: \'Pier\' project: \'Pillar\'; configuration; loadDevelopment.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @11, #level : 5 }, GrafoscopioNode { #header : 'Using', #key : '', #body : '(FileLocator home / \'Programas\' / \'Pharo\' / \'Docs\' / \'UpdatedPharoByExample\') asFileReference ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @11, #level : 5 } ], #parent : @6, #level : 4 }, GrafoscopioNode { #header : 'Exploring Stephan Eggermont\'s CodePanel', #key : '', #body : 'Stephan has created a keyboard driven Pharo interface that supports font increase/decrease. This subtree tries to explore its ideas and see if some of them can be applied to Grafoscopio.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Installation', #body : 'Follow the steps on the linked video.', #children : OrderedCollection [ ], #parent : @17, #level : 5, #links : OrderedCollection [ '', '', '', '', 'https://vimeo.com/148637679', 'https://vimeo.com/148637679', 'https://vimeo.com/148637679' ] } ], #parent : @6, #level : 4, #links : OrderedCollection [ '', '', 'https://vimeo.com/148637679', 'https://vimeo.com/148637679', 'https://vimeo.com/148637679', '', '', '', '', '' ] } ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'GrafoscopioNode > Model: Cleaning the code', #body : 'This was the first Smalltalk package I ever wrote and I think that is full of rookie code: - Long variables in a single object, I can use composition instead. headers and nodesInPreorder could be not stored in the GrafoscopioNode, instead just use messages that return a value. This could mean to migrate Grafoscopio notebook formats to support add/removal of variables in the GrafoscopioNode - No test almost anywhere. I don\'t know much about Test Driven Development.', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'New introductory mind map in free plane instead of Xmind', #key : '', #body : 'The usual mind map is done in Xmind, which gives nice backgrounds and layouts, but the new ribbon interface uses a lot of screen\'s real state and its unconfortable for presentations (the presentation mode is something you need to pay) while freeplane has a cleaner interface a better keyboard and mouse ergonomy that is pretty useful in presentations. ', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Real tags support', #key : '', #body : 'For historical reasons, tags only stores a single word: \'c��digo\' (code) or nothing, because it was the simpliest thing that could work for the shorter amount of time for the first deliverable in Grafoscopio (that was an [article][first-article] about the need of such tool, write in itself :-P). Now I have knowledge for a full set of programable tags (as said in the referred article), starting with link/url tag, that lets Grafoscopio to load such links in the web browser when the node containing them is doble clicked. But maybe such "tags" will be implemented in different, some will be real tags, while others will be implemented as specialiced nodes or extending node properties. In the specific case of node urls, this should be a property of any Grafoscopio node, in a similar way to Xmind or Freeplane. Links would work in a similar way to Leo: a node mark as link should contain a valid link in its header or in the first line of its body and when doble clicked such link is loaded in current browser. [first-article]: (http://mutabit.com/repos.fossil/grafoscopio/doc/tip/Docs/Es/Articulos/Libertadores/bootstrapping-objeto-investigacion.pdf)', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Small videos', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'New feature: Sharing Smalltalk workspaces', #key : '', #body : 'Script: Two persons are collaborating in and etherpad or chat room. One of them shares a workspace url and the other copies this into a new node header and press Enter and the workspace becomes avaible to her/him automatically.', #children : OrderedCollection [ ], #parent : @29, #level : 4 }, GrafoscopioNode { #header : 'Switching from text nodes to code nodes', #key : '', #body : '', #children : OrderedCollection [ ], #parent : @29, #level : 4 } ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Interface icons', #key : '', #body : 'A visual way to recognize the nature of a node in the left tree: is code?, is text?, is invisible?, is a task?, how advanced? is a link? is an idea?and so on.', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Syntax highlighting for markdown text nodes', #key : '', #body : '', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Collaborative documentation', #key : '', #body : 'With the new introduction of shared workspaces, it is possible to have collaborative documentation in "semi-real" time: two collaborators are in the same etherpad and share the workspace url so they can paste it in their respective notebook and have interactive documents that have the same interactive code inside their nodes. The following document explores this possibility, using etherpads, but may be a native p2p protocol for shaing these notebook can be implemented using some native smalltalk protocol. This can be extended to the entire notebook in a "low tech" fashion: - Two colaborators share and etherpad and are writing the same structured document using [visdown](http://visdown.amitkaps.com/) markdown variant, which lets them write structured documents with embeded code/visuals inside. - The etherpad url is pasted in a Grafoscopio node header and then is processed as an special url, which means: - The contents of the etherpad are downloaded. - [yaml.js](https://github.com/jeremyfa/yaml.js) converts the markdown into JSON using yaml2json. - Grafoscopio imports the json structure and converts it into a notebook. Note to self: visdown is similar to the idea of yaml + markdown explored with the brea prototype.', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Export to pdf', #key : '', #body : 'Now exportation is available via pandoc using the exported makrdown fiel from a command, which, for a nice output can be something as complex as: pandoc --latex-engine=lualatex -H preamble.tex -V fontsize=12pt -V documentclass:book -V papersize:letter -V classoption:openright --chapters exported.markdown -o "exported.pdf" --bibliography bibliografia.bib --csl csl/apa.csl A nice default output should be available from GUI, hidding unnecessary details, but giving the flexibility to adjust the output as desired.', #children : OrderedCollection [ ], #parent : @4, #level : 3, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Fossil support', #key : '', #body : 'Distribute collaboration with permissions and history should be supported using [fossil](http://fossil-scm.org/). For this a fossil repository should be administered from Grafoscopio, This repository could include notebooks and external files like exported or imported images (png, jpeg), bibliographic files (bibtex, json) and styles (CSL) and related artifacts for pdf and web (LaTeX styles and templates, pdf outputs, etc) ', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Sharing node publishing history?', #key : '', #body : 'TO BE EVALUATED If a node, for example a playground, is imported/exported on-line, you could track the history of this node and its transformations via succesive imports/exports. So a collection of urls and operations (import/export) are stored as part of the node and thus part of the notebook.', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Installing external apps?', #key : '', #body : 'For a fluid working, Grafoscopio relies on external apps, which are not available from Pharo because they\'re not native apps: - pandoc: for document formats conversions - fossil: for project collaboration and history - SQLite: for tabular data manipulations (i.e: Panama Papers interative notebook). - LaTeX: for pdf exportation Except for LaTeX, they\'re simple, self contained packages that can be installed easily in the main Pharo Platforms: Windows, Gnu/Linux & Mac. Some support has being done for automatic installation of such packages, but this should be explored and improved, using distro neutral systems like Nix package manager Linux & Mac, and maybe something similar for Windows (chocolatey?, conda?).', #children : OrderedCollection [ ], #parent : @4, #level : 3, #links : OrderedCollection [ '', '' ] }, GrafoscopioNode { #header : 'Subnode extraction (a la Leo)', #key : '', #body : '[Leo editor](http://leoeditor.com/) includes the possiblity to mark a part of a node and made it a subnode of the current one, with the node body contents being populated by the marked part, and the node header something between special marks. A similar feature would be very useful in Grafoscopio to structure the documents and its internals, splitting big node bodies into smaller children nodes, that compose the bigger one (the parent).', #children : OrderedCollection [ ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Node cache & edition undo/redo', #key : '', #body : '- [ ]Now nodes are added and deleted without any possibility of undo. - [X]Also there is not possibility of copying and pasting nodes in the same notebook or between notebooks. (Done. See "Copying Grafoscopio nodes"). This possiblities should be implemented.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Node undeletion', #key : '', #body : 'Node undeletion could be implemented just by changing the message for cutting. Because parent info is stil on GrafoscopioNode clipboard before pasting. should not be difficult to made a tree search for such parent to restore the deleted node to its original location. A history for undoing other tree operations could be more difficult to implement', #children : OrderedCollection [ ], #parent : @53, #level : 4 } ], #parent : @4, #level : 3 }, GrafoscopioNode { #header : 'Update installation to latest versions', #key : '', #body : 'The catalog installation of Grafoscopio and Dataviz packages, should load the last stable versions of them, which include: - [X] New Spec-Glamour GUI: Read + Execute & Write. - [ - ] Dataviz package with Twitter Data Selfies. (Dataviz 1.0 works but update to last version must be done manually still.', #children : OrderedCollection [ GrafoscopioNode { #header : '[ ] Peter\'s new file dialog.', #key : '', #body : 'A new file dialog for Pharo. For details see: https://github.com/peteruhnak/file-dialog', #tags : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Installation', #key : '', #body : 'Metacello new baseline: \'FileDialog\'; repository: \'github://peteruhnak/file-dialog/repository\'; load.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @59, #level : 5 }, GrafoscopioNode { #header : 'Opening the file dialog', #key : '', #body : '"This opens the new file dialog " UIManager default chooseFileMatching: #(\'*.ston\')', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @59, #level : 5 } ], #parent : @57, #level : 4, #links : OrderedCollection [ '', 'https://github.com/peteruhnak/file-dialog' ] } ], #parent : @4, #level : 3, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Forms for adding data to object instances', #body : 'For the [��tico](http://mutabit.com/repos.fossil/etico/) (side) project I need a form to add data to the fossil repository and to do that in a organized fashion, would be nice to have an object model and to add data to the instances of such model using a form. This could start a new subproject for Grafoscopio, inspired in some way by [tupale](https://tupale.co/), because it shows the importance for communities to define and store their own data, as tupale allows. The difference would be in implementation and scope: this would use Pharo related tecnologies to define data models, including data input and fossil and STON/JSON documents for persistance and may be is more modest in reach. Also I have thought in two ways of creating this forms: the easy one seems to use ZnServer, but also using Mustache is an option.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Zinc powered forms', #body : 'Scripts in this subtree are mostly taken from the [Zinc HTTP: The Server Side][ZnServerChapter] from the [Enterprise Pharo Book][Enterprise Pharo Book] [ZnServerChapter]: https://ci.inria.fr/pharo-contribution/job/EnterprisePharoBook/lastSuccessfulBuild/artifact/book-result/Zinc-HTTP-Server/Zinc-HTTP-Server.html [Enterprise Pharo Book]: http://files.pharo.org/books/enterprise-pharo/', #children : OrderedCollection [ GrafoscopioNode { #header : 'Running a simple HTTP server', #body : '"Starting the server and log output to Transcript" (ZnServer defaultOn: 1701) logToTranscript; start. "Una vez all�� podemos ir a http://localhost:1701/help en nuestro navegador y veremos distintos ejemplos de la funcionalidad provista por Zinc. Nos interesan los que empiezan por \'fomr-test\': ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @69, #level : 5, #links : OrderedCollection [ '', '' ] } ], #parent : @67, #level : 4, #links : OrderedCollection [ '', '' ] }, GrafoscopioNode { #header : 'Yaml forms', #body : 'While working on `EtiWeb class >> addAgentForm` I thought that syntaxis for forms is kind of verbose in Zinc (despite of being less verbose that the oververbose HTML) so I look for some YAML powered form definition projects. This are some interesting links about them.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Particle YAML Field Types', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'gantry: Next Generation Theme Framework', #body : '> Develop CMS themes quickly and efficiently while providing flexibility and ease-of-use for end-users. Es el creador de sitios para el cual Particle est�� hecho.', #children : OrderedCollection [ ], #parent : @77, #level : 5, #links : OrderedCollection [ '', '', 'http://gantry.org/' ] } ], #parent : @75, #level : 4, #nodesInPreorder : OrderedCollection [ @77 ], #links : OrderedCollection [ '', '', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types', 'http://docs.gantry.org/gantry5/advanced/particle-yaml-field-types' ] }, GrafoscopioNode { #header : 'YAML Form | Drupal', #body : 'Un plugin que permite definir formularios de drupal en YAML. Ver el video para apreciar c��mo luce y funciona.', #children : OrderedCollection [ ], #parent : @75, #level : 4, #links : OrderedCollection [ '', '', 'https://www.drupal.org/project/yamlform' ] } ], #parent : @67, #level : 4, #links : OrderedCollection [ '', '', '', '' ] } ], #parent : @4, #level : 3, #links : OrderedCollection [ '', '', '', '', '', '' ] }, GrafoscopioNode { #header : 'Testing the Calypso code browser', #body : 'Works from Pharo 6.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Installing', #body : 'Gofer it smalltalkhubUser: \'Pharo\' project: \'Calypso\'; configuration; loadStable. ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @89, #level : 4, #links : OrderedCollection [ '', '', '', '', '' ] } ], #parent : @4, #level : 3, #links : OrderedCollection [ '', '', 'https://github.com/dionisiydk/Calypso', 'https://github.com/dionisiydk/Calypso', 'https://github.com/dionisiydk/Calypso', 'https://github.com/dionisiydk/Calypso', 'https://github.com/dionisiydk/Calypso', 'https://github.com/dionisiydk/Calypso', 'https://github.com/dionisiydk/Calypso' ] } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Doing...', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Access to current notebook tree and nodes', #body : 'To make Grafoscopio even more self-referential (beyond being build and integrated with a metasystem like Pharo) would be nice to have access to the notebook tree and the nodes. Something like making callable ThisNotebook, or ThisNode, inside a playground would give access to self-referential programmable documents (in a similar way Leo). I\'m unsure if using \'ThisNotebook\' or \'ThisNode\' is good style in Smalltalk.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Exploring a Playground node', #body : 'self class', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @97, #level : 4, #links : OrderedCollection [ '', '', '' ] } ], #parent : @95, #level : 3, #links : OrderedCollection [ '', '', '', '' ] }, GrafoscopioNode { #header : 'Adding an output object', #body : 'Org Mode and Jupyter have ways to store the output of code execution. In the case of Grafoscopio, that was not needed at the beginning, because code snippets in the notebook were reified in a object/class via the system browser and if we need the script ouput again, we just re-executed it. But with the writing of the Grafoscopio User Manual, the necessity to invoke outputs from the notebook become evident, for example, when you want to get the Grafoscopio version of the software bundle. That information needs to be called in the notebook and imported there. So, the idea is to add a new ouput object to the GrafoscopioNode definition that stores the output of a code node each time the playground is executed.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Opening a playground and capturing its events', #body : 'playground := GTPlayground new. [playground openOn: GTPlayPage new] for. playground announcer', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @103, #level : 4, #links : OrderedCollection [ '', 'http://ws.stfx.eu/ETEC2JH7363M' ] } ], #parent : @95, #level : 3, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Keyboard shortcuts for notebook operations.', #body : 'An easy way to move, insert, delete and make operations with the notebooks and its nodes, via keyboard shorcuts (like Leo).', #children : OrderedCollection [ ], #parent : @95, #level : 3, #links : OrderedCollection [ '', '' ] } ], #parent : @2, #level : 2 }, GrafoscopioNode { #header : 'Done', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Auto-selection', #key : '', #body : 'This was an strategy explored to work with the notebook refresh. The code was getting complicated and a simpler one was implemented, where the new nodes are not auto-selected, but have to be selected by hand. At some point this cold be retaken, but for now the current strategy is working.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Launching test notebook', #key : '', #body : '| testTree nb | testTree := GrafoscopioNode new becomeDefaultTestTree. nb := GrafoscopioNotebook new. nb notebook: testTree; notebookContent: testTree. nb openWithSpec.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @114, #level : 2 }, GrafoscopioNode { #header : 'Launching & inspecting text notebook', #key : '', #body : '| testTree nb nodeContent parentNode | testTree := GrafoscopioNode new becomeDefaultTestTree. nb := GrafoscopioNotebook new. nb notebook: testTree; notebookContent: testTree. nb openWithSpec. nodeContent := (testTree children at: 1) children at: 1. parentNode := nb tree roots at: 1. nb highlightItemContaining: nodeContent andParent: parentNode ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @114, #level : 2 }, GrafoscopioNode { #header : 'Nicolai\'s example', #key : '', #body : '|t nodeBlock | nodeBlock:= [:class | |node| node := TreeNodeModel new. node hasChildren:[ class subclasses isEmpty not]. node children: [class subclasses collect:[:subclass | nodeBlock value: subclass]]. node content: class]. t:=TreeModel new. t roots: (Morph subclasses collect:[:class | nodeBlock value:class]). t whenBuiltDo:[ t selectedItem:( t roots first selected:true;takeHighlight;yourself)]. t openWithSpec ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @114, #level : 2 } ], #parent : @112, #level : 3 }, GrafoscopioNode { #header : 'Update documentation', #key : '', #body : ' - [X] Instation of documentation should work using fossil JSON views instead of the current implementation with metadata that needs to be filled manually. - [ X ] Installation of documentation shoud be done automatically with the installation of Grafoscopio. ', #children : OrderedCollection [ ], #parent : @112, #level : 3 }, GrafoscopioNode { #header : 'Node operations: cut, copy, paste, delete', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Via scripting', #key : '', #body : '"This was just a preliminary exploration, the proper way to copy nodes is using the clipboard. See next node." | testTree nodeCopy newParent | testTree := GrafoscopioNode new becomeDefaultTestTree. newParent := GrafoscopioNode new. nodeCopy := (testTree children at: 1) copy. nodeCopy parent: newParent. newParent children add: nodeCopy.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @124, #level : 5 }, GrafoscopioNode { #header : 'Via clipboard', #key : '', #body : '| testTree nodeCopy newParent sparseTree ref | testTree := GrafoscopioNode new becomeDefaultTestTree. newParent := GrafoscopioNode new. nodeCopy := (testTree children at: 1). nodeCopy copyToClipboard. newParent pasteFromClipboard ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @124, #level : 5 } ], #parent : @112, #level : 3 }, GrafoscopioNode { #header : 'Happy new year', #body : 'points := Compiler evaluate: \' {(-225@ -206). (-225@ -196). (-228@ -185). (-228@ -174). (-230@ -164). (-218@ -182). (-209@ -182). (-197@ -182). (-190@ -207). (-192@ -194). (-190@ -187). (-192@ -170). (-190@ -161). (-180@ -161). (-176@ -171). (-167@ -185). (-162@ -197). (-151@ -208). (-143@ -202). (-140@ -193). (-124@ -164). (-136@ -183). (-133@ -175). (-159@ -181). (-150@ -181). (-142@ -181). (-97@ -165). (-101@ -181). (-101@ -193). (-103@ -206). (-104@ -210). (-88@ -211). (-77@ -210). (-80@ -199). (-89@ -193). (-61@ -171). (-63@ -182). (-64@ -213). (-67@ -200). (-64@ -191). (-54@ -207). (-38@ -210). (-54@ -190). (-40@ -188). (-35@ -195). (-35@ -200). (-42@ -207). (0@ -199). (0@ -194). (-6@ -179). (-4@ -185). (-10@ -171). (-11@ -163). (-17@ -201). (-13@ -194). (-9@ -190). (57@ -196). (58@ -190). (58@ -181). (58@ -176). (57@ -168). (62@ -193). (69@ -180). (68@ -183). (74@ -175). (80@ -163). (77@ -170). (80@ -172). (81@ -184). (81@ -197). (81@ -201). (95@ -198). (97@ -183). (97@ -162). (98@ -169). (97@ -172). (107@ -162). (116@ -162). (122@ -162). (103@ -178). (109@ -179). (101@ -198). (117@ -198). (111@ -198). (134@ -196). (151@ -179). (141@ -187). (154@ -170). (167@ -170). (176@ -200). (175@ -194). (160@ -195). (183@ -174). (171@ -181). (162@ -189). (187@ -181). (189@ -185). (197@ -198). (-147@ -105). (-156@ -98). (-156@ -89). (-163@ -82). (-165@ -94). (-180@ -111). (-174@ -103). (-167@ -74). (-134@ -102). (-137@ -89). (-135@ -79). (-136@ -73). (-126@ -67). (-119@ -68). (-122@ -86). (-128@ -84). (-128@ -102). (-119@ -102). (-99@ -72). (-86@ -102). (-92@ -96). (-96@ -88). (-77@ -99). (-62@ -75). (-73@ -88). (-63@ -75). (-54@ -67). (-91@ -81). (-86@ -79). (-77@ -79). (-29@ -61). (-33@ -109). (-33@ -96). (-32@ -88). (-32@ -82). (-32@ -75). (-31@ -71). (-22@ -101). (-14@ -101). (-9@ -89). (-15@ -86). (-25@ -86). (-19@ -80). (0@ -72). (-5@ -80). (-3@ -67). (-126@21). (-123@4). (-117@ -3). (-107@ -10). (-91@ -8). (-93@7). (-85@16). (-85@34). (-89@44). (-91@57). (-108@67). (-119@79). (-132@86). (-119@87). (-102@88). (-90@88). (-74@87). (-8@9). (-18@19). (-20@30). (-23@43). (-18@53). (-14@61). (-4@73). (6@78). (35@69). (38@55). (24@81). (15@82). (45@44). (37@35). (33@23). (24@14). (11@9). (2@7). (54@79). (66@69). (82@21). (74@56). (74@41). (78@39). (88@19). (88@28). (89@38). (90@79). (88@55). (89@49). (127@31). (131@21). (134@14). (152@10). (168@10). (177@13). (189@13). (192@14). (182@44). (188@35). (187@25). (171@56). (164@69). (152@82). (152@89). (141@93)}\'. delta := 30. v := RTView new. b := [ :pos | \t\t\te := (RTEllipse new \t\t\t\tcolor: (RTPalette c3 atRandom alpha: 0.8); \t\t\t\tsize: 5 atRandom + 3) element. \t\t\t\t \t\t\td := ((delta atRandom - (delta / 2)) @ (delta atRandom - (delta / 2))). \t\t\te translateTo: pos + d. \t\t\tv add: e. \t\t\tv \t\t\t\taddAnimation: \t\t\t\t\t(RTAccelerationMove \t\t\t\t\t\tto: pos \t\t\t\t\t\tduring: 10 \t\t\t\t\t\ton: e) \t\t]. \t [points do: [ :p | b value: p. (Delay forSeconds: 0.1) wait ]] fork. v open', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @112, #level : 3, #links : OrderedCollection [ '', '', '', '', '' ] }, GrafoscopioNode { #header : 'Bibliography', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Zotero', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Zotero project load', #body : 'Gofer new \tsmalltalkhubUser: \'Offray\' project: \'Grafoscopio\'; \tpackage: \'Zotero\'; \tload.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : GrafoscopioNode { #header : 'Zotero', #key : '', #body : Text { #string : '', #runs : RunArray { #runs : [ ], #values : [ ] } }, #children : @136, #parent : GrafoscopioNode { #header : 'Bibliograf��a', #key : '', #body : 'Este nodo mostrar�� c��mo trabajar con referencias bibliogr��ficas. La bibliograf��a est�� en un grupo en Zotero, pero hay algunas labores de automatizaci��n que se requieren para leer los items de la misma y colocarlos en el archivo en formato bibtex, que se invoca para construir dicha bibliograf��a y citarla en el documento. La forma en que integro el repositorio en l��nea de Zotero a la tesis en pdf a trav��s de BibTeX, un antiguo y ubicuo formato para trabajar con bibliograf��as. El proceso consiste en exportar la bibliograf��a en Zotero a bibTeX en un archivo \'.bib\', que luego enriquezco con nuevos items para cosas que quiero poner a dialogar con otros autores y sustentar mejor. En los nodos internos se ver��n las exploraciones hechas para automatizar este proceso, tanto en zotero, como en BibTeX.', #children : OrderedCollection [ ], #level : 2, #links : OrderedCollection [ '', '', '', '', '', '', '', '', '', '' ] }, #level : 3, #links : OrderedCollection [ '', '', '', '', '', '' ] }, #level : 4, #nodesInPreorder : OrderedCollection [ @137 ], #links : OrderedCollection [ '', '', '', '', '', '', '', '', '' ] }, GrafoscopioNode { #header : 'API', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Basic Zotero API', #key : '', #body : '', #tags : '', #children : OrderedCollection [ ], #parent : @150, #level : 5, #links : OrderedCollection [ '', '', '', '', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics', 'https://www.zotero.org/support/dev/web_api/v3/basics' ] }, GrafoscopioNode { #header : 'Zotero Web API Item Type/Field Requests', #body : '', #children : OrderedCollection [ ], #parent : @150, #level : 5, #links : OrderedCollection [ '', '', 'https://www.zotero.org/support/dev/web_api/v3/types_and_fields' ] }, GrafoscopioNode { #header : 'Intro to the Zotero API for Pyhon', #key : '', #body : 'A pesar de referirse a Python, puede extrapolarse a otros lenguajes, como Smalltalk', #tags : '', #children : OrderedCollection [ ], #parent : @150, #level : 5, #links : OrderedCollection [ '', '', '', '', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api', 'http://programminghistorian.org/lessons/intro-to-the-zotero-api' ] }, GrafoscopioNode { #header : 'Exportaci��n', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Export formats', #body : '', #children : OrderedCollection [ ], #parent : @161, #level : 6, #links : OrderedCollection [ '', '', 'https://www.zotero.org/support/dev/web_api/v3/basics#export_formats', 'https://www.zotero.org/support/dev/web_api/v3/basics#export_formats', 'https://www.zotero.org/support/dev/web_api/v3/basics#export_formats', 'https://www.zotero.org/support/dev/web_api/v3/basics#export_formats', 'https://www.zotero.org/support/dev/web_api/v3/basics#export_formats' ] }, GrafoscopioNode { #header : 'Exportar a .bib', #body : '', #children : OrderedCollection [ ], #parent : @161, #level : 6, #links : OrderedCollection [ '', '', '', '', 'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items?itemType=-note%20||%20attachment%20&format=bib', 'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items?itemType=-note%20||%20attachment%20&format=bib', 'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items?itemType=-note%20||%20attachment%20&format=bib' ] } ], #parent : @150, #level : 5, #links : OrderedCollection [ '', '' ] }, GrafoscopioNode { #header : 'Search syntax', #body : '', #children : OrderedCollection [ ], #parent : @150, #level : 5, #links : OrderedCollection [ '', '', '', '', 'https://www.zotero.org/support/dev/web_api/v3/basics#search_syntax' ] } ], #parent : @139, #level : 4, #links : OrderedCollection [ '', '' ] }, GrafoscopioNode { #header : 'Averiguar el ID de un grupo', #key : '', #body : '"Vamos a la p��gina del grupo, por ejemplo:" WebBrowser openOn: \'https://www.zotero.org/groups/diseo_y_creacion_phd_msc_universidad_de_caldas/items\'. "Y luego nos paramos en el lector del RSS, all�� aparece el ID del grupo. Para el caso del grupo anterior, el RSS apunta a:" WebBrowser openOn: \'https://api.zotero.org/groups/204755/items/top?start=0&limit=25&format=atom&v=1\'. "Lo cual quiere decir que el ID es 204755." ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @139, #level : 4, #links : OrderedCollection [ '', '', '', '' ] }, GrafoscopioNode { #header : 'Abrir la descripci��n de un grupo', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755\') contents', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @139, #level : 4 }, GrafoscopioNode { #header : 'Consultar bibliotecas', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Scripts manuales', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Informaci��n general', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755\') contents ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @181, #level : 5 }, GrafoscopioNode { #header : 'Ultimos 25 items', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755/items\') contents. "Por omisi��n trae los ��ltimos 25 items agregados en la biblioteca"', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @181, #level : 5 }, GrafoscopioNode { #header : 'Subcolecciones', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Info de subcolecci��n particular', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755/collections/5NVZ4WH2\') contents ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @187, #level : 6 }, GrafoscopioNode { #header : 'Items en una subcolecci��n', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items\') contents "Estos items tambi��n incluyen las anotaciones que se hayan hecho sobre un documento en particular."', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @187, #level : 6 }, GrafoscopioNode { #header : 'Excluir las anotaciones de todos los items.', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items?itemType=-note\') contents "Estos items excluyen las anotaciones que se hayan hecho sobre cualquier documento" ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @187, #level : 6 }, GrafoscopioNode { #header : 'Excluir anotaciones y anexos', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items?itemType=-note || attachment\') contents "Estos items excluyen las anotaciones y los anexos en cualquier item" ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @187, #level : 6 }, GrafoscopioNode { #header : 'Bibtex', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Un item espec��fico en formato bibtex', #key : '', #body : ' @misc{luna_cardenas_deepness_2013, \ttype = {microblog}, \ttitle = {On "deepness" and complexity of \\#{IPython} documents: http://is.gd/{yoUWBI}�� cc @fperez\\_org @ellisonbg}, \tshorttitle = {ipython-deepness-2013}, \turl = {https://twitter.com/offrayLC/status/293188236019388417}, \turldate = {2016-12-09TZ}, \tjournal = {@offrayLC}, \tauthor = {Luna C��rdenas, Offray Vladimir}, \tyear = {2013}, \tkeywords = {replaceShortTitle} }', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @197, #level : 7 }, GrafoscopioNode { #header : 'Todos los items de una subcolecci��n', #key : '', #body : '(ZnEasy get: \'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items?itemType=-note || attachment&format=bibtex\') contents utf8Decoded ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @197, #level : 7 } ], #parent : @187, #level : 6 } ], #parent : @181, #level : 5 }, GrafoscopioNode { #header : 'Ultimos 5 items', #key : '', #body : 'NeoJSONReader fromString: (ZnEasy get: \'https://api.zotero.org/groups/204755/collections/5NVZ4WH2/items/top\') contents "Estos items tambi��n incluyen las anotaciones que se hayan hecho sobre un documento en particular." ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @181, #level : 5 } ], #parent : @179, #level : 5 }, GrafoscopioNode { #header : 'Usando el paquete Zotero', #key : '', #body : 'He creado el paquete "Zotero", pronto instalable desde el cat��logo, que facilita la consulta y exportaci��n de bibliotecas almacenadas en zotero. Los scripts del nodo anterior sirvieron como exploraci��n preliminar para implementar dicho paquete.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Informaci��n general', #key : '', #body : '(ZoteroLibrary new groupID: \'204755\') generalInfo ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @205, #level : 6, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Ultimos 25 items', #key : '', #body : '(ZoteroLibrary new groupID: \'204755\') lastItems.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @205, #level : 6, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Ultimas 25 colecciones', #key : '', #body : '(ZoteroLibrary new groupID: \'32947\') lastCollections', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @205, #level : 6, #links : OrderedCollection [ '', '' ] }, GrafoscopioNode { #header : 'Subcolecciones', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Info de subcolecci��n particular', #key : '', #body : '(ZoteroLibrary new groupID: \'204755\') subcollection: \'5NVZ4WH2\'', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @216, #level : 7, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Ultimos items', #key : '', #body : '(ZoteroLibrary new groupID: \'204755\') subcollectionLastItems: \'5NVZ4WH2\'.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @216, #level : 7 }, GrafoscopioNode { #header : 'Items, nodos padres', #key : '', #body : '(ZoteroLibrary new groupID: \'204755\') subcollectionLastParentItems: \'5NVZ4WH2\'. ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @216, #level : 7 }, GrafoscopioNode { #header : 'Exportando a BibTeX', #key : '', #body : '(ZoteroLibrary new groupID: \'204755\') subcollectionAsBibTeX: \'5NVZ4WH2\' ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @216, #level : 7, #links : OrderedCollection [ '' ] } ], #parent : @205, #level : 6 } ], #parent : @179, #level : 5 } ], #parent : @139, #level : 4 } ], #parent : @133, #level : 4, #nodesInPreorder : OrderedCollection [ @135, @137, @150, @152, @158, @174, @177, @179, @181, @183, @185, @187, @189, @191, @193, @195, @197, @199, @201, @203, @205, @207, @210, @213, @216, @218, @221, @223, @225 ], #links : @147 }, GrafoscopioNode { #header : 'BibTeX', #key : '', #body : 'Para trabajar con BibTeX, es necesario cargar el paquete citezen desde el cat��logo de Pharo (OJO es la ��nica "i" es la primera, no confundir con citizen, que tiene dos "i"s). Una vez se halla cargado, estaremos en condiciones de cargar un archivo .bib a Pharo, e integrarlo o modificarlo de acuerdo a la bibliograf��a que tenemos en zotero, para reescribirlo de nuevo. ', #children : OrderedCollection [ GrafoscopioNode { #header : 'Cargar el archivo de bibliograf��a', #key : '', #body : '', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : GrafoscopioNode { #header : 'BibTeX', #key : '', #body : Text { #string : 'Para trabajar con BibTeX, es necesario cargar el paquete citezen desde el cat��logo de Pharo (OJO es la ��nica "i" es la primera, no confundir con citizen, que tiene dos "i"s). Una vez se halla cargado, estaremos en condiciones de cargar un archivo .bib a Pharo, e integrarlo o modificarlo de acuerdo a la bibliograf��a que tenemos en zotero, para reescribirlo de nuevo. ', #runs : RunArray { #runs : [ 375 ], #values : [ [ ] ], #lastIndex : 352, #lastRun : 1, #lastOffset : 351 } }, #children : @230, #parent : @144, #level : 3, #links : OrderedCollection [ '', '', '', '', '', '' ] }, #level : 4 }, GrafoscopioNode { #header : 'Buchanan-1', #key : '', #body : '% Este es un ejemplo de una ficha bibliogr��fica en BibTeX. Con la integraci��n de Zotero y Grafoscopio, ya no ser�� necesario tenerlas por aparte. @article{Buchanan-1, \tauthor = {Richard Buchanan}, \ttitle = { "Children of the Moving Present" The Ecology of Culture and the Search for Causes in \tDesign." }, \tjournaltitle = {Design Issues}, \tdate = {date}, \tissue = {17}, \tpages = {67-84}, }', #children : OrderedCollection [ ], #parent : @233, #level : 4 } ], #parent : @133, #level : 4, #nodesInPreorder : OrderedCollection [ @229, @231, @240 ], #links : @239 }, GrafoscopioNode { #header : 'Citizen', #body : '', #children : OrderedCollection [ ], #parent : @133, #level : 4, #links : OrderedCollection [ '', '', 'http://people.untyped.org/damien.pollet/software/citezen/' ] } ], #parent : @112, #level : 3, #links : OrderedCollection [ '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] }, GrafoscopioNode { #header : 'Fixing auto-update of textual code nodes', #body : 'When a code node is executed and produce textual output (scraps HTML, calculates a hash, etc) the code is replaced by the output. Visit link for details.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Tudor\'s answer', #body : 'playground := GTPlayground new. playground openOn: GTPlayPage new. playground \tonChangeOfPort: #text \tact: [ :x | self inform: x entity value content ] ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @247, #level : 4, #links : OrderedCollection [ '', 'http://ws.stfx.eu/ETEC2JH7363M' ] } ], #parent : @112, #level : 3, #links : OrderedCollection [ '', 'http://forum.world.st/Problems-with-auto-updating-the-text-of-a-playground-tt4933088.html' ] }, GrafoscopioNode { #header : 'Applying Peter\'s advice on docs location', #body : 'In the mailing list Peter Uhnak made some observations about improving Grafoscopio (visit related link below for details). This notes are for exploring the implementation of such advice.', #children : OrderedCollection [ GrafoscopioNode { #header : 'Changing file dialogs', #body : '> For saving `UITheme builder` is used, but the correct approach is via `UIManager default` * this has obvious impact if the UIManager is different (UIManager has reference to UITheme, but not the other way around) To see all the calls, you can do this (or find the uses manually) ', #children : OrderedCollection [ GrafoscopioNode { #header : 'all calls', #body : 'calls := UITheme allCallsOn select: [ :each | each package name = #Grafoscopio ]. SystemNavigation default browseMessageList: calls name: \'Users of class UITheme\' autoSelect: \'UITheme builder\'.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @255, #level : 5, #links : OrderedCollection [ '', '', '', '', '', '', '', '', '' ] } ], #parent : @253, #level : 4, #links : OrderedCollection [ '', '', '', '', '', '', '', '', '', '' ] }, GrafoscopioNode { #header : 'Making documentation relative to the image folder', #body : '> 4. During installation (from Catalog) a \'Grafoscopio\' folder is created in documents and documentation is downloaded This is a big no. Please don\'t do this. Not only it violates the isolation of images, but it actually breaks the installation itself when you install Grafoscopio in two different images. If you have to download the docs and you cannot just store them inside the image (which would be logical choice for read-only), then please use the image\'s directory by default, and only in e.g. development mode use some other location. ', #children : OrderedCollection [ GrafoscopioNode { #header : 'Implementation ideas', #body : 'Once the documents location become relative to the image working directory, a menu should be created, in the docking bar, to define where documents are located, so we can work with a single location or with a relative path, wich is important for shared projects and in a \'developer mode\', so docs are stored in places shared by all images. This could be complemented with the strategy of making notebooks trees available from the playgrounds embedded in such notebooks.', #tags : '', #children : OrderedCollection [ ], #parent : @261, #level : 5, #links : OrderedCollection [ '', '', '', '', '', '' ] }, GrafoscopioNode { #header : 'GUI for selecting a folder', #body : 'UIManager default chooseDirectory: \'Path to the documents Folder\'', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @261, #level : 5, #links : OrderedCollection [ '', '', '', '', '' ] } ], #parent : @253, #level : 4, #links : OrderedCollection [ '', '', '', '' ] } ], #parent : @112, #level : 3, #links : OrderedCollection [ '', '', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html', 'http://forum.world.st/Couple-grafoscopio-notes-tt4929939.html' ] } ], #parent : @2, #level : 2 } ], #parent : GrafoscopioNode { #header : 'Arbol principal', #key : '', #body : '', #children : @1, #level : 0, #nodesInPreorder : OrderedCollection [ @271, @2, @4, @6, @8, @11, @13, @15, @17, @19, @23, @25, @27, @29, @31, @33, @35, @37, @39, @41, @44, @46, @48, @51, @53, @55, @57, @59, @61, @63, @67, @69, @71, @75, @77, @79, @84, @89, @91, @95, @97, @99, @103, @105, @109, @112, @114, @116, @118, @120, @122, @124, @126, @128, @130, @133, @135, @137, @150, @152, @155, @158, @161, @163, @166, @170, @174, @177, @179, @181, @183, @185, @187, @189, @191, @193, @195, @197, @199, @201, @203, @205, @207, @210, @213, @216, @218, @221, @223, @225, @229, @231, @240, @243, @247, @249, @253, @255, @257, @261, @263, @266, GrafoscopioNode { #header : 'Twitter Data selfies', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Metrics for retweeted avatars', #key : '', #body : '"The graphic with squares with area proportional to mentions" | storage p v s es | storage := (FileLocator temp / \'iprofiles.fuel\') asFileReference. p := TwitterProfileOverview new materializeIProfilesFrom: storage. v := RTView new. s := (RTBox new \t\tsize: [:m | m tweets sqrtFloor * 20 ]) + (RTLabel text: [:m | m tweets]). es := s elementsOn: (p interactionProfiles). es @ RTPopup. v addAll: es. RTFlowLayout on: es. v', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @273, #level : 3 }, GrafoscopioNode { #header : 'Avatars around and arc', #key : '', #body : '"This is to get some of the Twitter Data Selfies image at..." | storage p c avatars avts1 avts2 els arc | storage := (FileLocator temp / \'iprofiles.fuel\') asFileReference. p := TwitterProfileOverview new materializeIProfilesFrom: storage. avatars := (p interactionProfiles copyFrom: 1 to: 20) \tcollect: [ :e | (TRBitmapShape new form: e avatar) scaleBy: e tweets sqrtFloor * 4]. avts1 := avatars copyFrom: 1 to: 5. avts2 := avatars copyFrom: 6 to: 20. c := TRCanvas new. "Composition" arc := TRArcShape new alphaAngle: 20 betaAngle: 220 innerRadius: 7450 externalRadius: 7750; color: Color lightGray. arc I \tsurroundedBy: avts2 radialGap: 1900 angularGap: 5 renderedIn: c; \tsurroundedBy: avts1 radialGap: 6200 angularGap: 140 renderedIn: c.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @273, #level : 3 }, GrafoscopioNode { #header : 'Serializing tweets dataviz with fuel to hard disk', #key : '', #body : '| tweetsJSON p storage | tweetsJSON := (FileLocator documents / \'Bio/Twitter-offrayLC/2/data/js/tweets/2016_06.js\') asFileReference. p := TwitterProfileOverview new. p splitMessagesByTypeFrom: tweetsJSON. storage := (FileLocator temp / \'iprofiles.fuel\') asFileReference. p putTweetsOnInteractionProfiles. [p putAvatarsOnInteractionProfiles. p serializeIProfilesTo: storage ] fork', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @273, #level : 3 } ], #parent : @271, #level : 1 }, @275, @277, @279, GrafoscopioNode { #header : 'Random', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Theming / Visual Candy', #key : '', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Changing the background image', #key : '', #body : ' | backgrounds | "Nice images to choose from" backgrounds := Dictionary new. backgrounds := \t{\'pharo\' -> \'http://orig09.deviantart.net/6eb6/f/2016/161/1/f/omnos_the_black_sky_noir_style_hdr_wallpaper_by_charlie_henson-da5oxs0.png\'. \t\'portal\' -> \'http://orig13.deviantart.net/e8d3/f/2013/092/a/3/glados_s_activation_by_first9-d605rwi.jpg\'. \t\'ship\' -> \'http://orig01.deviantart.net/9647/f/2014/074/e/4/union_class_super_dreadnought_by_emperormyric-d6qw3im.png\'. \t\'dock\' -> \'http://www.fullhdwpp.com/wp-content/uploads/Impressive-Clouds-over-the-Dock_www.FullHDWpp.com_www.FullHDWpp.com_.jpg\'. \t\'fluid\' -> \'http://www.fullhdwpp.com/wp-content/uploads/Colorful-Water-Ink-Painting_www.FullHDWpp.com_.jpg\'. \t\'nightBeach\' -> \'http://orig00.deviantart.net/4f98/f/2016/208/3/8/watching_the_change_noir_style_wallpaper_by_charlie_henson-dabjbyi.png\'. \t\'worldMap\' -> \'http://wallpapersonthe.net/wallpapers/b/3840x2400/3840x2400-map_time_infographics_world_time_zones-21181.jpg\'. \t\'tron\' -> \'http://cdn.wallpapersafari.com/14/60/agZyEq.jpg\'} asDictionary. World backgroundImage: (ImageReadWriter formFromStream: \t\t\t(ZnEasy get: (backgrounds at: \'fluid\') ) contents readStream) layout: #scaled.', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @283, #level : 3, #links : OrderedCollection [ '', '', '', '' ] }, GrafoscopioNode { #header : 'Switching the theme ', #body : '', #children : OrderedCollection [ GrafoscopioNode { #header : 'Dark', #key : '', #body : 'Pharo3DarkTheme beCurrent ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @288, #level : 4, #links : OrderedCollection [ '', '', '', '' ] }, GrafoscopioNode { #header : 'Sublimish', #body : '"Install" Metacello new githubUser: \'sebastianconcept\' project: \'SublimishTheme\' commitish: \'master\' path: \'src\'; baseline: \'SublimishTheme\'; onWarningLog; load. "Make it default" SublimishTheme beC', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @288, #level : 4, #links : OrderedCollection [ '', 'https://github.com/sebastianconcept/SublimishTheme' ] } ], #parent : @283, #level : 3, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Reloading/updating the Grafoscopio docking bar', #key : '', #body : 'GrafoscopioGUI updateUI ', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @283, #level : 3, #links : OrderedCollection [ '', '' ] } ], #parent : @281, #level : 2 }, GrafoscopioNode { #header : 'Autocompletion of text fields', #key : '', #body : 'TextInputFieldModel new \tenableGlobalsCompletion; \topenWithSpec', #tags : 'c��digo', #children : OrderedCollection [ ], #parent : @281, #level : 2, #links : OrderedCollection [ '' ] }, GrafoscopioNode { #header : 'Self hosted Git', #body : 'From Torsten (@astares): Finished for today:My next PULL Request to Iceberg: https://github.com/npasserini/iceberg/pull/287 to solve issue https://github.com/npasserini/iceberg/issues/284 and allow the usage of custom hosted Gogs or GitLab or other when installed locally. Gives us more freedom than just using GitHub.BTW: There is a 5 minutes way to run a local GOGS github server (without MySQL just by using sqlite):1. Download the binary ZIP for your platform from https://gogs.io/docs/installation/install_from_binary 2. Extract into a directory 3. Run ./gogs web 4. Visit http://localhost:3000, set the database to SQLite3 a) you can also change where the *.db files resides on disk b) you can also setup where your bare repositories are located 5. Give an admin name and password and save the initial settings=> You have "gogs" as an own git server with a web based UI running locally', #children : OrderedCollection [ ], #parent : @281, #level : 2, #links : OrderedCollection [ '' ] } ], #parent : @271, #level : 1 }, @283, @285, @288, @290, @293, @297, @300, @303 ] }, #level : 1 }, @273, @281 ]