Here are a couple of items with my first 5 minutes with the TODO tutorial...
TODOListPresenter >> initializePresenters todoListPresenter := self newTable addColumn: ((SpCheckBoxTableColumn evaluated: [:task | task isDone]) width: 20); addColumn: (SpStringTableColumn title: 'Title' evaluated: [:task | task title]); yourself. self layout: (SpBoxLayout newVertical add: todoListPresenter; yourself) In this portion (Showing Tasks) - it does not define todoListPresenter.... is it a local or a missed instVar. I tried it first as a local to enable save, but then... TODOListPresenter >> updatePresenter todoListPresenter items: TODOTask selectAll asOrderedCollection todoListPresenter isn't available for updatePresenter... so I'm assuming it must be an instvar? I created accessors, then changed all the todoListPresenter references to use the accessors (below). TODOListPresenter >> initializePresenters self todoListPresenter: (self newTable addColumn: ((SpCheckBoxTableColumn evaluated: [:task | task isDone]) width: 20); addColumn: (SpStringTableColumn title: 'Title' evaluated: [:task | task title]); yourself). self layout: (SpBoxLayout newVertical add: self todoListPresenter; yourself) and... TODOListPresenter >> updatePresenter self todoListPresenter items: TODOTask selectAll asOrderedCollection Also, in the first example - task isDone needs to be defined (and might be defined later in the tutorial) - I'm assuming SpCheckBoxTableColumn>>evaluated: is expecting a boolean, or do I need to convert this somehow? I can check all these things out - but just curious if I'm missing something? TODOTask >> done ^ done TODOTask >> isDone ^ self done I'll go through a bit more and update you on my progress. Ted, I also hope to get to take a look at Zebra today :) On Sun, Aug 2, 2020 at 2:07 PM Stéphane Ducasse <stephane.duca...@inria.fr> wrote: > > > On 2 Aug 2020, at 19:51, tbrunz <wild.id...@gmail.com> wrote: > > I've been thinking lately that it would be nice to expand the number of > Pharo tutorials we have available. But rather than (or along with) > creating > more "beginner" level tutorials, I'd like to see some good "intermediate" > level Pharo tutorials. > > > Me too :) > > > Let's do it, then. I'll volunteer to do most of the work. :^) > > > I will review anything you write :) > > > My hope is that participating in this will make me capable of creating > advanced tutorials all by myself. > > > I usually like to write to learn and dump what I learned. > > > I think that programmers who already know the Pharo > syntax and messaging semantics could benefit from more advanced tutorials > that demonstrate how to develop "real world" Pharo code for "real world" > processing needs. > > > Yes yes I would love that. > > > That was part of my motivation for creating a Pharo app to solve the Zebra > Puzzle. First, of course, I wanted to solve it. ;^) > > > I will send you some feeedback and PR. > > > What I'm talking about is something that assumes you know the language, > the > basics of the IDE (but not necessarily how to leverage its capabilities > to > aid development), and the basics of the foundation classes (but not its > details). I'd like a tutorial for intermediate Pharo programmers who > want > to become experts with Pharo. Something that can show you how to apply > the > tools of the IDE and the features of the language and base classes to > create > solutions that solve complex problems. > > > do you have ideas? > > > I do! > > As I started building the Logic Puzzle app, it occurred to me that I could > probably find several different, common structures in OOP (specifically, > Pharo) to add to the solution. And then each would be its own example of > "what real Pharo code looks like". I.e., be good examples. > > But first, I needed to explore "how to do it in Pharo" for myself, which > naturally would have me working the IDE strongly. > > Then I thought, the entire application can/should be an example, so it > should be a tutorial. > > That means that I need more than just a completed application (that's "just > an example"). To be a *tutorial*, it means starting from scratch, showing > how to approach the solution, how to start a Pharo app, how to use the IDE, > how to write tests, how to refactor code, etc. > > Then I thought, this needs a GUI. Either a Spec2 UI or a web app UI (with > Seaside or Teapot). But I would need help with that! So I'll start by > creating a message-based solution, and maybe get help to add a UI later. > > I did some prototyping, then got what I think might be a good code > structure > (by version 4; it took a while to "think pure OOP"; old habits are hard to > fight against). It runs, it works. > > But.. Is it "good Pharo code"? I'm not experienced enough to answer that > question. I need a code review, criticism, guidance. Point me in the > right > direction and I'll keep working on it, and start thinking about how to > express the "meta" elements (how to use the IDE to make/test the code, > etc.). > > What does the community think of this idea? > > > I love it. I did Pharo by example so that I can get of rid of the beginner > > parts. > > After I did learning OOP and Pharo with style so that I do not have to talk > > about it > > again. > > So definitively. > > > Okay, great. I'll do most of the work. But I need help... > > I don't want to go any further without someone much more experienced than I > am to review what I have and let me know what I'm doing right & what I'm > doing "no quite so right". Yes, it runs, it works -- but that's *not* good > enough. The goal here isn't to "hack out a solution and move on", the goal > is to "create an example and tutorial that's high enough quality to use to > teach Pharo to other people". I don't want to be teaching *my* bad habits! > > Also, I know next to nothing about Spec2 or Seaside/Teapot. I just know > that I need to learn it, and I need to use it to give my tutorial a UI (or > two). Newcomers will show up wanting to learn Pharo, and they need to be > reassured that they can create nice (enough) UIs without a huge effort. > (Not everyone is a command line hacker, and end-users certainly don't want > to be.) > > The more I learn (from you), the more I can be independent, and the more > tutorials I could produce -- without a lot of help. I'm willing to do the > work, because that will help make me a Pharo "master programmer". (I don't > want to be a hack, and I can't really be a trainer if I'm just a hack > myself.) > > I'll pay back the community by helping to attract and advance more > developers' skills. I just have to have the more advanced knowledge & > skills myself. So, train the (future) trainer, anyone?? > > -Ted > > > > -- > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html > > > -------------------------------------------- > Stéphane Ducasse > http://stephane.ducasse.free.fr / http://www.pharo.org > 03 59 35 87 52 > Assistant: Aurore Dalle > FAX 03 59 57 78 50 > TEL 03 59 35 86 16 > S. Ducasse - Inria > 40, avenue Halley, > Parc Scientifique de la Haute Borne, Bât.A, Park Plaza > Villeneuve d'Ascq 59650 > France > > -- Russ Whaley whaley.r...@gmail.com