Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

RFC: "Today I Learned" page

by jdporter (Paladin)
on Jan 11, 2024 at 04:40 UTC ( [id://11156858]=monkdiscuss: print w/replies, xml ) Need Help??

Some time in the last year or two I suddenly realized that I should be keeping a log of the interesting things I learn from day to day. A couple months ago I was talking with my brilliant young nephew about how I didn't have a really satisfactory solution, and he suggested Notion. He set up a Notion workspace where we can both enter our #TILs. It works really well. Notion is amazing. But I can see how it might not scale too well with a large number of contributors.

Long story short — I have created Today I Learned, a page where anyone (meeting certain minimum elibility requirements) can share interesting factoids. Please check it out. What do you think? Is it worthwhile? If not, could it be made better? If so, how? If snot, blow?

I also want to note that the extant page, Today I Learned, is based on a generic mechanism which can be easily leveraged for other similar tasks. The main configurable parameters are: who can view the page, who can add entries, and who can delete entries. (readers/writers/deleters, in short.) These can be based on a user group (such as janitors or breathers of fire), or on monastic level (such as Level 10: Hermit). Can you think of a use for such a feature?

I thank you, and Paco thanks you.

* On the Today I Learned page, entries can be deleted by the Janitors, and the Editors Nodelet contains a link to that page labled 'TIL'. When there is a new entry on that page, a little flag (*) is appended to the 'TIL' link.

Today's latest and greatest software contains tomorrow's zero day exploits.

Replies are listed 'Best First'.
Re: RFC: "Today I Learned" page
by marto (Cardinal) on Jan 11, 2024 at 10:44 UTC

    This looks cool, thanks. Would there be any merit in considering grouping these by day/date?

      They are ordered chronologically, most recent first.

        I was thinking something like the following, purely to differentiate which 'today' something was learned on, or more to the point where I'd read up to :)

        [Date/time stamp] * Item 1 * item 2 ...
Re: RFC: "Today I Learned" page
by bliako (Monsignor) on Jan 11, 2024 at 11:45 UTC

    REALLY GOOD IDEA from my point of view. Just I can't see the dates. Unless it is made to start afresh each new day, in the spirit of Paco. Perhaps it can live on for some time? if resources are available.

      Just I can't see the dates.

      Mouse over the username for the timestamps (in server local time, not yours!).


      🦛

        Under normal conditions, I am reading and posting here in a desktop browser; but there are times when I'm just doing quick reading on my phone's Android Chrome browser, where long-press will show the ALT text for images, but not the TITLE text for links (at least, in my experience)

        jdporter, could you add a class attribute to the links with the title attributes (both here and on other pages that put the post-time in the title text, like Newest Nodes and RAT) -- something like <a class="hoverDate" ...> -- so that monks who want to show the dates without hovering can affect it in their Display Settings CSS, like:

        @media (pointer: coarse), (hover: none) { .hoverDate a:link:before { content: attr(title) ": "; font-size:75%; f +ont-family: monospace; } }

        Without the class -- which is how i tested to make sure it would affect my phone experience but not my desktop experience -- too many other links on normal pages have titles, and it gets really cluttered. But if I could limit it by class, I would be able to easily see the dates on TIL/NN/RAT, which would be great.

Re: RFC: "Today I Learned" page
by InfiniteSilence (Curate) on Jan 12, 2024 at 08:01 UTC

    I tried something like this a while back. I amassed weeks of so-called 'learnings' only to discover after performing an investigation on said entries that my content lacked 'depth' as well as organization. This was unnecessary since much of the material involved highly organized sources like books and/or comprehensive whitepapers chock full of examples.

    What I developed in response is a different way of going about surmounting the so-called technical learning curve using purely free tools and best practices. Deficiencies in the haphazard method were identified as follows:

    • General learning from books involves generic examples which are presented at one of several levels: namely, beginner/intermediate/advanced.
    • When embarking on a learning subject that had no practical use I stopped learning very early.
    • Material I went very far with (finished at least one or several books, etc.) I found there to be significant overlap with material I already familiar with.
    • Lots of so-called complex subjects were really just made up of lots of smaller parts which could be understood if studied independently.

    So it makes sense to look a learning as an opportunity to enhance existing knowledge, improve something by some quantifiable measure (time, space, effort), identify my own knowledge level, take complex things apart.

    The Work Breakdown Structure

    The most useful tool I came up with to combat the above problems is what I call the Work Breakdown Structure (WBS). I like to try and quantify what I don't know and look to repeatedly deconstruct that while scheduling tasks to become more familiar with components. Essentially the WBS is nothing more than a sideways graph (using Graphviz). Here is one I cobbled together rewriting an online example I found:

    digraph G { orientation=L; node [shape = diamond]; {rank = same; 3 4} {rank = same; 5 6} {rank = same; 7 8} 1 -> 2 [label = postgres]; 1 -> 3 [label = redis]; 2 -> 4 [label = HA]; 3 -> 5 [label = "key-value store"]; 5 -> 6 [label = "Performance comparison"]; 6 -> 7 [label = "Live data check"]; 7 -> 8 [label = "Support provider avail."]; }

    Created by running:

    dot -Tpng learnX.dot -o learnX.png

    Admittedly I use object or (preferably) package/component names instead of numbers for the nodes. The goal is to take a chunk of something and break it down into parts. In the case above I am comparing two competing alternatives for data storage given a particular problem I am trying to solve. I have general constraints to work with like data volume, minimum/maximum latency, how long I want to maintain live data before archiving it, etc. to consider. I branch off between two competing alternatives. I know I will have to scan books, articles, websites, and whitepapers/scholarly articles on the two different subjects. Hence two separate branches. When I come across unsubstantiated claims I look for evidence or create tests myself.

    Rank is not arbitrary but is in fact significant. In my above graph HA (high availability) is an aspect of Postgres, one which involves different toolsets and configurations. I want to align those with what Redis does, so these are aligned by ranking nodes. The orientation of the graph is meaningful as well (as well as the node shape -- see Schedules section below for that). Although not present, this graph should be visualized as having a timeline at the bottom. This keeps me from spending too much time on any one thing. Work is breaking down into smaller and smaller parts but I know why I should spend time on it as well as what I am comparing it against.

    In science branch A would have a variable modified in some way while branch B would be the 'control.' In my case I will often make branch A how I normally do things while branch B is what the 'cool kids' are doing. I am sure you can come up with many other uses.

    Schedules

    There is one last tool I want to mention as well. Nodes on my graph are diamond shaped for a reason -- they should match milestones on a PlantUML Gantt chart:

    @startgantt Project starts 2022-09-13 [Chapter 1] lasts 2 days [Install ang] happens at [Chapter 1]'s end [Chapter 2] lasts 4 days [Chapter 2] starts at [Chapter 1]'s end [Chap 2 milestone] happens at [Chapter 2]'s end [Chapter 3] lasts 4 days [Chapter 3] starts at [Chapter 2]'s end [Chap 3 milestone] happens at [Chapter 3]'s end [Chapter 4] lasts 4 days [Chapter 4] starts at [Chapter 3]'s end [Chap 4 milestone] happens at [Chapter 4]'s end [Chapter 5] lasts 4 days [Chapter 5] starts at [Chapter 4]'s end [Chap 5 milestone] happens at [Chapter 5]'s end [Chapter 6] lasts 4 days [Chapter 6] starts at [Chapter 5]'s end [Chap 6 milestone] happens at [Chapter 6]'s end [Chapter 7] lasts 4 days [Chapter 7] starts at [Chapter 6]'s end [Chap 7 milestone] happens at [Chapter 7]'s end [Chapter 8] lasts 4 days [Chapter 8] starts at [Chapter 7]'s end [Chap 8 milestone] happens at [Chapter 8]'s end [Chapter 9] lasts 4 days [Chapter 9] starts at [Chapter 8]'s end [Chap 9 milestone] happens at [Chapter 9]'s end [Chapter 10] lasts 4 days [Chapter 10] starts at [Chapter 9]'s end [Chap 10 milestone] happens at [Chapter 10]'s end [Chapter 11] lasts 4 days [Chapter 11] starts at [Chapter 10]'s end [Chap 11 milestone] happens at [Chapter 11]'s end [Chapter 12] lasts 4 days [Chapter 12] starts at [Chapter 11]'s end [Chap 12 milestone] happens at [Chapter 12]'s end [Chapter 13] lasts 4 days [Chapter 13] starts at [Chapter 12]'s end [Chap 13 milestone] happens at [Chapter 13]'s end @endgantt

    Produced using

    java -jar ~/whereIkeepit/lib/plantuml.jar learnX.puml

    So when confronted with a subject completely foreign to me the Gantt chart will cover every chapter of some good book on the subject. WBS will be reserved for places where I get 'stuck.' Of course you can find Graphviz, Java, and the PlantUML jar online by searching.

    Celebrate Intellectual Diversity

Re: RFC: "Today I Learned" page
by jdporter (Paladin) on Jan 31, 2024 at 15:54 UTC

    Followup

    It looks like there is some interest in the feature. Should I go ahead and publicize it?

    I have recently completed the following enhancements:

    • Entries which are new since the last time you visited the page are highlighted.
    • The page can be linked in nodelets (and elsewhere) in a way that displays whether there are new additions since the last time you've visited.
    • Contributors get +1 XP for adding an entry. (And -1 XP if the entry gets deleted.)
    • Contributors can delete their own entries.
    • janitors can delete any entries.

      • The page can be linked in nodelets (and elsewhere) in a way that displays whether there are new additions since the last time you've visited.

      Please excuse my ignorance. How can I do that?

      Greetings,
      -jo

      $gryYup$d0ylprbpriprrYpkJl2xyl~rzg??P~5lp2hyl0p$

        You can't. At least not yet. It is so linked in the Leftovers nodelet.

        Where else would people like to see this linked? As discussed previously, it's probably not important enough to warrant inclusion in the menu 'bar' at the top of the page....

      Nice work. Go for it :)

      Contributors get +1 XP for adding an entry. (And -1 XP if the entry gets deleted.)

      I guess that's a net -1 if they add an entry and it then gets deleted? Otherwise the XP magnets will just spam the socks off it.


      🦛

        No, it's a net zero. +1 for add, -1 for delete. Zero.

Re: RFC: "Today I Learned" page
by Arunbear (Prior) on Jan 13, 2024 at 12:23 UTC
    I like the idea of sharing such knowledge, but in a social context such as this, anything worth sharing would be worth commenting on as well. So I'd rather have a section for such things (or perhaps allow such content in Meditations).

    That would also allow posters to share more details about why the item is interesting, etc.

      I don't actively disagree; but we have Meditations, so if someone prefers to share in that way, they already can. Having more modes seems like a net positive, generally. (That being said, I would never claim that Today I Learned is impeccable.)

      I believe Meditations is (or should be) much wider open, topically, than the rest of the site. I encourage people to use it as a personal blog. Pretty much no one has yet. Not even me. :-)
      ... Which, by the way, is why I created the User Posts page. And you can embed this on your homenode by going to User Settings > Sections to Include in Your Blog Stream.

      Today's latest and greatest software contains tomorrow's zero day exploits.
