Interesting video about learning a complex topic. Notes:

Steps:

  1. Context-Broadening: Check a news article to get real world, visual, detailed information to help you care about the topic
  2. Dopamine Priming: Understand the benefits/cons of learning the topic. Dopamine is about the anticipation and drives behavior
  3. Singular Deep Dive: Opposite of overviews/by the book (works for her/ymmv) narrow reads and switching when questions arise or interest is lost
  4. Challenge Sandwich: Apply what you learnt: Project, take tests. Books are allowed. Interveawe challenge and reading as needed
  5. Getting Broody: Leave the topic and understand that you aren't done. Return to it over time (flashcards, spaced repetition)
  6. False Deadlines: create small time boxes, even when they are unachievable. Repeat again and again (create urgency)



Tempted to buy "Structure and Interpretation of Computer Programs, JavaScript Edition"




This talk by Marty Pitt has low-key blown my mind: https://www.youtube.com/watch?v=GUAVOkz_zWU

Despite the type-aliases in the title, that seems to be the least important part of the talk. Some quick notes:

  • Distinguish between Semantic Contract and Structural Contract
  • Makes a point on how Semantic Contracts are easier to share and encourages to do so
  • Makes a point on how Structural Contracts are a pain to share and encourages to keep that private
  • Taxi language can define semantic contracts. You can use Kotlin type aliases to write taxi semantic contracts
  • Orbitalhq is a docker image that can consume semantic contracts and register data sources (DB, Kafka, REST API, Soap, etc)
  • This wasn't mentioned, but you pay for orbital, the free tier is very limited. Still amazing what it can achieve.
  • You can use taxi language queries to request an arbitrary structure of semantic data. (can also be written in Kotlin)
  • Orbital can then automatically reach to the different sources and look for the semantic data and arrange it as requested

The result is:

  • A single, formal, definition (across teams) of the semantic contracts
  • Clients do not care where the semantic data is coming from. Resilient to changes.
  • Orbital automates SQL, Kafka, REST glue code reducing overall code required.

My concerns:

  • Does Orbital have any permission management? Exposing DB model and data seems dangerous without it.
  • Can contract sync be an issue?

Overall what orbital does is impressive. I don't think I have seen it elsewhere. Nothing here is really Kotlin specific besides the fact that you can define taxi lang constructs (contracts and queries) with type safe Kotlin which actually is convenient as well.




Loans are yours lol afk




An anonymous donor gave almost 400K USD on ether to RedoxOS. I absolutely love the project and I hope this helps to accelerate its development.




class A;class B;fun B.f(){};context(A, B)fun t(){f()}

Bug in experimental Kotlin: YouTrack ticket and a explanation about FIR (Frontend IR)




I had a good weekend at the beach and I just learnt about two interesting developments:

  1. Alistair Cockburn, Agile Manifesto cosigner and creator of Hexagonal Architecture has created a website for his architecture. He also requested feedback before that, so I am curious of how the site evolves (for now it is a collection of explanations which is already a great start)
  2. htmx's discord server added a Kotlin channel after my suggestion on the java channel, there is interest for a blog/example.



I joined my first Homebrew website and indie web camp online meeting in general yesterday 😊 (wiki).

Tracy and Angelo were there, we discussed interesting topics and showed each other what we are working on. The direct benefits for my site have been:

  • My website now uses IndieAuth.com, Aperture (Microsub server)
  • Now I can use Monocle and other Microsub clients
  • I reactivated Webmention and tested they are working correctly with Comment Parade (I am not publishing any Webmention yet)
  • I added a Score section in my footer which shows a link and image taken from the page for my domain in IndieWeb.rocks
More highlights of the meeting:
  • Angelo's the-street a way to give an address to domains inspired by Snow Crash. I will add bellow my interpretation and derived ideas:
    • The address is a domain hash, a lot of hashes will not point to an active domain
    • To solve this issue lists of addresses can be created. 'the-street' is one such list
    • I imagine that these lists could be navigated similar to webrings
    • All sorts of visualizations could be created as well (from street representations to plotting in a graph)
    • Address list could also be merged to display my own personal list of all the websites I share a community with
    • I could even see how many communities do I share with one or another domain
    • Any plain old links page/blogroll could be enhanced with a visualization, the actual hash can be hidden from view
    • A (separate?) path hash could help us map out people located on shared services such as Known
  • Discussed with Tracy and Angelo about pop-ins, personas, online meetings and collaboration.
  • Learnt about https://www.gather.town/ dynamic videocall rooms with 2D videogame controls. Free up to 25 people at a time
  • Learnt about whostyle, a way to have a say on how the reader will display your mf2 content and it's complications
  • Proposed "alternate embed" or "alternate embeddable" that would point to an embed friendly version of your page. This should be more powerful than whostyle and easier to implement (I assume)

Looking forward to joining more meetings!




publish.twitter.com or clicking '...' and 'embed tweet' allows you to generate html to show a tweet in your personal website.

It also allows twitter to run their JavaScript and track visitors. However, there is an easy fix. You see, the Twitter embed actually contains a quote about the tweet in case JavaScript is off. This can provide a useful starting point.

See raw twitter embed html
<blockquote class="twitter-tweet" data-lang="en" data-theme="dark">
  <p lang="en" dir="ltr">
    <a href="https://t.co/kulxLw8m0r">https://t.co/kulxLw8m0r</a> 
    Impressive stuff 
    <a href="https://twitter.com/hashtag/Nanite?src=hash&amp;ref_src=twsrc%5Etfw">#Nanite</a>
    <a href="https://twitter.com/hashtag/UnrealEngine?src=hash&amp;ref_src=twsrc%5Etfw">#UnrealEngine</a> 
    5
  </p>
  &mdash; Corlaez (@Corlaez) 
  <a href="https://twitter.com/Corlaez/status/1461732669188882442?ref_src=twsrc%5Etfw">November 19, 2021</a>
</blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

But t.co?, src=hash&amp?, ref_src=twsrc%5Etfw? ... Yeah, besides deleting the script tag we will need to delete extra url params and open the tweet to copy the real URL I intended to share.

See the twitter embed html after a cleanup
<blockquote>
  <p>
    <a href="https://www.youtube.com/watch?v=eviSykqSUUw">https://www.youtube.com/watch?v=eviSykqSUUw</a> 
    Impressive stuff 
    <a href="https://twitter.com/hashtag/Nanite">#Nanite</a>
    <a href="https://twitter.com/hashtag/UnrealEngine">#UnrealEngine</a> 
    5
  </p>
  &mdash; Corlaez (@Corlaez) 
  <a href="https://twitter.com/Corlaez/status/1461732669188882442">November 19, 2021</a>
</blockquote>

And this is what it looks like:

https://www.youtube.com/watch?v=eviSykqSUUw Impressive stuff #Nanite #UnrealEngine 5

— Corlaez (@Corlaez) November 19, 2021



First note to self: Norm left us too soon.