Roadmap
Please sponsor me to speed up development of these exciting features!
- first-class-lambda-lists
- Declarations processing
- explicit-bind
- 🔥 lispy-format 1.0
- 🔥 LOOP/Iterate/mapcar/dolist/etc replacement
- 🛈 Background
- 🗲 Why I'm excited
- ✍ Current status
⚓
I AM FUCKING TIRED OF BEING POOR!!!
IT'S BEEN 18 YEARS!! THAT'S ENOUGH!!
TIME TO SOLVE THIS ONCE AND FOR ALL!!!
The Monthly Perks are not really exciting or cost-effective.
I'm doing everything by hand.
I will introduce extremely exciting and cost-effective Monthly Perks options!
(Note that you can sponsor now and use your Monthly Perks Credits later...)
Subject to updated eligibility criteria, the following options will be available:
Name | Cost in MPCs |
---|---|
Sitewide Name at Bottom | 10 |
Sitewide Linked Name at Bottom | 25 |
Sitewide Small Avatar at Bottom | 50 |
Sitewide Name at Top | 100 |
Sitewide Linked Name at Top | 250 |
Sitewide Medium Image at Top | 500 |
Sitewide HUGE Image at Top | 1000 |
Sitewide HUGE Custom Ad at Top | 2500 |
Since it's 100% first-party, I don't think this will ever be blocked by Adblock.
Users will be able to hide sponsors for 24 hours simply by pressing ESC.
I will partially automate things. (Any questions about sponsorship? Contact me!)
This will be a crucial step towards sustainability after 15+ years of hard work!
This will most likely become an important marketing device for Common Lisp.
PROPER FUNDING IS NEEDED TO FINISH MY EXCITING ROADMAP!
This should be fairly easy to do with Cloudflare Workers.
⚓
There are a billion Common Lisp unit testing frameworks,
none of which I find appealing.
I had been using Parachute, but I don't really like it.
I will make a unit testing framework leveraging definitions-systems for extreme simplicity and extensibility. With 30+ ready-to-use libraries, I already have plenty of incentive to make a great unit testing framework for myself, even if nobody else used it.
I initially thought the focus of the initial version would merely be to be good enough for me, but after reading Sabra Crolleton's great article, I am confident I can make this the best Common Lisp unit testing framework upon first release!
This is an extremely important project, since ALL libraries need a unit testing framework!
Having reached a breaking point, I need this NOW!!!
(I thought I needed to finish first-class-lambda-lists first,
but I don't think that will be necessary after all,
or at least not for a first release.)
⚓
Many of my ready-to-use libraries have not yet been updated to my modern standards. Some of them have major updates pending, and some of them are not even documented yet. This is unfortunate.
I'm going to update all (?) my non-deprecated ready-to-use libraries to my modern standards, which will unlock quite a lot of value!
I am planning major updates to its, 🔥 cartesian-product-switch, 🔥 place-modifiers, anaphoric-variants and parse-number-range. (The major update to positional-lambda will probably not happen in 2024.)
I am planning to fully document inheriting-readers, 🔥 enhanced-defclass, 🔥 canonicalized-initargs and shared-preferences.
(🔥 indicates updates I am particularly excited about.)
I will do this after releasing my unit testing framework.
⚓
Lambda lists being one of the most omnipresent features in Common Lisp, obviously it would be incredibly useful to be able to manipulate them easily.
Very few projects even try to tackle this problem, and none of them make a good job of it or are enjoyable to use.
first-class-lambda-lists will provide a simple unified extensible way of processing lambda lists.
It will make it very easy to add support for new lambda list keywords and lambda list types.
A system for easily converting higher-level lambda lists to their lower-level equivalents is also planned.
The project is in a relatively advanced state of completion, but is not yet usable and is a sprawling mess. I am looking to make major refactorings and simplifications. This will be my most complex library yet.
⚓
There is no fun way to process declarations.
parse-declarations looks pretty boring to me.
I'll make a fun way to process declarations that will leverage definitions-systems.
I made 2 failed attempts in the past. Third time's the charm?
⚓
As far as I'm concerned, metabang-bind has a good core concept, but takes the wrong design decisions at nearly every turn.
explicit-bind is a great metabang-bind replacement project I have been trying to finish since forever.
Stalled on first-class-lambda-lists and declarations processing.
⚓
format is a disgrace, a black mark on Common Lisp. Packing a complex control language into a string is deeply insane when we could and should just use s-expressions. format
is the single worst-designed feature in Common Lisp, even worse than loop. format
is not extensible, despite the very constrained ~/~/
escape hatch.
It is simply mind-boggling that format
is still used and largely embraced by the community in 2023.
lispy-format 1.0 properly translates the essence of format
into a proper s-expressions form. A guaranteed smash hit!
I know exactly what the final product will look like. There are 2 levels: individual functions which can be used standalone or in concert, and a macro for concisely and efficiently combining multiple output operations in one go.
lispy-format 1.0 will be far more readable than format
, and it will be completely modular and extensible. And of course, it properly uses the package system, so you can easily write your own extended version of the standard built-in operators if you like, or design your own features which will seamlessly integrate with built-in features and third-party features.
One of several advantages of lispy-format 1.0 is that a command's arguments are specified with the command instead of all commands being specified ahead of time and then all arguments, making it hard to correlate commands with their arguments.
lispy-format 1.0 will be very easy to learn, regardless of the user's level of proficiency with format
. That said, format
experts will find many familiar similarities compared to format
, making transition easy. Tools should eventually be provided to help migration.
I've already achieved significant progress on a private branch.
After a surprisingly long and torturous path, I finally resumed work on this, but quickly hit a snag which resulted in a reshuffling and expansion of my roadmap, so this has been pushed back again, sorry.
(I made the Epic FORMAT table years ago as a precursor to this work.)
⚓
This library will implement a revolutionary new paradigm for iteration and mapping. It is extremely simple, intuitive, modular, flexible, powerful and optimizable, and easily scales from trivial use-cases to very complex, so you can just use it always. It will basically obsolete every iteration and mapping construct you know of, and then some.
This is a spiritual successor to my various Loopless projects that I worked on for years and deleted relatively recently, and other related work such as multiple-value mapping. I completely stopped using loop
eons ago and now make heavy use of mapcar
and friends, but this is not enough and after several iterations of failed attempts at LOOP replacement, I finally came up with a truly revolutionary paradigm shift in computer science (or at least, a very big evolutionary leap). This is actually just a different arrangement of already existing concepts such as iterators, but designed and integrated in a much more flexible and powerful way without sacrificing performance (and in fact, improving it).
I already know what the project will be called, but I'm keeping it a secret until a first release.
I already know exactly what the high-level syntax and semantics will be. I could trivially tell you what it is, but I want to keep all the glory for myself on this one. ;P (It took me quite a bit of really hard work to reach that point, and if I immediately revealed the fruits of my labor then someone could implement a crude version and reap all the glory before I have perfected the entirety of the design at all layers of abstraction.) The high-level syntax and semantics is actually just an embarrassingly simple variation on one of the standard Common Lisp constructs.
As for the mid-level and low-level semantics, I have some good ideas about it, but much work yet remains to be done. I recently became an expert in an area of the MOP that I believe will be absolutely crucial to the mid-level and low-level semantics.
I have already spent several months designing this on graph paper. I am now ready to try actually implementing this (once I'm done with the above work items).
⚓
All existing web frameworks suck.
(No, I don't need to review them to know it's true.)
My first web framework was pretty nice in some ways, but I ultimately had to scrap it. I've been writing my websites in raw HTML5, CSS3 and JavaScript ever since while waiting to finally write my second web framework.
My second web framework will make it easy to manage hundreds of (heterogeneous) subdomains, and will feature full semantic tracing as a core feature.
I have several awesome ideas for this, which I mostly forgot because I haven't revisited this stuff in a while, but they are sure to come back when I finally get back to this...
I'm already a pretty advanced expert in Common Lisp, HTML5 and CSS3, and I'm building on the experience of my first fairly advanced web framework, so I have a very solid base to start.
I already single-handedly wrote and am successfully managing 100+ mobile-optimized HTML pages written in raw HTML5 and CSS3, spread across 25+ subdomains in 4 main websites, so clearly I am VERY motivated to finally make a great web framework, and it had better make it super easy to manage several dozens of subdomains because my web presence is only going to expand...
⚓
All my websites require an active internet connection.
I will add offline support to all or most of my websites, thanks to Service Workers.
This will be especially important for my CLHS replacement!
I will do this after releasing my second web framework.
⚓
The CLHS cannot be updated and exhibits terrible usability on mobile. This is an extremely sad state of affairs for our most important resource.
There have been various attempts by multiple parties over the years to remedy this, but no suitable replacement has emerged.
This has been a batshit insane emergency for years.
I am going to make a public domain spiritual successor to the CLHS based on dpANS3.
I think my modern public domain CLOS MOP specification proves that I am entirely capable of tackling this project and doing a really great job.
I am the only one I trust to make a high-quality CLHS replacement.
MY DEEPEST APOLOGIES!!! I simply cannot release this in 2023 after all, nor anytime soon in fact. This is simply an utter infrastructural impossibility given the current state of my Common Lisp infrastructure. There is no point in even starting the project if I clearly don't have the infrastructure required to finish it.
I already know what this will be called, but I'm keeping the name under wraps until a first release.
⚓
All my websites are English-only, thereby greatly limiting their reach.
I will translate most of the content on my websites to at least
French, Spanish and Portuguese, which are extremely popular!
This will greatly expand the reach of Common Lisp!
Many young people can only read their native language.
Even among bilingual adults, many vastly prefer their native language.
Governmental organizations will only consider adopting Common Lisp
if there is sufficient material for it in one of their official languages.
This obviously requires my second web framework.
I already master French, my native language.
My Spanish is already pretty good, thanks to Duolingo.
I already almost finished their extensive Spanish course,
already with more than 500000XP!
My Portuguese unfortunately needs more work.
Duolingo's Portuguese-from-Spanish course is too basic.
Now, I want to do the Portuguese-from-English course.
I would already have a 798 days streak on Duolingo
if I hadn't almost died for no reason in May 2023...
I already have 900000+ XP across all courses.
Duolingo is almost like a part-time job for me...
This significantly slows down my operations,
but will doubtless pay great dividends later!
I want to be a hyperpolyglot (6+ languages) one day!
⚓
Mastering Common Lisp takes several years, it's a huge investment.
Many learners give up early, due to the pretty tough learning curve.
Furthermore, the language is mostly oriented towards programmers.
There is very little chance a non-programmer would want to use it.
The lack of manpower is a HUGE drag on community development.
The lack of popularity constantly undermines our marketing efforts.
I will create a world-class fully automated interactive course enabling
almost anyone to learn Common Lisp quickly and easily on their own,
even if they have no prior programming experience.
The course will be 100% free, ad-free and open-source forever!
Donations from the rapidly expanding community will ensure funding.
Using my extreme modularity skills,
I will break down everything into micromodules,
so basically the learning curve will be nearly flat.
There are no hard concepts in Common Lisp!
Common Lisp simplifies syntax and semantics.
Excellent execution on this idea can potentially increase
Common Lisp's adoption rate by a factor of 1000x or more!
I am the only one I trust to make a high-quality course.
Once that's done, domain experts migrating to Common Lisp
can then make domain-specific versions of the course using the
same tools, such as a Common Lisp course for Python experts!
Speedrunners/streamers will quickly learn Common Lisp for fun...
EXCELLENCE WILL FINALLY TAKE OVER THE WORLD!!!
I must finish all the above items before I can do this.