✉️ Not subscribed yet? Subscribe to the Newsletter

Future of Coding Weekly 2020/02 Week 4

2024-04-10 10:08

On the experiment side, this week I started playing with emojis to allow quick scans for content of interest, I will try to be consistent with the emoji usage so people can use them to orient around a previously dry wall of text (the tool I use doesn't excel at promoting creative expression)

Demos

🎥New little demo of end user software customization by Geoffrey Litt

  • Sort Hacker News by total points descending, for a more stable ranking
  • Remove the articles I've already read

--

💻Chet Chorcos shared a full-stack prototype of collaborate web application backed by a Datalog-inspired database he built in one day.

📑 Useful resources mentioned in the How does it work? section of the readme.

--

🎥 A brief walk-through on the steps needed to create launch visualizations from the SpaceX HTTP JSON API (cameo of the basket to ease drag and drop of multiple things in targets far apart from the source). Also short demos about Premier League Attendance and Goals by Team from CSV File and Sales KPIs from an Excel Spreadsheet by Mariano Guerra

From our Community

🎥Beyond Snapping: Persistent, Tweakable Alignment and Distribution with StickyLines

UIST 2016: Proceedings of the 29th Annual ACM Symposium on User Interface Software & Technology

Aligning and distributing graphical objects is a common, but cumbersome task. In a preliminary study (six graphic designers, six non-designers), we identified three key problems with current tools: lack of persistence, unpredictability of results, and inability to 'tweak' the layout.

We created StickyLines, a tool that treats guidelines as first-class objects: Users can create precise, predictable and persistent interactive alignment and distribution relationships, and 'tweaked' positions can be maintained for subsequent interactions.

--

🎥Beyond Grids: Interactive Graphical Substrates to Structure Digital Layout

CHI'17: ACM CHI Conference on Human Factors in Computing Systems Session: Spatial & Temporal Design

Traditional graphic design tools emphasize the grid for structuring layout. Interviews with professional graphic designers revealed that they use surprisingly sophisticated structures that go beyond the grid, which we call graphical substrates.

We present a framework to describe how designers establish graphical substrates based on properties extracted from concepts, content and context, and use them to compose layouts in both space and time.

--

🎥Project Lincoln: Adobe MAX 2017 (Sneak Peeks)

Lincoln is a data visualization tool for designers to link graphics to data without the need to code.

--

🎥Data Illustrator: Create infographics and data visualizations without programming

Augmenting Vector Design Tools with Lazy Data Binding for Expressive Visualization Authoring.

Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, 2018

--

🌐Charticulator: Create Bespoke Chart Designs without Programming. ( 🎥 Video)

--

🎥Jennifer Mary Jacobs - Domain Specific Programming Platforms for Creativity

--

📝Programmer's critique of missing structure of operating systems by @bystroushaak who expresses his frustration in using raw text (files, command parameters, environment variables, socket...) as unique way to communicate at the OS level.

--

📑 A list of future of programming projects maintained by Daniel García Carmona.

--

🧵 A twitter thread by @gravislizard argues that keyboard based old text UI was faster and not necessary less intuitive than web UI with mouse: > almost everything on computers is perceptually slower than it was in 1983 amber-screen library computer in 1998: type in two words and hit F3. search results appear instantly. now: type in two words, wait for an AJAX popup. get a throbber for five seconds. oops you pressed a key, your results are erased.

Follows a Slack thread which eventually discusses distributed, interactive, stateful apps/systems.

--

🎥Stamper: An Artboard-Oriented Creative Coding Environment by Cameron Burgess (🧵Slack Thread, Twitter Thread)

Stamper is an alternative editor for p5.js, inspired by design software with Artboards (e.g. Sketch, Illustrator)

📝 Read more here: Stamper: An Artboard Oriented Programming Environment

Future of Coding Weekly 2020/02 Week 3

2024-04-10 10:07

Announcing the awesome program for the Convivial Computing Salon 2020 - ‹Programming› 2020

Demos

Raathi Kugarajan shared his project JSBubbles: Re-imagining reading and navigating JavaScript codebases in VSCode

I was tinkering with a VSCode extension inspired by Code Bubbles but my effort was mostly focused on navigating and reading JavaScript code bases.

--

Andrew Reece posted a second DevLog for WhiteBox, a live debugger/REPL for C(++) - now with a GUI, a familiar debugger-like data tree, graphing variable value changes across a function.

WhiteBox DevLog 2 - GUI, data trees and graphing values over time

--

Bloques Web Update by Mariano Guerra

An update to the tool to teach HTML/CSS/JS to non programmers, added new high level blocks, some even for layout, two lower level layers that get closer and closer to textual HTML. Also added import/export.

From our Community

Talk presenting Geometric Algebra for Computer Graphics which seems to simplify operations compared to other representations.

More information on the website https://bivector.net/

Clifford's Geometric Algebra enables a unified, intuitive and fresh perspective on vector spaces, giving elements of arbitrary dimensionality a natural home.

Implementations in Javascript, c++, c#, rust and python at the ganja.js project.

--

Jason Laster shared Web Replay which supports Time Travel Debugging

Web Replay records your entire application, so you can track bugs down faster, understand your code better, and always get perfect bug reports.

--

Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability by Greg Law via Karki

Topics discussed included: the challenges with debugging modern software systems, the need for “hyper-observability” and the benefit of being able to record and replay exact application execution; and the challenges with implementing the capture of nondeterministic system data in Undo’s LiveRecorder product for JVM-based languages that are Just-In-Time (JIT) compiled.

--

All Programming Languages are Wrong by David A. Moon (Slack Thread)

Most current-day programming languages seem to be based on the idea that computation is slow, so the user and the compiler must work hard to minimize the number of instructions executed.

Compromises to minimize instructions extend so far as to make familiar-looking operators like + and < behave in unintuitive ways. If as a result a program does not work correctly in some cases, it is considered to be the programmer's fault. But it is really the language designer's fault.

--

Ryan Florence on twitter:

Whenever I talk to teenagers about programming they want to do it on their phone.

And an interesting Slack conversation about it.

--

Graydon Hoare on "text is already a highly-structured graphical notation" via yoshiki

many technical innovations are latent in textual notations. Visually unambiguous yet uniform symbol sets, combinatorial-positional word formation, linear spatio-temporal segregation, punctuation and structured page layout .. these are all technologies in writing that we had to laboriously invent, and they have purposes, advantages! Similarly in coding, we had to invent and adapt technologies from verbal and mathematical notations refined over millennia: lines and columns, indentation, block layout, juxtaposition and precedence, scope, evaluation order, comments, grammars, version control, diff and merge algorithms ... the pile of structuring technologies embedded in the textual representation of programs isn't free, and it isn't useless

So I'm just really cautious when people suggest throwing it all out for some hypothetical reinvention. You need those structures: so you've got an immediate problem of "what are you going to use instead", and a longer-term question of "what makes you think you're not going to wind up right back at the same place ten thousand years of refining graphemes-on-a-page wound up"?

There's more where those quotes came from: Re: Graphical Editors

--

Chris Knott shares an interesting story about evolving clocks to solve a particular problem in a Slack conversation. A similar story about the MacCready Gossamer Albatross is shared there too.

Some quotes:

importance of not confusing incidental problems for fundamental problems

the entire issue is not solved, but sidestepped

Future of Coding Weekly 2020/02 Week 2

2024-04-10 10:06

New Future of Coding Podcast #44 - Making Your Own Tools: Devine Lu Linvega | Future of Coding by Ivan Reese

Devine Lu Linvega and his partner Rekka live on a sailboat. He makes art, music, software, and other cultural artifacts. When Photoshop’s DRM required that he maintain a connection to the internet, he wrote his own creative suite. When his MacBook died in the middle of the ocean, he switched to Linux with hardware he could service. His electricity comes from solar panels, and every joule counts — so that’s out with Chrome and Electron and in with Scheme, C, assembly, and maybe someday Forth.

Demos

Customizing Airbnb with a spreadsheet by Geoffrey Litt

At 3:10 in this demo video, I drag select multiple listings on a website, and bulk perform an action on them.

From our Community

Anders Hejlsberg on Modern Compiler Construction. By Anders Hejlsberg via Daniel

In this video Anders a great foundation of compiler construction by describing the traditional methodologies that have been used in the last 30 or so years. He then uses that foundation to describe modern tooling needs and how compilers have adapted to meet increasing demands.

--

An interesting Twitter thread on the preservation of digital art, including comment on how it hurts that digital artists can't fully manage the media they use. (Long and interesting Slack Thread). By Matt Popke via Konrad Hinsen

--

Programs are a prison: Rethinking the fundamental building blocks of computing interfaces. By djrobstep (Slack Thread via Shalabh Chaturvedi)

We often hear that Apple's ecosystem of apps (or Microsoft's, or Google's) are "walled gardens". But what about the individual applications themselves?

--

Arcan is a powerful development framework for creating virtually anything between user interfaces for specialised embedded applications all the way to full-blown standalone desktop environments. Boot splash screen? no problem. Custom Interface for your Home Automation Project? sure thing. Stream media processing? Of course. AWB "Desktop" concept ~5min video. By Bjorn Stahl via S.M Mukarram Nainar.

--

Interesting conversation on Slack about the positive benefits of accidental / incidental complexity.

--

This week on Slack, a fun prompt from Brandon Hudgeons (via Kartik Agaram):

You get to name an assertion the ___ Paradox (fill in your last name). What do you choose?

Come join Slack and start a new thread about your paradox!

--

Roam Research is looking for a Full Stack Engineer (Leaning Backend) by Conor White-Sullivan

Should love Clojure, be comfortable with some devops type work, and ideally have experience with Datomic and datalog.

Big points if you're familiar with the work of Doug Engelbart, Bret Victor, Michael Nielsen, Andy Matuschak, and Alan Kay.

SF preferred, but we'll consider remote.

--

Operon 0.5.0 is out, find it from https://operon.io (Java-binary and pdf-booklet) by OperonGuy (Slack Thread)

It is also the first public release and I'm hoping for feedback on the most rudimentary things; did you get the queries running (if you had a chance to try)? What was your initial impression on the language? Did you encounter anything illogical or that you could consider as possible design flaw?

I have not yet documented everything, so there's more to come on later releases. Also none of the components were yet released, so it is just the core that is out now. Love to hear back from you!

--

Summary of a paper: Paper; Didn't Read - Statecharts: A Visual Formalism For Complex Systems by instadeq

statecharts = state-diagrams + orthogonality + depth + broadcast-communication

--

Thomas Ballinger wrote some posts about "Observable for Jupyter Users".

A lively discussion in the Slack Thread

I'd be particularly interested in whether you think I'm identifying the differences in workflow in a digestible way. The goal is that these are tutorials, not marketing documents, if there's a difference. I guess they're marketing documents for programmers, not CEOs.

--

An article about Glamorous Toolkit describing what one rendering tree means and the doors it opens for creating new kinds of 2D interfaces: One rendering tree. Via Tudor Girba (Slack Thread)

Future of Coding Weekly 2020/02 Week 1

2024-04-10 10:02

Psychology of Programming Interest Group Call for Papers

The 31st Annual Meeting of the Psychology of Programming Interest Group will be hosted for the first time in North America, at OCAD University's Inclusive Design Research Centre in Toronto, Canada, during the week of July 29-31, 2020.

From our Community

Catalog of Visual Math Tools (Slack Thread)

--

Mike Travers joins our slack and introduces himself and his work. He worked at MIT MediaLab long time ago on Behave! an interesting block based visual language for simple agent programming, that was one of the ancestor of Scratch. He now works on visual programming based on Blockly to help scientist build queries to scientific data (see this presentation).

--

GopherCon Europe 2019: Ivan Daniluk - Rethinking Visual Programming Presentation. (Slack Thread) via Edward de Jong

Blog post: Rethinking Visual Programming with Go

--

Play: A new approach for creating better mobile apps via Achraf Kassioui (Slack Thread)

Play empowers you to design, build and launch better mobile products, in less time, with fewer barriers - all on your mobile device.

--

Mariano Guerra shared a video showing an educational prototype to produce HTML pages using Blockly to learn what HTML structure looks like without having to worry about syntax at first. The prototype is online (in Spanish) and its sources are on GitHub.

--

Jonathan Blow talking about his past, of course about games, but also about programming today, open source, C++, Rust, the future of programming, and many other issues people here will be interested in (and/or annoyed by his perspective ;-): On the Metal Podcast: Jonathan Blow (Slack Thread) via Stefan Lesser

--

Algojammer is an experimental, proof-of-concept code editor for writing algorithms in Python. (Slack Thread) via Shalabh Chaturvedi

--

Internship Opportunities: Designing for spreadsheets and programming languages at Microsoft Research in Cambridge. via Daniel Garcia

Future of Coding Weekly 2024/04 Week 2

2024-04-07 23:14

🔮 Towards a modern Web stack 🎥 ThinkyCon 2024 👷 FoC Project Updates

Two Minute Week

💬 Chris Maughan

🧵 conversation

A simple demo, trying to show how a pin-hole camera works. Not really how it works, but kind of. 😉

The 'film' in the back of the camera is a 'flatland' view of the scene, upside down, of course....

🎥 balls demo

Our Work

💻 resheet.dev: A notes-spreadsheet-hybrid for programmers via Daniel Krüger

🧵 conversation

I'm currently building resheet.dev, a notion-spreadsheet-hybrid. Started because I often ran into limitations with Notion and with spreadsheets. In Notion I wanted to be able to just do some calculations (or even have some embedded spreadsheet). Spreadsheets are nice, but I always ran into limitations. I always thought these could easily be overcome by having a more feature-complete programming language. Because I previously failed very hard by being too ambitious, I tried to keep this project simple. ReSheet runs JavaScript with React because of the vast ecosystem and wide adoption.

It was important to me that it's core is simple and extensible: Everything revolves around the concept of a "Block", which can be thought of like a cell in a spreadsheet. Blocks can be nested and you're able to write and then use your custom Block completely in ReSheet itself. As ReSheet itself is just one big Block you can embed ReSheet in itself.

Maybe sometime in the future I'll get to work on a Block for visual and interactive programming, but currently I'm trying to get it reliably working and useful in the current state.

I'd love to hear your feedback and to answer any questions! (Documentation is still lacking. Currently working on adding some example documents (in ReSheet) to better show what's possible)

