Exploration of democratizing programming, crowd-sourcing software quality, composability, customizability, and self-teaching. Vision to manipulate software for clear thinking. Challenges in historical struggles for suffrage. Functional reactive concepts in programming for UI development. Importance of comprehensibility in software systems. Plans to improve TypeScript setup. Unique ideas on user identification and version control innovations. Maintaining work balance and reflections on past experiences. Support from the community for podcast sustainability.
Democratize programming by enabling customization of software.
Shift towards decentralized community-driven software creation.
Emphasize clear data dependencies using Explicitly Comprehensible FRP.
Revolutionize user authentication with cryptographic principles.
Deep dives
Exploration of Progressive Ideas and Challenges in Coding and Research
The podcast episode delves into the speaker's three-month research reflection period, emphasizing the journey from building open-source programming languages to steering towards user-friendly software tools. The speaker recounts personal educational experiences, including transitioning from struggling in school to excelling in mathematics and physics. They detail founding a coding space and developing programs to facilitate a seamless transition from Scratch to JavaScript, illustrating the significance of teaching coding concepts. Additionally, the speaker discusses the challenges faced in designing programming languages, emphasizing the shift towards enabling all individuals to modify the software they use.
Critique on the Elm Architecture and Proposal for Explicitly Comprehensible FRP
The speaker presents a critical analysis of the Elm architecture's reliance on a single state tree and reducer functions in user interface development, highlighting challenges related to global state manipulation. They propose a shift towards 'Explicitly Comprehensible FRP' utilizing higher-order and cyclical streams to enhance code comprehensibility and promote clear data dependencies. The discussion touches upon the importance of types as guides rather than referees, aiming to streamline programming experiences by emphasizing fast feedback loops.
Introduction of P4: Text-Based UI for Data Transformations and Code Abstractions
The podcast episode introduces 'P4,' a prototype geared towards building a UI that focuses on pure data transformations before delving into higher-order and cyclical streams. The speaker plans to work on a text-based UI for data transformations, inspired by projects like 'Pain,' to streamline the visualization of expressions and enhance programming experiences. The narrative explores the challenges of creating a fluid and live programming environment, emphasizing the importance of visualizing abstractions effectively.
Vision for Multi-Node FRP: Redefining User Identification and Authentication
The speaker elaborates on the concept of multi-node FRP, envisioning a system where user identification revolves around private and public key cryptographic pairs for authenticating actions. They propose a revolutionary approach to user identification based on cryptographic principles, emphasizing a seamless user experience across multiple platforms. The imaginative narrative highlights the potential transformation in user authentication processes within a decentralized and secure computational environment.
Innovative Version Control System 'Woof.js Workflow' for Fluid Coding Collaboration
The episode introduces 'Woof.js Workflow,' an innovative version control system that offers a fluid and collaborative coding experience by visualizing code branches as an infinitely nestable bulleted list. The system challenges traditional git structures by enabling multi-level deep collaboration and edits on a dynamic bulleted list interface. The speaker underscores the system's potential to revolutionize version control practices by promoting intuitive and visually engaging coding collaboration.
Striving for Experimentation and Innovation in Version Control Solutions
The podcast episode emphasizes the importance of experimenting with new version control ideas like the woof.js workflow as a prototype to enhance collaboration and efficiency. While recognizing that woof.js workflow is not a definitive solution, the speaker highlights the need for more innovative approaches in version control to address complex challenges. The speaker expresses enthusiasm for exploring different concepts that could shape the future of version control, advocating for a community-driven and experimental mindset.
Balancing Work, Research, and Podcasting in a Flexible Setup
The episode delves into the speaker's unconventional lifestyle centered around research, podcasting, and freelance work without a full-time job. By segmenting life into research, podcasting, and freelance activities, the speaker highlights the importance of balancing passion projects with practical endeavors. The speaker values community feedback and collaboration, highlighting the role of the podcast in sharing ideas and fostering a supportive network.
Navigating Sustainability and Funding through Patreon and Future Initiatives
The podcast episode reveals the speaker's exploration of sustainable funding models through Patreon and potential future projects like a Future of Coding jobs board. The speaker shares personal reflections on financial sustainability, expressing gratitude for support and exploring avenues to transition towards full-time dedication to research and podcasting. Emphasizing the long-term vision, the speaker discusses collaborative projects, like the note-taking app Blink Note, as part of an ongoing commitment to innovation and community engagement.
If you haven’t been following my research journey, this episode is a great place to join! I recap of who I am, where I come from, what I’m trying to accomplish, and how I hope to accomplish it.
The mission of this project is, broadly, to “democratize” programming. My new phrase is:
Enable all people to modify they software they use in the course of using it.
This mission would cause the following changes, in order of increasing importance:
All software will be co-created by decentralized communities, rather than centralized groups or companies.
Through the power of crowd-sourcing, the quality of all software will become much higher than existing software.
All software will be much more composible, interoperable with other pieces of software.
All software will be arbitrarily customizable, allowing for bespoke, tailored experiences.
Learning to communicate with computers teaches one how to think more clearly, precisely, mathmatically, and powerfully. If one can manipulate the software one uses, if only one learns how to organize one’s thoughts, many people will self-teach themselvse to do just that.
As the fabric of the world is eaten by software, the ability to fully manipulate that software one uses is an essential freedom.
This vision is not new nor creative: it’s obvious that people would change things if they could. Yet this problem has proven stubborn over the decades and most have given it up as insoluble. We have all but forgotten the essential characteristic of computers: their malleability.
In order to accomplish this vision, I believe there are three large categories of problems that need to be addressed:
Rid ourselves of the IO Monad, replacing it with better abstractions for whole systems.
Create a better programming experience for the complex abstractions we create to avoid IO.
Reimagine version control for a world where software looks very different than it does today, with many more forks, at many more levels than just one-deep off of master
My recent work was on ridding ourselves of the IO Monad from user interfaces, which is building on Conal Elliot’s FRP work. My paper and talk at REBLS last month argues that Elm Architecture makes software take longer to understand (which is untenable if we want people to be able to modify the software they use in the course of using it) as compared to the higher-order and cyclic streams of Conal’s original FRP.
My future work will be improving the programming experience of “original FRP”, potentially with a Haskell-inspired structured editor. I will also extend Conal’s FRP work to also removing the IO Monad from the “backend”.
In the episode I add a lot more color to these points, as well as discuss my personal background, the past and future of Future of Coding meetups, my experience at SPLASH last month, and other whacky ideas!