profile
viewpoint
Nick Black dankamongmen @dirty-south-supercomputing Atlanta https://nick-black.com i make computers go fast.

dankamongmen/cubar 6

CUDA analysis tools

dankamongmen/CANalystII-SocketCAN 3

Linux SocketCAN kernel module for the CANalyst II USB CAN adapter

dankamongmen/dankhome 3

(selections from) my home directory

dankamongmen/atem 2

command line tool to convert MetaStock to csv

dankamongmen/avant-wireless-applet 2

An avant applet for monitoring wireless properties

dankamongmen/canscan 2

CAN and CANopen active scanner

dankamongmen/casagrande 2

a task from good sir casagrande

dankamongmen/charn 2

Charn, that great city, the city of the King of Kings, the wonder of the world, perhaps of all worlds.

dankamongmen/concordance 2

concordance code sample

dankamongmen/dankcheese 2

fork of git://git.gnome.org/cheese

create barnchdankamongmen/notcurses

branch : dankamongmen/graphs

created branch time in 17 hours

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha e4f5cebe26cffb058a4f236c8dbc43addf200127

new examples chnapter

view details

push time in 17 hours

issue closeddankamongmen/notcurses

Failure in Multimedia test suite in xterm w/ bitmapped fonts

After enabling bitmapped fonts in fontconfig-config, I am seeing weird failures in the Multimedia test suite, on xterm only. More info to follow. Here's what I've got right now:

[schwarzgerat](0) $ ./notcurses-tester -p ../data/ --tc=Multimedia > 2 2>&1
....
        p�C�U�U�8�U�U    pB<�U�U �8�U�U              p�<�U�U�6�U�UpX<�U�U�u<�U�U   P�̛P�9�U�U    pR<�U�Up=�U�U    @/B�U�U  ���M�!�M�!  �O<�U�U�<�U�U           �6             'U�q*%����m>�Y;�jn�ۓ�h���zօ����FB�q*%����m>�Y;�jn�ۓ�h���zօ����FB�����m>�Y;�jn�ۓ�h���zօ����FB�m>�Y;�jn�ۓ�h���zօ����FB�Y;�jn�ۓ�h���zօ����FB�n�ۓ�h���zօ����FB��h���zօ����FB��zօ����FB�����FB��FB�  `2<�U�U�6�U�U     ����    ������������                                       Segmentation fault
[schwarzgerat](139) $ cat e
[doctest] doctest version is "2.3.7"
[doctest] run with "--help" for options
notcurses version 1.2.4
===============================================================================
[doctest] test cases:     34 |     34 passed |      0 failed |      0 skipped
[doctest] assertions: 8476233 | 8476233 passed |      0 failed |
[doctest] Status: SUCCESS!
[schwarzgerat](0) $        p�C�U�U�8�U�U    pB<�U�U �8�U�U              p�<�U�U�6�U�UpX<�U�U�u<�U�U   P�̛P�9�U�U    pR<�U�Up=�U�U    @/B�U�U  ���M�!�M�!  �O<�U�U�<�U�U           �6             'U�q*%����m>�Y;�jn�ۓ�h���zօ����FB�q*%����m>�Y;�jn�ۓ�h���zօ����FB�����m>�Y;�jn�ۓ�h���zօ����FB�m>�Y;�jn�ۓ�h���zօ����FB�Y;�jn�ۓ�h���zօ����FB�n�ۓ�h���zօ����FB��h���zօ����FB��zօ����FB�����FB��FB�  `2<�U�U�6�U�U     ����    ������������                                       Segmentation fault
[schwarzgerat](139) $ cat e
[doctest] doctest version is "2.3.7"
[doctest] run with "--help" for options
notcurses version 1.2.4
===============================================================================
[doctest] test cases:     34 |     34 passed |      0 failed |      0 skipped
[doctest] assertions: 8476233 | 8476233 passed |      0 failed |
[doctest] Status: SUCCESS!
[schwarzgerat](0) $