📝 Lattice now compiles to .NET IL — John Austin via John Austin

🧵 conversation

I wrote up a blog post recently on Lattice, a high performance visual programming system aimed at Unity.

Thought you all might find it interesting!

📝 Lattice now compiles to .NET IL — John Austin

Lattice is a high-performance visual scripting system targeting Unity ECS. Read more here . I’ve tried several times to write blog posts about Lattice, and each time I’ve gotten lost in the weeds. It’s hard to pick a point to start. So instead, I’ve resolved to just start writing — quantity o

🚲 Projects related to Bicycle Computing via nichoth

🧵 conversation

Another day, another module

Devlog Together

📜 Future of Coding Weekly 2020/01 Week 3 via Mariano Guerra

🧵 conversation

I got a simple idea to migrate the old newsletter posts to the "blog", here's the first one I have: newsletter.futureofcoding.org/posts/future-of-coding-weekly-202001-week-3

I noticed that all links go through tinyletter but they still seem to work, example: mail01.tinyletterapp.com/marianoguerra/future-of-coding-weekly-2020-01-week-3/161[…]youtube.com/watch?c=f8edef3a-2c5e-4af4-a34d-904e97c707cf

there's not enough information to recover them from url itself but since they are still working I should resolve them to the originals as fast as possible in case that service is turned off too 😕

