[ prog / sol / mona ]

prog


Small programming projects ideas

1 2020-05-24 00:20

Share programming tasks that you considered doing at some point but realized you lack the time or motivation and that could be an interesting task for someone else.

Here's one: rewrite Notational Velocity for Linux. The Python clone is awful, so don't use Python or another slow scripting language. NV was the best and simplest note taking software ever made (for people too lazy to get into Org-mode)

http://notational.net/

It only works on OSX 10.4-10.7 so you'll need an old mac or a VM to run it.

2 2020-05-24 05:34

Write a DICT[1] GUI client for GNU/Linux that can display popups on other windows similarly to http://goldendict.org/screenshots/san-andreas-popup.png but that also doesn't suck up +300MiB of RAM.

Additionally one can add support for executing other utilities and reading their output to add non-DICT lookup backends such as wikipedia. Make it hack-able, make it extensible, make it small.

[1] https://en.wikipedia.org/wiki/DICT

3 2020-05-26 01:50

Writing a CHIP-8 emulator.
I feel like that's a fun project because you get to actually play some games at the end of it.
It's actually not that hard either, I struggled more with printing to the Screen than actually emulating the CPU.
Downside is it takes some time to get all the instructions to work.

4 2020-05-26 01:58

Clone RPG Maker 95.

5 2020-05-26 05:28

A site that aggregates whatever the most popular news was over the last day, week, month or whatever and collects it in a rss feed or an email, containing a summary and link to each article.

6 2020-05-26 18:57

>>5

A site that aggregates whatever the most popular news was over the last day, week, month or whatever and collects it in a rss feed or an email, containing a summary and link to each article.

This shouldn't be too hard and would be very useful. It's probably what OP in http://textboard.org/sol/102 was looking for.

7 2020-05-26 22:45

Make a Tamagotchi program for the terminal that behaves like the original Tamagotchi sold as a toy in the 90s. It could start when you login and run as a daemon that would regularly interrupt your session asking to be fed or petted.

What would be really fun is if you could impose its mandatory use to many people. For instance if you were the CEO of a big company, you'd ask all your employees to have the virtual Tamagotchi installed and you could fire them if they let their Tamagotchi die.

Or maybe, make it a computer virus that would be harmless if the Tamagotchi is taken care of and deadly if the Tamagotchi is mistreated.

Are there any open source Tamagotchi emulators or is the Tamagotchi's algorithm described somewhere in a document?

8 2020-05-26 23:30

>>3
There's a tutorial about how to write a CHIP-8 emulator in Common Lisp.
https://stevelosh.com/blog/2016/12/chip8-cpu/

9 2020-05-27 00:00

>>7
from https://rosettacode.org/wiki/Tamagotchi_emulator

(define-constant CYCLE_TIME 30000) ;; 30 sec for tests, may be 4 hours, 1 day ...
(string-delimiter "")
(struct tamagotchi (name age food poop bored))
 
