You are viewing archived messages.
Go here to search the history.

Andreas S. 2022-01-03 12:15:45

A quick "thinking together" question for Jack Rusher regarding clerk, I recently found this article and was reading about queries there: https://www.metoki.ch/wissensmanagement-mit-logseq-vielversprechende-alternative-zu-roam-research/#7-queries

(apologies for being it a german article )I always wonder, like how far is clear away from logseq or any other base functionality of a Personal Knowledge System?

Jack Rusher 2022-01-03 13:11:21

Clerk is a moldable computing environment with which one can build all sorts of things, including applications, and thus including knowledge management tools. See, for example, this interactive dictionary app: https://twitter.com/jackrusher/status/1471813316871872529

(I can't speak for anyone else, but it's fine for me as I can read German.)

🐦 ⸘Jack Rusher‽: We're adding convenience functions to Clerk for round-trip bindings between the JVM and browser. Here's a regex-based #Wordnet dictionary app that filters to matching words as you type, printing the full definitions whenever there's just one left.

Guess how many lines of code? https://pbs.twimg.com/media/FGztA8kXwAYoPXh.jpg

📷 https://pbs.twimg.com/media/FGztA8qXsBEAM8r.jpg

📷 https://pbs.twimg.com/media/FGztA8pWUAcIelV.jpg

Dalton Banks 2022-01-05 13:27:55

I’m struck by how rare it is for basic control systems knowledge to show up in our projects; my impression is that the common approaches to closed loop feedback are:

  • Ad hoc event handling and state management
  • An exercise left to the user
  • ‘I’m sorry dave, I’m afraid I can’t do that’

I think we tend this way because the underlying substrates (CPUs, peripherals, ISAs, PL grammars) are so well characterized as to allow formerly unthinkable consistency with open-loop methods.

It seems like there’s a lot of low hanging fruit here, and it gets at the heart of what ‘liveness’ is about. I’m curious if anyone here has experience working with controls/dynamical systems, or pointers to FoC type projects being approached in this way.

PS if you’re not familiar with controls, a wikipedia trip makes it seem like a lot of daunting math, but the basics are actually pretty simple. Basically you’ve got your current system state, a function to compute the next state, and then whatever parameters you can actual directly control (“direct manipulation”). If you’ve ever used React or FRP, they get halfway there, then overcomplicate and oversimplify it at the same time. Here’s a friendly intro if you’re curious: https://www.youtube.com/watch?v=O-OqgFE9SD4.

Corey Montella 2022-01-05 16:20:50

Hi Dalton,

You may be interested in my project, the Mech programming language, which is designed specifically for these kinds of systems. I actually posted an update about it here just yesterday! https://futureofcoding.slack.com/archives/CCL5VVBAN/p1641347451138200

My background is in robotics, so I am designing Mech to be the ideal language to use on robotic systems, which of course make heavy use of control! You are right, there is a lot of low-hanging fruit here:

  • Units are a big one. Control systems operate in the real world, which has all kinds of dimensions. Adding units to type systems can be a big win, allowing you to verify correctness and improve reliability (this should never happen again).
  • Handling time explicitly is important for control systems. Having temporal operators (whenever, until, before, followed by, as soon as) can help programmers reason about control systems.
  • Asynchrony be default. The real world is asynchronous, so control systems must be as well. There's no blocking when it comes to reality.
  • Parallelism by default. A lot of algorithms for control systems are highly parallelizable.
  • Distributed programming by default. Control systems are all about coordinating disparate physical machinery to achieve a desired outcome. It's often the case that this system is composed of upwards of dozens of processing units. Think of all the computers that are in your car. A robot might have a dedicated computer per limb, networked with a CANN bus or ethernet. IOT control systems might have sensors that span a building or an entire town.
  • The same kind of math that GPUs do on games is done for control systems, so native GPGPU support is critical.
  • The real world is continuous but computerized control systems are discrete. It's important to take this into account as well. Consider a real-world control system that handles money. You don't want to use IEEE floating point for that.
  • Data is everything, so logging, searching, slicing, and visualizing data need to be first-class. Visualization is one of the most important debugging techniques for these kinds of systems. Logging must also be built-in and robust to failures. Typically the development cycle for a robot goes like this: 1. write some code 2. run the robot 3. watch the robot crash 4. look at the logs and figure out why the robot crashed 5. goto 1. So automatic logging and replay-ability of logs is also crucial. Once upon a time when I was in gradschool, I heard a tale from before my time of woe due to forgetting to set the logging flag to on. The goal was to make scans like these of the town using the remains of Little Ben, but parked cars obstructed the sidewalk view from the road. The solution then was to go out at 3 in the morning when all the cars were gone to take these scans. But one tired grad student forgot to set the logging flag to true, so they drove around all night collecting data, but it was all immediately lost. People were not happy with him.