Update: I wrote a script to replace all redirect urls to the original ones, the post above is updated

💬 Ivan Reese

🧵 conversation

Today, I'm trying to get function signatures for all the std lib stuff in JS… at runtime. Current attempt is converting various d.ts files from the typescript package (like, say, es5.d.ts) into a JSON file with just the bits I need. If that fails, I might try parsing the official WebIDL files (that are used to generate these d.ts files — at least, the dom ones).

If there's a much more obvious way to get this info, let me know. I basically just want something that, for a given function (eg: Array.prototype.splice), gives me some basic signature info (eg: 1-2 args with rest, first arg is called "index", optional second is called "delete", rest is "items"). If all else fails I'll just do .length on these functions, but I'd prefer to get names too.

🎥 Simple state machine with value slider for brightness control and image in code-flow-canvas via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

I've been fixing some bugs in the state-machine node-type in my visual programming system "code-flow-canvas" and also added a small media-library node-type which can be used by the show-image node-type.

The show-image node-type can be controlled by the state-machine together with some UI node-types (button and slider).

The show-image node-type also has an ability to change it's css and use flow parameters/variables (currently only the incoming value of a event/value special input-type.. I want to make this more generic in the near future so that you can send custom property-bags "over the wire" to other nodes).

The timeline slider doesn't work together nicely with the slider node-type yet, so I have to work on that further.

This example can be found on demo.codeflowcanvas.io in the "examples" drop down: "Simple state machine with image and brightness".

Thinking Together

📝 The origins of silicon valley via Paul Tarvydas

🧵 conversation

Silicon Valley vs. non-compete clauses. guitarvydas.github.io/2024/04/05/The-Origins-of-Silicon-Valley.html

📝 The origins of silicon valley

I attended this talk https://events.vtools.ieee.org/m/409693 by Paul Wesling in-person, yesterday.

Content

📝 Month of Future of Coding Past via Mariano Guerra

🧵 conversation

Following the 💬 conversation here I decided to experiment with a "Month of Future of Coding Past".

Every week I will dump from tinyletter and re upload one month of the Future of Coding Newsletter and publish it as a message here, that way we can all go over past conversations and links and I have a reason and rhythm to make them available again.

A month re uploaded per week will allow me to catch up faster than "realtime" but still at a pace I can probably keep.

Here's the first edition, the first two newsletters I have in my email (January 2020):

🕹️ free software and game development via Joe Nash

🧵 conversation

This article talks about “Living games” and game engines that enable living games by i.e. having no separation between the editor and the runtime, and gets into some FoC territory I think y’all will enjoy

🔮 Towards a modern Web stack via Ivan Reese

🧵 conversation

-> Towards a modern Web stack