;; utility : display tamagotchi thoughts : transitive verb + complement
(define (tama-talk tama)
(writeln (string-append
   "😮 : "
   (word-random #:any '( verbe trans inf -vintran)))
   " les " 
   (word-random #:any '(nom pluriel))))
 
;; load tamagotchi from persistent storage into *tama* global
(define (run-tamagotchi)
	(if (null? (local-get '*tama*))
	    (writeln "Please (make-tamagotchi <name>)")
	(begin 
	    (make-tamagotchi (tamagotchi-name *tama*) *tama*)
	    (tama-cycle *tama*)
	    (writeln (tama-health *tama*)))))
 
;; make a new tamagotchi
;; or instantiate an existing
;; tama : instance ot tamagotchi structure
(define (make-tamagotchi name (tama null))
(when (null? tama) 
		(set! tama (tamagotchi name 0 2 0 0))
		(define-global '*tama* tama)
		(local-put '*tama*))
 
;; define the <name> procedure :
;;  perform user action / save tamagotchi / display status
 
(define-global name
(lambda (action)
	(define tama (local-get '*tama*))
	[case action
	((feed) (set-tamagotchi-food! tama  (1+  (tamagotchi-food tama))))
	((talk)  (tama-talk tama) (set-tamagotchi-bored! tama (max 0 (1- (tamagotchi-bored tama)))))
	((clean) (set-tamagotchi-poop! tama (max 0 (1- (tamagotchi-poop tama)))))
	((look) #t)
;; debug actions
	((_cycle) (tama-cycle tama))
	((_reset) (set! *tama* null) (local-put '*tama*))
	((_kill) (set-tamagotchi-age! tama 44))
	((_self) (writeln tama))
	(else (writeln "actions: feed/talk/clean/look"))]
 
	(local-put '*tama*)
	(tama-health tama))))
 
;; every n msec : get older / eat food / get bored / poop
(define (tama-cycle tama)
		(when (tama-alive tama)
		(set-tamagotchi-age! tama (1+ (tamagotchi-age tama)))
		(set-tamagotchi-bored! tama (+   (tamagotchi-bored tama) (random 2)))
		(set-tamagotchi-food! tama  (max 0 (-  (tamagotchi-food tama) 2)))
		(set-tamagotchi-poop! tama  (+   (tamagotchi-poop tama) (random 2))))
		(local-put '*tama*))
 
;; compute sickness (too much poop, too much food, too much bored)
(define (tama-sick tama) 	
	 (+ (tamagotchi-poop tama) 
	    (tamagotchi-bored tama) 
	    (max 0 (- (tamagotchi-age tama) 32)) ;; die at 42
	    (abs (-  (tamagotchi-food tama) 2))))
 
;; alive if sickness <= 10
(define (tama-alive tama)
		(<= (tama-sick tama) 10))
 
;; display num icons from a list
(define (icons list num)
		(for/fold (str "  ") ((i [in-range 0 num] )) 
		(string-append str (list-ref list (random (length list))))))
 
;; display boredom/food/poops icons
(define (tama-status tama)
	(if (tama-alive tama)
		(string-append 
		" [ "
		(icons '(💤  💭 ❓ ) (tamagotchi-bored tama))  
		(icons  '(🍼 🍔 🍟 🍰  🍜 ) (tamagotchi-food tama))
		(icons '(💩) (tamagotchi-poop tama))
		" ]")
	    " R.I.P" ))
 
;; display health status = f(sickness)
(define (tama-health tama)
	(define sick (tama-sick tama))
	;;(writeln 'health:sick°= sick)
	(string-append 
	(format "%a (🎂 %d)  " (tamagotchi-name tama)(tamagotchi-age tama))
	(cond 
	([<= sick 2]   (icons '(😄  😃  😀 😊  😎️  👍 ) 1 ))  ;; ok <= 2
	([<= sick 4]   (icons '(😪  😥  😰  😓  )  1))
	([<= sick 6]   (icons '(😩  😫 )  1))
	([<= sick 10]  (icons '(😡  😱 ) 1)) ;; very bad
	(else  (icons '(❌  💀  👽  😇 ) 1))) ;; dead
    (tama-status tama)))
 
;; timer operations
;; run tama-proc = cycle every CYCLE_TIME msec
 
(define (tama-proc n)
	(define tama (local-get '*tama*))
	(when (!null? tama)
		(tama-cycle tama)
		(writeln (tama-health tama))))
 
;; boot
;; manual boot or use (preferences) function
(every CYCLE_TIME tama-proc)
(run-tamagotchi)

It's written in EchoLisp, a dialect I've never heard of.
http://www.echolalie.org/echolisp/help.html

10 2020-05-27 06:19

>>7
I had an idea similar to this one a few years ago, but instead of asking to be fed or pet, it would ask for the system to be maintained and kept healty. What would make it really cool would be if these deamoms could communicate amongst one another, and create their own network that's totally independent of humans, perhaps by sharing data or "tricks" between one another, and develop a kind of virtual primitive society.

11 2020-05-27 06:32 *

>>10
Reminds me of Peter Molydeux.

12 2020-05-27 15:51 *

>>11
I thought it was a typo, thank you for making me discover this guy.

13 2020-05-29 07:33

ox-schemebbs

14 2020-05-29 07:43

>>13
What would that do?

15 2020-05-29 08:37

SOCKS library for Racket

16 2020-05-31 19:27

>>5
https://getgle.org/news/ sounds like what you're looking for

17 2020-05-31 20:18 *

>>16

Stormfront as source

18 2020-06-01 10:43

>>16
How is that not just a meta-aggregator? What I meant was something like the evening news, just in text form.

19 2020-06-01 12:13 *

>>18

curl -s https://www.reuters.com/assets/jsonWireNews | awk '/url|headline/' | cut -d'"' -f4 | awk '/^\// { print "https://www.reuters.com" $0; next} {print $0}'

output:

Trump faces election risks in looming Supreme Court ruling on 'Dreamers'
https://reuters.com/article/us-usa-trump-immigration-election-analys/trump-faces-election-risks-in-looming-supreme-court-ruling-on-dreamers-idUSKBN238281
Factbox: Who are immigrant 'Dreamers' and why is their fate tied to the U.S. Supreme Court?
https://reuters.com/article/us-usa-trump-immigration-court-factbox/factbox-who-are-immigrant-dreamers-and-why-is-their-fate-tied-to-the-u-s-supreme-court-idUSKBN238287
Exclusive: Philadelphia's new voting machines under scrutiny in Tuesday's elections
https://reuters.com/article/us-usa-election-pennsylvania-machines-ex/exclusive-philadelphias-new-voting-machines-under-scrutiny-in-tuesdays-elections-idUSKBN23828J
Singapore rushes to build homes for 60,000 migrants after coronavirus outbreaks
https://reuters.com/article/us-health-coronavirus-singapore-dormitor/singapore-rushes-to-build-homes-for-60000-migrants-after-coronavirus-outbreaks-idUSKBN2382E6
Gilead trades that made millions on COVID-19 drug news raise eyebrows
https://reuters.com/article/us-health-coronavirus-gilead-sciences-op/gilead-trades-that-made-millions-on-covid-19-drug-news-raise-eyebrows-idUSKBN23828D
Australia relaxes lockdown further, intensifies economic recovery efforts
https://reuters.com/article/us-health-coronavirus-australia/australia-relaxes-lockdown-further-intensifies-economic-recovery-efforts-idUSKBN2380Y8
Tanzanian recycling plant starts making face shields from plastic bottles
https://reuters.com/article/us-health-coronavirus-tanzania-face-shie/tanzanian-recycling-plant-starts-making-face-shields-from-plastic-bottles-idUSKBN238285
London Stock Exchange finds broad backing for shorter trading day
https://reuters.com/article/us-lse-markets/london-stock-exchange-finds-broad-backing-for-shorter-trading-day-idUSKBN2382AB
Rich world's jobs crisis jolts money flows to millions
https://reuters.com/article/us-health-coronavirus-remittances-insigh/rich-worlds-jobs-crisis-jolts-money-flows-to-millions-idUSKBN23821O
Facebook's Zuckerberg faces employee blowback over ruling on Trump comments
https://reuters.com/article/us-facebook-trump-employee-criticism/facebooks-zuckerberg-faces-employee-blowback-over-ruling-on-trump-comments-idUSKBN2382D0
What you need to know about the coronavirus right now
https://reuters.com/article/us-health-coronavirus-snapshot/what-you-need-to-know-about-the-coronavirus-right-now-idUSKBN2381CE
Global stocks buoyant, dollar slips as economies start to unlock
https://reuters.com/article/us-global-markets/global-stocks-buoyant-dollar-slips-as-economies-start-to-unlock-idUSKBN2380WQ
Zynga to buy Turkish mobile-game maker Peak for $1.8 billion
https://reuters.com/article/us-zynga-peak/zynga-to-buy-turkish-mobile-game-maker-peak-for-1-8-billion-idUSKBN23827N
India's coronavirus infections overtake France amid criticism of lockdown
https://reuters.com/article/us-health-coronavirus-india/indias-coronavirus-infections-overtake-france-amid-criticism-of-lockdown-idUSKBN23829O
Steamy Singapore says face shields no substitute for mandatory masks
https://reuters.com/article/us-health-coronavirus-singapore-masks/steamy-singapore-says-face-shields-no-substitute-for-mandatory-masks-idUSKBN2382BM
U.S. judge weighing fight over Trump ex-adviser Flynn to respond on case
https://reuters.com/article/us-usa-trump-flynn/u-s-judge-weighing-fight-over-trump-ex-adviser-flynn-to-respond-on-case-idUSKBN23821A
Thailand races to create COVID vaccine, eyes possible medical tourism boost
https://reuters.com/article/us-health-coronavirus-thailand-vaccine/thailand-races-to-create-covid-vaccine-eyes-possible-medical-tourism-boost-idUSKBN2382BW
Spain promises safety as it tries to win back tourists and their money
https://reuters.com/article/us-healthp-coronavirus-spain/spain-promises-safety-as-it-tries-to-win-back-tourists-and-their-money-idUSKBN2381SY
Oil steady as OPEC+ considers extension to output curbs
https://reuters.com/article/us-global-oil/oil-steady-as-opec-considers-extension-to-output-curbs-idUSKBN2370VK
Walmart's Flipkart to re-apply for food retail license in India
https://reuters.com/article/us-india-flipkart-food-retail/walmarts-flipkart-to-re-apply-for-food-retail-license-in-india-idUSKBN2382BK
20 2020-06-01 12:22

>>19
I don't remember the evening news being 3 hours long.

21 2020-06-01 12:25 *

>>20

curl -s https://www.reuters.com/assets/jsonWireNews | awk '/url|headline/' | cut -d'"' -f4 | awk '/^\// { print "https://www.reuters.com" $0; next} {print $0}' | head -n 8
22 2020-06-01 12:28 *

In fact you really don't need the url

curl -s https://www.reuters.com/assets/jsonWireNews | grep headline | cut -d'"' -f4

Eli Lilly starts human study of potential COVID-19 antibody treatment
Sign here first: U.S. salons, gyms, offices require coronavirus waivers
Dutch bar terraces fill quickly as lockdown ends
Under new guidelines, Britons plan for a different kind of BBQ
Spain promises safety as it tries to win back tourists and their money
Congo confirms new Ebola case, 1,000 km from eastern outbreak
Thailand races to create COVID vaccine, eyes possible medical tourism boost
Trump faces election risks in looming Supreme Court ruling on 'Dreamers'
Factbox: Who are immigrant 'Dreamers' and why is their fate tied to the U.S. Supreme Court?
Exclusive: Philadelphia's new voting machines under scrutiny in Tuesday's elections
Singapore rushes to build homes for 60,000 migrants after coronavirus outbreaks
Gilead trades that made millions on COVID-19 drug news raise eyebrows
Australia relaxes lockdown further, intensifies economic recovery efforts
Tanzanian recycling plant starts making face shields from plastic bottles
London Stock Exchange finds broad backing for shorter trading day
Rich world's jobs crisis jolts money flows to millions
Facebook's Zuckerberg faces employee blowback over ruling on Trump comments
What you need to know about the coronavirus right now
Global stocks buoyant, dollar slips as economies start to unlock
Zynga to buy Turkish mobile-game maker Peak for $1.8 billion
23 2020-06-01 13:52 *

>>19,22
Shitty headlines.

Under new guidelines, Britons plan for a different kind of BBQ

Clickbait, and a poor one at that.

What you need to know about the coronavirus right now

Very informative headline.

>>5 specifically asked for

A site that aggregates whatever the most popular news was over the last day, week, month or whatever and collects it

You won't find a source that does the aggregation properly, that's the task.

24 2020-06-01 15:02

>>23

Shitty headlines. Clickbait. [Un]informative headline[s].
A site that aggregates whatever the most popular news was over the last day, week, month or whatever and collects it

Many news sites tend to make these shitty ambiguous clickbait headlines because that's what makes users visit their site and generates ad revenue. Unless they're using some other revenue model like The Intercept, Financial Times, Washington Post, and probably many others this is almost necessarily what they produce. I wonder if your criteria for aggregation would have dramatically better results because of this. Obviously a solution to the problem has not been submitted yet though, so we can only speculate.

25 2020-06-01 17:25

>>14
Org export into SchemeBBS markup.

26 2020-06-01 18:11

A Ravelry API library.

27 2020-06-01 22:10

>>23
This. Do solve this properly, it would require an analysis of the contents, and then by cross-referencing the (assumed) topics, calculating what's the most discussed story.

28 2020-06-01 22:39

>>27
My hunch is still that you'd be much better off aggregating the articles of individual journalists you like instead of equating popularity with quality.

29 2020-06-01 23:38

>>28
We can assume it's about having the 10 (or so) most important news in the world at a certain time. There's a similar thread in /sol/ so I guess it's people who don't want to watch the news but still be updated in case of some big event.
If Twitter trends or Google News algorithms were honest it would be possible to just use that. Actually the most discussed topics are probably not the most important. It's a complex problem.

aggregating the articles of individual journalists you like

That's putting yourself in a bubble.

Yahoo News seems to have better headlines than Reuters.

$ wget -q -O - http://news.yahoo.com/rss/ \
| awk 'BEGIN{FS="<item><title>"}{for(i=2;i<=NF;i++){sub(/<.*/," ",$i);printf("%s\n",$i)}}' \
| head -n 10 \
| sed 's/&amp;/\&/g; s/&#39;/\'"'"'/g;'

Protesters tear through D.C. after National Guard troops and Secret Service keep them from the White House 
The trucker who drove through a crowd of protesters in Minneapolis was once arrested for domestic assault 
Iran says it is ready to continue fuel shipments to Venezuela 
Letters to the Editor: Stacey Abrams lost in Georgia, but she could lift Biden as his VP. 
FBI's top lawyer, Dana Boente, ousted amid Fox News criticism for role in Flynn investigation 
Cuomo: &quot;Don't snatch defeat from the jaws of victory&quot; in virus fight 
Hong Kong's Tiananmen commemoration banned by police for first time in three decades 
SoCal cities with Monday curfews after chaotic protests
India Has Lots of Nuclear Weapons 
Libya conflict: Russia and Turkey risk Syria repeat 
30 2020-06-01 23:40 *

>>29
Stupid html. Change the last command to sed 's/&amp;/\&/g; s/&#39;/\'"'"'/g; s/&quot;/\"/g;

31 2020-06-01 23:40

I feel like this is a hard problem. Drudge report and it's imitators tried to solve it through manual curation, reddit tried to solve it through crowd voting, and so have many others. I think that a utility to do this for yourself and taking other feeds as inputs, deduplicating, and allowing you to create an output feed that you can curate as you please may actually work better. Once you start getting a network and the accompanying effects, then you can start creating a masterfeed. At that point, you've created twitter, but with news-sources/blogs as the inputs, instead of tweets.

32 2020-06-01 23:47

>>31
A Twitter of bots with only relevant news sounds like a dream.

33 2020-06-02 00:03

It would be nice to have a video format that incorporates cryptographic signatures, pubkeys,, A player can display these in a visual form, e.g. QR, Aztec,, before/after (in an intermission of?) the video proper. It would be neat if the signatures could handle some amount of distortion or compression of the video/audio, so that one signature could be used to verify a multitude of formats or insignificant transmission/streaming errors . . . maybe I could record it to my phone, and it would recognize that, yes, that video is what the author signed. Fantastic?

34 2020-06-02 00:05

>>29

That's putting yourself in a bubble.

This is contingent on firstly exclusively liking journalists you agree with, and secondly different major (us) news sites more than superficially disagreeing with one another. The fact that you are concerned with a bubble points to the fact that you want to read jounalists you disagree with and so can select these individuals to aggregate from. All major (US) news sources disagree only on the matter of implementation of liberalism (in the actual sense) with regards to social policy.

35 2020-06-02 00:11

>>33 I suppose the later part would require a deeper understanding of video perception; Further, I wouldn't sign a video I made unless I fully understood what perversions (distortions, errors,,) are signed; maybe there's some way to specify ``levels'' of signature, where I sign a video, and specify a class of perversions that are negligible (level 0), and further distortions, while still mostly preserving it, thus being suitable for being recognized as it, have a sufficiently low-fidelity to the original that the author would not want it to be considered as the artproduct that he signed.

36 2020-06-02 00:14

Eventually, the distortions would make it not really at all the artproduct, recognizable only as some shadows on mars might seem as a human face

37 2020-06-02 01:57

I suppose you could include second set of frames at 192*108 resolution comprising of a 3-5 frame average of every 10x10 pixel block of video, then encrypt the sequence with your private key, so that someone who has your public key could validate that the video is indeed the video.

38 2020-06-02 01:58

I'd be down to hack on it. (i'm the 31 anon).

39 2020-06-02 16:13

rss reader

40 2020-06-02 18:01

>>38
Keep us up to date! And it would be great if it could be done in Lisp...

41 2020-06-03 08:54

A French Revolutionary Calendar implementation.

42 2020-06-03 09:03

>>41
Emacs' calendar already has one.

43 2020-06-03 12:45 *

Relaunch the old /prog/
It's more of a sysadmin project and probably a bad idea but well. You'll have to run an old version of PHP. Shiiᵗchan was terrible but it had a lot of charming bugs that were cool to exploit.
Shiichan: https://wakaba.c3.cx/shii/shiichan3960.zip
progdb: https://web.archive.org/web/20131209221933if_/http://bbs.progrider.org/files/archives/prog-20130813130608.db.xz

44 2020-06-04 02:02

>>43
It is definitely a bad idea, but thanks for sharing the /prog/ archive. There's already https://archive.tinychan.net/ and http://world4search.readsicp.org/ Don't try to run shiichan and PHP4 (?)
You gave me a much better idea albeit not exactly related. I'm just gonna do it.

45 2020-06-04 09:43

>>43-44
I'm sure it's already been carefully archived but I have cloned some of Xarn's repos. Some of his things tend to disappear, like the SexpCode draft: https://web.archive.org/web/20170523060320/http://cairnarvon.rotahall.org/misc/sexpcode.html

46 2020-06-07 19:07

Write a modern clone of Lisppaste ( https://www.common-lisp.net/project/lisppaste/ )
I'm sure you remember it from the #lisp IRC channel, it was a cool bot.

http://paste.lisp.org/ - the service is closed, the ftp server that hosted the tarball is down. You can still get it here: https://web.archive.org/web/20070205155834if_/http://common-lisp.net:80/project/lisppaste/lisppaste2.3.tar.gz

But Lisppaste used araneida which is a dead project and cl-irc. RIP.

I felt the need for a pastebin service because 0x0.st file retention is 365 days max. I have been looking for other Lisp pastebin services, found https://github.com/kristoferbuffington/guile-pastebin A guix package, nice. It depends on guile-wiredtiger. Oh no, I can feel it coming: Amirouche Boubekki. I'm certain he's a nice guy. But you can't look for anything related to Scheme on the Web without stumbling upon his name. And of course he hosted his repo on that lame French service, Framasphere. And he's deleted it!
You made yourself a name on the Scheme community, Amirouche, by making AMA on Reddit[1], giving talks for ambitious and never finished projects on all kind of conferences and being active in a lot of mailing lists. Could you at least leave your repos, especially if other projects depend on them or if they're packaged in Guix? I'd drop you a mail on amirouche@hypermove.net, but the domain isn't registered anymore.

In the end, I modified this CL script: https://github.com/rdtft/paster

Feel free to use whatever pastebin service you like the most, but there's one hosted here now and it's Lisp: https://paste.textboard.org or the shorter https://paste.bbs.ax

I've tried to emulate the 0x0.st cURL feature because it's neat for scripting. If you do

curl --data-urlencode 'paste@your_file.txt' https://paste.bbs.ax/create

you'll get the url of the raw paste as a text reply. Of course you can use the web interface too. I'd have hosted 0x0 with a longer file retention but I fear images. Even with the NSFW neural network filter.

I may reuse the code of SchemeBBS to make that simple service in MIT Scheme, it's not too hard and I think I have a barebone IRC client. If anyone is down for that small project, it'd be even better.

_______________
1. https://www.reddit.com/r/scheme/comments/8h198t/ama_i_am_amirouche_boubekki_the_developer_of/ Hi I am Amirouche the developper of guile-wiredtiger that I deleted from Internet AMA

47 2020-06-07 20:17

>>46
Is it just me or is the code running on the deployed site once again not public? The <P class="boardlist"> generation seems to be missing, but the boardlist is considered sufficiently part of the codebase that styling for it was added to the four css files in the "reduce tenfold the size of Monapo webfont" commit.

48 2020-06-07 20:44 *

>>47
You're absolutely right, it's meant to be part of the codebase. It's just so poorly done at the moment that it wasn't committed. /mona/ is hardcoded in the menu, because it runs on another instance. Then I realized I could just create a dummy /mona/ in the first SchemeBBS image and it will be regularly added in the list of boards.
Really the commit was meant to embed the lightweight Monapo font, the boardlist styling just slipped in. Regard it as a leak ``unintentionally'' revealing the VIP features that are to come.

49 2020-06-07 21:13

>>46

that lame French service, Framasphere

Let's not badmouth the fine people at Framasoft because of the actions of some unrelated person. They are doing humanity a great service by developing, funding and hosting Free Software alternatives to popular proprietary web services.

Could you at least leave your repos [...] if they're packaged in Guix?

Fortunately Guix takes its mission seriously and won't let a broken URL compromise the reproducibility of their builds. Missing source code is automatically looked up in the Software Heritage archives:
https://archive.softwareheritage.org/browse/origin/directory/?origin_url=https://framagit.org/a-guile-mind/guile-wiredtiger.git
See the Guix blog for details:
https://guix.gnu.org/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/

50 2020-06-07 21:55 *

>>49

Let's not badmouth the fine people at Framasoft

Sorry, bad mood, that was uncalled for.

Fortunately Guix takes its mission seriously and won't let a broken URL compromise the reproducibility of their builds

I actually pulled guile-wiredtiger (0.7.0) from a Guix VM, I found no other way to get that software. That's where I got Amirouche's mail. I didn't know the details about the Software Heritage archive and how it can cook tarballs. It's much more than a cache. Guix never cease to amaze me.

51 2020-06-07 23:43 *

Don't mind me, just testing the paster.
https://paste.textboard.org/981275a8/raw

52 2020-06-08 03:56

The Freedom Bot

Write a bot that crawls all Github and Gitlab publicly published repos looking for missing LICENSE file. If it can't find one, use the API to open an issue asking the author(s) to free their code.

53 2020-06-08 10:01

>>52

asking the author(s) to free their code

You can start with alyssa-p-hacker who switched SchemeBBS from a free license back to an open license in commit:
https://github.com/alyssa-p-hacker/SchemeBBS/commit/f5e9a48eb2676e1a0be0387ddcfef7a5a7554a7b#diff-9879d6db96fd29134fc802214163b95a

54 2020-06-08 11:43 *

>>53
Permissive licenses are just as free as the GPL.

55 2020-06-08 14:11

>>54
You are simply stating the exact opposite of reality.
https://www.gnu.org/licenses/agpl-3.0.en.html

A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public.

The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version.

56 2020-06-08 14:27

>>54
This happened a while back:
https://textboard.org/prog/39#t39p43

Secretly patching the code and then withholding the changes for an indefinite time, like you do now, would not be permitted.

I rebuked Anon for his tone:
https://textboard.org/prog/39#t39p44
not for the substance, and after that you came back with:
https://textboard.org/prog/39#t39p46

Patches are no longer secret

57 2020-06-08 15:32 *

>>56

you

>>54 isn't the person who used SICP character names as handles for their public repo. That's the charm of anonymous discussions. Never assume the identity of a post number.

Dmitriy Rybalko released his Paster under MIT, and still, modifications have been shared: https://fossil.textboard.org/paster

There's the strange notion of trust. For instance you should trust that since the code was synced with the running site a few days ago, the latest changes will eventually be committed and you should trust that if they aren't yet, there's a good reason. Maybe a subprocess was used instead of a (map pathname-name (cddr (directory-read "data/sexp/*"))) or anything suboptimal like that?

That's a problem of our time, people are asking for laws and regulations about anything. Deep down, the penal envy shows a terrible pessimism about human nature.

58 2020-06-08 18:35 *

>>55
Modified versions of the software are not the original version. The original version remains free.

59 2020-06-08 21:04

>>57

isn't the person who used SICP character names as handles for their public repo. That's the charm of anonymous discussions. Never assume the identity of a post number.

By exactly the same logic, in an anonymous discussion any poster may choose to assume a new identity whenever this is convenient. Never assume that a repudiation of a post is automatically factual.

under MIT, and still, modifications have been shared

I'm sure you understand the difference between choosing to do something and having to do something. For example, every company that used GPLv2 may have chosen to respect both the letter and the spirit of GPLv2, so that GPLv3 never became necessary. But that is a rose-tinted fantasy world. In the world we actually live in they followed the letter but broke with the spirit and intent, so GPLv3 became necessary to close some loopholes that allowed this.

For instance you should trust [...]

You need to recall the meaning of "rebuke" >>56 and actually read my rebuke to Anon, already linked above:
https://textboard.org/prog/39#t39p44

That was presumptuous and rude. Bitdiddle has explained the logistical difficulties that cause the current situation.

a terrible pessimism about human nature

Perhaps you need a refresher on how the world works:
https://paste.textboard.org/a8d8709a/raw
https://www.theguardian.com/world/2013/sep/28/trafficked-india-red-light-districts

>>58
By your peculiar definition of "free" no one would have to contribute modifications back to the programming community at large.

60 2020-06-08 21:30

>>59

“Free software” means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. We sometimes call it “libre software,” borrowing the French or Spanish word for “free” as in freedom, to show we do not mean the software is gratis.

    The freedom to run the program as you wish, for any purpose (freedom 0).
    The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
    The freedom to redistribute copies so you can help others (freedom 2).
    The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

This is from https://www.gnu.org/philosophy/free-sw.en.html. This has nothing to do with the people who benefit from your free software being required to contribute back. It does have to do with you voluntarily freeing your software to others.

61 2020-06-08 21:36 *

>>59,60
I'll also point out that the FSF considers the MIT License (really the Expat License) to be a *free software license*, compatible with the GPL.
https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses

62 2020-06-08 22:08

MIT is peak Sillicon Valley/GitHub-tier/techpro licencing, if anything use BSD, or of course [A]GPL.

63 2020-06-08 23:31

>>60 >>61
With network software GPL compatibility is insufficient and outdated, see >>55. Also, from your own link:

GNU Affero General Public License (AGPL) version 3 (#AGPL) (#AGPLv3.0)

This is a free software, copyleft license. Its terms effectively consist of the terms of GPLv3, with an additional paragraph in section 13 to allow users who interact with the licensed software over a network to receive the source for that program. We recommend that developers consider using the GNU AGPL for any software which will commonly be run over a network.

Please note that the GNU AGPL is not compatible with GPLv2. It is also technically not compatible with GPLv3 in a strict sense: you cannot take code released under the GNU AGPL and convey or modify it however you like under the terms of GPLv3, or vice versa. However, you are allowed to combine separate modules or source files released under both of those licenses in a single project, which will provide many programmers with all the permission they need to make the programs they want. See section 13 of both licenses for details.

64 2020-06-08 23:45

>>58

Modified versions of the software are not the original version. The original version remains free.

I'm not sure this matters, especially not for this project, but it's not necessarily modifications. For example if you wrote an MIT licensed application it would be perfectly within my rights granted by the license to change nothing (or for example only the branding of the application), compile it, and distribute this for money without the source. Another issue with the MIT license which is once again very unlikely to be of relevance to this project is that it has insufficient patent protections. There are permissive licenses which do a better job protecting developers such as Apache 2.0 at discouraging patent trolls.

65 2020-06-09 01:24

>>63
I'm not talking about the AGPL. I'm talking about the Expat/MIT license. Free software is not defined as software licensed with any of the GPL variants, it is defined as software following the four essential freedoms. The four essential freedoms apply only to a piece of software, meaning, that piece of software is free. The MIT license, and other permissive licenses, fulfill all of the requirements that make a piece of software free.

The GPL is a political tool. It not only indicates that something is free software, it takes direct action to guarantee that the free project spawns more free projects. Permissively licensed software is free software, it just doesn't force spawning of more free software.

>>64
That's true, but that's not the point I'm trying to make. Even if you do take the software and redistribute it, it's still entirely free software when taken from the original source. The original version still has the four essential freedoms.

66 2020-06-09 02:20

>>65

That's true, but that's not the point I'm trying to make. Even if you do take the software and redistribute it, it's still entirely free software when taken from the original source. The original version still has the four essential freedoms.

I know it wasn't the point you were trying to make. I was just trying to make a somewhat interesting comment that it's not a different version if nothing has changed, and it's not free software if it's distributed in a non-free manner. (I realize with the phase “Another issue” this might not seem to be the case but this was just my underlying preferences forcing their way out) So it's not really the software version that's free from this perspective but your distribution of the software version. It's not a necessary characteristic of the object because in another permissible situation it does not have the characteristic. I don't actually care about this issue, I just thought it was an interesting thought. Even if I did care I wouldn't care here because patent trolls and closed source forks of your project are unlikely to be of any significance just because revenue can't be generated from your project.

67 2020-06-09 05:12

A clone of SchemeBBS but in the language of your choice.

68 2020-06-09 06:57 *

>>65
GPL is not any more political than any other license and it is not direct action either. It has to be enforced by court, which is very much indirect. The significance of GPL is that it introduced copyleft, which is a novel use of copyright law.

69 2020-06-09 11:00

>>67
Bonus points if you use COBOL ON COGS http://www.coboloncogs.org/
Actually an awk clone would be rad https://github.com/kevin-albert/awkserver

70 2020-06-09 11:31

>>65
The AGPL block is there to show that the worth of "compatible with the GPL" from >>61 has to be judged in the light of the fact that

Please note that the GNU AGPL is not compatible with GPLv2. It is also technically not compatible with GPLv3 in a strict sense:

The rationale for the AGPL >>55 is there for a similar reason. Just because a license is labeled "free" in a text doesn't mean every text will go into every intricate nuance that companies have used and will use to respect the letter but break the spirit. This has already happened with the GPLv2 -> GPLv3 switch. Companies have exploited loopholes later closed by GPLv3 to release software under GPLv2 that did not have "the four essential freedoms". The letter of the GPLv2 was insufficient to guarantee that software released under it had "the four essential freedoms". This is why GPLv3 was needed. GPLv2 remains a free license in spirit, but it is exploitable in its letter. The four freedoms state that source and permissions are needed, but they are correct in not claiming them to be sufficient.

MIT is even weaker than GPLv2 in its protections. It is not the aspect of "the free project spawns more free projects" that you are focusing on that is the problem. The GPLv3 did not add propagation requirements on top of GPLv2, it added anti-loophole requirements. Software can be released under MIT that does not respect "the four essential freedoms", because this has already been done with GPLv2 that has much stronger protections.

The MIT license, and other permissive licenses, fulfill all of the requirements that make a piece of software free.

In a rose-tinted fantasy world this is true. In our world, taking your "it is defined as software following the four essential freedoms" from >>65, MIT allows respecting its letter but breaking its spirit by releasing software under MIT that does not "follow the four essential freedoms" and is therefore not free software by your own definition. We know this because this has already happened with the much stronger GPLv2, and made GPLv3 necessary. By choosing a weak license like MIT for some project, you are saying that you are OK with a license that allows respecting its letter but breaking its spirit by releasing software under it that is not free. This choice, in a world where those exploitable loopholes have already been exploited and made GPLv3 necessary, means that your stance on "the four essential freedoms" is mere lip service. If you live in the real world where the difference between spirit/intent and practical application matters, you can only choose the license with the strongest anti-loophole protections, the one that best guarantees that free software is released. Currently for network software this is AGPLv3.

71 2020-06-10 01:41

>>1
There's already nvalt if you're a Mac user: https://brettterpstra.com/projects/nvalt/

72 2020-06-10 20:42

Ah! The line of code was in this derailed thread...

73 2020-06-10 22:42

How dare Anons have a discussion about licenses after >>52 brought up license files in a post about a small programming project idea?

If you can't handle the heat, stay out of the kitchen.

74 2020-06-10 23:00 *

>>73
Who are you quoting?

75 2020-06-10 23:53

>>74
Shut up.

76 2020-06-11 13:43

>>74
Ctrl-F -> derail
is the path that will lead you to enlightenment, grasshopper. In the same way that this thread enlightened everyone as to what the MIT proponents' stance is worth.

77 2020-06-11 14:24 *

>>76
C-r*
Grace Hopper*

78 2020-06-11 14:30 *

Also, I haven't read that discussion about licenses, and I don't plan to.

79 2020-06-11 19:50

>>78
That's fine. You should obviously spend your time on whatever you see fit. At the same time, you are aware that there was "that discussion about licenses" that you "haven't read" and "don't plan to", so your future self, who might at some point display more curiosity than your current self and become more interested in how the MIT proponents' stance on "the four essential freedoms" proved itself hollow and mere lip service, will know where to find "that discussion about licenses".

80 2020-06-11 21:01 *

>>79
There's an even better license than MIT: http://stopnerds.github.io/license/
Very good (and short) read.

81 2020-06-11 22:24 *

>>80
Is that a joke, or do people really think like that?

82 2020-06-11 22:58

>>80
Thanks for sharing, Anon. Had a good laugh.

>>81
Nearly every sentence is deliberately made to include a falsehood. Of course it's a joke.

83 2020-06-11 23:15

>>81,82
That's not a joke, the person who pointed me at that license told me he had to use it in one of his projects.

There are "extremists" in the free software world, but that's one major reason why I don't call what I do "free software" any more. I don't want to be associated with the people for whom it's about exclusion and hatred.
-- Linus Torvalds

84 2020-06-12 03:27

>>83
That quote simply means that he wanted to keep precisely those loopholes which GPLv3 closes, or his corporate paymasters would have cut off the gravy. Regardless of his technical skill, wanting users to remain exploitable via those loopholes makes him an unprincipled coward with no moral fiber. Of course he would label those who do have the moral fiber to stand up to exploitation of users by corporations as "extremists", that's his defense mechanism. Otherwise he would have to say: "those other people are better at protecting users' freedom than I am".

85 2020-06-12 04:12

>>67

Currently working on my first subset of markdown parser in Go. Let's see how it goes.

86 2020-06-12 04:20

>>85
Godspeed, anon!
Go is definitely the next language I will invest my time in. I'll embrace all of its flaws.

87 2020-06-12 06:51

>>84
What are these loopholes that GPLv3 closes?

88 2020-06-12 12:26 *

>>25
My financial situation is currently not great, but I'll likely purchase one of these in fall or winter. I look forward to your report anon.

89 2020-06-12 13:36

>>87
See, for example:
1. the Preamble of GPLv3 itself
https://www.gnu.org/licenses/gpl-3.0.en.html
2. A Quick Guide to GPLv3
https://www.gnu.org/licenses/quick-guide-gplv3.html
3. Why Upgrade to GPLv3
https://www.gnu.org/licenses/rms-why-gplv3.html

90 2020-06-18 22:49

A pandemic simulation where your task is to engineer viruses. It would look like Core War but instead of memory slots, you'd have cells to represents individuals in a population. Cells could be in different states: healthy, infected, immune, dead...

91 2020-06-23 18:53

Port SchemeBBS to r7rs (+ perhaps a fire srfi's).

92 2020-06-24 18:03

Somewhat related but what about Master's thesis topics?

93 2020-06-24 19:14 *

>>92
Are you actually looking for one or are you just interested in funky research topics?

94 2020-06-24 19:52

>>7,10
You could replace image captchas with a tamagotchi that you need to take care of to prove that you're human. Name that project "tamagotcha".
One could object that the challenge can easily be solved by a simple bot. But then again if bots are better at taking care of tamagotchis, why would you filter them?

95 2020-06-24 20:15

>>93
Looking for one honestly, but I'm open to both really. I don't know what kind of difficulty or topics Master's thesis are about. I only checked Minix related ones and they seem very interesting https://wiki.minix3.org/doku.php?id=publications, I'd like to do something systems-related or maybe systems software/engineering-related.

96 2020-06-24 20:34 *

>>95
This topic really deserves its own topic I think.

97 2020-06-29 18:33

There's an IR blaster on some mobile phone (Xiaomi, Samsung, ...)
Make a TV-B-gone app, it's only a matter of sending poweroff signals for every devices.
https://www.tvbgone.com/

98 2020-07-07 08:01

One of those image tagging sites, but in Scheme and for pictures of anime girls holding SICP.

99 2020-07-07 09:47 *

>>98
this

100 2020-07-07 20:46

>>98
What happens when you try to index a picture without an anime girl holding SICP?

101 2020-07-07 20:49

>>1

I guess a minimal working version of this would be to generate a listing of all file contents in a directory and prefix each with its file's name and then use fzf to search over it and make it open $EDITOR somehow when hitting enter. Probably terrible startup time with huge note directories probably, but very simple to set up.

There is already a vim plugin doing this, but I'd rather have a script opening vim than running something in a vim split window.

102 2020-07-14 03:26

Why aren't there alternative web services to Patreon and Onlyfans for cryptocurrencies? It seems like a perfect use case. Is it because the entry barrier to buying cryptos is too high? It doesn't seem like a problem for content creators and sex workers because they'll be tipped coins. The tippers could set up cryptoshops offering clothes, make-up, programming books, dildos or anything that strippers are willing to spend money on. That way spenders would be earning cryptos too and a parallel economy is born.

103 2020-07-14 06:16

>>102
Why would you want to use a proxy-currency that takes ages to transfer, requires a fee to work, is cumbersome to set up and is mainly used by criminals?

104 2020-07-14 08:00 *

>>103
Just use Nano already.

105 2020-07-14 11:49 *

>>104
No, I use Emacs.

106 2020-07-14 13:31 *

>>103
Money in general is used by criminals. There's nothing strange in using cryptos for prostitution. It might even be the type of transaction you want to hide from your transfer history.
Onlyfans takes a 20% fee. I don't think all cryptocurrencies take ages to transfer.
It is cumbersome to set up. It's a valid point but DOGE was pumped by TikTok users last week.

107 2020-07-14 17:48

Any small C projects one could give a try and contribute to?

108 2020-07-14 22:19

>>107
Are you looking for an idea or do you have a C project which needs contributors?

109 2020-07-15 06:33

>>107
Suckless and community stuff is usually easy to configure and hack. Try taking a tool and updating a patch you like.

110 2020-07-17 14:13

>>108
Both really, >>107 is a great example but I unfortunately don't use suckless tools.

111 2020-07-17 14:16 *

I meant >>109 instead of >>107

112 2020-07-19 10:51

>>107
Did this approach ever work for anyone? I know that I tried it but in the end all of my patches ended up in projects that I came across in a different way. In one case I even learned a new language just to fix an issue.

113 2020-07-23 21:29

A small quiz for emacs that takes a random command/function/variable/etc., presents its docstring with the name removed and the user has to guess the name.

114 2020-07-24 09:21

>>113
I like the idea, but playing around with this:

(defvar *function-symbols*
  (let (fns)
    (mapatoms (lambda (a)
                (when (and (functionp a)
                           (documentation a))
                  (push a fns))))
    fns))

(documentation
 (nth (random (length *function-symbols*))
      *function-symbols*))

it seems most docstrings are rather boring :/

115 2020-07-24 18:24

>>114

Maybe it would make sense to limit it to certain functions. For example, if you are reading ``An Introduction to Programming in Emacs Lisp'', you would want to be quizzed only for the functions that were mentioned in the chapters you have finished. The same could be done for the reference manual. Studying a single package from ELPA might also make sense.

As an alternative I thought that unit tests could be also used. For example, here's a snippet from rot13-tests.el:

(ert-deftest rot13-tests-rot13-string ()
  (should (equal (rot13-string "") ""))
  (should (equal (rot13-string (rot13-string "foo")) "foo"))
  (should (equal (rot13-string "Super-secret text")
                 "Fhcre-frperg grkg")))

This could easily be split into just the parts inside the should. You could randomly replace a value with a special symbol (*HIDDEN* or something), and let the user guess what was the original value. The user could supply an alternative solution, but it can be evaluated and accepted if it is equivalent. The bigger issue is that most tests are more involved, they need special buffers and variables, or mention the function tested in the example inputs, etc.

I remember there was some package that would work like Smalltalk's Finder and list you possible functions to use if you have given it the inputs and the desired output. Maybe something like that could be used to generate questions? But generating random inputs is probably a harder problem than finding the function.

116 2020-07-25 21:29

>>115

With replacing *HIDDEN* in tests it kinda becomes lisp-koans for emacs

117 2020-07-26 08:40

>>117
Apparently elisp-koans exists: https://github.com/jtmoulia/elisp-koans

118 2020-08-02 14:12

A blaseball radio. The API is undocumented but dead simple, so it shouldn't be too difficult.

119 2020-08-12 18:22

org-capture but for making unit tests out of the last input sent to your Geiser REPL. You press the magic keybinding and it opens up a new window, narrowed to the new test. It automatically inputs the expression you evaluated and the result you got back. You can edit it to your heart's content, and then send it away with C-c C-c.

120 2020-08-18 16:01

I want one bookmark of multiple locators (preferencially ordered mirrors, a random good messageboard to read,,)

121 2020-08-21 20:21

>>120
What do you mean by this?

122 2020-08-22 03:49

Create a clone of Zim wiki software that allows you to customize colors and add syntax highlighting schemes.

123 2020-08-27 07:19

I remember the Hierarchical Music Specification Language (HMSL) fondly, and would like to port (most of) it to a modern Forth environment some day.

124 2020-08-27 08:58

Something like https://neuron.zettel.page/ but with a nicer user interface and without the need to rebuild a web page.

125 2020-09-18 15:08

Surely someone has already written it and I just don't know how to search for it, but minor modes for emacs' pdf-tools that make scrolling go according to the structure of the document (i.e., a mode for two column articles, for imposed booklets, etc.).

126 2020-10-14 18:52

>>124
How would you avoid having to rebuild a page?

127 2020-10-14 21:08

This is not a small idea, but I've been thinking of how a decentralised system to store s-expressions + a distributed naming system might look like. It could be used to easily "publish" a library, function or datastructure with a sementically meaningless name (some sort of hash generated by the s-expression) that can then be listed in a kind of named dictionary. You then reference that dictionary, and would load these functions. Sort of like IPFS but, limited in scope.

128 2020-10-15 01:26

>>127
A package system for code snippets/mixins?
Basically something like Chicken Eggs on much smaller scale?

129 2020-10-15 08:36

>>128
Not necessarily, it could be used to distribute whole libraries or anything basically. Or why should it only work on a smaller scale?

130 2021-09-21 19:04

Post something that is actually interesting. I want to write something but can't think of anything.

131 2021-09-21 20:03

>>130
- a simple challenge: https://textboard.org/prog/34#t34p165 Division by Invariant Integers using Multiplication
- slightly more: https://textboard.org/prog/222 Stern-Brocot tree
- a moderate challenge: https://textboard.org/prog/100 Hofstadter R sequence

132 2021-09-22 01:10

>>127
That sounds like Erlang's ETS and Mnesia.

133 2021-09-22 18:09

>>127
>>128
>>132
Code reuse is way overrated. Often you'll spend longer figuring out how someone else did something and rejigging things to fit their abstraction than you would just writing it from scratch to fit the theory in your program.

134 2022-02-06 18:59

>>9
this is a truly interesting post
thanks

135 2022-02-08 22:07

>>133
Code reuse is properly rated as useful. General libraries are designed for a wide use case to solve a certain specific problem. You can implement a custom solution for your specific use case and it would probably be more precise and smaller in functionality than the general library.

136 2022-02-09 17:02

Here's an idea: you click at a point on a map, and get a quiz with bird sounds from nearby (xeno-canto has an API that should make this possible) and you have to identify the species singing.

137 2022-02-09 23:01

>>5
Not quite this, but similar: https://spidr.today/

138 2022-02-12 04:33

>>133
That is related to The Curse of Lisp. It is the reason why Scheme has not developed a portable library ecosystem in its nearly 50 years of existence.

139 2022-02-13 01:35 *

>>138
Scheme has had portable library functionality for many years. What it didn't have is a standard way for libraries encoded into the proper Scheme protocol. This is why the Scheme library protocol is a recent addition to late Scheme protocol.

140 2022-03-09 01:16

Making a Wordle clone seems popular recently.

141 2022-03-09 17:23

Something that actual has a positive impact on the world.

142 2022-03-09 19:24

>>141
Examples

143 2022-03-09 20:15

A walking program that connects to pedometer APIs that is Oregon Trail but for the Fellowship of the Ring.

144 2022-03-09 22:23

Brainfuck interpreter with additional op: "=" which, if a current data cell has 0, it copies data tape onto instruction tape, otherwise it copies instruction tape onto data tape.

145 2022-03-11 19:05

>>144
It's interesting to see my design mentioned here. I only make this post, because the description misses some key details:
If the current cell be zero, the instruction array overwrites the data array; otherwise, the data array overwites the instruction array and resumes at the new first instruction.

Here's a quine: =[.>]

146 2022-03-12 00:48

Here is a quine from my heart to you
Nobody knows me as well as you do

147 2022-03-14 19:54

A website that shows you a random image tagged with "cheering" from one of the boorus along with an encouraging message. I used to have one like this but it is gone now.

148 2022-03-18 22:18

>>147
I hope you have netcat, curl and jq. And Coreutils. And Bash.

#!/bin/bash

# Config
BOORU_URL="${BOORU_URL:-https://danbooru.donmai.us}"
SEARCH_QUERY="${SEARCH_QUERY:-tags=cheering+rating%3Asafe}"
CURL_ARGS="$CURL_ARGS"
CHEERING_COOKIES="${CHEERING_COOKIES:-cheering-cookies.txt}"
PORT="${PORT:-8080}"
# Used for querying the booru
POSTS_PER_PAGE="${POSTS_PER_QUERY:-100}"
MAX_PAGES="${MAX_PAGES:-750}"

function response {
  POSTS_COUNT="$(curl -s $CURL_ARGS "$BOORU_URL/counts/posts.json?$SEARCH_QUERY" | jq -r ".counts.posts")"
  MAX_POSTS_COUNT=$(($MAX_PAGES * $POSTS_PER_PAGE))
  [ $POSTS_COUNT -lt $MAX_POSTS_COUNT ] || POSTS_COUNT=$MAX_POSTS_COUNT
  POST="$(curl -s $CURL_ARGS "$BOORU_URL/posts.json?$SEARCH_QUERY&limit=$POSTS_PER_PAGE&page=$((1 + $RANDOM % ($POSTS_COUNT / $POSTS_PER_PAGE)))" | jq -rc ".[]" | shuf -n 1)"
  CHEERING_COOKIE="$(shuf -n 1 "$CHEERING_COOKIES")"
  cat <<EOF
HTTP/1.1 200 OK
Content-Type: text/html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body style="text-align: center">
  <p><a href="$(echo "$POST" | jq -r .file_url)"><img height="600px" src="$(echo "$POST" | jq -r .large_file_url)"></img></a></p>
  <p style="font-size:larger">$CHEERING_COOKIE</p>
</body>
</html>
EOF
}

while true; do response | netcat -l "$PORT" || exit $?; done

Sample cheering-cookies.txt is over here: https://termbin.com/n65r

149 2022-03-19 11:56

It gets stuck as the browser can't tell that the whole page arrived.

150 2022-03-19 12:43

>>149
add -q 0 if youre using openbsd-netcat

151 2022-03-21 21:28

>>147-150
Very cool!

152 2022-03-23 08:47

Generator of mazes and random items scattered in it.

153 2022-03-24 14:35

Create syntax highlighting for Latin.

154 2022-03-24 17:58

>>153
This is actually a great idea.

155 2022-03-24 18:22

>>153
...or for Esperanto.

156 2022-03-26 17:01

maybe... creating... a cli linux text editor using vim keybind by default, which could be scriptable but with basic keyboard shortcuts visible at bottom (for newbies) and being able to also use emacs keybinds? ermm...

157 2022-03-26 18:08

(means - mixing up nano, vim, emacs and forgot - add als navigating with mouse o.O )

158 2022-03-27 01:57

>>156
That doesn't look like a small programming project idea. And it can be implemented entirely in the Vim's config.

159 2022-05-12 00:26

>>156-158
Write a clone of ed that uses Scheme as its implementation, configuration, and extension language.

160 2022-05-12 20:49

>>159
...and call it NeoEmacs.

161 2022-05-12 22:07

That's just a line editor ans you can write it on top of a repl. Line editors are the best though I'm with you.

162 2022-05-13 04:47

>>161
Do you use a line editor to write Lisp?
https://textboard.org/prog/308

163


VIP:

do not edit these