Current approaches rely on middleware to enable some of the above features. ROS is one such middleware for robots. It's called an operating system but it runs on top of Linux. It provides a networking api to publish and subscribe to messages produced by control nodes. But the problem, aside from the fact that ROS is nigh unusable even for experts, is that the actual programming is still done in C++ or Python. I don't think I have to explain to this crowd how much of a letdown that is. C++ and Python and any other imperative language is the exact wrong kind of tool to use in this scenario.

Parallel, async, distributed code is way easier to write if the whole system is designed for it. Parallel/async code got a reputation for being a nightmare to write because it's a nightmare to write in C++. But that doesn't preclude other systems being better! I think you see a general recognition in the industry that things are going this way. But I don't think they have realized yet that it's better to use a system designed from first principles to support these features than to bolt them on to C++ or Python or Javascript.

Mech is still really early, so even it doesn't support all the features I laid out above. But that's one of the goals for the project: to be a better language for robot systems.

Anyway, I'm happy you brought this topic up, because I love talking about it!

Dalton Banks 2022-01-05 17:35:32

Hey, that’s awesome!! Thanks for sharing, you’re in my neck of the woods too (Philly). Everything you laid out here is great. What I’m most interested in is a layer down I think: reifying the dynamics of the systems being programmed (which FRP is silent on). A corollary to this is being able to work easily with data-driven models, which is necessary when practically designing this systems but can also be easier than closed-form equations for beginners. Is this something you’ve thought about incorporating into Mech?

I have a hunch this approach could scale nicely from beginner games, robots, and websites all the way to some very cutting edge stuff based on differentiable programming.

Tom Larkworthy 2022-01-05 18:28:29

I kind of think the kubernetes control plane is a control theory esq.

https://kubernetes.io/docs/concepts/architecture/controller/

🔗 Controllers

Tom Larkworthy 2022-01-05 18:33:27

I also have a patent in using kubernetes as an actual robot controller... https://uspto.report/patent/app/20200344293

I think control theory is very applicable to distributed system because failures have to be considered, and not in PL research because a single computer is considered error free (or unrecoverable at least).

Dalton Banks 2022-01-05 20:34:52

Nice! Yes, large industrial systems are where I see ideas from control systems being applied (by necessity). I’d love to see more of that power accessible to end users and smaller communities. Kubernetes is a cool illustration because it’s part of the “abstract” digital world where people forget that they’re working with physical dynamical systems in the end—not to mention the name itself. Alan Kay has recently been hammering on about how software systems should be designed more like the industrial “CAD<->SIM<->FAB” approach.

https://www.quora.com/Does-Alan-Kay-see-any-new-ideas-in-computing

https://www.quora.com/What-would-software-CAD-SIM-look-like

Deepak Karki 2022-01-07 07:06:31

21 Questions for the new year (by Philip Guo via private newsletter)

Discovery-Based² Software Development

  • How do people write code to make novel discoveries by, say, analyzing data or building prototype software?Âł
  • How do people manage ad-hoc data sources (e.g., using lightweight file formats rather than formal databases) when exploring data or prototyping software?
  • How do research programmers deal with environment setup and upgrade issues? Follow-ups: Are these complexities due to the decentralized nature of open-source ecosystems that many researchers now work in?⁴ Or is there something inherent to software that makes environment issues unavoidable?⁾
  • How do programmers debug across multiple programming languages and independent distributed components (e.g., on cloud-hosted services)?
  • What are the tradeoffs involved in maintaining long-lasting open-source software, especially within research lab settings where resources are scarce?

Learning Code, Data, and Environment

  • How do novices struggle with setting up and configuring software environments before even getting to write their first line of code, and how can instructors alleviate these struggles while still providing a realistic experience?
  • What are the emotional and psychological barriers that prevent novices from proactively just trying things out on the computer, observing what happens, and learning from those firsthand observations?
  • How do TAs and students interact during tutoring sessions for learning programming and data science?
  • How can visualizations help teach programming and data science? (Follow-up: and how can these be extended to teach modern machine learning concepts?) [Sample visualisations attached as files.]

The Hidden Curriculum

  • How can we teach students the Hidden Curriculum of unwritten rules and unspoken norms required to succeed in college and launch their careers when these nuances are never taught in the official curriculum of formal courses?
  • How can we help graduate students and junior researchers navigate the hidden curriculum of unspoken rules when starting up their academic research career?
  • How can we help international students, those from low-income families, and those from different cultural backgrounds than the dominant norms to navigate the hidden curriculum of university life and their early professional careers?
  • How can adults find trusted mentors without potential conflicts-of-interest after they are no longer in a formal school setting? (e.g., typical work mentors such as one’s manager and coworkers may have hidden conflicts-of-interest)
  • How can mentors create environments with good scaffolding and psychological safety to help junior colleagues “fall into the pit of success”?