Cool new take on the Extensible Web Manifesto, this one from Hixie (Acid2, Acid3, WHATWG, Pingback, Flutter, etc).

I love the breakdown — Wasm, WebGPU, ARIA, and HID. I would build on that stack!

🐦 Amelia Wattenberger 🪷 (@Wattenberger) on X via Christopher Shank

🧵 conversation

New music genre just dropped

🐦 Amelia Wattenberger 🪷 (@Wattenberger) on X: I did some cutting-edge AI research into the best way to read code. 100% now part of my workflow:

"use client"; mongolian throat singing v3

📑 a list of random software engg ideas via Nilesh Trivedi

🧵 conversation

A couple of years ago, I noticed how Juan Benet (founder of IPFS) was keeping a list of random software engg ideas in a github repo as issues. Since then I too started keeping my own list of "RFH"s ("Request for Hacks") - similar to Request for Comments and Request for Startups - here: codeberg.org/nilesh/request-for-hacks/issues and recently made it public.

Posting ideas in a place where public discussion can take place seems like an excellent way to get open feedback or review. I encourage other programmers to do the same. Perhaps, /<username>/request-for-hacks can become a standard way to discover these. 🙂

image.png

🎥 Alan Kay at MIT-EECS 1998 Fall Semester Colloquium Series (VPRI 834) via Oleksandr Kryvonos

🧵 conversation

Youtube Thumbnail

I watched older video by Alan Kay and now I want to give a Squeak another try

🎥 ThinkyCon 2024 - Day 1 via Ivan Reese

🧵 conversation

Youtube Thumbnail