so what's up with that? everything claims to be passing, but we segfault out in the end? i'm pretty sure i once saw something about a double free() and corrupted lists, but usually it's just the SIGSEGV. Sometimes we even succeed.

closed time in 18 hours

dankamongmen

issue commentdankamongmen/notcurses

Failure in Multimedia test suite in xterm w/ bitmapped fonts

Resolved a horrible typo in ncplane_dup().

dankamongmen

comment created time in 18 hours

push eventdankamongmen/notcurses

nick black

commit sha ac31bf3a1277c25851d67c9269001deee80994aa

awww fuck me in the ass #429

view details

push time in 18 hours

issue commentdankamongmen/notcurses

Failure in Multimedia test suite in xterm w/ bitmapped fonts

ALLOCATED 138240 at 0x74e6e50
ALLOCATED 138240 at 0x7789f90
COPYING 186624 from 0x74e6e50 to 0x7789f90

you fucked up

dankamongmen

comment created time in 18 hours

issue commentdankamongmen/notcurses

Failure in Multimedia test suite in xterm w/ bitmapped fonts

==162219== Invalid read of size 8
==162219==    at 0x483D924: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x8441890 is 0 bytes after a block of size 138,240 alloc'd
==162219==    at 0x4838B65: calloc (vg_replace_malloc.c:762)
==162219==    by 0x485351D: ncplane_create (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x4857586: notcurses_init (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x196320: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Invalid write of size 8
==162219==    at 0x483D92B: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x86e4680 is 0 bytes after a block of size 138,240 alloc'd
==162219==    at 0x4838B65: calloc (vg_replace_malloc.c:762)
==162219==    by 0x485351D: ncplane_create (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x4854D2C: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Invalid read of size 8
==162219==    at 0x483D92F: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x8441898 is 8 bytes after a block of size 138,240 alloc'd
==162219==    at 0x4838B65: calloc (vg_replace_malloc.c:762)
==162219==    by 0x485351D: ncplane_create (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x4857586: notcurses_init (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x196320: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Invalid write of size 8
==162219==    at 0x483D933: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x86e4688 is 8 bytes after a block of size 138,240 alloc'd
==162219==    at 0x4838B65: calloc (vg_replace_malloc.c:762)
==162219==    by 0x485351D: ncplane_create (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x4854D2C: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Invalid read of size 8
==162219==    at 0x483D937: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x84418a0 is 16 bytes after a block of size 138,240 alloc'd
==162219==    at 0x4838B65: calloc (vg_replace_malloc.c:762)
==162219==    by 0x485351D: ncplane_create (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x4857586: notcurses_init (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x196320: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Invalid write of size 8
==162219==    at 0x483D93B: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x86e4690 is 16 bytes after a block of size 138,240 alloc'd
==162219==    at 0x4838B65: calloc (vg_replace_malloc.c:762)
==162219==    by 0x485351D: ncplane_create (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x4854D2C: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Invalid read of size 8
==162219==    at 0x483D93F: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x84418a8 is 24 bytes after a block of size 138,240 in arena "client"
==162219== 
==162219== Invalid write of size 8
==162219==    at 0x483D943: memmove (vg_replace_strmem.c:1271)
==162219==    by 0x4854DD4: ncplane_dup (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197E49: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==  Address 0x86e4698 is 24 bytes after a block of size 138,240 in arena "client"
==162219== 
==162219== Conditional jump or move depends on uninitialised value(s)
==162219==    at 0x4839C65: strlen (vg_replace_strmem.c:461)
==162219==    by 0x485A161: cellcmp_and_dupfar (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x485AD86: paint (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x485D6CF: notcurses_render (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197F75: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 
==162219== Conditional jump or move depends on uninitialised value(s)
==162219==    at 0x4839C78: strlen (vg_replace_strmem.c:461)
==162219==    by 0x485A161: cellcmp_and_dupfar (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x485AD86: paint (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x485D6CF: notcurses_render (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/libnotcurses.so.1.2.4)
==162219==    by 0x197F75: _DOCTEST_ANON_FUNC_2() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x155CF5: doctest::Context::run() (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219==    by 0x128C65: main (in /home/dank/src/dankamongmen/notcurses-1.2.4/build/notcurses-tester)
==162219== 

there we go

dankamongmen

comment created time in 19 hours

issue openeddankamongmen/notcurses

Failure in Multimedia test suite in xterm w/ bitmapped fonts

After enabling bitmapped fonts in fontconfig-config, I am seeing weird failures in the Multimedia test suite, on xterm only. More info to follow. Here's what I've got right now:

[schwarzgerat](0) $ ./notcurses-tester -p ../data/ --tc=Multimedia > 2 2>&1
....
        p�C�U�U�8�U�U    pB<�U�U �8�U�U              p�<�U�U�6�U�UpX<�U�U�u<�U�U   P�̛P�9�U�U    pR<�U�Up=�U�U    @/B�U�U  ���M�!�M�!  �O<�U�U�<�U�U           �6             'U�q*%����m>�Y;�jn�ۓ�h���zօ����FB�q*%����m>�Y;�jn�ۓ�h���zօ����FB�����m>�Y;�jn�ۓ�h���zօ����FB�m>�Y;�jn�ۓ�h���zօ����FB�Y;�jn�ۓ�h���zօ����FB�n�ۓ�h���zօ����FB��h���zօ����FB��zօ����FB�����FB��FB�  `2<�U�U�6�U�U     ����    ������������                                       Segmentation fault
[schwarzgerat](139) $ cat e
[doctest] doctest version is "2.3.7"
[doctest] run with "--help" for options
notcurses version 1.2.4
===============================================================================
[doctest] test cases:     34 |     34 passed |      0 failed |      0 skipped
[doctest] assertions: 8476233 | 8476233 passed |      0 failed |
[doctest] Status: SUCCESS!
[schwarzgerat](0) $        p�C�U�U�8�U�U    pB<�U�U �8�U�U              p�<�U�U�6�U�UpX<�U�U�u<�U�U   P�̛P�9�U�U    pR<�U�Up=�U�U    @/B�U�U  ���M�!�M�!  �O<�U�U�<�U�U           �6             'U�q*%����m>�Y;�jn�ۓ�h���zօ����FB�q*%����m>�Y;�jn�ۓ�h���zօ����FB�����m>�Y;�jn�ۓ�h���zօ����FB�m>�Y;�jn�ۓ�h���zօ����FB�Y;�jn�ۓ�h���zօ����FB�n�ۓ�h���zօ����FB��h���zօ����FB��zօ����FB�����FB��FB�  `2<�U�U�6�U�U     ����    ������������                                       Segmentation fault
[schwarzgerat](139) $ cat e
[doctest] doctest version is "2.3.7"
[doctest] run with "--help" for options
notcurses version 1.2.4
===============================================================================
[doctest] test cases:     34 |     34 passed |      0 failed |      0 skipped
[doctest] assertions: 8476233 | 8476233 passed |      0 failed |
[doctest] Status: SUCCESS!
[schwarzgerat](0) $

so what's up with that? everything claims to be passing, but we segfault out in the end? i'm pretty sure i once saw something about a double free() and corrupted lists, but usually it's just the SIGSEGV. Sometimes we even succeed.

created time in 19 hours

issue commentdankamongmen/notcurses

normalize fill-type function return value semantics

It looks like the C++ stuff is fine -- it all returned bool, based off explicit checks against -1 (as opposed to against 0).

dankamongmen

comment created time in 20 hours

push eventdankamongmen/notcurses

nick black

commit sha a45d8886014fa9774449ac90a0a15dd751cc8aa2

All fill-type functions return cells changed Fill-type functions used to return 0 for success, and -1 on failure. They now return the number of cells written on success, similarly to ncvisual_render(). Resolves #427.

view details

push time in 20 hours

issue closeddankamongmen/notcurses

normalize fill-type function return value semantics

polyfill and other routines of its ilk now return the number of cells written on success, or a negative number on failure. The gradient functions (and any other fill-type functions) ought conform to these same semantics. Do this before 1.3.0, since it breaks existing semantics.

closed time in 20 hours

dankamongmen

issue closeddankamongmen/notcurses

some unit tests are breaking when run outside of UTF8 encoding

We have enforce_utf8() available in the test suite for anything that requires UTF8 output to work (see #325 ). I don't think everything that needs to is using it, though -- we get test failures running debuild on Ubuntu Focal, and manually setting LANG=C when running unit tests on my box does indeed see some breakage.

Hopefully this doesn't affect the build we put up for Debian (still no word on this from ftpmasters btw). If so, we probably want to rebuild to avoid rejection for being unable to build from source.

closed time in 20 hours

dankamongmen

push eventdankamongmen/notcurses

nick black

commit sha a3323fb22cd4ea470487904294719b63701549e5

Enforce UTF8 where necessary in unit tests #428 Certain unit tests required UTF8 encoding on the output terminal to work (#428). This includes anything which does any kind of fill. Add enforce_utf8() checks to all such tests that were missing them. Unit tests once again pass in a pure ASCII environment.

view details

push time in 20 hours

issue openeddankamongmen/notcurses

some unit tests are breaking when run outside of UTF8 encoding

We have enforce_utf8() available in the test suite for anything that requires UTF8 output to work (see #325 ). I don't think everything that needs to is using it, though -- we get test failures running debuild on Ubuntu Focal, and manually setting LANG=C when running unit tests on my box does indeed see some breakage.

Hopefully this doesn't affect the build we put up for Debian (still no word on this from ftpmasters btw). If so, we probably want to rebuild to avoid rejection for being unable to build from source.

created time in 20 hours

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha d896ab3bdfd79f44e6e0566bcbca48c5e85fffdf

microsoft is not californian you idiot

view details

push time in a day

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha fe8aaa5b4af4d2dd228ef878c2204d74ca0d206a

more text

view details

push time in 2 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 1f057d915ebeaf66fec6f5ec7e47afc3d6a3f392

bibtex: fix up ghardy reference

view details

push time in 2 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 67d7393a28dba79ffd8a274236a7f7cc83f66566

drag in tetris::main()

view details

push time in 2 days

push eventdankamongmen/notcurses

nick black

commit sha bd7bf65c626f9402176fcdeaef35379df4759535

colloquy: spin up a rust notcurses instance

view details

push time in 2 days

issue openeddankamongmen/notcurses

normalize fill-type function return value semantics

polyfill and other routines of its ilk now return the number of cells written on success, or a negative number on failure. The gradient functions (and any other fill-type functions) ought conform to these same semantics. Do this before 1.3.0, since it breaks existing semantics.

created time in 2 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha bb4cafda323b84896978eded5342642ce0f2c5bc

proofing

view details

nick black

commit sha 8dce6a5ef7e183e479a37d36a56a6a61d62d1483

drag in tetris screenshots

view details

push time in 2 days

push eventdankamongmen/notcurses

nick black

commit sha 8651486ad72eef531994ef3c55dd478330ee147c

Don't say DirectColor when TrueColor is meant

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha c0d4efea5ea0a0fb5d5854f05cb345edb7283f35

more tetris text

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha cbacf006e5ac082080fc253fa5ba54106aa76999

libnotcurses-sys: update tests for new notcurses_options

view details

nick black

commit sha 6c81cb3b454c3e5a023fd2cc7bf629278d37bac5

rust: use libnotcurses-sys, add test

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha ddf206462b7e6b089d66e595d49e14745bb84177

colloquy: branch on widget type

view details

push time in 3 days

issue commentclap-rs/clap

Allow configuration from config files as well

@kbknapp you had asked for an example of such usage. I can think of two:

dialog: ncurses program for shell-launched terminal widgets openvpn: VPN program

both allow all config file options to be stuffed in a file provided with --file (for dialog) or --config (for openvpn).

wackywendell

comment created time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha a64119931a3147c26fe9b0cde898c866c007bd84

colloquy: flesh out options parser

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha a77774f4dc5c74c79db05dc8e3acb3499f22326b

notcurses_at_yx(): value-result u32+u64, not cell Resolves #410. notcurses_at_yx() accepted a cell*, but the gcluster of this cell was always set to 0. The EGC is instead a heap-allocated copy, returned as the primary return value. This is due to the absence of an egcpool to bind against. Existing callers can be converted thus: * instead of passing cell 'c', pass &(c)->attrword, &(c)->channels * either initialize 'c' with CELL_TRIVIAL_INITIALIZER, or set its gcluster field to 0 following the call I've updated all calls from tests/demos, updated the docs, and updated the C++ and Python wrappers.

view details

push time in 3 days

issue closeddankamongmen/notcurses

notcurses_at_yx() doesn't return EGC in cell->gcluster, only in return value

notcurses_at_yx() faithfully reproduces the reflected EGC in its return value, but rather than duplicating it in the value-result cell, sets that cell's gcluster to 0. this seems rather niggardly. can we not afford the short-term duplication into the standard plane's egcpool? Maybe not, if this is used in some tight loop somewhere in the core, but I very much doubt that to be the case outside of notcurses_refresh().

If we decide we can't suffer this short-lived copy, that's cool, hack on, but in that case we ought instead of V-R on the cell, we ought V-R on an attrword and a channels. The annoying thing about the current situation is that if you go working with the cell, i.e. passing it to is_simple() etc., it's broken due to that 0'd gcluster. So that's gotta go.

closed time in 3 days

dankamongmen

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha d9ebadaa6e0e183950d903e3edd9d941ef15e2ae

adapt to 1.2.5's notcurses_at_yx()

view details

push time in 3 days

issue commentdankamongmen/notcurses

notcurses_at_yx() doesn't return EGC in cell->gcluster, only in return value

notcurses_at_yx() has the following comment:

        egc = pool_egc_copy(&nc->pool, srccell);
        c->gcluster = 0; // otherwise cell_release() will blow up

and this makes sense--as opposed to ncplane_at_yx() (which does leave the EGC in ->gcluster), we don't have a good egcpool to stick this in. OK, fine.

In that case, eliminate notcurses_at_yx(), since it is surprising, and instead take the attrword and channels as value-results.

dankamongmen

comment created time in 3 days

issue closeddankamongmen/notcurses

allow a hierarchy of planes to be moved together

We ought be able to create a plane as a child of another (possibly NULL), meaning:

  • when the parent is moved, the child is moved the same amount
  • when the parent is destroyed, the child is also destroyed

Don't require this relationship, though.

closed time in 3 days

dankamongmen

delete branch dankamongmen/notcurses

delete branch : dankamongmen/boundplanes

delete time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 73b61f6a691fdffdf3d6f07c3c773e797a51a947

Add bound planes (#71) plus docs/tests Add ncplane_bound(3). This allows a new plane N to be created in the *bound* state relative to another ncplane B. If B moves, N moves the same amount. If N is moved, the coordinates are taken relative to B as opposed to the standard plane. If B is destroyed, N is destroyed. Each plane can have many planes bound to it, but can only be bound to a single plane. Add ncplane_reparent(3). This allows a plane to be detached from any plane to which it is bound, and optionally rebound to a new plane. The standard plane cannot be reparented. Documentation and unit tests have been added for both.

view details

push time in 3 days

pull request commentdankamongmen/notcurses

Add bound planes (#70) plus docs/tests

Resolves #70

dankamongmen

comment created time in 3 days

PR opened dankamongmen/notcurses

Add bound planes (#71) plus docs/tests
  • Add ncplane_bound(3). This allows a new plane N to be created in the bound state relative to another ncplane B. If B moves, N moves the same amount. If N is moved, the coordinates are taken relative to B as opposed to the standard plane. If B is destroyed, N is destroyed. Each plane can have many planes bound to it, but can only be bound to a single plane.
  • Add ncplane_reparent(3). This allows a plane to be detached from any plane to which it is bound, and optionally rebound to a new plane. The standard plane cannot be reparented.
  • Documentation and unit tests have been added for both.
+178 -26

0 comment

7 changed files

pr created time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha dd638b2e14e69eb4350e0aa96e71534cd827dc72

Add bound planes (#71) plus docs/tests Add ncplane_bound(3). This allows a new plane N to be created in the *bound* state relative to another ncplane B. If B moves, N moves the same amount. If N is moved, the coordinates are taken relative to B as opposed to the standard plane. If B is destroyed, N is destroyed. Each plane can have many planes bound to it, but can only be bound to a single plane. Add ncplane_reparent(3). This allows a plane to be detached from any plane to which it is bound, and optionally rebound to a new plane. The standard plane cannot be reparented. Documentation and unit tests have been added for both.

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 6f331d9d815e11b9a7521f7c939394f13499e30b

ncplane_reparent(): can't reparent stdplane #70

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha c318bea961eca17d9c5e3fb63bcd5c20c427a68b

Add, test, document ncplane_reparent() #70

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha d86d8a62cef6e0ef79b5d3f1360707a18554f54d

Add, test, document ncplane_reparent()

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha a8cdbcf61ec027905f93157b0f216d11613f52d6

Implement + test bound planes #70

view details

push time in 3 days

create barnchdankamongmen/notcurses

branch : dankamongmen/boundplanes

created branch time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 4e62c350442fbb00e3e8f988d2edbe5104d0a59e

final tetris

view details

push time in 3 days

issue closeddankamongmen/notcurses

Finish notcurses-tetris in publishable state

The book touts a Tetris implementation as one of its complex examples. Let's aim for a more or less faithful implementation of the NES version:

https://tetris.wiki/Tetris_(NES,_Nintendo)

I've got most of it done, but it needs polish.

closed time in 3 days

dankamongmen

issue commentdankamongmen/notcurses

Finish notcurses-tetris in publishable state

It's ready to go :D.

dankamongmen

comment created time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 5bcd643a686a9dc7508dc9c6139bc8fb924ee6ef

tetris: increase gravity with level #421

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 4a02d7ed80614e14240eb0972f04dfccad2f8ebb

tetris: rewrite moveleft()/moveright() with invalidmove() #421

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha cb85e120e0fc55e39f4bee0abb3ef91bcd4b6041

tetris: replace PieceStuck() with InvalidMove() #421

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 1665bbad8b540f7db106ceffbd1a07f02055abd4

tetris: InvalidMove() for detecting bad rotations #421

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha ff71eda6a1f1d07db56747ff52de42fd43843295

reels are a cylinder, not a torus

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 83c4d5141f10a9d15bc911de9a61412f6a904fbf

paprocki argues reels are cylinders, not toroii

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha d94fb395c2a58803777a06e505d52bf4ce64788e

tighten up comment zones throughout

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 59551259218b30cff042ad272360e090cfd944f7

Tetris: remove dead code #421

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 925e416b8da37a2ded188a9cd23699646296f51b

tetris: different colors for different levels

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 5b7e2f574cc9b8f3805cd9e08383eff59173c19c

tetris: fix up PieceStuck() #421

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 91f907a184d1ba2fa743bc1d49a2961276521987

gradient_sized (C++): fix parameter name

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 5ebf0cc6b35732052e1064a3db4d497b357bcb73

add tetris screenshots

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha b1f71bb91cc120db8b18e8dcfe3555d88b32ec30

tetris is just about done, thus we're almost done

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 04ed975cb6156a4f2bb124ed6d187061c97138e1

tetris talk

view details

push time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 152a0a71291ee384f642ee9acb57c3aec695d112

...and that's a working tetris demo

view details

push time in 3 days

issue commentdankamongmen/notcurses

Finish notcurses-tetris in publishable state

Got that right column issue fixed. That's the last true blocker IMHO. The rest is polish. sweet :D.

dankamongmen

comment created time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha ae792bbd5cdd700d2fc31153172cf4d1665659a8

tetris: ctrl+L for refresh

view details

push time in 3 days

push eventdankamongmen/notcurses

nick black

commit sha 752c29e6485395676ef8db9940e76f1795af353b

Tetris: fix line clearing of final column #421

view details

push time in 3 days

issue openeddankamongmen/notcurses

Eliminate egcpool fragmentation

We ought provide an egcpool_repack(). It is possible for the egcpool to become fragmented, with lots of small gaps between EGCs. Given the maximum 24MB limit on egcpool growth, it is possible that ncplane_putc() and friends would begin to fail for valid EGCs. I mention this fact in the book.

You can't move active EGCs due to the possibility of living cells holding references to them, but you can freely repack dead EGCs in such a case. I don't think we currently unite contiguous dead areas, so that would be an improvement if accurate. Beyond that, it might be wise to offer an ncplane_repack() to handle this case (EGCs would be invalidated by such a call). But this really does feel a band-aid...

Ideally, we would eliminate fragmentation/exhaustion as a possibility. Admittedly, EGCs have no true upper bound on their length, but their component pieces certainly do. Perhaps by always storing 7-byte sequences (maximum UTF-8 + 24 bits of next offset) we could just never run into this problem, at the cost of a little wasted memory (we waste less than you think, as there would be no need to hold a zero byte for termination). We'd want to store UTF-8 rather than UCS-32 since we need to emit UTF-8 to the terminal.

Alternatively, we could allow a single plane to have multiple egcpools. That seems a bit extra, though, and pathological inputs could successively fragment up each egcpool, so now you're just wasting tremendous amounts of time.

I think maybe the 7-byte fixed size idea is best. 2**25 / 7 ~= 5M. My 3440x2560 monitor is about 5 megapixels, so that would work at even 1pt font. maybe we allow multiple egcpools with fixed size, since then you don't have the pathological boundless growth or the time hits, and you're entirely proofed against huge future monitors. yeahhhhhhh

created time in 3 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 1e00fb70822526c529f76354e850b679b9c8beb7

missing punctuation

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha df1af387ebf8b59f48e4414ae01adc61ad1ee910

'within a process context' what?

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 91c47ad78af66cbfe11abb6b7e0db4e6ee943c5e

one fewer 'of course'

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha c93ce429419d7d4fa2669346e5cd205eadf6c215

more tetris

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha e500d0f8f44f80ac5e030338d897fe908565ac6f

tetris: print user name above score #421

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha d501123a348a279897fa5dc01a54ca0432d68032

updated tetris sources

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha 4f6275b738a064f980e7403ab69211d2cfdfd88a

tetris: tighten LockPiece() still further

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha e84b896835d858467ce229d44ce4380cc8af1363

tetris: tighten up LockPiece()

view details

push time in 4 days

issue commentdankamongmen/notcurses

Finish notcurses-tetris in publishable state

We're just about there. It's definitely playable now, but needs a few fixes, and then a last few shots in the arm of big pimpin'.

dankamongmen

comment created time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha bac743516fa1b220ea8debda08cf34df7d2a065a

import newest tetris code

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha 4afa02a44f220dfc3521a404c30198b644ffc518

Tetris: clear out lines #421

view details

nick black

commit sha 34e4a5dbb98c8fd12786361f05c637b4831a45c1

tetris: display score and level #421

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha 1cd9ec2b31c03ef92dc9908f7b1423bb66d0f6f1

tetris: clear out lines #421

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha ee754ed241a969cb4f631cfdea73e7bfa48b8022

Tetris: simplify MoveDown(), don't be stupid

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha fff9118e175516988434fb4f765be853dac0a98e

tetris: factor out LockPiece()

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 71f908e8555a96c625bc4145940fa32932de76e9

tetris: update sources, add two routines

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 7abcbecf985253f88a81fb1d17f4c56c49b6e565

induct tetris:movedown() changes

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha d120e745808cc5fd0dd0a6f2dcabf3414bf134ca

Tetris: end game at the correct failpoint #421

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha d491d532bbe6adeeaf514da281bc247911b80d6f

Tetris: gradient stain on fixed pieces #421

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 3fb995ba16bfcb7df1f49a5320f9c75bf78e1829

import new tetris codes

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha 5864b37d0aef129afd35c5fbfbaab1e4fb854582

Tetris: place new pieces on mults of 2 #421

view details

push time in 4 days

push eventdankamongmen/notcurses

nick black

commit sha 25dd65a17290083dcf48b8b2273237be1b778645

Tetris: render after creating a new piece

view details

nick black

commit sha d5e0b24f01bdc015729223a96ce603d4886a25ad

Tetris: PieceStuck() learns of lower halves

view details

nick black

commit sha 642741f2c9a6e066f7de12f79c628eb05f05337e

Tetris: take upper halves into account for PieceStuck()

view details

nick black

commit sha b7c9746cf087f7583d79d94010166ffe81b86a4e

Tetris: always move in chunks of two columns #421

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha 0470ee007c608dab262cff49c493ff79f5bea0e0

more billjings advice

view details

push time in 4 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha c90613ba796c0f1faea1e8514cf02bba19c43bd0

some close editing

view details

push time in 5 days

push eventdirty-south-supercomputing/technicalreports

nick black

commit sha fb705a2f5f2eda81f72477e9e3d594571ba24cab

incorporate feedback from bill phillips

view details

push time in 5 days

push eventdankamongmen/notcurses

nick black

commit sha 013e4452095ae5b3a5d2fd4622af0d0819a30b1e

add notcurses_multiselector(3) to notcurses(3)

view details

push time in 5 days

issue closeddankamongmen/notcurses

demo: add some fractals

I'd like to see us do maybe a Dragon curve in two dimensions and a Hilbert in three dimensions. These would probably best be accomplished with braille-drawn graphing (see #136).

closed time in 5 days

dankamongmen

delete branch dankamongmen/notcurses

delete branch : dankamongmen/fractal-lambert

delete time in 5 days

push eventdankamongmen/notcurses

Nick Black

commit sha f9c54761f5fd47a208f5f4c209333c16f94edbc1

Basic mandelbrot for `n`ormal demo #145 (#424) normal: working mandelbrot, very basic #145

view details

push time in 5 days

PR merged dankamongmen/notcurses

Basic mandelbrot for `n`ormal demo #145

Do a very simple Mandelbrot, and blit it as RGBA. #145 This can and will be improved, but the basic stuff is there; reserve the demo slot.

+92 -23

0 comment

7 changed files

dankamongmen

pr closed time in 5 days

push eventdankamongmen/notcurses

nick black

commit sha 7686b14c942cb092951d6fc5f150bac9318fd9d3

normal: working mandelbrot, very basic #145

view details

push time in 5 days

PR opened dankamongmen/notcurses

Basic mandelbrot for `n`ormal demo #145

Do a very simple Mandelbrot, and blit it as RGBA. #145 This can and will be improved, but the basic stuff is there; reserve the demo slot.

+92 -23

0 comment

7 changed files

pr created time in 5 days

issue commentdankamongmen/notcurses

demo: add some fractals

we've got basic mandelbrot in the normal demo now. i'll improve it some, but it's there.

dankamongmen

comment created time in 5 days

push eventdankamongmen/notcurses

nick black

commit sha aabdf9be76eea078520d73b7ef9e8bcf0801d0bf

mandelbrot: get it working at 2x resolution via blitter #145

view details

push time in 5 days

more