lainchan / λ

Personal projects

over · 2018-09-14 03:41
Hi, Lain. Let's have a thread for share our personal projects and get reviews. > URL > Language / Framework > Description
Hopper · 2018-09-14 04:23
https://github.com/LuisAlbizo/WardScript Written in c using the flex and bison tools. It's an interpreter for a programming language that i just invented, is very minimalistic and highly inspired on lua
Hitomi · 2018-09-14 07:42
http://verisimilitudes.net/2017-07-07 http://verisimilitudes.net/2018-08-08 The second link is something I still believe needs work, but the first link is a reasonably good overview. I wrote this tool, an initial prototype of sorts, in Common Lisp, using three now independent libraries I wrote in the process; the tool also includes a special meta-language, which is where much of the work is, but this was something more or less for my own experimentation and not something I recommend anyone else look into particularly deeply beyond my own descriptions. I chose Common Lisp over APL purely because Common Lisp had character-granularity in input, which APL lacks, and it does also have a convenient file system interface; by this, I mean that Common Lisp is merely the implementation language and has no bearing on interaction with the tool. This is an interactive machine code development environment I've created. The basic idea is each key of the keyboard, decided by position rather than value, is bound to a routine which asks questions until an action can be decided upon. An example is pressing a key for a routine that merely needs an address in order to complete; you're permitted to enter an address, the tool won't allow invalid addresses to be entered at all, and it then writes the finished instruction to the current location; if a name referring to an address was used, that name will likely be displayed instead of the numerical value (This varies.) and any changes to the name will update the instruction as well. There are special keyboard modes for entering integers and text; for integers, the decimal digits are bound to the home row and space deletes a digit, which I find very convenient, since the number row is so far away. The included image is an example of the tool with a program I've written loaded. The tool was borne of my dislike for assemblers. Answers are saved by similar routines and so you can very easily press keys until you find the one you need; you can't touch and feel your way around an assembler. Aside from this, there are also special routines, primarily located on the home row, which control movement, insertion, deletion, jumping around the program space, creating and deleting names, and other necessities. In contrast to a one or two pass assembler, this is a ``no-pass'' tool, since everything must at all times be in a valid state. You can't use a name before it's created; updating a name works modulo its usage size, preventing errors from surpassing limits; and deleting a name merely removes the association, preventing further updates upon changes. This is a reasonable description of the tool. Currently, only I can use it, because it's not in a friendly state for installation and I only have a dvorak mapping created. I'm also still refining it and removing bugs I've added during this refining. The entire system, including the three libraries, is less than two and a half thousand lines of code. I've created many methods for conveniently and efficiently operating this tool internally, but the current implementation was written and rewritten and rewritten around eight or so times, as I hadn't been certain what would work well or not. The tool is in need of a rewrite, one which also removes the meta-language I created, and I expect I may have this by the end of the year, but I've also exhausted myself a ways with it and simply want to use the tool for machine code programming, for a bit, at the least.
Linda Lee · 2018-09-15 16:22
https://github.com/mskorczak/imgboardfiledownloader Written in python It's an image board file downloader, just having problems in porting it to non-Linux systems as I've used os.system with Linux commands as the parameters
Batou · 2018-09-15 17:23
>>10421 You can remove the "touch tmplinks.txt", as the line after it will create the file if it does not exist, and overwrite the contents if it does. You can also use os.remove("filename") instead of os.system("rm filename"). Also, what's the point of the counter variable? You never use it. Couple other code style things but nothing major other than using os.system at all
Koos van der Merwe · 2018-09-15 17:26
Forgot to mention, instead of piping the output of grep to a file, you can let it go to stdout and use subprocess.check_output(["grep", ...]).decode("utf-8") instead of os.system. Again with the "touch", you don't need it on line 23 if you open the file on line 24 with mode "w" instead of "a"
Spooky · 2018-09-15 18:05
I suffer from ADD so I start a lot of projects, the meds allow me to work them near tirelessly but don't stop me from starting them. I usually abandon everything fairly quickly but here's some stuff that I've been working on these last few days while passing time at home with the flu... One project I started was that I had this idea that I wanted to make a little pet user to inhabit my network, I wanted it to be a program that tries random commands and learns from its attempts. First I made it purely in BASH and it was very crappy and eventually it would crash when it learned how to use "vi", here's the code: https://ghostbin.com/paste/xnrdq Then I decided to try it again this time with Python and I wanted to pre-teach it with data from people's terminal histories. Now the problem was getting a good dataset and I couldn't come up with anything other than asciinema.org from where I started mass downloading .json files and gathered about 10k before I was booted from their servers. Many of the files were corrupt too but I concatenated their plaintext(+color) contents into a big file that I fed to some markov chain library, problem is that most of the content of the files was not commands but command outputs so what I ended up creating was a terminal spam generator which I made post generated stuff on my Hubzilla channel until becoming bored of maintaining it. To get only the commands out of the histories I decided to be too effortful and shelved the pointless project for now. Here's the code: https://ghostbin.com/paste/6m8o9 Then another project I started is I got some IRC logs and started doing a sentiment analysis on them with the Google Cloud Natural Language API. I wanted to track my mood and graph it on a timeline but this became quickly too much work so I'm taking a pause from that, also tried some ready made IRCLogParser but couldn't get it to work and fixing it would again be too much effort.
Gyula Kovacs · 2018-09-17 11:54
https://github.com/Aanok/pmcli I'm pretty new to Lua coding and I'm trying to learn idioms and best practices. So far I like the language a lot but I feel there are rough limitations especially when it comes to parallelism: cooperative multithreading is neat but I dunno if it's just me not used to reasoning for it or if it really is as constraining as it feels at first touch. And in any case it is not real parallelism on multiple execution contexts at the same time like you'd do with, say, pthreads. Nothing in the project will likely catch a lain's fancy too much; I suppose a more curious part might be command parsing in utils.lua, which is done through a PEG and a bit of postprocessing.
Rick Deckard · 2018-09-17 18:57
https://github.com/netb258/console-tetris Clojure A tetris clone that runs in the command line.
Knuth · 2018-10-27 13:11
Made this in a weekend. It's a simple app that allows you to trade contact information using QR Codes. It's nothing unique but it was fun to make. https://gitlab.com/XZenia/QRContact
stack · 2018-10-29 20:53
https://gitlab.com/naughtybits/schemebbs deployed at https://textboard.org/prog MIT Scheme A textboard engine.
drop · 2018-10-29 21:49
>>11145 Nice to see some old progriders and knights of the lambda calculus still live.
byte · 2018-10-29 22:09
>>11146 I still mourn the death of /prog/ which is probably why I wrote this. I didn't know where to find people who have known that place. I thought that I could try here. Looks like my intuition was right.
Dox · 2018-10-30 04:23
>>11145 yes!
The seer · 2018-10-30 06:20
>>10440 Beautiful. More tetris please.
Six · 2018-10-31 21:53
>>11145 Nice! Everybody talks about how much they love Scheme but you never see actual software written in it. I hope it'll grow, all the other /prog/s around that I know of are a bit too heavy on the brewing soykaf sometimes.
queue · 2018-11-03 02:51
https://github.com/sirgal/AVR-EAX-AES-bootloader Bootloader for AVR ATmega microcontrollers written in AVR assembly that occupies exactly 1024 bytes of flash memory. Features: - AES-128 encryption in EAX mode (authenticated encryption, not broken by anyone yet, side channel attack specialists are welcome to check out) - Protection from bootloader entry point changing attacks, it will jump to start, no matter what fuses you set - Simplest communication protocol possible, over configurable software RS-232/UART - Key file generator provided, made with Qt and crypto++ - In 2018, microcontrollers can be made piss cheap and occupy about a grain of salt of space Pretty old, though.
wizord · 2019-05-09 23:51
paint.java https://github.com/wizord-gaming/paint.java using java/processing for most things this is basically a paint.net clone. just doing it as a fun side project while i finished my last year of study
Cat Mother · 2019-05-10 04:25
>>11145 i really like it... i wish i knew scheme to actually use it, but nice work :)
St. IGNUcius · 2019-05-10 05:08
>>11149 Not that lain, but back in the early 2000's a colleague was complaining that he'd like to do gamedev but there was a lack of public gamedev tools. I called BS and I bet him that I could write Tetris using only the URL bar of a web browser. During break times & lunch that day I implemented the game. None of this is minified, just shorthand, e.g. X(e) removes a child element, C(e) creates an element. The code is quite dynamic: w,h, change size of grid. ds is drop slide (how many drop cycles block-slides work across). aliases are due to URL length limits of the time. The block array is the B var starting: B=[[0x4460,'#f80'],[0x2260,'#229'], The first int is a 4x4 bitmap of the piece shape, the next is the CSS color of the piece. You can add more pieces to that array. eg: 0x2260 = r piece (reversed L) __x_ 2 __x_ 2 _xx_ 6 ____ 0 You used to be able to just paste it into the URL bar and hit enter, but browsers have disabled that behavior since then. Try tripple clicking it to highlight all, then copy it. Create a bookmark, then edit the URL and paste in the code. Then click the bookmark to add Tetris to most websites (it appears at the top of the page, you can drag it around via mouse). javascript:function%20GO(){var%20w,h,s,ds;w=10;h=20;s=20;ds=2;var%20cp,ln,lv,lx,lt,l,sc,m,d,g,z,b,B,dl,x,y,ox,oy,px,py,j,gg,id;z=document;b=z.getElementsByTagName('body')[0];function%20C(e){return%20z.createElement(e)};function%20S(e,s){e.setAttribute('style',s)};function%20A(p,e){p.appendChild(e)};function%20X(p,e){p.removeChild(e)};function%20E(e,t,f){e.addEventListener(t,f,true)};function%20R(e,t,f){e.removeEventListener(t,f,true)};function%20T(t){return%20z.createTextNode(t)};m=false;d=C('div');g=C('div');S(g,'width:'+w*s+'px;height:'+h*s+'px;background-color:#000;overflow:hidden;position:absolute;top:'+(10+s)+'px;left:5px;');S(d,'z-index:9999;position:absolute;top:0px;left:0px;border:2px%20outset;padding:5px;background-color:#d8d8d8');B=[[0x4460,'#f80'],[0x2260,'#229'],[0x262,'#93d'],[0x462,'#a11'],[0x264,'#091'],[0x660,'#ee3'],[0x2222,'#2ad']];function%20P(n){var%20r=C('div');S(r,'width:'+s*4+'px'+';height:'+s*4+'px;position:absolute;');r.x=r.y=0;r.p=[];var%20i=B[n][0];var%20x,y,c;c=x=y=0;while(i!=0){if(i&1){r.p[c]=C('div');S(r.p[c],'position:absolute;width:'+s+'px'+';height:'+s+'px;top:'+y*s+'px;left:'+x*s+'px;background-color:'+B[n][1]);r.p[c].x=x;r.p[c].y=y;A(r,r.p[c]);c++};i=i>>>1;x++;if(x>3){x=0;y++}};return%20r};function%20H(r,j,k,v){var%20x,y;for(var%20i=0;i<r.p.length;i++)%20{if(v){x=3-r.p[i].y;y=r.p[i].x;}else{x=r.p[i].x;y=r.p[i].y};x+=j;y+=k;if((x<0)||(x>=w)||(y>=h))return%20true;if(y>=0)if(gg[x][y]!=null)return%20true}return%20false}function%20O(r){if(H(r,r.x,r.y,1)){if(H(r,r.x,r.y-1,1)){if(H(r,r.x-1,r.y,1)){if(H(r,r.x+1,r.y,1))return;else%20r.x++}else%20r.x--}else%20r.y--;r.style.left=r.x*s+'px';r.style.top=r.y*s+'px'}var%20j;for(var%20i=0;i<r.p.length;i++){j=r.p[i].x;r.p[i].x=3-r.p[i].y;r.p[i].y=j;j=r.p[i].style;j.left=r.p[i].x*s+'px';j.top=r.p[i].y*s+'px'}}function%20M(r,x,y){if(H(r,r.x+x,r.y+y,0))return%20false;r.x+=x;r.y+=y;x=r.style;x.left=r.x*s+'px';x.top=r.y*s+'px';return%20true}lt=T('0');sc=C('div');S(sc,'font-family:Arial;font-size:'+s+'px;height:'+s+'px');A(sc,T('Score:%20'));A(sc,lt);A(d,sc);A(d,g);A(b,d);px=py=null;j=ox=oy=x=y=0;id=null;var%20up,dn,lf,rt,dr;up=dn=lf=rt=dr=false;function%20drag(e){if(m){if(px==null){px=parseInt(d.style.left,10);py=parseInt(d.style.top,10);}d.style.left=e.pageX-ox+px+'px';d.style.top=e.pageY-oy+py+'px';e.preventDefault();return%20false}else{ox=e.pageX;oy=e.pageY}};function%20xDrag(e){e.preventDefault();m=false;px=null;return%20false;};function%20stop(){if(id!=null)clearInterval(id);id=null;cp=null};function%20start(){stop();gg=[];lx=[];lv=1;ln=l=0;dl=500;X(sc,lt);lt=T(l);A(sc,lt);for(j=0;j<w;j++){gg[j]=[];for(var%20i=0;i<h;i++)gg[j][i]=null}while(g.firstChild%20!=%20null)g.removeChild(g.firstChild);id=setInterval(loop,dl)};function%20key(e){if(window.event)e=window.event;else%20e.preventDefault();var%20k=e.keyCode;if(cp!=null){if(k==38)O(cp);if(k==37)M(cp,-1,0);if(k==39)M(cp,1,0);if(k==40)M(cp,0,1);if((k==32)||(k==0)||(k==13)){while(M(cp,0,1)){};sl=ds};if(k==27)close()}return%20false}var%20N='mouse';function%20close(){stop();R(z,N+'move',drag);R(z,N+'up',xDrag);R(z,'keypress',key);X(b,d)};E(z,N+'move',drag);E(d,N+'down',function(e){e.preventDefault();m=true;return%20false;});E(z,N+'up',xDrag);E(z,'keypress',key);var%20nb=C('button');j='width:'+Math.floor(w*s/2)+'px;margin-top:'+(10+(s*h))+'px;font-family:Arial;font-size:'+s+'px';S(nb,j);A(nb,T('Reset'));E(nb,'click',function(){stop();start()});A(d,nb);nb=C('button');S(nb,j);A(nb,T('Quit'));E(nb,'click',close);A(d,nb);function%20loop(){if(lx.length>0){var%20i=h;var%20q=0;for(j=0;j<lx.length;j++){if(lx[j]<i){q=j;i=lx[j]}};for(i=i;i>0;i--){for(var%20k=0;k<w;k++){gg[k][i]=gg[k][i-1];if(gg[k][i]!=null)gg[k][i].style.top=i*s+'px'}}l+=lx.length*2*lv;lx.splice(q,1);X(sc,lt);lt=T(l);A(sc,lt);ln++;if(ln%20>%20lv*5){ln-=lv*5;lv++;clearInterval(id);dl=(11-lv)*50;if(dl<18)dl=18;id=setInterval(loop,dl)}return}if(cp==null){cp=P(Math.floor(Math.random()*B.length));M(cp,(w-4)>>1,-3);A(g,cp)}else{if(M(cp,0,1))sl=0;else{if(++sl>ds){sl=0;var%20x,y;l+=lv;X(sc,lt);lt=T(l);A(sc,lt);for(var%20i=0;i<cp.p.length;i++){x=cp.x+cp.p[i].x;y=cp.y+cp.p[i].y;if(y<0){alert('Game%20Over');stop();break}else%20{gg[x][y]=j=cp.p[i];X(cp,j);A(g,j);j.style.top=y*s+'px';j.style.left=x*s+'px';j=0;for(var%20k=0;k<w;k++)if(gg[k][y]!=null)j++;if(j==w){lx[lx.length]=y;for(var%20k=0;k<w;k++){X(g,gg[k][y]);gg[k][y]=null;}}}}cp=null}}}}start()};GO(); Back in my day, I had to mow a hundred lawns to by Borland's C compiler (no GNU toolchain on home PC yet). Now kids have free compilers and documentation out the wazoo for anything they want to know how to do. I laugh when I hear folks complain about how inaccessible gamedev is today. No one can stop you making games. Hell, my parents tried: Took my PC cables, set a BIOS password and grounded me, but I had spare cables, and reset BIOS. Didn't know PW, so they found out it was changed. Later I built a replica of the BIOS PW screen in BASIC and phished their password before phishing was a thing. Maybe I'll post about my new projects some other time. I'm working on something lain will love...
Unnamed · 2019-05-10 23:56
https://github.com/David-M-Nielsen/spasm Shell using a few coreutils its a simple password manager. Don't really have much more to say about the program than that. I made it largely for fun. Its my first shell script longer than 3 lines, and i think its pretty good taking that into consideration. Any and all critique is welcome and appreciated.
Boris Grishenko · 2019-05-11 13:09
>>10421 >>10424 If you want it to be compatible, the re library (for regular expressions) can be used instead of grep. links = re.compile(r'href="http://[^"]+\.pdf"').findall(html)
synchronized · 2019-05-12 20:47
>>10421 https://github.com/Spar0w/batch-down/blob/master/batch-down.go I did something similar in Go except focused more on 4chin like websites or just webpages in general. I couldn't get it to work on lainchan cause the way images are saved. Also, this downloades the image thumbnails too which I remove with a little one-line script. If anyone has any feed back that would be good, im still kind of new.
Dozer · 2019-05-15 08:28
>>10408 A bit of a smaller project (300 LOC). I like listening to one-to-two-hour long youtube videos (mini-playlists of some sort), bu it bugs me how there isn't an easy way to go to a particular song if you download the video. In response, i made a wrapper around ffmpeg that takes in one of those videos, a text file, and a format string and outputs all the mp3 files in a folder, where you can add them to <insert music player here> I've already downloaded five or six of the videos. I'm always impressed by how much you can do with relatively little code (though I'd be lying if I said it's my best work. Some of it's pretty kludge-y). https://github.com/ricardoaiglesias/MusicSplitter Small update. I went back and commented my code. Even though it takes a while, I like doing it, since it forces you to understand how your program's designed and makes you realize how things could be changed to improve readability.
Iverson · 2019-05-18 23:10
>>10410 Nice. I'm working on my own frankenlanguage but its much more bloated than yours. Ex: let sum(x, y: Int): Int { return x + y; } let anonsum(x: Int): Int{ return lambda y: x + y; } let comparison(x, y): { if (x > y) return x; if (x < y) { return y; } else { return (x, y); } } let hello: { print("Hello World!"); } // takes 2 in bits and returns a tuple of sum and carry bits let halfadder(a, b: Bit): (Bit, Bit) { val sum = a xor b; val carry = a and b; return (sum, carry); }
Erik Johansson · 2019-05-18 23:11
>>13620 * for the comparison function i forgot to declare their type.
John Doe · 2019-05-19 00:34
>>10440 you can get shell environment from lein or use params to your uberjar too
Backus · 2019-05-20 03:37
>>10421 >>10440 good choice on license
Koichiro · 2019-06-08 19:34
>>13531 cute
Torvalds · 2019-07-17 10:24
https://github.com/mananapr/cfiles Written in C using ncurses It's a TUI file manager and my first big project. I am more of a C novice so improvements would be greatly appreciated
John Doe · 2019-08-20 17:58
Hello, lainchan! https://github.com/wwwMADwww/FT2232ImageOutput Very simple setup for drawing ILDA files on analog oscilloscope, pic related.
Cat Mother · 2019-08-20 18:04
>>14806 Yessss I was hoping to catch this! I'm gonna check it out, thanks a ton
Spike Spiegel · 2019-08-21 02:51
>>10436 >https://github.com/Aanok/pmcli >I'm pretty new to Lua coding and I'm trying to learn idioms and best practices. So far I like the language a lot but I feel there are rough limitations especially when it comes to parallelism: cooperative multithreading is neat but I dunno if it's just me not used to reasoning for it or if it really is as constraining as it feels at first touch. And in any case it is not real parallelism on multiple execution contexts at the same time like you'd do with, say, pthreads. >Nothing in the project will likely catch a lain's fancy too much; I suppose a more curious part might be command parsing in utils.lua, which is done through a PEG and a bit of postprocessing. Lua is lovely, but cooperative multitasking is useful for a lot less things than multithreading. Fortunately there are libraries for propper multiprocessing, I recommend lanes. The documentation 's pretty sparse & it sometimes throws a fit if you try to thread C code, especially if it's controlling hardware, but otherwise it's probably the kind of multithreading you're used to.
Iverson · 2019-08-21 10:31
* https://repo.or.cz/mus.git * POSIX sh/awk and C11 * A simple client/server music player consuming an editable plaintext album playlist. Basically, a stateless (no library database, that's what the filesystem is for) mpd without the bloat. Roast me. Currently adding support for vorbis, opus and ogg flac (maybe will pass that one, libflac support is gimped for it). >>13531 For booleans in sh, use var=false/var=true and `$var && dothing`. No need to quote variables when assigning. I'd use something to differentiate local and global variables if I were you: either local, even if it's not POSIX or something like a leading underscore. Use `echo "${pass_category##*/}` instead of `echo "$pass_category" | rev | cut -d"/" -f1 | rev`. >>14265 Could be worse, but you don't seem to handle unicode at all (as seen in the compare function). Also, a 1000 lines main() usually means you fuarrrked up somewhere. I'm also gonna do a a nice file manager in Tcl/tk because I use ranger but dislike Python, and because I want a way to sort arbitrarily so that I can use xattrs to tag my files with author, date, etc...
Haruyoshi · 2019-08-21 21:12
> URL Private > Language / Framework Servant & Esqueleto on Haskell > Description A basketball booking social media application that has real time notifications on games and statistics per player with POTG every after match calculated.
The Fin · 2019-09-20 07:21
I just wanna create my own textboard
Dujour · 2019-09-23 02:40
SQAB91 - String Quotable ASCII Base91 encoding. A transport encoding for binary data in text. It's like Base64 but has a more efficient encoding (and RLE compression), while still safe for quoted strings and optionally [x]HTML. I'm using this encoding in a text-based game engine, and it helps in debugging to be able to decode the files externally, so I figured I'd make the text transport medium a command line tool. Rename sqab91.tar.gz.pdf to sqab91.tar.gz for the 32 bit & 64 bit binaries (win & linux).
Jean Dupont · 2019-09-23 11:14
> no url > the language of love > cumbox its a shoe box in which I ejaculate
renames · 2019-09-24 08:28
>>10408 >Don't have yet an url > Ada, with XCB bindings i'm working on a small graphic library. Basically it's more or less a wrapper around the XCB library with additional window content management methods and a few abstractions. Software made with it should look and work like a pty but with some vector drawing abilities (X primitives) on top. For making charts, graphs, and various kind of wire-frame visuals (should even be possible to make basic 3D rendering) I'm about 30-40% done with it and it should be around 4k LoC i think, so I hope to finish it soon to then try coding a small software suite for myself. Here's what coding with the library could look like : ada with Ada.Text_IO;use Ada.Text_IO; with Window;use Window; with Types;use Types; with Main; procedure Testing is Win : Grid_Window_Access; beginMain.Init; Main.Override (COLOR, (R => 255, G => 0, B =>0), COLOR_02); Main.Start; Win := Main.Create_Window (Size => (W => 100, H => 30)); Win.Rename ("Test title"); Win.Set_Gravity (FIXED); Put_Line ("X :" & Pixel_Axis_Value'Image (Win.Position.X)); Put_Line ("Y :" & Pixel_Axis_Value'Image (Win.Position.Y)); delay 5.0; Win.Hide; delay 5.0; Main.Stop; end Testing;
Netrunner · 2019-09-24 08:29
>>15375 fuarrrk forgot to change tabs to spaces
hash table · 2019-10-04 10:16
>URL https://git.sr.ht/~zge/slides >Language / Framework Go, pure Go >Description Tool to create Takahashi-like slideshows. Sort of like sent (https://tools.suckless.org/sent/), but creates PostScript slides, instead of showing them immediately. >URL https://git.sr.ht/~zge/ijod >Language / Framework Go, with bindata >Description Video synchronising website. You start the binary in any directory with video files. When people connect to the site and create a "room", all people in the same room get to see the same video. Sort of like watchtogether, but more buggy. I feel pretty lazy for choosing Go all the time, but C seems like such a mess. Unicode/UTF handling is not standardised, it's obvious that networking was an afterthought, and working with libraries is burdensome.
Miho Iwakura · 2019-10-26 01:54
>>15351 >>14806 >>10412 Awesomes! my humble project outputs utf8 ansi art ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓▒░░░░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░▒▓▓██████▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░▓█████████████▓▓▓▒░░░░░░░░░░░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒░▒░░░░░░░ ▓████████████████████▒░░░░░░░░░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░ ░▓██████████████████████▓░░░░░░░░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░ ▒█████████████▓▓▓▓▓▓███████▒░░░░░░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░ ░▒▓▒▒▒▒▒▒▒▒▒▒▒▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░▓█████████▓▒▒▒▒▒▒▒░▒▒▒▓██████▒░░░░░░░░░░░░░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▓▒░░░ ░▒▓▒▒▒▒▒▒▒▒▒▒▒▓▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░▓██████▓▓▒▒▒▒░▒▒▒▒▒▒▒▒▒░▒▓█████▒░░░░░░░░░░░░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▓▓▒░░░░░░▒▒▒▒▒▒▒▒▒▓▓▒▒▓▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░▓█████▓▒░▒░░░░▒▒▒░░░░░▒░░▒░░▓████░░░░░░░░░░░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒░░░░▒▒▒▒▒▓▒░░░░ ▒▓▓▒▒▒▓▓▓▓▓▓▓▓▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▓█████▒▒▒▒▒░░░░░░▒▒▒▒▒▒▒▒░▒▒░░▓███▓ ░░░░░░░░░░ ██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒ ░░░▒▒▓▒░░░░ ░▒▓▓▓▓▓▓▓▓▓▓▓▓▒▓▒▒▓▓▒▒▒▒▒▒▒▒▒░░░░▓████▓▒▒▒▒▒▒░▒▒▒▓▓████▒▒▓▒▒░░░░░▒█▓█▒ ░░░░░░░░░ ░ ████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░ ░░▒▒▒░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▓▓▒▒▒▒▒▒▒▒▒░░░▒████▓▒▒▒▒▒▒▒▒▓███████▓▓▓▓██▓▒░░░░▒▓▓█░░░░░░░░░░░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒ ░░░▒▒░░░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▓███▒▒▒▒▒▒░░▒█████████▓▓▓▓████▓▒░░░▒██▓ ░░░░░░░░░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒ ░░░░░░ ░░▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒███▒▒▒▒▒▒░░▓██████████▓▓▓▓██████▓▒░░▒▓▓░░░░░░░░░░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▓▓▒ ░ ░░░░░░░░░▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒░░▓██▒▒▒▓▒░░▒████████▓▓▓█▓▓▓▓███████▓░░░▓▓▒ ░░░░░░░░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▓▒░ ░ ░ ░░ ░░░░░ ░▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒██▓▒▒▒▒░░▓███████▓▓▓▓███▓▓▓▓███████▓░░░▓▓░░░ ░ ░░░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▒░ ░░░░░░ ░░ ░░░░░░░▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▓██░▒▒▒░░▓███████▓▓▓█████▓▓▓▓████████▒░░▓▓▒ ░░░░░░░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▒ ░▒▒░░ ░ ░░░ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░██▒▒▒░░▒█████████▓▓▓█████▓▓▓▒▓████████▒░░▓▒ ░ ░ ░░░░░ ████████▓▓▓▓▓▓▓▓▓▒░░▒▒▒▒▒▓▒▒▒░░ ░░░░ ░░▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒█▓░░░▒▓█████████▓▓▓████████▓▓▒▓███████▓░░▓▓░ ░░ ░░░ ███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒▒▓██▓▒░ ░░░ ░ ░░▒▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒█▒░▒▓▓█████████▓▓▓▓████████▓▓▒▒▓███████▒ ▒▓░ ░░░ ███████▓▓▓▓▓▓▓▓▒▒▒░░▒▒▓▓▒░░ ░▒▓▒░ ░░░░ ░▒▒▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▒▓█▓▓▓▓█████████▓▓▓▓▓▓▓███████▓▓▒▒▓██████▓ ░▓░ ░ ░░░ ███████▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▒▒▓░▒▒▒▒░░▓█▓░░░░░░ ░░░▒▒▓▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▓▓██▓███████▓██▓▓▓▓▓███████▓▓▒▒███████░ ▒▒ ░░░ ███████▓▓▓▓▓▓▒▒▓▓█▓▓▓▓▓█▓░▒▓▒░▓▓▓▓██▓░░░░░ ░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓███▓██████▓███▓▓▓▓▓▓██████▓▓▓▒███▓███░ ▒▒ ░░░░░░░ ██████▓▓▓▓▓▓▓▒▓▓█▓▓▓▓▓▓▓░░▓▒░▓█▓▓▓▓██▓▒░░ ░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓██████▓▓███▓▓▓▓▓▓▓▓███▓▓▓▓▒▓██▓███▓ ▒▓░ ░░░░░ ██████▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓ ░▒▒░░█████▓▓▓▓█░░ ▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▒▓█▓░▓█▓▓██████▓▓▓▓▓▓▓▓▓▓▓█▓▓▓▓▓▓▓▓▒▓███▓███░░▓░ ░ ░░░ █████▓▓▓▓██▓▒▓▓▓▓▓▓▓▓▒░ ▒▓▒░░████████▓▒░░ ░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▓▓▓▓▓▓▓▓▓██████▓▓▓▓▓███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒███▓███▒▒▓▒ ░ ░░ ███▓██▓▓▒▒▓▓▓▓▓▓▓▓▓▒░░░░░░▒░ ▓████████▓░░ ░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓░▓█▒▓▓███▓███▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒███▓███▓▒▓░░ ░░ ██████▓▓▓░▓▒░░░ ░░░░░░░ ░░░░░████████▓░░ ░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▓█▓▒▓███████▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓██▓████▒▓▒░░ ░ ░ ██████▓▓▒ ░▒░░░ ░░░░ ░░░░░░▒░░▓███████▒░░ ░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░▓▓▓▓▓█▓▓▓████▓███▒▓▓▓▓▓▓▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▓██▓████▓▓▒░░ ░░░ ██████▓▓▒ ░▒░░░░░ ░░░░░░▒░░░███████▒░░░ ▒░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓██▓▓▓███▓███▓▒▓▒▒▒░░░░░▒▒▒▓▓▓▓▓▓▓▓▓▓▒▓██▓█████▓▒ ░░░░░░ ██████▓█▓ ▒▒░ ░░░░░░▒░ ░ ░▒██████▒▒░░ ░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓████▓▓███▓▓██▓▒▓▓▒░ ░░░░▒▒▓▓▓▓▓▓▓▓▓▒▒▓██████▓▓▓▒ ░░░ ░░░ ████▓█▓▓█▒▒▒ ░░░░░░░░░░░░ ░░░▓████░▒░░ ░░░▒░░░░▒▒▒▒░░▒▓▓▓▓▓▓▓▓▓█████▓▓██▓▓███▓▓▓▓▓▒▒▓▒ ░░░▒▒▓▓▓▓▓▒▒▒▒░░▒██▓███▓▓▓▒ ░░░░░░░ ████▓█▓█▓▒░ ░░░ ░░░░░ ▒▒ ░▓▓█▒▒░░ ░░ ▒░░░░░▒▒▒▓▓▓▒▒▒▒▒▒▓███████▓███▓▓██▓▓▓▓▓▓▒▒▓▒▒▓▓░▒▓▓▓▓▓▒▒▒▒▒▒▒▒██▓██▓▓▓▓▒ ░░░░░░░ ████▓▓█▓▒░░░ ░ ░░░ ░░░▒░ ▓░░░░▒▓▒░░░░░░░░ ░░░▒▓▓▒▒▒▒▒▒▒▓████████████▓▒▓██▓▓▓▓▓▓▓▒▒▒▒▒▒▒▓▓▓█▓▓▒▒░░░░░▒██▓██▓▓▓▓▓ ░░░░░░░ █████▓▓▒░▒░ ░░░ ░░░ ░░░▒░░ ▒░ ░▒▒▓▒░░ ░ ░▒ ░▒▒▓▒▒▒▒▒▒▒▒▓████████████▓▓▓██▓▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓██▓▒░░ ░██▓██▓▓▓▓▓░░░░░░░░ ██▓███▓▒▒░░ ░░░░░ ░░ ░░░░░▒░ ░▒░░░░▒░░ ░░ ▒▒▒░▒▒▒▒▒▓▓███████▓████▓▓▓▓▓▓█▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▓▒░▒░░░ ░██▓██▓▓▓▓▓░░░░░░░░ █▓████▒▒░ ░░░░░░ ░░ ░░░░░░░ ▒▒▒▒░░ ░░░▒░▒░▒▒▒▒▓████████▓▓███▓▓▒▒▓▓█▓▒▓▓▓▓▓▓▓▓█▓▓██▓▓▓▓██▓▓▒▒░▒▒ ░██▓██▓▓▓▒▓▒░░░░░░░ █████▓▒▒ ░░░░ ░░░░ ░░ ░░░░░░░░ ░░▒░░░ ▒▒░▒░░░░▒▓▓████████▓▓███▓▓▓▒▒▓██▓▒▓▓▓▓▓▓▓▓▓███▓▓▓▓▓██▓▓▓▒▒▒░░░██▓██▓▓▓▒▒░░░░░░░░ █████▓░ ░░░░░ ░░░░░░░░░░░░░░░░░ ░ ░░░ ░▒░▒▒░░░▒▒▓█████████▓▓████▓▓▓▓▓▓█▓▓▒▓▓▓▓▓▓▓▓▓▓█▓▓▓▓▓██▓▓▓▓▒▒▒▒▒▒█████▓▒▓▒▓░░░░░░░░ ████▓▒░ ░░░ ░ ▒▒▒░░░░░░░░░░░░░░░░░ ░░ ░░ ░▒▒▒░▒▒▓█▓█████████▓████▓▓▓▓▓▓█▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓▒▒▓█████▓▓▓▒▓░░░░░░░░ ████▓▒░░ ░░░░ ░▒▒▒░▒▒░░ ░░░░░░ ░░░░░░░░░░░ ░▒▒▒░░▒▓█▓█▓█████▓█▓▓████▓▓▓▓▓▓█▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓███▓▓▓▓▓▓▓▒▒▓█████▒▒▒▒▓░░░░░░░░ ███▓▓░░░░░▒▒░░░░░▒▒▒░▒▒░ ░░░░ ░░ ░░░░ ░░ ░░░▒░▒▓██▓▓█████▓██▓█████▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▓▓▓▓▓▓▒▒▓███▓▓▒▒▓▓▒░░░░░░░░ ████▓░░░░ ▒░ ░░░▒▒▒░▒▒▒░ ░░░ ░░ ░░░░ ░░ ░▒▒░▒▓█▓▓▓████▓▓█▓▓█████▓▓▓▓▓▓▓▒▓▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓███▓▓▓▓▓▓▒▒████▓▓▒▒▓▓░░░░░░░░░ ████▒░░░░░▒▒░░░▒░▒▒▓▒▒▒▒░░░░ ░░░░░░░░ ░░░ ▒░░▒▓▓▓▓▒▓████▓▓█▓▓██████▓▓▒▒▓▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▓▓▓▓▓▓▒▓▒▒▓███▓▓▒▓▓▓▒░░░░░░░░░ ████▒░░░░░▓▒▒░▒▓▒░▒▓▓▓▒▒░░░▒░░ ░░░░░░░░ ░░░░░░░░▒▓█▓▓▓█████▓▓▓▓▓██████▓▓▒▒▒▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░▒▓▓▓▒▒▒▒▓██▓▓▓▓▓▓▒░░░░░░░░░░ ███▓░░░░▒▒▓▓▓▒▒▒▒▒▒▒▓▓▒░░ ░░ ░ ░░░ ░ ░ ░░▓▓█▓▓▓███▓▓▓▓█▒▓██▓████▓▓▒▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▒▒▒▒▒▓█▓▓▓▓▓▓▒▒░░░░░░░░░░ ███▓░░░▒▒▒▓▓▓▒▒▒▒▒▒▓▓▓▒░░░▒▓░ ░▒░░ ░ ░░░ ▒▓▓▓▓▓▓▓██▓▓▓▓▓▓▒▓██▓████▓▓▒▒▓▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▓▓▒▒▒▒▒▓▓▓▓▓▓▓▓▒░░░░░░░░░░░ ██▓▓░░░▓▒▒▓▓▓▓▒▒▒▓▓▓▓▓▒▒▒░░░░▒▒▓▒░ ░░░ ░▒▒▒▓█▓▓███▓▒▓▓▓▓▓▓██▓█████▓▒▒▒▒▒▒▓▓▓▓▓▓▓▒▒▒▒░▒▒▒▒▒▓▓▓▓▒▒▒▒▓▓▓▓▓▓██▒░░░░░░░░░░░░ █▓█▒░░▒▓▒▓▓▓▓▓▓▓▓█▓▓██▓▓▓▒▒▒▓▓▓▓▒░ ░ ░ ▒▒░▒▓█▓▓██▓▓▒▒▓▓▓▓▓████████▓▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▒▒▒░░░░░▒▓▓▒▒▒▒▒▓▓▓▓▓▓▓█▒░░░░░░░░░░░░ █▓█▒░░▒▒▓▓▓▓▓▓▓▓▓█▓████▓▓▓▓▓▓▓▓▓▓░ ░░ ░▒░░▓▓▓▓██▓▓▒▒▒▓▓▓▓▓▓███████▓▒▒▒▒░▒▒▓▓▓▓▓▓▓▓▓▒▒▓▒▒▒░░░▒▒▒▒▒▓▓▓▓▓▓▓▓▓█░░░░░░░▒▒▒░▒ ███░░░▒▒▓▓▓▓▓▓▓▓█▓▓████▓▓▓▓▓▓▓▓▓▒ ░░ ░▒ ▒▓▒▓▓██▓▓▓▓▓▓▓▓▓▓▓██▓█████▓▒▒▒▒░▒▓▓▓▓▓▓▓▓▓▒▒▒▒▒▓▓▒░░▒▒▒▒▓▓▓▓▓▓▓▓██▓░░░▒░░░░░▒▒ ▓▓▓░░░▒▒▓▓▓▓▓▓▓▓▓▓▓███▓▓▓▓▓▓▓▓▓▓░ ░ ░░░▓▒▒▒██▓▓▓▓▓▒▓▒▓▓▓▓▓███████▓▒▒░▒▒░▒▓▓▓▓▓▓▓▓▓▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▒███░░▒▒▒░▒▒▒▒▒ ▓▓▓░░░▒▒▓▓▓▓▓▓▓▒▒▓▓▓▓█▓▓▓▓▓▓▓▓▓▓░░░ ░ ░░▒▓▒▒▒██▓▓▓▓▓▓▒░▓▓▓▓▓▓▓█████▓▒▒▒░▒░░░▒▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▒▓▓▓█▓▓▒▓██▓▒░░▒▒▒▒░▒▒ ▓▓▒░░░░▒▓▒▒▓▓▓▓▒▒▒▓▓▒▓▓▓▓▓▓▓▓▓▓▒░░░ ░░ ░░▒▓▓▒▒▓▓▓▓▓▒▓▓▒▒▒▓▓▓▓█▓▓████▓▒░▒▒░▒░░░▒▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▓▓▒▓▓▓▓▓▓███▒▒░▒▒▒▒▒▒▒ ▓▓▒░░░ ▒▒▓▒▓▓▓▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒▒░░░ ░░ ░▒▒▓▓▓▓█▒▓▒▒▓▓▒▒▒▓▓▓▓███████▓▓▒░▒▒░▒░░░▒▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓█▓▓▓▓▓███▓▒▒▒▒▒▒▒▒▒ ▓▓▒░░░ ▒▒▓▒▒▓▒▓▓▒▒▒▓▓▓▓▓▓▓▓▓▓▓▒░░ ░░░ ░░▒▒▒▓▓▓▓▓▓▒▒▓▓▓▒▓▓▓▓▓██████▓▒▒▒░▒░░▒░░░▒▒▒▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓▓▓▓▓▓▓████▓▒▒▒▒▒▒▒▒ ▓▓░░▒░ ░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▒▒░▒▓▓▒░░░░░ ░░ ░▓▓▒▓▓▓▓▒▒▒▒▓▓▓▓▓▓▓▓▓█████▓▓▒▒░░▒░▒░░░░░▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▓▓▓▓▓▓▓▓████▓░▒▒▓▒▒▒▒ ▓▓▒░▒░ ░▒▒▒▒▒▒▒░░▒▒▒▒▒▓▓▓▓▓▓▓▒▒▒▓▓▓█▓░ ░░░ ░░▓▓▓▓▓▓▓▓▒▒▒▓▓▓▓▓▓▓▓▓████▓▒▒▒▒░▒░░░░░░░░░░▒▒▒░ ░░░░▒▒▒▒▓▓▓▓▓▓▓▓▓████▓▒▒▒▒▒▒▓▓ ▓▓▒░▒▒ ░▒▒▒░▒▒▓▒▒░░░░░░▓▓▓▓▓▒▒▒▓▓▓▓█▒░░░ ░░▒▒▒▒▒▒▒▒▓▓▓▒▒▓▓█▓▓▓▓▓▓███▓▓▒▒▒░░▒░░░░░░░░░▒▒▒ ░░░░▒▓▒▒▓▓▓▓▓▓▓▓▓█████▓▒▒▒▒▓▒▒▓ ▒▓▒░▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓░░▒░ ░░▒▒░ ░░░░░░▒▒▒▒▒▒▒▓█▓▓██▓███▓▓▒▒▒▒▒▒░▒░░░░░░▒▒▒░░░░░▒▓▒▒▓▓▓▓▓▓▓▓▓▓██████▓▓▒▓▓▓▒▒ ▓▓▓▒░▒░░░░░▒░▒▒▒▒▒▒▒▓▓▓▓▓▓▓▒▒▓█▓▓▓▓▒ ░░░░ ░░░ ░░░░░░░ ░▒░▒░▒▓▓▓█▓▓█▓███▓▓▒▒▒▒▒▒▒▒░░░░░▒▒▒▒░░░░▒▓▒▒▒▒▓▒▓▓▓▓▓▓███████▓▓▓▒▒▒▓▓ ▓▓▓▒░▒░ ░ ░░░░▒▒▒▒▒▒▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▒░░░░ ▒░ ░░░░░░░░░░ ▒░▒▒░▒▓▓█▓▓█▓████▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▓░░░░▒▓▒▓▒▒▓▒▓▓▓▓▓▓▓█▓█████▓▒▓▒▒▒▓▓ ▓▓▓▒░░ ░░░░ ░▒▒▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓░ ░▒ ░░░░░░░░░░░░░▒▒░░▒▓▓▓▓██████▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▓▒░░░▒▒▒▓▓▒▒▒▓▓▓▒▓▓▓█▓▓▓████▓▒▓▓▓▓▓▓ ▒▒▓▓░░ ░▒ ░▒▒▒▒▒▓▓▓▓▓▓▒▓▓▓▓▓▓▓▓▓▓▓░░ ░▒ ░░░░░░░░░░░░░░ ▒▒▒▒▒▓▓▓▓▓▓▓███▓▓▓▓▒▒▓▒▒▒▒▒▒▒▒▓▒░▒▒▒▒▓▓▒▒▒▓▓▒▓▓▓█▓▓▒▓█████▓▒▓▓▓▓▓▒ ▓██▓░ ░ ░░░░░▒▒▒▒▓▓▓▓▒▒▓▓▒▓▓▓▓▓▓▓▓▒░░░░░ ░░░░░░░░░░░░░░░░░▒▒▒▒▒▓▓▓█▓████▓▓▓▓▒▓▓▓▓▓▒▒▒▒▓▓▒▒▒▒▒▒▓▓▒▒▓▓▒▒▓▓▓▓▓▒▒▓█████▓▓▓▓▓▓▓▓ █▓▓▒▓ ░░ ░░░░▒▒▒▒▒▒▒▒▒▒░▒▓▓▓▓▓▓▓▒░░░░ ░░░░░░░░░░░░░░░░░░▓▒▒▒▒▓▓██▓█████▓▓▓▒▓▓▓▓▓▓▓▒▓▓▓▒▒▒░▒▓▓▓▒▒▒▒▓▓▓▓▓▓▓▒▒▓▓████▓▓▓▓▓▓▒▒ ██▓░░░░ ░▒░▒▒▒▒▒▒░░░▒▒▒▒▒▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░ ░░▒▒▒▓▒▒▓▓█▓▓█████▓▓▓▒▓▓▓▓▓▓▓▓▓▓▒▒▒░▒▓▓▓▒▒▒▓▓▒▒▒▒▒▓▓▒▒▓█████▓▓▓▓▓▒▓▓ ▓▓▓▒░░░ ░░▒▒▒▒▒░░▒▒░ ░░▒▓▓▓▓▓░░░ ░░░░░░░░░░░░ ▒▒░▒▓▓▒▓▓█▓▓▓█████▓▓▓▒▓▓▓▓▓▓▓▓▓▒▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▒▒▓█████▓▓▓▓▓▓▓▓ ▓██▒░░ ░░░░░░░░░▒▒▒▒░ ░ ▒▒▓▓▒▓░░ ░░░░ ░░░░░░ ░░░▒░░▒▓▒▒
The Plague · 2019-10-27 10:42
>>15733 what's the input format? i like it
if · 2019-10-27 17:02
>>15733 gib soruce pls
H.R. Giger · 2019-10-28 09:12
>>15478 I liked the second one, it seems kinda complicated to make it. There were some other websites that did that some years ago, like Synch and now Cytube. You could make a website out of that. Also, Golang is a good language, you shouldn't feel lazy about doing those things with it.
Wirth · 2019-10-28 11:52
>>15755 >There were some other websites that did that some years ago, like Synch and now Cytube Can't seem to find anything about Synch, do you have any links? The difference between Ijod and Cytube (as far as I see) is that my program hosts the videos itself. >You could make a website out of that. I'm working on different views based on passwords and youtube-dl backend support, maybe I could run a public instance then. But I think that would waste much more bandwidth than I could hold.
Project 2501 · 2019-10-28 14:40
>>15757 >Can't seem to find anything about Synch, do you have any links? Synch died some years ago, Cytube is the new successor. You could add some option to show youtube videos too, people like that idea. I'm not sure if using youtube-dl to download the videos and then showing them is the best idea since it would use a lot of bandwidth. >But I think that would waste much more bandwidth than I could hold. That's the problem with selfhosting things. If you're interested, there are some websites that sells VPSes with unmetered bandwidth limit (at least they say they don't). I just realized that your program was all written in Go without separating front and backend, why did you choose this way?
JARGON · 2019-10-29 09:47
>>15747 Input: various image file formats (jpg, png, .......) Output: various utf8 ansi formats (various monochrome + various colour types) >>15748 All in time. Release scheduled Q1/Q2 2020 Any major features you think such a program should have? monochrome threshold (adjustable) + random dither (adjustable) mode: ██████████████▜███ █▄▙▘▗▜▜██▀▟▙▘▚ ▗▟████▄▄▄ █████████████████▀▘ ▙▜▙▌▘▙▟██▚▜▖▝ ▗███████████▖ ██████████████████▘ ▞█▌▙█▟▜▀█▟▐█▗ ▟████▛▛▀▀▀▜███▖ █████████████▌▛▀▛▛▌ ▜▀▟▛▌█▛▞▜▚▘▌▄ ▟███▀ ▘ ▀██▌ ████████████▀ ▀▘▌ ▐███▜▟▞▛▀██▖ ▟██▀▖ ▄▄▄▖▖ ▝▜█ ██████████▛ ▚ ▐█▀▙▜█▙▀█▜▛▗ ▗█▛▘▀▘ ▟███████▙ █▙ ██████████▘ ▐██▙█▀█▜▙▚▖▝ ▟▛▘▄ ▄███████████▖▝█ █████████▌ █████▜▞█▝▄ ▘ ▐█▘▝ ▟█████████████▖▐▌ ████████▛ ▖▄▖ ████▚▀█▛▙ ▗ ▐▌ ▗▟█████████▙▜███▙ ▙ ███████▛▀▀▜▙▝▀▀▙ ▐███▛▟▀▟▘ █▙▟████████████▄▜███▖▐ ███████▟███▄▌▐▘▄█▙▖ ▞▘▛▘▝▝ ▗▄▟▙█▜██████████████▖███▌▝▖ ██████▚████▛ ▘▐████▖ ▐ ▝▗▗▞▞ ▘ ▗█▜████▛█████████▙████ ▌ ████▀████▛▘ ▘ ▐████▌ ▝▗ ▀ ▟▛█▜████▜██████████▐███▌▌ ████▌▘ ████▖ ▝▙▌▝▝ ▟█▟█▟███▛██▌▞▀▜█████▐███▙▌ ████▖▗ ▝███ ▌▝▀ ▖▖██████████▌ ▖█████▝████▛ █████ ▗▝▜█ ▖ ▘▗▄▜▛▜█████████▟█▌▌▄▖▟██▘ ▗█████ ████▘ ▚ ▜ ▞▘▖ ▄███████▟█████▄▛▗███ █████ ███▌ ▗ ▘ ▛▐█████████████████████▖ ▗ █████ ███ ▘ ▟████████▛▜█▙▜██████████ ▖▗███▜▚ ██▛ ▖ ▗▟████████████▞█████████████▐███▛█ ██▌ ▖▗▖ ▄███████████▜███████▛▀███▜▙▞▜███▜▌ ██▘ ▌ ▐ ▟▖▄ ▝█▙▟████████▙▟▙▙██████▖▖▀▜▟█▀███▙▞▘ ██ ▘█▙▄▗▄█▖ ▟██████▙█████▘▌▜███████▄██▙ ▘████ ██ ▐▗█▛█████▄▖▄▄▌ ▞▐████▝███████▐▘▝████▞ ▝▀█▌ ▐███▙ █▌ ▐█▜█▛█████▟██▌ ▘▐█████████████ ▜████▀▀▚▖ ▀ █████▖ █▌ ▝█▜██▀███████ ▛▗████ ██████▛▘ ▐███▙ ▟ ▄▜████▙ ▗ █▘ ▛▟█▛▝▜▟████▌ ▜▙█▟▝█▄▜█████▙ ▀█████▘ ▐▘ ▟████▄ ▗ ▙ ▝▝▘▀▗▀█████ ▄▄ ▜████▞█▟█████▙ ▝ ▘▜▀▗ ▝▜█████▙ ▐▜ █ ▖ ▞▖▖ ▘▝▜██ ▟██▘ ▀▀▀▀▙▝██████▛▄ ▌ ▛▄███████▟▞▟█ █▌▝ ▀ ▝▙▌▄███▛▙███ ▝ ▖▌▜██████ ▖▗ ▗▘ ▛▄█████████▖▀▛ █▙ ▝▗▜██▗████▘ ▜█████▄▘▖▜ ▗▄▐ ▗▝▟▘▘███████▌▗▄█ ▙█ ▝ ▝▘███▚█████▌ ▗ ▝██████▛▜█▟▖▞▌ ▘▄▛▐█▟▟█▀██████▛ █▌▘ ▝ █▛██ ▝▚▄██████████▙█▘ ▗█▀█▛█▜█▙█████▛█ █▙ ▝██ ▟▙███████▘▜███▖ █▛ ▐▜████████ ▝▘ ▝█▖ █▗██████▙▄▛████ ▛ ▞█▜█████▌▀ ▖ ▝ ▟▝▝▚███████▖████▐▙▘ ▖▛▙▟███▜█▌█ ▘▛▖ ▖ ▗▗▘ ████████▐█████ ▖▘████▐█▄▛ ▝▚▌▛▐▟▝▚ ▗ ▝ ▐███████ ▜██▞█ ▌▐█████▟██
Hacker · 2019-10-29 09:48
>>15767 ? ██████████████▜███ █▄▙▘▗▜▜██▀▟▙▘▚ ▗▟████▄▄▄ █████████████████▀▘ ▙▜▙▌▘▙▟██▚▜▖▝ ▗███████████▖ ██████████████████▘ ▞█▌▙█▟▜▀█▟▐█▗ ▟████▛▛▀▀▀▜███▖ █████████████▌▛▀▛▛▌ ▜▀▟▛▌█▛▞▜▚▘▌▄ ▟███▀ ▘ ▀██▌ ████████████▀ ▀▘▌ ▐███▜▟▞▛▀██▖ ▟██▀▖ ▄▄▄▖▖ ▝▜█ ██████████▛ ▚ ▐█▀▙▜█▙▀█▜▛▗ ▗█▛▘▀▘ ▟███████▙ █▙ ██████████▘ ▐██▙█▀█▜▙▚▖▝ ▟▛▘▄ ▄███████████▖▝█ █████████▌ █████▜▞█▝▄ ▘ ▐█▘▝ ▟█████████████▖▐▌ ████████▛ ▖▄▖ ████▚▀█▛▙ ▗ ▐▌ ▗▟█████████▙▜███▙ ▙ ███████▛▀▀▜▙▝▀▀▙ ▐███▛▟▀▟▘ █▙▟████████████▄▜███▖▐ ███████▟███▄▌▐▘▄█▙▖ ▞▘▛▘▝▝ ▗▄▟▙█▜██████████████▖███▌▝▖ ██████▚████▛ ▘▐████▖ ▐ ▝▗▗▞▞ ▘ ▗█▜████▛█████████▙████ ▌ ████▀████▛▘ ▘ ▐████▌ ▝▗ ▀ ▟▛█▜████▜██████████▐███▌▌ ████▌▘ ████▖ ▝▙▌▝▝ ▟█▟█▟███▛██▌▞▀▜█████▐███▙▌ ████▖▗ ▝███ ▌▝▀ ▖▖██████████▌ ▖█████▝████▛ █████ ▗▝▜█ ▖ ▘▗▄▜▛▜█████████▟█▌▌▄▖▟██▘ ▗█████ ████▘ ▚ ▜ ▞▘▖ ▄███████▟█████▄▛▗███ █████ ███▌ ▗ ▘ ▛▐█████████████████████▖ ▗ █████ ███ ▘ ▟████████▛▜█▙▜██████████ ▖▗███▜▚ ██▛ ▖ ▗▟████████████▞█████████████▐███▛█ ██▌ ▖▗▖ ▄███████████▜███████▛▀███▜▙▞▜███▜▌ ██▘ ▌ ▐ ▟▖▄ ▝█▙▟████████▙▟▙▙██████▖▖▀▜▟█▀███▙▞▘ ██ ▘█▙▄▗▄█▖ ▟██████▙█████▘▌▜███████▄██▙ ▘████ ██ ▐▗█▛█████▄▖▄▄▌ ▞▐████▝███████▐▘▝████▞ ▝▀█▌ ▐███▙ █▌ ▐█▜█▛█████▟██▌ ▘▐█████████████ ▜████▀▀▚▖ ▀ █████▖ █▌ ▝█▜██▀███████ ▛▗████ ██████▛▘ ▐███▙ ▟ ▄▜████▙ ▗ █▘ ▛▟█▛▝▜▟████▌ ▜▙█▟▝█▄▜█████▙ ▀█████▘ ▐▘ ▟████▄ ▗ ▙ ▝▝▘▀▗▀█████ ▄▄ ▜████▞█▟█████▙ ▝ ▘▜▀▗ ▝▜█████▙ ▐▜ █ ▖ ▞▖▖ ▘▝▜██ ▟██▘ ▀▀▀▀▙▝██████▛▄ ▌ ▛▄███████▟▞▟█ █▌▝ ▀ ▝▙▌▄███▛▙███ ▝ ▖▌▜██████ ▖▗ ▗▘ ▛▄█████████▖▀▛ █▙ ▝▗▜██▗████▘ ▜█████▄▘▖▜ ▗▄▐ ▗▝▟▘▘███████▌▗▄█ ▙█ ▝ ▝▘███▚█████▌ ▗ ▝██████▛▜█▟▖▞▌ ▘▄▛▐█▟▟█▀██████▛ █▌▘ ▝ █▛██ ▝▚▄██████████▙█▘ ▗█▀█▛█▜█▙█████▛█ █▙ ▝██ ▟▙███████▘▜███▖ █▛ ▐▜████████ ▝▘ ▝█▖ █▗██████▙▄▛████ ▛ ▞█▜█████▌▀ ▖ ▝ ▟▝▝▚███████▖████▐▙▘ ▖▛▙▟███▜█▌█ ▘▛▖ ▖ ▗▗▘ ████████▐█████ ▖▘████▐█▄▛ ▝▚▌▛▐▟▝▚ ▗ ▝ ▐███████ ▜██▞█ ▌▐█████▟██
Junichi Fujiwara · 2019-10-29 09:50
>>15768 It should look OK in a monospaced font. Perhaps my display wasn't using monospaced format. Oh well.
Debbie Charteris · 2019-10-29 13:46
>>15767 >Input: various image file formats (jpg, png, .......) >Output: various utf8 ansi formats (various monochrome + various colour types) Thanks! >All in time. Release scheduled Q1/Q2 2020 Good things come to those who wait. >Any major features you think such a program should have? Nothing for an initial release, but with all the effort you seem to put into good output representation supporting video formats would be great.
Yet Another Lainon · 2019-10-29 13:52
>>15770 Thanks for the feedback! Video has many more issues to consider, and even if it is out of my scope / ability I'll see how I can make design decisions to facilitate possible future expansion in that direction.
Netrunner · 2019-11-03 16:33
>>11167 This one is really awesome
over · 2019-11-03 16:36
>>13522 Wow this one is really cool too, how come you guys don't get recognition?
Molly Millions · 2019-11-04 03:42
>>15767 scaling so it fits on screen color dithering with different terminals, i.e. ANSI 16 color, xterm256, truecolor OPTIONAL [may not always be possible] for monochrome consider matching multiple sub-pixels per character cell... meaning use a character where a typical font would outline curves better, or render after a curve detection filter for sharper outlines.
Cat Mother · 2019-11-04 12:55
>>15829 >scaling so it fits on screen Tricky. There are so many issues with this, (pre or post conversion scaling? image interpolation methods?) and could steer the program away from a converter to an editor. It is much more straightforward to allow the user to create the image at the size required then input it for conversion - in a do one thing well kind of way. Maybe v2.0?? >color dithering with different terminals, i.e. ANSI 16 color, xterm256, truecolor Included. >OPTIONAL [may not always be possible] >for monochrome consider matching multiple sub-pixels per character cell... meaning use a character where a typical font would outline curves better, or render after a curve detection filter for sharper outlines. Simple monochrome better rending done for diagonals, which should make curves more defined - but not exactly what you mentioned I think. It uses the block drawing characters rather than ASCII. >>15771 I did some colour video testing, the terminal isn't designed to handle the throughput. libcaca library renders a simplified form of ansi video. It makes many simplifications and does acrobatics with memory just to do a more basic video render than my code would output. If much better experts think it's beyond the terminal capability to output hi-def ansi, dumb me shouldn't even go there.
Lord Nikon · 2020-04-20 17:39
https://github.com/olagood/drastikbot https://github.com/olagood/drastikbot_modules https://drastik.org/drastikbot Language: Python 3 This is an IRC bot I have been developing and maintaining for the past few years. It uses no external libraries (except from the drastikbot_modules repo, which contains two dependencies) and was written completely from scratch. It's most interesting feature is its module system. Besides the fact that it is very simple to learn and use, it offers the following interesting features. Hot code (re)loading, which is the ability to update the code of each module at runtime without the need to shut the bot down. This is very useful and makes developing and adding new modules effortless. Another nice trait of this system is that it makes the base bot resilient against module crashes and in some cases helps increase the modules availability since a crashing module will still be able to be called normally. The implementation of such behaviour was very easy since it mainly takes advantage and builds on top of Python's module system. Other less interesting, but valuable features are: NickServ based user authentication, SASL, Module blacklisting/whitelisting (rules for allowing or disallowing a module to work on a channel), User access lists (limit specific users from accessing various bot features), a bot administration interface over irc that allows channel OPs to control the bot and others. This project is currently being rewritten. The goals of the rewrite are scalability, high availability, better and more correct implementation of the protocols used, support for protocols other than just IRC, bridging between connections/channels and a new and hopefully even simpler module system. I will go into details about this project in a possible future post once it is in a presentable state.
string · 2020-04-22 10:18
>>10421 You can use the wget python module as well, that should make things a little bit more portable.
Acid Burn · 2020-04-23 01:44
>>10412 > This is an interactive machine code development environment I've created. Interesting. Could it be used to modify machine code in real time on an embedded system, or is it a static editor that is to assembly what assembly is to c?
H.R. Giger · 2020-04-23 01:46
>>13522 > Not that lain, but back in the early 2000's I've seen this posted at least 2 other times by now. Is this a copypasta? It reads like one.
null · 2020-04-23 01:55
>>13620 I'm excited that I inspired the syntax of a programming language with one of my earlier posts. That or maybe its true that all languages converge towards .,;'.,;'҉(`
Just another Random Lainon · 2020-04-24 01:57
>>18006 The tool is intended for operating on static data, although I suppose nothing actually stops it from working on a memory space changing out from underneath it. It would require modifications and I'm not much interested by it, but it could be done if I ever pursued it. It would be subject to heavy race conditions, however, so it's not really a good idea, I don't think. >is it a static editor that is to assembly what assembly is to c? The C is a high-level language with no relation to assembler language. Similarly, assembler languages have little true relation to the underlying machine code. So sure, my tool is designed to facilitate manipulating machine code directly, without unnecessary layers, although I wouldn't compare my MMC to C, because I dislike it.
Guthrie · 2020-04-25 09:53
I have seen some great stuff done with deep learning programs, one of which took still paintings and made them animated as if they were talking (see video) https://www.youtube.com/watch?v=P2uZF-5F1wI I want to make a program that will take a short video clip and then rotoscope frame by frame into an animated cartoon. My hopes are to bring it to the point where it can emulate popular and classic cartoon styles and not just stay stuck with A Scanner Darkly and Schwab commercial look. For the future I also want to do something with sound synthesizer and deep learning to emulate musical instruments, noises in nature, and voices. Perhaps in time the program can make new and funny things.
word · 2020-04-25 09:56
I made snake game on Phyton
Nobody special · 2020-04-25 21:34
https://github.com/sethierophant/longboard Rust, Rocket + Diesel A simple imageboard engine. I wanted it to be able to be hosted even on really cheap VPSs so I went with Rust to hopefully get good performance, although I haven't added any benchmarks yet.
word · 2020-04-26 01:52
>>15758 >I just realized that your program was all written in Go without separating front and backend, why did you choose this way? Why should one do that?
pop · 2020-04-26 06:43
>>15478 >I feel pretty lazy for choosing Go all the time, but C seems like such a mess. Unicode/UTF handling is not standardised, it's obvious that networking was an afterthought, and working with libraries is burdensome. There's nothing wrong with Go at all. As much as I appreciate C where appropriate (kernels, HPC, embedded systems) I'd argue that its nature makes it a poor choice in the 21st century for anything that doesn't need to touch bare metal. Just the security implications alone should be enough to discourage it for anything network-related. How many times has the world been screwed over due to a buffer overflow in a C program? Too many to count. For me, Go has replaced C for commandline utilities (tview is frickin' awesome) and daemons, Node for web apps, and Python as a teaching tool. I'm hoping for Fyne.io to get good enough in a few months so that I can ditch C for desktop GUI programs as well.
Unsigned · 2020-04-26 08:39
>>18025 Cool :D
Dox · 2020-05-10 13:39
>>11145 Ah I just saw this today. Didn't expect it to be made by a regular here.
Fausto · 2020-08-21 04:40
Hi lain, This lockdown I have worked on improving an old and abandoned project of mine. Still has a lot to work on but I would want some feedback. I am no expert at programming so roast my code please. I have made a textboard It is hosted here: http://45.79.250.220 And the code is here: https://github.com/analogcity
Hacker · 2020-08-21 07:01
Hi, i am trying to write own imageboard engine, but i am kinda lost about database design. First idea was just treating threads as posts, and having boolean value telling if post is OP of some thread, or not. But then - if i get post that has OP property to false (so its reply, and not opening post), how do i decide to which thread this post belongs? Here is my sqlite file i am starting with, so i have 2 boards, each with one thread, and in each thread there is one post. But how do i decide which post belongs to which thread? Probably my design is too simplistic DROP TABLE IF EXISTS posts; CREATE TABLE posts ( id INT AUTO_INCREMENT PRIMARY KEY, content VARCHAR(250) NOT NULL, image VARCHAR(250), OP INT NOT NULL, board VARCHAR (50) NOT NULL ); INSERT INTO posts (content, board,image,OP) VALUES ('first post is bad', 'b','image1.jpg',1), ('Javascript is best language', 'prog','image2.jpg',1), ; INSERT INTO posts (content, board,OP) VALUES ('second post is bad', 'b',0), ('Java is second', 'prog',0) ;
Fausto · 2020-08-21 07:19
>>20389 With your design I would add a field called thread_ref to the post table where it would be a foreign key nullable where it points to other posts, the OP of the thread. Something like this CREATE TABLE posts ( id INT AUTO_INCREMENT NOT NULL, thread_ref INT default NULL, content VARCHAR(250) NOT NULL, image VARCHAR(250), OP TINYINT(1) NOT NULL, board VARCHAR (50) NOT NULL, PRIMARY KEY(id), FOREIGN KEY(thread_ref) posts(id) ); Also I would create another table for the boards and change the posts.board field for a foreign key
Fausto · 2020-08-21 10:22
>>20391 Probably this won't work as you are referencing a table that it has not yet been created, but the idea is good. Just add the constraint after creating the table. CREATE TABLE posts ( id INT AUTO_INCREMENT NOT NULL, thread_ref INT default NULL, content VARCHAR(250) NOT NULL, image VARCHAR(250), OP TINYINT(1) NOT NULL, board VARCHAR (50) NOT NULL, PRIMARY KEY(id) ); ALTER TABLE posts ADD FOREIGN KEY(thread_ref) REFERENCES posts(id);
Demeere · 2020-08-21 13:03
>>20386 I did really enjoy it anon, maybe work on getting the links highlighted on a post. Honestly pretty comfy posting from ssh, felt like a true 1337 h4ck3r. If you keep up the good work I wouldn't mind becoming a regular there
Bobby Newmark · 2020-08-22 05:00
>>10408 https://git.qorg11.net/lainsafe.git || https://github.com/qorg11 Perl Simple file sharing service (lainsafe) and a client for it(lainsafecli) supports many flags, such as --server (to choose which server to upload the files) and --tor (which uses tor to upload the file)
vector · 2020-08-22 19:53
>>17948 Nice bot. >>15767 Has this been released?
Yuki Nagato · 2020-08-23 11:52
>>18025 What is the interface?
Tomohisa "Tom" Kanezaki · 2020-08-23 15:58
>>20386 will keep an eye on this, looking very nice and could become a comfy little community, who knows >>20394 >Honestly pretty comfy posting from ssh indeed, it is!
Torvalds · 2020-08-23 17:29
>>13522 it does not work
Stallman · 2020-08-23 20:33
Screenshot tool in Python/Qt. Painting and uploads. https://github.com/sertraline/chizuhoru
Fausto · 2020-08-24 03:27
>>20427 >>20394 Thanks for checking it out anons, glad you like it. I will try to add a highlight for the links!
Anamika · 2020-08-24 19:13
>>15351 very cute bird
Frank Garza · 2020-08-28 01:28
>>11145 bookmarked!
Lunch · 2020-09-08 06:48
>>10408 https://github.com/vxiiduu/picochan LuaJIT with a SQLite database. Features: - Low line count - 2400 lines of Lua, not counting the FFI library bindings (which are not specific to this software). - No JS at all, and CSP is used to disable all JS and unneeded features to improve security - Inline image expansion and floating post box - not present on any other non-nano-derivative imageboard that I'm aware of - Multiple file support - Image (animated GIF thumbnails), video, PDF, audio, and text file uploading support - Rich nestable formatting support (bold, italics, redtext, spoilers, strikethroughs, URL linkification) - Standard catalog, overboard, index and recents queue - HTTP compression of dynamic content without needing webserver support - Moderation features: range/multi delete, pattern delete - Fast rendering of all pages, even with extremely high post counts - Proper, solid database schema Drawbacks: - No ban support, since it was designed for onion services - No capcode support
Ein · 2020-09-08 09:07
>>20722 Sounds tight. Do you have it deployed anywhere?
Zhora · 2020-09-08 13:26
https://github.com/bobxonar/saucebot C, using Win32 saucebot is an nhentai client app and my first try at making a GUI. It uses Win32 directly without going through any kind of other API first. So far, it supports viewing a doujin and downloading them--I want to make searches as well. The code has a fair number of issues and I want to clean it up, but I only yesterday had enough where I felt I could upload it.
FILLER · 2020-09-08 13:54
>>20727 NO
The Plague · 2020-09-08 17:56
>>20727 Yes, I do have it deployed and it works very well.
Bob Arctor · 2020-09-08 19:02
>>20735 >nhentai I'm disappointed in you, friend.
setq · 2020-09-14 00:09
>>10412 Well, it's been two years since I wrote that post. It's difficult for me to be satisfied with what I've done since, but I know it's better than nothing. I successfully reimplemented the MMC, still in Common Lisp, with the advantage of having a clear idea of what it should be. It's easier to read, more efficient, has features I didn't want to bother adding to the old version, redisplay is without flicker, it lacks the disconcerting flaws I never bothered to fix otherwise, and so much more. I've written a few games with it so far, and am working on others. It became clear to me that I can never have the tool I want under current operating systems. They make everything so painfully and unnecessarily complicated. The simplest of tasks are made arduous, and the rotten design of the underlying interfaces has one either insert it to fester or find ways to avoid needing it, and I chose the latter. I don't want to rewrite it under these systems again. I'll instead seek to write another targeting better, but this will involve ever more work outside of it if I'm to be satisfied. I resent how much time I invest into the program, knowing I want to reimplement it again later, so I'm trying and failing to focus on other work now, and just being pleased with using the tool. It's all too easy to tweak it again instead of working on something more deserving of my time. Still, adding new features or those I've wanted to have for a while now, has me thinking about my general model for the program, and I've made good progress on mulling over how to target wildly different architectures, so it's not strictly wasted. I've read of alternative programming models a decent amount over the years, and I saw my system in one, which will have my review of the document all the more interesting. Still, the building blocks I use aren't perfectly suited to my design, so there's unnecessary hardship in determing it works properly, and I've noticed to my horror a few lurking bugs, but I've stomped each out shortly thereafter. I'd like a customization language, but that's not something user programs should even have a choice on. If the system enforced a good language, everything would get a customization language for free, and it wouldn't be any issue. Even though it's not large or complicated, it should be several times smaller and less complex. I shouldn't drone on further. To address my last post, there's now a Qwerty binding, and others could use it, although I doubt others will. I'm glad I successfully breathed life into my novel machine code development tool. Now it exists and I can use it.
hash table · 2020-09-14 00:12
>>10412 I didn't proofread my post carefully enough, and forgot to add this link: http://verisimilitudes.net/2020-07-07
Leto Atreides I · 2020-09-14 11:21
>>20743 eh, it was more of a learning project than anything else. A lot of the GUI code is ok at best, because I still don't understand the madness known as win32. At this point I'm wondering if I should continue this overgrown "toy" project (I do use this sometimes, is it really a toy then?), or just move on to something that I make to be used, not something I make as essentially an extensive demo.
cond · 2020-10-09 14:45
http://34.68.138.17/api#/boards Own imageboard engine written in Java and react router. It does not support images and creating threads yet. But you can write posts if you want (refresh to see them, I tried to setState with response after POST but got error "tried to update state with value no longer usable")
Apoc · 2020-10-10 00:55
>>10408 https://desuka.ch Rust / actix-web A little (or not) multilanguage anonymous mediaboard, currently supports basic functionality + admin + multiple langs + infinite threads. There are two language available right now: ru(a,b,serv,o) and en(b only)
Ivan Petrov · 2020-10-10 00:55
>>21246 + Frontend side: JS/Vue
FILLER · 2020-10-10 06:40
A WebUI for Masscan. No link because it's not ready yet but is currently functional.
Lady Jessica · 2020-10-10 08:31
>>21246 looks a lot like dashchan on tomorrow theme, was that accidental?
Crash Override · 2020-10-11 05:14
>>21253 Some interface features are taken from dashchan. Theme on pic is dracula (there are a lot of options in settings).
array · 2020-10-11 14:48
https://github.com/alnyan/ygg-kernel-amd64 https://github.com/alnyan/ygg-libc https://github.com/alnyan/ygg-userspace All written in C I'm writing an operating system for x86-64 PCs, been doing that for almost two years already. The codebase itself is (in my opinion) filled to the brim with my ugly hacks, which I eventually plan to refactor and prettify. For now, however, I'm focusing on getting more features ready and at least being able to compile GCC for it, which requires some missing functionality like libc++ and some POSIX features of libc. Though, I've already been able to assemble and link my first binary using binutils recently.
t · 2020-10-11 16:24
>>21310 Niiice. The libc could become an alternative to musl-libc... >https://github.com/alnyan/ygg-libc/blob/master/src/math/log.c Oh, parts of the code are incomplete with stubs in place. That probably silences compilier errors... :/ You are way way past what I could code on my own! Even if I could nitpick little things here and there (like using djb2 hash function in kernel space). Sorry, no GitHub® account to submit soykafty patches with, I would suck anyways. The D_lang compilier folks succeeded in gathering more contributors via GitHub however so worth a shot.
renames · 2020-10-11 17:28
>>21310 >>21315 You will need a `strtod()` in the libc, even if not used in the kernel. Probably a low priority... Do you have a policy on COPYING, CREDITS, AUTHORS, LEGAL etc? This looks excellent. https://sourceware.org/legacy-ml/newlib/2006/msg00020.html There was ancient PD code for `strtod()` that got used in many libc'-s but I can't find it. That old code finally got some CVE'-s and wouldn't cover C99 hex-floats anyways. :/ Further reading: * https://gist.github.com/mattn/1890186 (PD is questionable in Japan and Germany) * https://rootdirectory.ddns.net/dokuwiki/doku.php?id=pdclib:start (strtod missing, some functions lower quality) * https://github.com/embeddedartistry/embedded-resources/blob/master/examples/libc/stdlib/strtod.c (this guy has a embedded systems company, with a blog!) * https://embeddedartistry.com/blog/2017/05/10/libc-stdlib-pt-1/ * https://embeddedartistry.com/blog/2017/10/18/implementing-libc-stdlib-pt-2/ (often uses Apple based code) etc... PDlibc is licensed CC0, which doesn't disclaim libility. Beware! Including in MIT project should be legal, double-check the policies. *sigh* `strtod()` is important because it can be used to implement `atof()` and other functions. But can be put on back-burner if not needed in kernel.
Haruyoshi · 2020-10-11 18:42
>>21310 >>21315 >>21318 No rand() . https://github.com/alnyan/ygg-libc/tree/master/src That should be quick to fix! Mersenne Twister, ISAAC and Blum Blum Shub are all popular choices. I think musl-libc uses lrand48() or something... (it has to be implemented anyways lol). There is no standard for the default rand() . This guy is great. https://burtleburtle.net/bob/rand/index.html So is this. https://www.pcg-random.org/index.html (sample code Licensed under Apache License 2.0 https://www.pcg-random.org/download.html) BBS whitepaper, no copyright in the United States. https://calhoun.nps.edu/handle/10945/50483 Just using lrand48() may be adaquate for now... the *rand48 functions in <stdlib.h> are all based on a LCG, but with some of the 48 bits kept private. https://nxmnpg.lemoda.net/3/lrand48 Multiply constant a = 0x5deece66d Add constant c = 0xb Default seed = 0x1234abcd330e short _randbuff48[3]; void srand48(seed) { _randbuff48[0] = 0x330e; _randbuff48[1] = (seed >> 0) & 0xffff; _randbuff48[2] = (seed >> 16) & 0xff; return; } Of course the *rand48 functions should be unit tested against other implementations as a sanity check, and with enough trials to compare with over 0xffffffff times in a row (because of the randbuff[]).
Joey · 2020-10-11 23:02
>>21310 The <math.h> functions are all stubs. Usually **libm** functions are implemented as assembly code using a floating point unit ("hardfloat"), but it might call an emulation library ("softfloat"). Since this is an x86_64/AMD OS these will *probably* work? I've never done this kind of stuff... http://www.delorie.com/bin/cvsweb.cgi/djgpp/src/libm/src/ The files are under a mix of LICENSE-'s. If it is not both usable and acceptable then we will need to read up on x86 assembly language, floating-point instructions. https://docs.oracle.com/cd/E18752_01/html/817-5477/eoizy.html That will require test programs because the references might be for real mode, 32-bit protected mode or other... And then there are SIMD (possible alternative and/or optimization?) etc. :/ --- There should be a priority list to triage the issues. For example if utime() were missing a new system call in the kernel may be needed first!
array · 2020-10-11 23:32
>>21326 >>21315 >The <math.h> functions are all stubs. Usually **libm** functions are implemented as assembly code using a floating point unit ("hardfloat"), but it might call an emulation library ("softfloat"). Yeah, I'm planning on eventually implementing all the math functions, but you guessed it correct — I just wanted to suppress linked/compiler errors when building some stuff like Lua (which works already, just floats don't work). I think I'll just skip the softfloat part (as I'm only targeting x86-64) and go for x87/SSE instructions for implementation. >>21321 The reason for missing rand() in libc is the same as for missing math functions — just focused on kinda different things (still spending most time working on the kernel part of the project). I appreciate your suggestions, though. That'll be useful once I get my hands on libc again. >>21318 >Do you have a policy on COPYING, CREDITS, AUTHORS, LEGAL etc? Well, not really. I just don't really care much about licensing and stuff, but I believe I put a MIT license text in my kernel repo at some point. The main 3rd-party source base I use so far in my kernel is ACPICA, which is Intel's implementation of ACPI machine language interpreter and related utilities — which I want to get rid of too (as I did of newlib, replacing with my own libc) eventually.
H.R. Giger · 2020-10-18 19:42
No current projects but was thinking of trying my hand at PSP homebrew development. Any anons got experience with this? I need some idea for soykaf to build up my portfolio regardless.
fsociety · 2020-10-18 20:49
>>21472 Are you using Lua or C?
Agent Smith · 2020-10-18 22:08
...let me refactor my project before I post it.
Von Neumann · 2020-10-19 10:13
>>21473 Never used Lua. Was planning on rolling with C since I'm more experienced with it but I decided to give Rust a shot for now. Mainly because I'm a fool who wasn't sure how to install the psp toolchain on mac. Meanwhile cargo just werks.
Mario Rossi · 2020-10-19 15:56
>>21495 Rust homebrew would be nice. There isn't enough gamedev done with it.
Mentat · 2020-10-19 16:40
>>21472 Looks like it's pretty easy to get 3D graphics up: https://pspdev.github.io/pspsdk/group__GU.html You could try to write some basic demos.
Hououin Kyouma · 2020-10-26 00:32
>>20430 Very cool, anon.
Ender · 2020-10-26 21:56
Someone on another imageboard posted an idea they had for a puzzle game. It looked interesting, so I set about making my own version in Godot. https://gitlab.com/whutt/tcray
() · 2020-11-08 14:57
>>21504 >>21509 Slowly but surely anons. Emphasis on slowly.
Wintermute · 2020-11-08 15:16
>>22046 That's pretty neat!
Faye Valentine · 2020-11-15 09:01
I don't have it finished, but I am almost done with a tool to share bundles of excepts from books on a subject. Say the for Dummies book on a subject has a chapter or two that is good on a topic, but there is another book that is good on another topic. With this you could tie both of them in together and instead of having 500 books on a topic, you would have one Cliff's Notes version of the topic. Like I said I am putting the final touches on it and will release it here when I am done.
roll · 2020-11-17 13:18
>>22231 This seems really cool. Would the passage selection from the text bs automatic or moreso hand selected?
Tyrell Wellick · 2020-11-18 18:20
>>15767 >>20411 Second interested person here, I wanna convert images and print them on my line printer for wall art
t · 2020-11-19 05:14
>>22046 Accidentally just flashed the drive I keep my personal projects on, so back to square 1.
Roger Pollack · 2020-11-19 06:07
I was thinking about making a standalone TUI magit clone (like, real standalone, no emacs dependence), but right now I'm being overworked to death so I cannot bring myself to start it. Also, can't decide on libraries and programming language. Ncurses + C would be the obvious choice, but I kinda dislike ncurses and dealing with C strings can be a hassle I might not be up to anymore. I was thinking of using termbox, but that seems kinda dead. On the PL front I wanted to try maybe Nim or Zig, just to learn something new. >>21472 This is pretty neat. I'd like to get one of those some day, never had one but always thought they were cool. Looking forward to your updates. (Funny, I wrote that yesterday and forgot to post it, now I wake up to >>22354. Don't give up pal)
Lady Jessica · 2020-11-27 14:34
>>22318 The idea is to take word X from page y to word Z in page A. You could then do this multiple times and create a handy cheat sheet. You would also have an offset if need be if there are 5 instances of say "cat" or whatever. It is a rough draft but would love to put out the source code once I get it working. Need to work on the sharing function (filter out malicious actors), but should be in good working order soon. Written in Python with a Tkinter front end, but hoping to add features and turn it into a swiss army knife for PDFs.
Dox · 2020-12-26 11:09
>>22355 One month later, still haven't started back up. Now that Christmas has come and gone though, I got some free time to devote to learning something. Guess I'll try to get a fresh start this weekend.
Project 2501 · 2021-03-30 10:52
>>22318 BTW if you missed it I released the code on here and Github. The name of the program is CramCard and I plan to add to it in the future but wanted to push a MVP and add to it later. Enjoy!
Otto Normalverbraucher · 2021-03-30 11:45
>URL Dont want to share it for now. >Language / Framework Python and I'm using a lot of BeautifulSoup and some smaller libraries >Description An email scraper. I plan on running it on a spare computer I have and keeping it going constantly because it updates every ten minutes in case it changes.
Someone · 2021-03-31 01:27
>URL don't have one yet, still pretty early in development >Language/Framework Python and Flask. SQLite as database >Description Kind of a MyAnimeList clone. Still learning Flask and all of that, using my site to do that. I am still pretty new to python and programming in general, been learning it on and off since June. Plan to get the data from this unofficial MyAnimeList API, currently just have a mock database.
Turner · 2021-04-03 23:27
>>22354 This is why you use gitea
Jane Doe · 2021-04-05 17:19
https://absucc.github.io/nanoiweb/
Ein · 2021-04-07 10:34
>>25262 I love the idea of self hosting things. Godspeed.
Ishikura "Tatsu" Tatsuhiko · 2021-04-07 10:35
>>21472 That's pretty cool.
Six · 2021-04-18 19:30
So I'm currently wanting to start into android development and I want to make an application that uses the toe network, i skimmed through the documentation but I can't seem to find a good reference as to how i would go about integrating it
Eldon Tyrell · 2021-05-09 09:35
>>21472 >>22046 >>22354 To make a long story short, I no longer have a PSP but I may dip into GB or GBA homebrew at some point. Not sure yet. On another note, I finally came up with a realistic personal project that could actually be helpful! I recently got pic related for dirt cheap and have been pleasantly surprised by it's performance, all things considered. On windows, there is a proprietary Panasonic driver that lets you scroll down/up by spinning your finger clockwise/counter-clockwise around the edge of the circular touchpad. I thought it would be gimmicky but after getting used to it (in conjunction with the lack of clit mouse and middle click for fast scrolling) I find it hard to go back to old school two-finger scrolling. The only issue is that I'm not keeping windows, but switching to a linux distro (bunsenlabs fwiw). To the best of my knowledge there is no similar driver/feature available for linux systems (if any lainons are able to prove me wrong, please do), so I'd like to try and replicate the effect. Any pointers on where to get started? I've never done this sort of thing before but I think it could be a great experience once I get on the right track.
vi-user · 2021-05-09 09:51
>>10408 Conway's GOL in under 1.5kb > URL git://0x1bi.net/conway > Language / Framework ANSI C > Description I had a minimal GOL implementation but then I decided to re-write it with a few twists. There is one array to represent the grid instead of two (one for current generation, another for next generation). The C pre-processor is not used, as in at all. Someone on the internet said it was evil and thinking they know more than I do I believed them :) The code is independent of libc, that is it's not linked against any external libraries, although the code will only compile on 64 bit Linux systems.
Tank · 2021-05-09 15:47
>>25765 A really cool idea! Please keep us updated.
Tomohisa "Tom" Kanezaki · 2021-05-10 01:31
I had a small project that lasted for a while before I lost interest and shut down the scrapper. XJ9K was basically R9K but cross-site, to detect imageboard spam. It did need some manual oversight, though. There were some interesting outcomes though, some that people who browse multiple imageboards may already be aware of. In 2020, before and just after the US elections, there was a fair bit more political spam than usual, making right-wing /p­ol/ and /fascist/ spam the third most popular category behind new imageboard spam and child porn bots. The politics spam tends to get deleted almost immediately on special purpose sites (like lainchan, anime IBs, /comfy/) where it's obviously out of place, but are often mistaken for organic threads on political boards, even if occasionally gets mocked for being stupid. Notable false positives were community events like game nights, where multiple /v/ boards or anime boards would hold an event. It was a neat project but it seems lots of the spam has taken a decline, at least on the sites I use. It was able to be fully integrated into vichan, but was not finished to the point where it could remove the filters once no longer needed.
Otto Normalverbraucher · 2021-05-11 15:35
Well after doing some preliminary research, turns out circular scrolling actually IS supported by synaptics and was just a simple toggle to configure. Hmm. Any lainons know any cool raspberry pi projects? Making a smart mirror like pic related seems feasible. Since I`m lazy I`d probably forgo the touch screen aspect, which only leaves finding a cheap display to use and building the frame/mount.
Rick Deckard · 2021-05-12 16:17
>>25765 >To the best of my knowledge there is no similar driver/feature available for linux systems It's built into the Synaptics driver on Linux too. https://wiki.archlinux.org/title/Touchpad_Synaptics#Circular_Scrolling
Miho Iwakura · 2021-05-13 02:06
I have this idea for a sort of friendly virus It is a self replicating worm that installs adblock plugins into the PCs that it infects Havent done any code in a while, not since i got fired from my IT job Is this viable?
vi-user · 2021-05-13 06:56
>>25801 > friendly virus You mean GPL? :D
Armitage · 2021-05-13 10:29
>>25801 You'd be doing the world a favour, but the law would fuarrrk you up I imagine. Either way, a good thing.
Agent Richard Gill · 2021-05-13 11:28
>>25807 Sounds like the sort of attention that would eventually get adblockers derezzed, or made less viable on a global scale. Short term victory, long term fuarrrk
Meddler · 2021-05-13 12:08
>>25808 The destruction of adblocking technology would be a travesty. Why do advertisers believe they have the right to force images into my brain without consent? They shouldn't.
"Programming" · 2021-05-13 19:21
>>25809 Why do customers believe they have the right to force waiters to serve them without consent?
Tyrell Wellick · 2021-05-16 11:40
>>25816 the equivalent would be the right for customers not to use waiters ie: block waiters, which does exist now, you can order via smart phone app or giant tablet kiosks now/
Ein · 2021-05-16 13:39
>>25809 I don't think we have to worry about adblock being meaningfully derezzed. At worst you might get a situation like ytdl or emulators where you just have to be very careful about what you say as a developer to stay in the legal gray area. This is an old problem that exists due to a conflict between how the internet works and how contracts work. Basically, the only way to sue someone for using a modified client is to prove that you had a contract with them wherein they agreed not to use a modified client, and they violated that contract. However, making a contract with someone who hasn't even created an account on your website is very difficult, due to the lack of consideration in most cases. Clickwrap EULAs sometimes stand up in court, but it's kind of a tossup, and relies on someone actually clicking it as opposed to just reverse engineering your API. Really the only way they can make this work is to ban browsers altogether and only serve via their app, which includes an API key. Then using an illicit API key would break the DMCA's anti circumvention clause. But what if there was just a law that said "no adblockers"?Maybe that could work, but how would it be formulated? Clearly you can't ban web browsers that include content blockers, because selectively loading content is fundamental to how the internet works. You'd have to ban browser caches, firewalls, spam filters... So then the only option is to ban the act of "ad blocking". This would be certainly be a clumsy and difficult to litigate piece of legislation, but I could almost see it happening. However, if that happened you can't actually ban ad blockers unless they call themselves ad blockers and market themselves as tools for breaking the law. It's the emulator problem all over again.
sage · 2021-05-16 22:57
>>25855 That could be an equivalent, in a different analogy, but it doesn't really explain the "why?". Watching an advertisement is a form of payment. The consumer pays the advertiser this way, the advertiser pays money to the content provider, who pays the consumer with content. Advertisers don't believe they have a god-given right to make everyone watch ads. They are trying to make their business model work because they are paid to do so.
Rick Deckard · 2021-05-17 12:16
>>25869 Let's compare it with the old-school television experience. You're watching a movie. Ads come up, it's time to either go for a quick restroom break, fix up some snacks, etc. You only sit through the ads if you just can't be bothered to get up.
Switch · 2021-05-23 03:10
>>10408 Working on a news app.
Eldon Tyrell · 2021-06-02 07:37
https://gitlab.com/BasedRimuru/Tempest I wanted to make extensible projects, but I didn't like any scripting languages or wasm, so I made my own virtual machine for that in C
Liet Kynes · 2021-10-29 14:41
> URL https://github.com/Maxweill/Konakona https://twitter.com/MonogatariBotto > Language / Framework Python > Description A Twitter bot that takes random screenshots and creates short clips (from a show/anime) and uploads them. I’m currently working on it actively and I’m trying to add more functions to the bot. We also want make it more user friendly, and that’s why we’ll also add a GUI for the setup process. My personal bot is currently running on my pc but I was previously using a Pi Zero W which isn’t working as of right now (ಥ﹏ಥ) Feel free to ask me helping setting up a bot :)
Jet Black · 2021-10-29 16:10
>URL https://github.com/superswan/kuudereRAT >Language / Framework C, C++, and Go >Description "RAT" with some interesting features like tcp beacon, web interface, and a modular design. Modules are written in Go and delivered to implant upon check in. Kind of just a derp project for me to get good at systems programming. Working on the Windows implant and loading DLLs without touching disk. >>28309 based twitter bots i have one too https://twitter.com/schumannbot
↑ · 2021-10-30 00:25
>>28310 both of our bots are needed for humanity to properly function hehe
Lain Iwakura · 2021-10-31 03:00
> URL https://sr.ht/~q3cpma/mangadex-tools/ > Language / Framework Tcl / tdom, tcllib > Description Way to download MangaDex series or monitor (by producing an Atom feed) and mirror them regularly via cron. > URL https://sr.ht/~q3cpma/haggle/ > Language / Framework Tcl / tdom > Description Track the price of online products across multiple stores. The user needs to write regexp or xpath expressions to extract the price from pages. > URL https://sr.ht/~q3cpma/mus/ > Language / Framework C (POSIX) / libao, libflac (optional), vorbisfile (optional), opusfile (optional) > Description A simple CLI client/daemon music player consuming a plaintext album directory path playlist. > URL https://sr.ht/~q3cpma/posix-build/ > Language / Framework POSIX sh > Description Build system made of a collection of POSIX (almost, needs mktemp -d) sh functions because make was never made to do more than dependency declaration. > URL https://sr.ht/~q3cpma/misc-tools/ > Language / Framework C (POSIX) > Description A collection of miscellaneous tools: * genhtab Generate static C99 hash tables * htmldecode HTML decoding to UTF-8 * htmlencode HTML encoding from UTF-8 * mbcut Multibyte aware string trimming * natsort Natural sorting for UTF-8 * urldecode URL decoding * urlencode URL encoding * wcswidth wcswidth(3) wrapper Currently learning CL, I'll probably use it to make an efficient file duplicate detector.
Turing · 2021-11-21 02:57
> URL Later. > Language / Framework C > Description Image viewer and browser that won't suck.
↑ · 2021-11-21 04:43
>>28611 >browser Good luck, you will need all of it.
dictionary · 2021-11-21 05:10
>>28612 I guess you've misinterpreted it as "web browser". My image browser is on the picture. It's still a ton of work. Web browsers already do what I want, for the most part, and there's nothing that can be done about the deeply flawed web itself. My desktop is a different story.
Unspecified · 2021-11-22 13:49
>>28611 Looks interesting. is it running on top of a file explorer?
Ender · 2021-11-22 14:54
>>28643 I mishandled a part of GTK+ (GtkPlacesSidebar)--I have a GtkScrolledWindow that doesn't scroll in a GtkScrolledWindow that does, all because of the Adwaita theme. The component actually delegates most of its functionality to GLib, such as volume management. Ideally, I'd roll my own version of it, as it has a few problems, though it's not the core of the program, and so it's more than fine. GLib provides an awful lot of abstractions that are relevant to a file manager. I'll have to keep write operations out of scope here in order to get anywhere. Except for thumbnailing, that is.
Debbie Charteris · 2022-05-22 02:20
This thread is at the end of the board, so I'll make another post in it. I've not worked on my machine code hacking tool much in the past few years. I decided to focus instead on my language modelling, as I'd grown to believe storing text character-by-character to be foolish. Instead, text should be stored as words. I've named this system Elision. There are characteristics of this system which make it fundamentally better for manipulation, one being uniform word access making parallel computation trivial, and a second being that text operations become integer operations. Here's the first article: http://verisimilitudes.net/2018-06-06 I decided to target toki pona first, but this was rather misguided. The first describes it, the second is the first attempt, and the third is the best attempt: http://verisimilitudes.net/2020-06-18 http://verisimilitudes.net/2021-04-24 http://verisimilitudes.net/2021-09-21 Constantly thinking about tables of words and other such things has led me to an unusual style of programming: http://verisimilitudes.net/2022-01-31 I intend to soon release a toy, networked, language program for toki pona before moving on to Latin; I decided Latin would take me too long, and I could have a detour of a sorts. This program will make use of Elision ideas and exhibit this style of programming mentioned. Lastly, I discuss this and more in additional detail here: >>28919
Tyrell Wellick · 2022-05-22 07:13
>>31245 I'm curious, if you encode text word-by-word, wouldn't that end up being a HUGE (probably as large as unicode) encoding? How many bytes would that require per word? Would you have a variable-length encoding so that most common words fit in o e or two bytes and more esoteric ones use 3 or 4 bytes? How would that account for new words which are continually added to the language? Would you encode words proper, or morphemes? For example with latin, 'ire' 'exire' 'abire', would they be encoded just as in real life, as two separate morphemes? What if we want to use multiple languages at once? If I want to write about languages and decide to write: Brot, pan, bread, хлеб, 面包, pane, 🍞. What if I'm trying to say "eukariot comes from greek ευ- + καριος"? Would you have a soykafload of languages crammed in the same "codepage" of sorts, making it humongous? Or would the e coding have a way to signal the switch to a diferent language? What if my computer has limited memory? So where only ASCII would suffice for a variety of european languages, now I'd need MBs to store all those words? I'm very suspicious that an encoding like that could work in the real world, though chinese does it to an extent so maybe I'm wrong.
Incognito · 2022-05-22 14:32
>>31248 Also how would you account for the different cases of a given word (in inflected languages), such as puer, pueri, puero, puerum, etc? An extra three bits to signal either of {nom, gen, dat, acc, abl, loc(?)}? Would that mean you have to sort words according to their part of speech? What of those morphemes which show some vowel degradation (most commonly seen in russian), or which otherwise mutate when affixed to other morphemes? What happens when the mutation is either irregular or inconsistent (or just mutates with a specific morpheme due to historical accidents?) It seems to me that 1. You have a great deal of ancillary information to include in your encoding, and 2. You're trying to use computers (and their strict logical function) to an extremely inconsistemt domain, that of natural language. This might work for lojban, or toki pona, but I can't see it working for, idk, fuarrrking english. I'm afraid you're creating a complex solution to a simple problem which has already been solved.
Unsigned · 2022-05-22 15:26
>>31248 >I'm curious, if you encode text word-by-word, wouldn't that end up being a HUGE (probably as large as unicode) encoding? How many bytes would that require per word? Latin has fewer than 65,536 headwords, it seems, certainly fewer than 131,072. http://verisimilitudes.net/2018-06-06 Concerning layering further systems, I've noticed combining several can lead to a nicer result. For English, a twenty-three bit index; dictionary alternation bit; capitalization bit; and an inter-word punctuation code resulted in a better system than when I'd considered each layer as being separated. >Would you have a variable-length encoding so that most common words fit in o e or two bytes and more esoteric ones use 3 or 4 bytes? No. Words must have the same size, for efficient processing. Each word, with punctuation, could fit in thirty-two bits, and most words by definition are longer. Part of my realization is that language isn't an unbounded domain. There are only millions of words, and they can be more efficiently manipulated with this in mind. >How would that account for new words which are continually added to the language? The auxiliary dictionary is the escape hatch for this. >Would you encode words proper, or morphemes? For example with latin, 'ire' 'exire' 'abire', would they be encoded just as in real life, as two separate morphemes? Rather than store every word declension and conjugation, I'll take advantage of the regularity and store a code representing this instead, for the system to take and mutate; irregular words pose no issue whatsoever. So, the word TONITRUS is stored as its base code, along with the nominative singular code; the word TONITRUUM would be stored the same way, but with the plural genetive code. An irregular word would merely have a less efficient representation in the dictionary. >>29038 I don't intend to allow spaces or other such things in a word. For English and other living languages, I believe it's important to maintain the impossibility of homographs. For Latin, I quite like the idea of no space being one punctuation option, to allow the combination of a prefix and suffix, such as AB and ĪRE into ABĪRE, without needing to explicitly store the combination; much of this is due to the fact that I could expect a higher class of user for Latin, and that it's much less of an issue for Latin anyway; one way to attack homographs is by indicating it through other means, such as underlining combined words, but this is by that point a more specialized system. I could use color, font, and other such things for so many purposes in a dedicated Latin viewer, such as gender and word class. I don't intend to let the stupidity of the world lessen my work, but staving off this issue for English at as high a layer as possible is still a good idea. >What if we want to use multiple languages at once? >What if I'm trying to say "eukariot comes from greek ευ- + καριος"? Would you have a soykafload of languages crammed in the same "codepage" of sorts, making it humongous? Or would the e coding have a way to signal the switch to a diferent language? An Elision targeting for each would be needed, but combining them would only be an additional layer. Emoji aren't text, and I won't include them. Text can be written well by human hands, I'd argue it's monochromatic at the symbol-level, and it can be translated to systems such as braille. A blind man should at least be able to feel a textual symbol, but these emoji fail there as well. An escape hatch for inserting individual characters would probably be needed at some layer. Of course if people insist on using unnecessary qualities of character-by-character text then they should store it character-by-character. Is most text ASCII line-noise or a sequence of words with punctuation? >What if my computer has limited memory? So where only ASCII would suffice for a variety of european languages, now I'd need MBs to store all those words? A machine made forty years ago could cope with this. There's no excuse for remaining somewhat compatible with teletypes. http://verisimilitudes.net/2018-06-06 Machine text most commonly refers to a stream of octets representing character codes, and this might seem reasonable; I realized it wasn't. I considered why character codes were chosen: clearly due to limited memory and old hardware which physically stored the characters. There's no reason why those machines featuring even mere millions of times more storage couldn't manipulate text in better ways. Lastly, I don't see compatibility with every feature of ASCII as valuable. There will be no awful little artwork in Elision: http://verisimilitudes.net/2018-06-06 It's very important that oddities of one medium shouldn't be used as a weapon to discourage adopting another permitting more. These characters afford useless freedoms, with those true being forgotten. Acknowledge what currently passes for machine text lacks many qualities which true text can feature. >>31257 >Would that mean you have to sort words according to their part of speech? No. >What of those morphemes which show some vowel degradation (most commonly seen in russian), or which otherwise mutate when affixed to other morphemes? I don't know Russian. I do know every language deserves a dedicated solution, and not Unicode. >What happens when the mutation is either irregular or inconsistent (or just mutates with a specific morpheme due to historical accidents?) I've addressed this elsewhere in the post. >1. You have a great deal of ancillary information to include in your encoding, For English, no. I only realized these additions with Latin, because of how terrible English is. >2. You're trying to use computers (and their strict logical function) to an extremely inconsistemt domain, that of natural language. This might work for lojban, or toki pona, but I can't see it working for, idk, fuarrrking english. It will exist because I want it to exist. >I'm afraid you're creating a complex solution to a simple problem which has already been solved. Unicode solves this by disadvantaging most languages, conflating others, and making an even worse problem. Now, let's continue in the thread set aside for this, alright?
Lady 3Jane.. · 2022-05-23 20:11
How do any of you ever finish projects? I keep finding myself starting something that I want to make and then hitting one wall after another until I just give up because I start making zero progress, or I make some progress in something and then later realize the way I designed the thing I'm working on is soykafty and then I want to completely rewrite it, or I have something I want to implement myself instead of relying on a library (or maybe there just isn't a library to begin with for my language of choice) but I can't find any resources on how to do it or it involves some prohibitive barrier to entry like needing to know some fancy math stuff. It's all very demoralizing.
Void · 2022-05-23 20:25
>>31273 So, my two main projects are the machine code tool and the language modelling. Everything I've done can be tied to those, even if only tangentially. I strive to write my libraries, and I write them to be idealized libraries and not focussed on only how I'll use them. This can make for a good diversion, even when advancing future work. So, my point is to autistically obsess and pursue a project or two. This is key. Notice also that I'm writing novel programs, not something which already exists. This is also important. Don't hack for its own sake.
Faye Valentine · 2022-05-25 14:36
Not an actual project (yet), but more of a pipe dream. I'd like to write a physics simulator, particularly of orbital motions and celestial bodies, as close to the machine as possible, but also making full use of the abstraction ability of high-level languages. Which means I would implement every last detail of the computations, in assembly language (preferably for a RISC machine, either MIPS or RISC-v7 (for a raspberry pi)), but then I'd need to build high-level models that put those building-blocks together. Now, I've been trying to figure out what I need for this. First is the choice of language: either of Forth or a custom Lisp. Forth is pretty much tailor-made just for this, but lisp seems to work more nicely for composing high-level abstractions. As for the numerical methods, well, first I need to get my vector calculus and linear algebra down, as well as my classical mechanics, but then what? I need to know how to translate that to the metal, I'm thining Knuth's TAoCP Vol 2 has just the info I need to do that. So, yeah, a bit of an ambitious project, and for what? but I'd be willing to do it, even though it'll likely take me years of study before I can even start to code it up. Still, my main concern as of now is which language of the two mentioned will be best suited to the problem. I know there is a book by Sussman and Wisdom, which is a point in favour of lisp. Perhaps I should try both, adding another layer of books to the stack.
XERXES · 2022-05-27 07:23
Not finished yet C/ASM A web browser. Got tired of trying to write things other people have done many times before because of my NIH syndrome. My principal reason for doing this is simply the lack of decent, hackable and independent browser engines (e.g. the Dillo project, which hasn't been updated in 7 years), as well as the educational value that comes from writing large software. Call me an arrogant glitterboy, whatever, but I'll get back to you folks once I have something I can show.
Ivan Petrov · 2022-05-30 12:19
I wanted to start getting serious on a personal project and found two other projects who essentially do 90% of the work. All they're missing is the exact functionality I want (and a GUI). I'm somewhat relieved but also disappointed that I don't have to write a parser. I felt intimidated about programming as a whole reading through these piles of code.
Void · 2022-05-30 19:24
>>31274 it's not like I don't also try to write things that I think would be interesting to make and not just grinding away writing like CRUD apps or some dumb pointless soykaf. my problem is that I don't know enough to do anything, and seem to never make any progress with anything. it's hard to find the motivation to keep working on anything when it seems like it's just pointlessly banging my head at a wall failing to make anything useful.
Sabo Engle · 2022-05-31 13:53
>>31369 >my problem is that I don't know enough to do anything, and seem to never make any progress with anything. Learn, then. >it's hard to find the motivation to keep working on anything when it seems like it's just pointlessly banging my head at a wall failing to make anything useful. Have an assignment: Learn a machine code or APL, and make something simple with it. Personally, I like CHIP-8, and I can show a game in just forty octets if that would be wanted. Get familiar with fundamental features of automatic computers.
Spike Spiegel · 2022-05-31 17:16
>>31310 Awesome. Check out netsurf (https://www.netsurf-browser.org/) and visurf (https://sr.ht/~sircmpwn/visurf/) if you haven't yet >>31294 This seems super awesome. A thinner version of this (meaning starting at a higher abstraction: vanilla javascript, and ascending to a lower one, just 2d kinematics) was how I got into programming.
Eldon Tyrell · 2022-06-01 18:40
>>31294 It sounds like what you want is a DSL.
Mitnick · 2022-06-02 03:25
>>15733 >>15832 Well life went sideways in 2020....and still is. :( >>20411 >Has this been released? >>22349 >Second interested person here Sorry no. Just when I thought I was starting to get somewhere life went full dystopia. I still intend to release at some point - I'd hope this year, but my last prediction was so far off I'm hesitant to set another date. :( I'd say it's 80% done, 20% left, but that 20% (which makes the program a usable utility) has taken 80% of the time since I posted (because fml). (From a programmers perspective my coding would probably be viewed as an ugly hack) I think any main features I'd add are in. (I'd have to go back and look at what I'd added.) I remember ability to read palettes in Gimp format was one, along with transparency - think C64, Spectrum48k, Apple, etc., styling modes. Included pic is from the 24bit mode.
Jens Hansen · 2022-07-05 11:53
>>31245 >I intend to soon release a toy, networked, language program for toki pona before moving on to Latin I've mentioned this here, for anyone interested: >>31517
Frank Garza · 2022-11-28 13:35
https://basedwa.re/tmtt/feuille A socket-based pastebin, written in C99. Should be considered as a usable WiP for now, I still need to tweak and fix some things in my code. I'd love to hear your feedback! My personal instance: <https://bin.heimdall.pm/>. Feel free to play around with it :)
Yuki Nagato · 2022-12-11 09:02
>>33508 Really like this project. Keep it up lain
Mario Rossi · 2022-12-11 13:00
>>33508 Interesting. Small nitpick: `Multi-threaded (using fork)` is wrong, you probably mean multi-processing or multicore aware. What about builtin cleanup policy? Would be nice to have some LRU system.
Yet Another Lainon · 2022-12-12 06:30
https://codeberg.org/clear/recent Written in Go a simple tool for use in shell scripts to find the most recent file/directory. Working on adding multi-line outputs, because that requires a sorting algorithm and I'm still figuring that out.
Pulse · 2022-12-15 09:11
I made this. It's a work in progress. https://gitgud.io/nvtelen/ogai/
over · 2022-12-21 18:53
>>33727 Thanks :) >>33731 >Interesting. Small nitpick: `Multi-threaded (using fork)` is wrong, you probably mean multi-processing or multicore aware. You're right. I'll fix this tomorrow :) >What about builtin cleanup policy? There is none that is built-in at this time, but a small cron job that removes expired pastes is available on the README. >Would be nice to have some LRU system. What do you mean by LRU?
Nobody important · 2022-12-21 20:10
>>33767 Least recently used asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf
JARGON · 2022-12-24 14:04
>>33746 Nice work! I always love to see ppl making their own imageboards, keeping the true internet alive and well!!!
Vasya Pupkin · 2022-12-25 23:00
>>33781 Thanks. >keeping the true internet alive and well!!! Getting (quality)users is probably the hard part.
Acid Burn · 2022-12-26 05:42
>>10408 I'm about 70% of the way through writing a text forum board chan thing in OCaml
frammie · 2023-01-14 14:38
>>33746 Looks very nice, very well done!
Turing · 2023-01-15 02:42
>>31294 You may be interested in the FeniCS project https://fenicsproject.org/ Basically it is a collection of tools for writing (mostly C++ and FORTRAN) implementations of PDE simulation software. You write down your equations in an appropriate form, pick what finite elements you want, and it generates code for you. Sounds kinda like what you want to do. >As for the numerical methods, well, first I need to get my vector calculus and linear algebra down, as well as my classical mechanics, but then what? If you just want to do celestial mechanics with no weird conditions, you just need an ODE integrator which is pretty easy to write. Look up Runge-Kutta methods. PDE integrators are extremely difficult to implement in comparison and require way more mathematical background to understand, and you probably won't be able to do anything substantial on a RPi.
Dox · 2023-01-15 04:11
I wrote a teeny tiny forth-like interpreter targeting bare-metal RISC-V environments(specifically, the 'virt' environment from qemu). The whole executable fits in 2 KiB, or about 700 instructions. Features: -compiles compact bytecode to compact direct-threaded code. Arithmetic words complete in roughly 14 instructions. -variables are lexically scoped -functional style is encouraged (I'll probably try writing some parts of the Joy STL to illustrate this point) -bytecode is very very easy to compile from text Future Features: -static data arrays (this should be easy) -a basic STL providing proper memory management, quality-of-life words, macros, I/O, etc. -smaller executable size! There are still some things I know I could do to shave off bytes here and there This is the result of about 10 sleepless nights, and it's finally in a state where I don't feel embarrassed to share it. I'm really proud that I actually managed to get it down to 2 KiB and still have (almost) everything in it that I wanted to. I don't think a C compiler could have done it. Included is a basic bytecode compiler written in C (please don't read it, I am ashamed of it) that just outputs assembler directives, the interpreter itself in handwritten assembly, a linker script, and a short "spec" document describing the language. https://envs.sh/Q-y.zip
synchronized · 2023-01-18 00:36
https://github.com/vykt/netnote I made a pseudo peer to peer LAN file sharing daemon for linux systems. In essence you run a daemon in the background that periodically pings other running daemons configured to use the same listening port. You can then request to send files to other connected hosts with one terminal command. I've implemented proper permission checking. It comes with an installer. The only thing left to do is encrypt the traffic, but if you're using it at home you should be fine, especially since it has its own very simplistic protocol for doing the file transfer.
queue · 2023-03-01 04:41
There was a thread with personal projects where someone was making changes to some rss reader. He posted a screenshot of his feeds, one of them read 'a plan for this world' or something similar to that. If you read this, do you care telling me what it is, and about the other feeds, maybe it is useful. Thanks in advance
swap · 2023-03-04 08:04
>>20428 I just tried it. It literally works on YouTube. Are you dumb or something?
Pulse · 2023-03-11 11:42
wrote a script to scrape a page and tell me if some product in stock or not
Unidentified · 2023-07-18 13:21
>>34554 https://www.lainchan.org/λ/res/24106.html#q34456 I believe this is the blog https://a-special-plan-for-this-world.blogspot.com
synchronized · 2023-08-11 00:25
>>34684 web crawling was one of the first things I did when i got into programming
Wintermute · 2023-10-28 18:49
>>33746 I've pretty finished this. There's a live instance now.
Pris · 2023-11-17 10:23
https://hellomouse.net/stage/ I have made this "text adventure game engine" I am somewhat happy with. I don't really have anything else to say, except that I dislike the web and web technologies.
Turner · 2023-11-18 06:22
>URL https://git.lain.church/apoc/yuchan >Language / Framework Ruby >Description yet another imageboard script, started more than half a decade ago when i was just learning Ruby recently took it out of my archives in another attempt to keep it running, develop, maintain, and create tiniest/most readable possible imageboard a link to my instance is on the repo, it's an attempt of a revival of an old Yugoslavia focused board
Jim Hilger · 2024-03-04 22:02
>>3354 I wrote a utility that adds Gelbooru tags to JPEG files https://gitgud.io/nvtelen/metadata-inject Seems this is the easy part since Windows' XMP support only extends to JPEG, which is a shame. It's still great being able to search images by description. I wrote it with WSL and Windows in mind, but there's no reason it wouldn't work without WSL. As for Linux, I have no idea what the situation is there with metadata support.
Cypher · 2024-03-05 20:37
>>37677 i pet the dog :> cute and short lil thing
Reki · 2024-05-23 05:02
https://github.com/4rnv/SOS-Terminal https://sosterminal.surge.sh Nowhere as impressive as some of the projects in this thread, but I made a terminal-eqsue startpage with themes. The core functionality is that you can open a site directly by typing its name in the terminal window. There's 9 themes right now, including a lain theme. You can set a theme by typing --st as your input, then select a theme from the options in the prompt window. You can also set a username by typing --su . Both username and theme are stored locally on your device. >language/framework vanilla JS Right now I want to make the lain theme more 'lain-ish', so I gladly welcome suggestions.
Shogun · 2024-05-28 07:37
Currently trying to write a CHIP-8 emulator in Rust as a first program to learn the language. Can't figure out how to do 4-bit arithmetic in a nice way though.
Trinity · 2024-05-28 07:57
I'm currently writing a music player with the 2008 spotify client look for MPD. Qt is a pain in the ass to learn though even though the documentation is very good. I feel like my progress is unbearably slow at the moment. I might post pictures and stuff later down the line
Roger Pollack · 2024-05-30 11:53
I made an imageboard. It's pretty dead but still! Nothing crazy though, just a vichan instance. Thinking about turning it into a textboard though, probably using SchemeBBS http://galaxychan.xyz
The Oracle · 2024-05-30 12:11
>>39238 >no tls >block tor posting
藤原純一 · 2025-01-09 09:25
>>20386 Been a long ass time since I made this post. I just went through a "want to delete it all" phase just to come out of it wanting to rewrite it entirely from scratch. Here it was version 0.3 and now it is at 3.0, four fuarrrking years, I am proud of you past me! Everyone else keep working in your passion projects at the end those are the only ones that will fulfill you! I believe in you chummers! Thank you to anyone that checked it out and give me advice!
queue · 2025-02-02 17:59
drop-in replacement for express.js web: https://tinyhttp.v1rtl.site git: https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z44GJ5zJ3JVGR697hwBFKrvJo471B
Ender · 2025-03-01 09:29
>>11145 Rest in piece. you will be missed
nil · 2025-03-01 14:03
>URL https://getserver.app > Language/Framework Ruby on Rails, if I were to do it again though I would have stuck with my bread and butter (Perl + Plack)... > Description I despise cloud providers, so I made a VPS provider that isn't cancerous soyak.
Unknown · 2025-03-01 17:05
>>41310 what happened to the website?
Aristóteles Amadópulus · 2025-03-02 02:37
Tetris clone, a practice project in C with SDL. https://github.com/makos/tetris
The Phantom Phreak · 2025-03-02 03:07
>>41311 can I host my chuddy websites on there or do you hate people with certain ideologies?
FILLER · 2025-03-02 05:48
>>41314 You can host anything that doesn't break Canadian law, read the tos.
The Fin · 2025-03-02 10:11
>>10408 A friend of mine has someknow imageboard and i want to remade everything (vichan) i want to use only php8 (i don't know anything about php) any recomendation guys?
Hiro Protagonist · 2025-03-02 10:20
>>41313 Careful where you post it, the tetris company basically exists purely to litigate people that use the word "tetris" and any tetromino shapes.
Incognito · 2025-03-02 11:20
>>41317 I doubt they would go after non-profit, low profile games (such as a "practice project"). That said, the name "Tetris" and several aspects of the game (including the color / shape association) are trademarks and cannot be freely copied. Trademarking is a part of "intellectual property" that I consider worthwhile, but TTC's usage seems abusive to me.
Mario Rossi · 2025-03-18 05:07
https://github.com/slon-project/slon Mostly HolyC, network drivers and TCP/IPv4 stack is written in Jakt, which transpiles to C++ A Mastodon-compatible fediverse server for TempleOS
Agent Smith · 2025-03-18 15:41
>>41423 impressive. only thing stopping me from fuarrrking around with templeOS is figuring out what to edit to get a dark mode going
Wirth · 2025-03-21 12:20
>>41426 TempleOS has an array that defines all the colours somewhere, simply locate the array and swap all the light colours with dark colours and vice versa. I would have told you where it was I but had forgotten it's location.
Eldon Tyrell · 2025-03-27 04:09
gave myself time to work on a crazy project for a couple of days. Now it is done! I present to you my SaaS (Sigils as s Service). Don't ask me, I found it funny as a name and went with it. If anyone wants to engrave their the link is https://sigils.occult.codes :)
Arisu Mizuki · 2025-04-01 19:08
To make sense of 4chan's April Fool's stunt for 2025, I wrote a little Perl script to figure out which boards are still up. Its only dependencies are perl and curl. It can also be loaded in a REPL like reply for interactive use as described at the bottom. https://metacpan.org/dist/Reply #!/usr/bin/env perl use strict; use warnings; my $boards = [ '3', 'a', 'aco', 'adv', 'an', 'b', 'bant', 'biz', 'c', 'cgl', 'ck', 'cm', 'co', 'd', 'diy', 'e', 'f', 'fa', 'fit', 'g', 'gd', 'gif', 'h', 'hc', 'his', 'hm', 'hr', 'i', 'ic', 'int', 'jp', 'k', 'lgbt', 'lit', 'm', 'mlp', 'mu', 'n', 'news', 'o', 'out', 'p', 'po', 'pol', 'pw', 'qa', 'qst', 'r', 'r9k', 's', 's4s', 'sci', 'soc', 'sp', 't', 'tg', 'toy', 'trash', 'trv', 'tv', 'u', 'v', 'vg', 'vip', 'vm', 'vmg', 'vp', 'vr', 'vrpg', 'vst', 'vt', 'w', 'wg', 'wsg', 'wsr', 'x', 'xs', 'y' ]; sub is_board_alive { my $board = shift; my $url = "https://boards.4chan.org/$board/"; my $content = qx{curl --silent $url}; $content =~ /This board has been closed by order of the Department of 4chan Efficiency/i ? 0 : 1; } sub report_alive { my $s = shift; my @alive; for my $row (@$s) { my ($b, $v) = @$row; if ($v == 1) { print ">>>/$b/\n"; push @alive, $b; } } @alive; } sub get_status { my @status; for my $b (@$boards) { push @status, [$b, is_board_alive($b)]; } \@status; } sub main { report_alive(get_status()); } unless (caller) { main(); } =head1 REPL do "./april.pl"; my $s = get_status(); my @alive = report_alive($s); my %status = map { @$_ } @$s; $status{bant}; $status{pol}; %status{qw/b pol/}; \%status; =cut
Arisu Mizuki · 2025-04-01 19:16
>>41549 sub get_status { [ map { [$_, is_board_alive($_)] } @$boards ]; }
Lukasiewicz · 2025-11-10 09:08
Porn search engine where you can filter based on Ethnicity, Height, Weight and soon tags!
Apoc · 2025-11-10 09:35
>>43493 With multiple actors does it check if any of them is valid for all the requirements?
Technician · 2025-11-10 09:59
>>43493 If I sort it via 12-14 for age will it scrape cunny?
Moore · 2025-11-10 10:02
>>43494 They all have to meet the requirements right now >>43495 Due to a glitch in the system with hex > int > float > double conversion it believes the lowest age is 18
if · 2025-11-10 14:47
Denote is a small emacs note-taking tool that allows you to link scattered notes together, but it lacks the easy visualization tools on larger scale besides things like denote-explore [1], which while fine to visualize your notes does piss poor job at actual navigation. This made me angy, because my notes are usually very scattered and link cyclically to each other and soykaf. Hence, denote-tree [2] a thing that allows one to draw the tree structure from the root note, link and unlink notes, enter them, etc. It mostly works, but I want to add some way to edit metadata directly in the buffer. [1] https://github.com/pprevos/denote-explore [2] https://github.com/sarcom-sar/denote-tree
Hacker · 2025-11-27 12:25
>>41312 I believe it just went under randomly. I'm not entirely sure though. I just remember using it regularly before one day it just gave a 404
Ender · 2025-11-29 03:03
Lots of small projects here, but here are a few in a sufficiently good shape to share: >URL https://git.sr.ht/~q3cpma/rymscrap >Language/Framework Common Lisp/lquery & jzon >Description Little tool to scrap release and artist info from Rate Your Music pages and output them in JSON format to stdout. Also included is a tool to make album queries. >URL https://git.sr.ht/~q3cpma/fio-crystaldiskbenchmark >Language/Framework POSIX sh/fio & jq >Description Crystaldiskmark for UNIX PS: am I the only one who decided to swap Quicklisp with git submodules for CL tools (as opposed to pure libraries) to avoid the braindamage?
Crazy Jake · 2025-12-08 09:09
my latest big project: https://github.com/requiem-eco/dirge i'm going to build alot of web-apps and services on-top of it :3 pics attached are mock-ui's i make when i get bored !
Chan Siu Ming · 2026-01-14 15:30
>URL https://github.com/omnipin/omnipin >Language/Framework TypeScript >Description a trustless command-line static website deployment tool with automatic content replication and secure ENS updates, powered by Safe (both are protocols on Ethereum). 0 vendor lock-in (all private keys remain yours), no platform. Just the CLI. Works nicely with CI/CD for automatic deployments.
byte · 2026-05-29 22:16
I'm building a persistent RTS that fuses OpenTDD and age of empires, and trying to make its client run in the browser. C++ all the way down. Web assembly etc.
Emmanuel · 2026-06-05 09:45
I've been experimenting with MRuby on MacOS for a little bit. My goal is to create a tool heavily inspired by homebrew (I want it to be as easy to pickup as possible). My goal is not to replace the brew command. Homebrew is great but it is focused on building or installing a fixed set of libraries and tools, namely those that are somewhat known to work together on MacOS. But let's say you want to build a big project like QEMU from sources on MacOS. If you just git clone and cmake, you'll end up with a lot of missing dependencies, going recursively all the way back to stuff like the autotools, m4, pkgconfig, openssl etc. Of course, homebrew has you covered, because you can juste brew install qemu and it will work by installing all these dependencies. The issue being: what if there is another project like QEMU that you want to build, using, for instance, another version of openssl. What if you want to build m4 ? or openssl ? This quickly becomes hell, especially with "automagic dependencies" where the mere presence of some library on your system can affect a build process without clear report. My goal with picobrew (let's call it that for now) is to have a DSL that looks almost exactly like homebrew's formulaes. Everything that is installed by picobrew will be installed in a specific prefix created in ~/Library/picobrew (or something like that). Environment variables and correct build arguments will be stored in the prefix as well. Now the user can just create formulas, do picobrew install qemu.rb openssl.rb ... followed by picobrew run --prefix=NAME_OF_THE_PREFIX cmake --build . . Now why MRuby ? I wanted something that can be compiled with only the Apple LLVM toolchain. The cool thing being that MRuby can then be used to build Ruby MRI in a new prefix. Giving the user the option to build their formulas with a more "complete" language. tldr; I want to make it easy to build stuff on Mac without polluting homebrew and without fixing path variables every five minutes and without using Nix.
⍕ · 2026-06-05 09:50
>>44317 completing that: Ruby MRI requires the openssl to be installed, by bootstrapping the whole process with MRuby (which do not require it) we can use picobrew to install both openssl and MRI in a prefix without installing anything other than Apple dev tools.
Special Agent Bob · 2026-07-14 16:19
>>44317 I'm just saying that the nix package manager exists for mac
Wintermute · 2026-07-15 11:45
>>10408 > Language / Framework Python. > Description (Read only) web browser.
Nanashi No Gombe · 2026-07-16 01:41
>URL https://codeberg.org/AdrBog/ass > Language Shell >Description It's a shell script to make Android apps, I created it because I don't want to use Gradle or Android Studio It even handles the Android SDK and JDK setup so you don't have to. I've managed to create an app using this script, so it works for me. https://codeberg.org/AdrBog/copyparty-app
Hacker · 2026-08-13 19:55
>>10408 https://github.com/boole9000/m3 Written in C. Years ago I made an ncurses frontend for mpd. Messy code, but functional enough that I'll probably never replace it. Every few years I add another feature.
McCarthy · 2026-08-14 10:26
>>44462 > ass clean Hell yeah brother
Cereal Killer · 2026-08-24 16:03
shipped a vibe-coded Million Dollar Homepage remake as a bakery https://6millionpixels.com 6 million bakeable cookies @ $0.05 each about: https://6millionpixels.com/about
byte · 2026-08-24 16:14
Haven't uploaded the code anywhere. Don't consider it remotely complete as yet.
Project 2501 · 2026-08-25 07:01
>>44714 My first impression after reading the convoluted explanation of what's the website about is that the project is a low-effort scam.
William Holtzer · 2026-08-25 07:33
>>44719 I assume it's based on the song Pixels by Mimicking Birds.
Shogun · 2026-08-26 14:51
i made an bash script that uses curl, jq and wget to download the latest xkcd comic. i know, to many programs in use for a simple task.. i was bored when i made it
Judge Fang · 2026-08-26 17:47
Yesterday I added two jobs to my crontab: 1. rsync screenshots from flatpak steam directory to external hdd 2. gallery-dl drawings from xitter for a subset of artists I'm subscribed to I also persist all this kind of automation to dotfiles repo via chezmoi wrappers. Wrappers are needed because I include more than just ~: some files from /etc, and so on.
Church · 2026-08-29 19:51
>>41528 That is really neat. Just made a sigil so I can get a hot girlfriend with black lipstick, with straight black hair.
John Rain · 2026-08-29 21:35
Hey Lain, Just wanted to show everyone my AI programming skills. https://imright.wtf
cdr · 2026-08-30 10:16
>>44762 >bribe button LOL. LMAO.
Donna Hawthorne · 2026-09-07 02:47
Today, I built a file sharing program to use at work. Been a constant pain having to go through telnet/netcat or setting up sshfs to share files with coworkers. So I just built this simple program to share files/directories on the local network. https://codeberg.org/ef3d0c3e/sharez
Cutter · 2026-09-07 03:20
>>44788 Nice. I personally use samba to share anime over wifi between my laptops. Samba is good for permanent shares, while this one seems better for oneshot scenarios.
Naomi Nascimento · 2026-09-07 03:26
>>44788 Hmmm, why you have screenshots in C while your program is in Rust?... Ahhh ok, you're just showcasing irrelevant shared files.
Bobby Newmark · 2026-09-07 03:33
>>44789 Yeah that was my goal. No config file, no auth. You just pass the list of file/dirs you want to share as arguments, your coworker gets them and you can close the program. I was using 0x0 in the past, but they've stopped their service. And technically I could have gotten in trouble for using it. Perhaps I'll add a list of blacklisted files so you don't accidentally expose your private ssh key.
Lain Iwakura · 2026-09-07 04:56
>And technically I could have gotten in trouble for using it. No soykaf. Why would you share company files with an external entity without a contract? Your employer should provide that sort of infrastructure though, so fuarrrk them ig.
hash table · 2026-09-07 04:58
>>44795 They're no company files. But things like sending the .clang-format file that will produce something close to our coding style. Sometime I would also share some music or shell scripts that aren't related to the company strictly speaking.
Crash Override · 2026-09-07 05:02
Btw, wouldn't something like this even better? https://maurycyz.com/misc/etherfiles/ (ignore the IP configuration and just use your LAN)
Hong, Guil Dong · 2026-09-07 05:10
>>44797 That would work for computer locally connected. Although I don't know if someone connected via the company VPN could receive, since it seems to be skipping the TCP/IP layer. I went with the web server solution, because it's the simplest for receivers. They can click a button and an entire directory is recursively tar'd for them. I think the convenience is really a great plus for this.
Marly Krushkhova · 2026-09-07 05:50
TCP6-CONNECT/TCP6-LISTEN explicitly enough use a TCP stream. It should work over a VPN, Tor, a socks proxy or whatever you throw at it. I guess the server approach is more convenient, but I don't like the idea of creating a full bloated (rust) program for such a simple task as sharing files.
Pulse · 2026-09-07 09:58
>>44799 I have a c++ webserver base I could have used, but rust just makes development faster for this kind of projects. I didn't optimize for size and the final binary is 8MIB (counting static assets), which I think is acceptable. Although with a custom webserver you would probably be under 1MIB.