There's a puzzle game conference called ThinkyCon that's currently running. Some of the talks are about editor tooling (like this one, about the dev tooling used for the game A Monster's Expedition), which feels roughly relevant to this community. But there's one talk in particular that I must draw your attention to because this is the internet and I need to earn points. The talk is called "Rewinding: moving time backwards in planning-based games". The first example they use of a game that ought to have rewind but doesn't is Opus Magnum, a game by Zachtronics that is the spiritual successor to SpaceChem. I'd argue that both of these games are visual programming environments, and that this talk is basically an argument that visual programming deserves the ability to rewind time.


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2020/01 Week 4

2024-04-03 15:42

Welcome! this week I'm trying a different format for entries, let me know if you notice and what you think about it :)

Demos

Instadeq No Code Data Science Update: Time Traveling Undo

New feature to undo changes by seeing the different states of an entity through time and picking one to restore.

From our Community

Steve Dekorte started a really interesting conversation about different ways of representing nothingness, and how that sometimes chaffs against type discipline. The conversation goes deep on data modelling and representation.

--

What's wrong with computational notebooks? by Austin Z. Henley (Slack Thread)

Computational notebooks, such as Jupyter Notebooks, Azure Notebooks, and Databricks, are wildly popular with data scientists. But as these notebooks are used for more and more complex tasks, data scientists run into more and more pain points. In this post I will very briefly summarize our method, findings, and some opportunities for tools.

This post is an informal summary of our recent CHI'20 paper, "What's Wrong with Computational Notebooks? Pain Points, Needs, and Design Opportunities". Check out the preprint for more details.

--

Fabrik - A Visual Programming Environment by Dan Ingalls and others (Slack Thread and Twitter Thread)

Fabrik is a visual programming environment - a kit of computational and user-interface components that can be "wired" together to build new components and useful applications. Fabrik diagrams utilize bidirectional dataflow connections as a shorthand for multiple paths of flow. Built on object-oriented foundations, Fabrik components can compute arbitrary objects as outputs. Music and animation can be programmed in this way and the user interface can even be extended by generating graphical structures that depend on other data. An interactive type system guards against meaningless connections. As with simple dataflow, each Fabrik component can be compiled into an object with access methods corresponding to each of the possible paths of data propagation.

--

Principles of Effective Research by Michael Nielsen has some good tips on conducting research. (Slack Thread)

A video by Philip Guo PG Vlog #___ - Nielsen's "Principles of Effective Research": what i find most relevant for students

--

Will the future of coding be statically, dynamically typed, both or neither? Alexis King thinks that No, dynamic type systems are not inherently more open. (Slack Thread)

Hillel Wayne has A Totally Polished and not-at-all half-baked Take on Static vs Dynamic Typing

--

Vladimir Gordeev shared a presentation he gave at his university: Towards efficient development tools (Slack Thread)

In presentation I tried to show the possibility and need for better tools. I did a short overview of existing FoC projects, talked a bit about project I am working on: a generic tree editor (structure editor) that doesn't tied up to any PL. I also talked about idea of designing PL by balancing Order and Chaos, ideas that I got from Jordan Peterson.

I believe that breakaway from text-based editing towards structure-based is an inevitable event for future of programming.

I also have some other ideas about programming languages that I would like to build on top of this tree editing platform, but it is not covered in presentation.

--

Branislav Selic - On the Engineering of Software-Based Systems for the 21 st Century (Slack Thread)

--

Learning from failed utopias of the recent past: Whatever Happened to the Semantic Web?

The web we have today is slowly becoming a glorified app store, just the easiest way among many to download software that communicates with distant servers using closed protocols and schemas, making it functionally identical to the software ecosystem that existed before the web. How did we get here? If the effort to build a Semantic Web had succeeded, would the web have looked different today? Or have there been so many forces working against a decentralized web for so long that the Semantic Web was always going to be stillborn?

--

How Figma’s multiplayer technology works

Our primary goal when designing our multiplayer system was for it to be no more complex than necessary to get the job done. A simpler system is easier to reason about which then makes it easier to implement, debug, test, and maintain. Since Figma isn't a text editor, we didn't need the power of OTs and could get away with something less complicated.

Figma's tech is instead inspired by something called CRDTs, which stands for Conflict-free Replicated Data Types. CRDTs refer to a collection of different data structures commonly used in distributed systems. All CRDTs satisfy certain mathematical properties which guarantee eventual consistency. If no more updates are made, eventually everyone accessing the data structure will see the same thing.

--

GUIdebook: Graphical User Interface gallery, curated videos, books, screenshots, articles, etc. that explore the history and evolution of the graphical user interface.

a website dedicated to preserving and showcasing Graphical User Interfaces, as well as various materials related to them.

Past Futures of Coding

Self: The Movie; an overview of the self programming language from 1995.

Another self presentation: Self and Self: Whys and Wherefores

(September 30, 2009) David Unger, from IBM Research, discusses how his experience in computer science has led him to the conclusion that even if your ideas succeed, the real legacy is the people.

Future of Coding Weekly 2020/01 Week 3

2024-04-03 11:12

Welcome! we are slightly over 150 members, let's try the 200 goal for next month :)

This time I introduced some simple separators between entries so it's clear where something ends and the next thing starts, let me know what you think.

Demos

Edward de Jong posted a new example showing the physical units of measurement feature in the Beads language, which tracks units at runtime (by storing the exponents of the component physical unit terms along with the value). A few languages have included physical units, but it is extremely rare to track the units at runtime.

For the heat transfer app, see https://github.com/magicmouse/beads-examples, for the SDK go to beadslang.com, for more information check beadslang.org (which is different from the previous one)

(Slack Conversation)

--

Mariano Guerra shared a demo: No Code Data Science Update: Drag & Drop Basket, Workspaces and Search (Slack Conversation)

Easier drag & drop of one or more items across long distances or across screens with the basket.

Workspaces can be created to work on different tasks and search used to navigate between them.

From our Community

Kartik Agaram Shared a really detailed spreadsheet: Future of Coding or Programming: Project Comparison

--

westoncb author of Lucidity introduced himself and presented another project: a slightly better known structure editor project called Tiled Text. (Slack Conversation)

--

nagle wrote a blog-post version of a paper submitted to PPIG (Psychology of Programming 2019) How Coda helps people overcome technology freeze

(Slack Conversation)

I'm sketching out a way to connect recent nervous system breakthroughs to programmable UI design, taking inspiration from how cognitive science breakthroughs anchored original UI design for the Alto.

Paper: Winter is Coding: On Programming & The Freeze Response

--

Michael Dubakov shared The 'No Code' Delusion (Slack Conversation)

Increasingly popular in the last couple of years, I think 2020 is going to be the year of “no code”: the movement that say you can write business logic and even entire applications without having the training of a software developer. I empathise with people doing this, and I think some of the “no code” tools are great. But I also thing it’s wrong at heart.

--

Mariano Guerra shared Compiling Dark to SQL

How do we make programs in Dark fast, while keeping complexity for developers really low?

We recently shipped a new Dark feature that compiles Dark code to SQL. This post goes into the nitty gritty details of how and why we built it.

--

Stefan Lesser shared Visual Calculations in the Shape Machine

What does it mean to have a new modeling software for design that allows scientists, engineers and designers to specify their actions by drawing shapes rather than by writing scripts? What is the difference between a shape you see and the way it is currently recorded in the database of your computer? What does it mean to program with shapes?

--

Ivan Reese shared Bret Victor's list of references

Didn't realize that Bret had directory listings enabled on his server, but it makes sense given other "open for people to view and tinker" things he's done. (My favourite: all his javascript is unminified so you can see how he implemented the dynamic examples in his essays.)

Future of Coding Weekly 2024/04 Week 1

2024-03-31 23:06

📑 algorithmicpattern.org λ Functions Everywhere, Only Once 🎨 Infinite Canvas Gallery

Our Work

📑 algorithmicpattern.org via Alex McLean

🧵 conversation

I belatedly updated the algorithmic pattern blog with some recent activities algorithmicpattern.org

λ Functions Everywhere, Only Once: Writing Functions for the Everywhere Computer – Fission via Zeeshan Lakhani

🧵 conversation

A co-worker and I published a post / overview on some stuff we’re working on. It’s about writing functions, compiling them to Wasm components, and combining them into a multi-language (Rust, Python, Javascript) workflow to run on the Everywhere Computer (a platform we’ve developed at Fission): fission.codes/blog/functions-everywhere-only-once.

Writing functions for the Everywhere Computer in Rust, JavaScript, and Python, and compiling to Wasm components with WIT and WASI to run everywhere

Devlog Together

💬 Mariano Guerra

🧵 conversation

Absolute/Relative Date Range UI

gd-dyndaterange.gif

progressive disclosure of complexity

click +/- to show/hide one extra offset field

ctrl+click to show/hide all

gd-range-more-less.gif

Thinking Together

🎥 The Better Parts. Douglas Crockford. JS Fest 2018 via Paul Tarvydas

🧵 conversation

Youtube Thumbnail

At about 54:20+, Crockford ends up saying that types cause bugs. What are examples of those kinds of bugs?

💬 Justin Janes

🧵 conversation

Does anyone have any solid papers on interactions with operating systems using primarily hand gestures from cameras and projectors? I know this is very dynamicland but i’m kinda tired of waiting for a system i can let the kids play with on the carpet.

🐢 scratch.mit.edu/projects/605658 via William Taysom

🧵 conversation

My sister asked whether her middle-school son should pick the choice of a block programming language (like Scratch), JavaScript, or C# for a class he's in. I claimed that he'll learn the same fundamentals with blocks minus the frustration, tedium, tea ceremony, and incantations associated with the others. To prove that the block program has the real creativity and that moving to the others is practically automatable, I took may favorite Scratch program and had Chat translate it into JavaScript and C# chat.openai.com/share/02215935-c0b8-4fc9-9bf9-94f0b3fab613. The results seemed promising. Chat even made helpful observations:

Translating the same Scratch program to C# requires a different approach because C# is often used in desktop applications, and there's no direct equivalent of the Canvas API like in web technologies. However, you can use Windows Forms or WPF (Windows Presentation Foundation) for graphical applications in C#. Here, I'll provide an example using Windows Forms to create a simple drawing application that mimics the Scratch program's behavior.

If you check my conversation, you'll see I start asking what a "partial class" is having never heard the term. Chat parroted:

Using partial classes in this way provides flexibility. You can start with all your code in one file for simplicity. Then, if the class grows or you decide to use the designer, you can easily refactor the designer-generated code into its own file without changing the class's functionality. This approach keeps your custom code separate from the auto-generated code, making it easier to read and maintain.

I explained that every language, every tool has many such conventions. You learn the ones reverent to whatever you're doing right now, but learning them all is impossible. Instead the real skill is knowing that you don't know and being able to find out quickly. We're lucky that a these things are obscure, come up often, and are discussed on the Web. Thus LLMs are especially good at helping with dumb programming problems.

So why use the established languages besides Chat knowing them well? I thought of three reasons:

  • Expressivity — Blocks will get a beginner pretty far, but you'll find the others have constructs that helpful for saying things that would be very hard with blocks. You won't appreciate scratch until you feel the itch.
  • Causal Powers — The block system will let you do things in class you'll learn core ideas, but the blocks themselves won't work everywhere. JavaScript, on the other hand, works all over on the web, and C# has its own ecosystem. Often there's bridging, but also one or other language will be the most natural one for certain kinds of work.
  • Scale — With big and medium sized programs being done with text, editors for wrangling it, and version control for keeping track of it exist. They can we weirdly powerful and janky. But you're liable to start having a hard time keeping track of blocks when it takes a dozen or more screens to fit them all.

Content

📝 Explorative Programming via Jeffrey Tao

🧵 conversation

🐚📜 Josh Horowitz (@qualmist@assemblag.es) via Ivan Reese

🧵 conversation

I've heard some tell of what Joshua Horowitz is up to, and it's exciting. He's set his sights on fixing some of the issues with shell scripting — and is looking for shell script users to interview:

📝 Josh Horowitz (@qualmist@assemblag.es)

Do you use shell scripts? :shell: :scroll: I'm conducting a study of how new tools might help. I'd love to talk with you about your shell experiences, and to run our new shell-scripting prototype by you. Interested? Heck yeah you are, here's a form (Novices & experts plz!)

🎨 Infinite Canvas app gallery via Kartik Agaram

🧵 conversation

A new category: infinite canvas apps

infinitecanvas.tools/gallery

jsoncanvas.org

canvasprotocol.org

Explore infinite canvas tools that work the way we think


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/03 Week 4

2024-03-26 04:35

🎼 Strudel REPL 🎙️ a podcast about Hest 🕹️ Playing with Code: Programming-Adjacent Games

Our Work

🕹️ Playing with Code: Programming-Adjacent Games via Mariano Guerra

🧵 conversation

I collected and summarized the answers to my question about programming-adjacent games

📄 Formula for generating distinct colors via Fredrik

🧵 conversation

For those situations where there's a need to automatically generate a unique color for each item in a set, I've figured out a formula that yields a good distribution based on the oklch color space. The attached document has some pretty infographics.

You can also see the source code of the document in Typst. Typst is already the future of programming.

📄 Formula for generating distinct colors

💬 Alex McLean

🧵 conversation

A tangible programming interface inspired by Andean khipu that we've been working on..

image.png

💻 Slate - A Playground for Ideas via Mohit Karekar

🧵 conversation

I recently thought about combining natural language prompts in code notebooks interface because it seemed like a great use case to me. While working with data, a mixture of low-level capability of writing code and a high-level capability to write transformations or visualization instructions in natural language can be a great advantage. You can code when you want to, and completely skip and offload to an LLM by writing natural language instructions! The notebook executes code and prompts in a single context. Here's something you can try that implements this idea: try-slate.com

Also wrote some thoughts in a post here and a short video demo here.

Similar to traditional code notebooks like Jupyter Notebooks, but with a seamless integration with large-language models. Code when you want, skip when you don't. Export to code for portability.

Devlog Together

💬 Mariano Guerra

🧵 conversation

Playing with UI filter predicates and optional values

gd-preds.gif

🫰 snap.love: a graph drawing tool via Kartik Agaram

🧵 conversation

Of all the apps I've built, perhaps my favorite is git.sr.ht/~akkartik/snap.love, my box and line drawing tool. I use it constantly -- including for work. I have a terrible short term memory, and now I make quick mindmaps for every little situation where a full-screen IDE on a huge monitor is too tiny to show all the parts of the codebase I care about right now.

I seldom mess with it, but today I modified it to show gridlines any time I drag things around. Should lead to neater maps!

🎥 snap gridlines

🎙️ a podcast about Hest recently via Ivan Reese

🧵 conversation

I listened to a podcast about Hest recently (that I wasn't even on!), and have been thinking about taking another crack at it. I'm in a really different situation now, work/life wise, and am less inhibited by idealistic ambitions (like a bunch of NIH making me write my own 3D engine, or an obsession with conceptual purity forcing me to make everything bootstrapped). Now the biggest blocker is that I only have scraps of free time, and I've been using all of it to make music. Oh, how I miss being 20 and free from obligation!

🎥 Simple gradient using new form field control for arrays of objects via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

I've made a new form field control for arrays of objects. The properties that go into the object can be specified and in this example I've used it to implement a simple gradient color node. This example can be viewed at demo.codeflowcanvas.io/gl and then select "Moving circle" from the examples drop-down (I just noticed a weird bug on iOS.. so please just try on desktop).

Or it can be seen in action here .. nothing fancy at the moment, but I hope this allows for more fancy stuff in the near future.

Thinking Together

📝 horrors of manually bikeshedded plain-text languages via Fredrik

🧵 conversation

Is there any wisdom on how to best lay out code in a visual code browser ?

In my experience, code can be layed out either more horizontally on long lines or more vertically on short lines. This is controlled by setting a criterion for how many levels of nesting there can be before a node switches to a multiline layout. Long lines use space efficiently but tend to get hard to read. Short lines are easier to read, as tokens of similar significance line up in columns, but tend to take up much vertical space while leaving most of the horizontal space unused, as the average line is just one key and one value.

Shall I accept that code gets very vertical, and use the free horizontal space to add multilevel navigation panels, or is there a third option that is more horizontal while still easy to read? I can go really fancy and add tables and multiple columns, since I have full control over the layout function, but not all code is regular enough to fit a tabular format, and I cannot require the person editing the code to manually bikeshed it by editing whitespace or dragging around visual nodes. I've seen the horrors of manually bikeshedded plain-text languages and the horrors of node-based languages where the programmer makes a simple one node change and then has to drag all the nodes around so they line up. Are there any examples of interesting solutions to look at?

Here's how I mean a more horizontal layout:

[redacted]

Here's how I mean a more vertical layout:

[redacted]

In the more horizontal layout, I can barely parse the surprise structure at a glance, and I can barely see if I've made a mistake in editing. It takes a lot less screen space though.

💬 Jacob Zimmerman

🧵 conversation

I want to build the backend of an as-bidirectional-as-possible spreadsheet/dataflow, does anyone have any favorite techniques?

I’d like to prefer a dataflow style solution over a constraint solver. I’ve been reading up on why this problem feels hard and its similarity to the “view update problem” in databases, I’m curious if there’s a widely accepted solution that I’m missing.

📑 Future of Coding or Programming: Project Comparison via Duncan Cragg

🧵 conversation

Hi folks, I've been fiddling around with the projects spreadsheet here: Future of Coding or Programming: Project Comparison

and I thought I'd take this opportunity to ask you all to ensure your entries are complete and up-to-date.

New users welcome: just add your project! Note: your project should ideally be at least primarily open source.

📝 scattered-thoughts.net/writing/miscellaneous-ideas via Jamie Brandon

🧵 conversation

Pondering some FoC-adjacent ideas, with the goal of finding a financially sustainable project that can fund more tentative adjacent work - scattered-thoughts.net/writing/miscellaneous-ideas / scattered-thoughts.net/writing/how-to-trade-software-for-small-money.

Less FoC-related, I mentioned in the bottom of that post that I'd love to help someone pick up the streaming system testing work that I started in scattered-thoughts.net/writing/internal-consistency-in-streaming-systems. It will be a real slog getting momentum, but there's potential to really raise the (incredibly low) bar for reliability and understand-ability in that niche.

Content

📝 Who will build new search engines for new personal AI agents? via Stefan Lesser

🧵 conversation

Some speculation by @Matt Webb about the not so far out future of AI agents and how we can/need to prepare for it.

In the other corner, some judgy comments about AI’s Looming Reputation Crisis (scroll down to the middle to find that bit).

I read both this morning and I know these are different use cases, however they beautifully cover the whole optimism/pessimism spectrum on AI.

Where do people here fall on that spectrum? Are there use cases that are obviously good/bad, or does that depend on… well… what? And are we going to outsource most of our lives soon to AI assistants while simultaneously drowning in mediocre generated bullsh*t trying to scam us?

Gosh, I miss the time of the early internet when I was excited about everything tech. Somehow I can’t find back into that mindset these days. Can someone convince me that the future is going to be universally great, like it used to be 20 years ago?

📝 Informal Organizations: Iterating on Cooperative Ownership via Andreas S

🧵 conversation

In the spirit of our #thinking-together capitalism thread. I found informal.systems/2020/09/21/informal-owners i think this is an interesting example of how to change the bigger structure- capitalism (this time I spelled it out Stefan Lesser 😅 ) by changing smaller structures I.e. companies to cooperatives.

📝 Informal Organizations: Iterating on Cooperative Ownership

Our mission at Informal Systems is not just about distributed systems, it&#39;s also about the organizations that grow along with them. Our vision is an open-source ecosystem of cooperatively owned and governed distributed organizations running on reliable distributed systems. To achieve this vision, we begin with ourselves, adopting a democratic structure that aims to rebalance the power dynamics between capital and labour towards something more sustainable and non-extractive; something that nurtures long term employment and real wealth creation through R&D, entrepreneurship, and innovation; something more like a Zebra than a Unicorn.

Music

🎼 Strudel REPL via Alex McLean

🧵 conversation

Strudel now has inline visualisation strudel.cc/?dbk9t_AYAIc8

📝 Strudel REPL

Strudel is a music live coding environment for the browser, porting the TidalCycles pattern language to JavaScript.


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/03 Week 3

2024-03-18 14:09

🚀 codeflowcanvas.io 🎥 Collective Problem Solving in Music, Science, Art... 🦠 Demon horde sort

Our Work

🚀 codeflowcanvas.io via Maikel van de Lisdonk

🧵 conversation

Yes, the time has finally come! I'll share a link to my visual programming project online! I've been mainly showing some video's on the devlog channel about the project.

Warning upfront: Although I've been working on this for quite some time (I even started from the ground up last year after working on my previous visual programming project for multiple years).. there's still a lot of work to be done and bugs to be fixed. The UI/UX is far from perfect but it is demo-able enough I think. However, it's still just in "demo-stage" and not usable by other projects (I haven't build any npm packages for integrating or vs-code extension for example).

My goal is to make a generic visual programming system (VPS) with which domain or application specific vpl's can be made. For now I am implementing 2 vpl's on top of the current base: a flow-based-programming inspired system and a "visual shader-toy".

Since the tool is an infinite canvas, you can zoom and drag the canvas using mouse/wheel/touchpad. I've spend some time getting touchscreen support, but more work definitely needs to be done there.

When you open up one of the editors, you can use the dropdown in the top-menu to load an example flow.

Without further ado, here's the link: codeflowcanvas.io : there are 2 demo playgrounds in which you can play around.

I'll post some more details in the 🧵.

Thanks for some feedback!

Devlog Together

💬 Kartik Agaram

🧵 conversation

A little thing like an 'edit' button introduces cascading issues:

  • LÖVE (in combination with mobile restrictions) won't let me modify code files in place. I have to overlay my changes in a new location.
  • But now I can't pick up any upgrades to my app. Upgrades modify code files in place, but any overlay persists (otherwise you'd completely lose your changes after upgrading).
  • But hey I have a programmable editor here! I'll just create a new file called 'scratch' with a one-liner to blow away the overlay. (With my app user's hat on, I know in this case my changes are minor in a way that I don't with my app developer's hat on.)
  • (A few hours later.) Wait, now none of my changes are having any effect. And they're completely blown away when I go back to the code.
  • 🤦 Oh it's that 'scratch' file still hanging around. So it needs to be a 2-liner. I have to make any changes I want to the file system -- and then delete 'scratch' to make this a one-time operation.
  • I could try to create a screen of helpers for this, along with a comment that says, "insert file system operations here" after which is a delete of 'scratch'.