Re: RFC: "Today I Learned" page
by cavac (Parson) on Jan 12, 2024 at 10:09 UTC
Notion (was: Re: RFC: "Today I Learned" page)
by Bod (Parson) on Jan 11, 2024 at 21:20 UTC
    It works really well. Notion is amazing

    Notion is great for individual use or small teams. But, as you suspected, it doesn't scale especially well. I have a client who tried to use it, and we had great success for a while until it quickly filled up, and the bill crept up as performance reduced. They switched to OneNote, which is better but still not a perfect solution.

Re: RFC: "Today I Learned" page
by erix (Prior) on Jan 15, 2024 at 10:17 UTC

    Shouldn't new TIL's appear on Newest Nodes? (I think they should.)

      Yes, and there should be a link to the section on the menu bar at the top of the site. At the moment, the only link I have is in my Editors Nodelet, because I'm a janitor.

      Cheers,

      Athanasius <°(((><contra mundum סתם עוד האקר של פרל,

        The top menu bar is quite full as it stands. But I agree that there ought to be a way for TIL to be found - perhaps a link in the Leftovers nodelet?


        🦛

      No, because entries in TIL are not nodes. They're actually almost exactly like messages in your personal inbox.

        That's a leaking implementation detail ;-)

        map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
        No, because entries in TIL are not nodes

        That doesn't stop them from appearing on the same page as Newest Nodes

Re: RFC: "Today I Learned" page
by Tux (Canon) on Jan 15, 2024 at 08:37 UTC

    I like it, but it needs a date tag on the entries and likely a minimal version of perl where the TIL is relevant to.


    Enjoy, Have FUN! H.Merijn

      They have date tags. Please read the rest of the thread.

        I did, and still didn't see them. Now I do. Just have to hover way longer than expected.

        Maybe add --- Dec 2023 --- separators or somesuch.


        Enjoy, Have FUN! H.Merijn

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: monkdiscuss [id://11156858]
Approved by marto
Front-paged by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (5)
As of 2024-05-21 10:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found