Tacit Expert Knowledge

  • How can we draw out experts’ tacit (unspoken) knowledge about their work practices so that novices can learn by (virtually) looking over their shoulder?
  • How can we capture experiential knowledge (e.g., how it feels to be doing something) and share it with relevant people in authentic and relatable ways?
  • How can we encode tacit expert knowledge into AI tools (e.g., GPT-3 and other large language models) and present it to novices in a format that’s the most timely, relatable, and helpful?

Creating Online Content

  • How can we encourage people to share creative content with a receptive and targeted audience without the noise and unpredictability of public online posting?
  • How can sub-one-minute videos be used for education rather than just for endlessly-scrolling mindless entertainment?
  • How can we quickly capture insights in “one take” without needing any post-processing? e.g., with in-camera video production tools, real-time screenshot and screencast interactions, or AI scaffolding to encourage creative writing⁜
  • How can we make video editing as simple and intuitive as photo editing?

superscripts key

1 - not an accurate number

2 - As opposed to “product-based” software development to create mass-market products.

3 - Most of these questions will likely lead to me asking: And how can we improve upon the status quo of how things are being done here today?

4 - For a hot take, check out Why Wolfram Tech Isn’t Open Source.

5 - I tried not to pile on follow-up questions but couldn’t resist here. In fact, all of these 21 questions could generate more detailed follow-up questions.

6 - It’s also bad to prematurely suggest solutions when posing open-ended questions, but again I couldn’t resist.

📷 1.png

📷 2.png

📷 3.png

Konrad Hinsen 2022-01-07 13:24:04

Many good questions. I could provide partial replies to some of them. But what's the point of this list? Start a discussion (where)? Compile answers (where)?

Deepak Karki 2022-01-07 15:25:27

I think it’s just more of Philip’s brain dump! The reason I posted here is to get a discussion going 🙂

Srini K 2022-01-07 19:15:12

yeah this is from his private substack, so its him sharing his thoughts to his close knit friends, family, few other associated folks!

Andreas S. 2022-01-08 22:04:27

I like this piece: https://moxie.org/2022/01/07/web3-first-impressions.html in his conclusion he points out: "We should try to reduce the burden of building software" Go Future of coding ^^

Duncan Cragg 2022-01-08 23:26:51

It's a great article; finally someone expressing what I've been thinking for so long - nice to have some confirmation from a famous person!

Duncan Cragg 2022-01-08 23:28:54

I'm still a fan of decentralisation mind you, the issues of running "servers" can be fixed, and I actually prefer slow evolution of protocols, not driven by commercial imperatives (i.e. expedient hacks)

Duncan Cragg 2022-01-08 23:31:44

You can't fix the "issue" of creeping monopolies, but the web is still pretty democratic, even with Google etc dominating. P2P can have super-peers and backup, routing, identity, etc, servers, nothing wrong with that

Orion Reed 2022-01-09 02:02:21

I think there's plenty of good critiques here, but I do want to point out that ‘Web3’ is a very broad umbrella term that's often used for disingenuous marketing hype.

There's just such a big chasm between the voices in the space that get millions-billions in VC funding vs the really interesting work going on a bit under the surface.

E.g. Ceptr, Holochain, Protocol Labs/IPFS/IPLD, Commons Stack (as one of many groups oriented around commons and public goods), etc.

So many really great researchers and research communities that have a lot to offer our community here. And vice versa.

It's about a lot more than decentralisation or currency and Web3 != crypto. it's sad to see so much public attention around the least interesting parts of the space like bitcoin or etherium or the many predatory businesses that have emerged.

Orion Reed 2022-01-09 02:10:27

As someone working in both the FoC and ‘Web3’ spaces I'm pretty passionate about trying to bridge these two worlds, I think there's so much potential there. And honestly I think/hope we’ll discover that many in these two worlds are trying to push in very related and complementary directions.

Orion Reed 2022-01-09 02:14:57

Main takeaway from me: there's a lot more to the research going on in Web3 that's really not apparent until you get pretty deep into it. As people in the FoC world I think many of us can empathise there.

Anyone who wants to try and build bridges between our community and related research communities in the Web3 space let me know, always up for a chat!

Konrad Hinsen 2022-01-09 10:32:25

It would be great if the people doing interesting research in this space could come up with a label different from "web3". But some of them seem to be clearly riding on the "web3" wave, perhaps because of the visibility this gives. IPFS, for example, is a project I have been following for years with much interest (and I am even using it a bit), but I am not so happy about their communication which is very much "IPFS is a complement to blockchains".

Jack Rusher 2022-01-09 14:00:35

Moxie's piece is very good. The other, where they say dApps "cannot be shutdown by any Nation State" is hilarious.

Orion Reed 2022-01-09 16:01:00

Konrad Hinsen I agree. Can't see it happening though, it's similar to some in this community preferring the term “medium of thought” or something other that “tools for thought”, it's just got so much momentum it's hard to see it changing.