In this way I find myself playing meta-Sokoban.. 🙄

Tl;dr - the 'edit' button isn't really usable yet.

I really don't want to go down the road of building a compare and merge flow 🙄

💬 Kartik Agaram

🧵 conversation

Simple shortest-path routing to reduce some of the drudgery in Sokoban. Integrated with undo.

Next up: routing while pushing a single crate without moving any other crates. That feels more complicated than this glorified breadth-first search. In particular, I'm not yet sure how to detect cycles. Moving a crate can involve being in the same place over and over again. I think I need to hash the player's location in combination with the crate's location 🤔

🎥 sokoban empty path

💬 Kartik Agaram

🧵 conversation

My solver can now push a single crate to a destination without moving any other crates. But I feel ambivalent about this. Devlog in 🧵

🎥 sokoban solver

Thinking Together

💬 Stephen De Gabrielle

🧵 conversation

Does a ~parametric IDE~ exist?

I’m not sure if this makes sense, but I’m thinking similar to Parametric CAD tools(&sketchpad), but for code?

Maybe making use of type annotations, contracts, interfaces, etc. at ~edit-time~ (instead waiting for ~compile-time~ or ~run-time~ ).

💬 Kongwei Ying

🧵 conversation

Another concept I've been ideating about is how to bring Literate Programming, by Donald Knuth, into my daily work, which involves modern tools and stacks like VSCode and Node.js. I believe inline, rich text snippets which are integrated with some kind of personal knowledge management system is the way to go. This way, instead of having comments like this:

// TODO: Refactor this to use the revised approach

It instead would look like using Notion or Obsidian inside VSCode. So above a function, would be a small window into a single page that describes a single function. You can do anything here, like linking references that are relevant to the design of the function. Or you could even have a lengthy design document that explains why a function was written a certain way. Going even further, you could have a page which describes the evolution of a function over time, why at the beginning it was written a certain way, why changes had to be made, and why it looks the way it looks right now.

And added bonus of this approach is that now it's possible to have a single source of truth for docs and your code. So rather than maintaining a separate Docusaurus that has to be updated to sync it with evolution in code, you can just maintain documentation in line. And then to publish developer docs online, you merely just take all the little snippets above each function and then aggregate them onto a single page.

Basically, this approach is powerful because instead of 1D strings of text, now you can have the power of rich text in your code. Including diagrams, and even embedding other programs through would be possible. And when your code needs to be compiled, all these rich text snippets are simply removed.

Content

📝 Accessibility Has Failed: Try Generative UI = Individualized UX via Dave Liepmann

🧵 conversation

Jakob Nielsen asserts that accessibility has failed to serve disabled users because of a mistaken focus on standards. This approach is unable to address the wide variety of disabilities, and because it is by definition a derivative of a GUI, it is doomed to provide a second-class experience to e.g. blind users. He points out differing needs by older and less literate users, and proposes generative UI as a promising solution.

I was skeptical of the headline and tweet-length summaries. There has been not-insignificant backlash. The full article leaves me still skeptical but certainly willing to see where the idea of bespoke-to-one's-needs UIs could take us.

🎼 cmajor.dev via Christopher Shank

🧵 conversation

You’ve heard of C, C++, C#, objective-C… well, Cmajor is a C-family language designed specifically for writing DSP signal processing code.

They have a JIT engine, but it also compiles to WASM so it can run on the web. This means old synths can be ported to run on the web!

cmajor.dev/docs/Examples/Pro54

🎥 RubyConf 2019 - Keynote - Collective Problem Solving in Music, Science, Art... by Jessica Kerr via Oleksandr Kryvonos

🧵 conversation

Youtube Thumbnail

this is a great inspirational talk about sharing ideas

📝 An overdue status update on Darklang via Jeffrey Tao

🧵 conversation

Haven't checked in on Dark in a few years but it seems they're dropped the custom editing environment, among other changes blog.darklang.com/an-overdue-status-update

We've been working hard at Darklang for the past year, but haven't been very vocal about what we've been up to.

Here’s the “Darklang” that’s been live for years:

Darklang – the live version, which we're now calling Darklang classic – is a developer tool composed of a few interconnected

📝 CP 2024 - Choreographic Programming 2024 - PLDI 2024 via Ivan Reese

🧵 conversation

A call for talks for the first ever workshop on Choreographic Programming at PLDI this summer. Deadline next Friday.

Choreographies are coordination plans for concurrent and distributed systems. A choreography defines the roles of the involved participants and how they are supposed to work together. In the emerging paradigm of choreographic programming (CP), choreographies are programs that can be compiled to executable implementations. CP originated primarily in the context of process calculi, with preliminary work done to establish its foundations and experiment with implementations. Recently, several proposals have shown that one can adapt CP to work in synergy with mainstream programming paradigms ...

📝 ‹Programming› 2024 - Arts - ‹Programming› 2024 via Alex McLean

🧵 conversation

I've only just noticed that there is an arts track at the ongoing conference this year! awesome ‹Programming› 2024 - Arts - ‹Programming› 2024

Step into a world where lines of code dance with strokes of creativity! At this year’s edition of the Programming conference, we are opening an Arts track to engage with the idea that art can inform computational practices and their presence in the world. With this track we invite participants of the conference to join a series of presentations and meet with the artists. We hope the Arts track will inspire the programming community to propose artistic projects for future editions. Events include: KhipuKoding, a session with live coding by Paola Torres Nunez del Prado; Programming a ...

🦠🎥 T2 Matrix Brain Challenge T-2 And Counting - T2sday 3148 via Lu Wilson

🧵 conversation

Youtube Thumbnail

Update from Dave Ackley (whose essay we talked about on the last episode)

A large part of this video is about some initial work on making the 'demon horde sort' better, which is his proposed robust-first way of doing number sorting

📝 If What We Made Were Real via Christopher Shank

🧵 conversation

“If What We Made Were Real:

Against Imperialism and Cartesianism in Computer Science, and for a discipline that creates real artifacts for real communities, following the faculties of real cognition” by Basman (2020)

🤖

📝 Cognition emerges from stealth to launch AI software engineer Devin via Greg Bylenok

🧵 conversation

Is the future of coding just not coding?

In the SWE-bench test, Devin was able to correctly resolve 13.86% of GitHub issues without any assistance, performing far better than GPT-4.


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Contents © 2024 Mariano Guerra - Powered by Nikola