claude boosted

Sensible analysis of image datasets through ImageJ
By Doreen A. Rios

Min. participants 5
Max. participants 20

Duration 4h.

'Old Paradise Yard' 20 Carlisle Lane, SE1 7LG London,

Price students/concessions £15
Price adults £20

- Laptop
- ImageJ (download here )
- About 20 – 30 images in .jpg, preferably in 720px

This workshop aims to build basic knowledge for the use of ImageJ (free software) for the visualization of image datasets. It focuses on creating and understanding the visual patterns provided by the chosen image set and explores how to use it for both research and/or artistic creation. In the same way, a theoretical framework will be provided and will expand into what does DataViz means as well as its different forms and uses and how it has been integrated into contemporary artistic creation.

During the first hour we’ll be looking into the historical part of DataViz and during the last 2 hours we’ll be developing a series of exercises using ImageJ, for which we’ll need an image data set (about 20 – 30 images in .jpg, preferably in 720px) and a laptop with the software installed (you can find it here ).

I think I have something automated now:

`crontab -l`:
0 0 * * fri /path/to/ on
0 0 * * sat /path/to/ off

targets="all my websites"
if [ "x$1" = "xon" ]
for target in ${targets}
cp -f "/path/to/503.html" "/var/www/${target}/503.html"
elif [ "x$1" = "xoff" ]
for target in ${targets}
rm -f "/var/www/${target}/503.html"
echo "usage: $0 on/off"

This seems to do the trick for on . To enable the strike just put what you want into the `503.html`, when you're done striking just move the `503.html` out of the way again.

location / {
if (-f $document_root/503.html) {
return 503;
# continue as usual
try_files $uri $uri/ =404;
error_page 503 /503.html;
location /503.html {
try_files /503.html =503;

Note: this blocks out the whole domain, needs more tuning if you want to have parts of it work (eg for images on the 503 page).

preparing to uses third party js, so you can presumably access "striking" sites just fine by disabling javascript.

Currently researching how to do it at the web server level.

All at once, trustworthily calculated with (exterior -> transparent, interior -> blue, unknown -> orange). grid randomly oriented, animated rotation perpendicular to the screen.

12m20s on a single core to calculate the 4D voxel grid at level 8 (2^8 along each edge, total 1GB data with 2 bits per cell).

5m07s real / 67m40s CPU stepping rays through the voxels for to make the 120 frame animation.

Maybe it would render faster on a GPU.

Performance boost in one unscientific test was about 3.3% wall clock / 1.8% cpu time. Better than nothing I suppose.

Rotating slices of the 4D anti-buddhagram, rendered with a trustworthy algorithm (using interval arithmetic to ensure that "interior" voxels really are interior).

I think I may have implemented it wrong though, in particular my condition that anything outside [-2,+2]^4 is exterior may be flawed?

This at level 8 (with 2^(4*8) voxels). Takes 4GB with 1 byte per voxel, I may try compressing it to 1 bit per voxel (the computation algorithm needs 2 bits per voxel) and see if I can render level 9 (which will take 16x as much space).

need to `sudo update-grub2` after edting the grub configuration configurator, before the reboot

finally managed to configure 4x 1GB on my .

GRUB_CMDLINE_LINUX_DEFAULT="hugepagesz=1GB default_hugepagesz=1GB hu


hugetlbfs /dev/hugepages hugetlbfs mode=1770,gid=1003,pagesize=1GB 0 0

vm.nr_hugepages = 4
vm.hugetlb_shm_group = 1003


data = (unsigned char *) mmap(nullptr, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_HUGETLB | MAP_HUGE_1GB | MAP_ANONYMOUS, -1, 0);
if (data != MMAP_FAILED)
size_t read_bytes = 0;
ssize_t result = read(fd, data + read_bytes, bytes - read_bytes);
if (result <= 0)
read_bytes += result;
} while (read_bytes < bytes);
if (read_bytes == bytes)
/* :-) */;
in particular, MAP_ANONYMOUS seems to be required for MAP_HUGETLB, which means specifying -1 instead of the fd directly, and reading the data later (which needs PROT_WRITE). the loop is because read won't more than 0x7ffff000 bytes at once.

don't know if all of this is necessary, but it works now (I may have missed some steps, tried a few different things before success).


claude boosted

Extremely important research question: who is the best something-ni 60s Italian director?

Had a "fun" hour or so debugging a C++ template instantiation link error (no compile error). Turned out to be a misplaced & in a prototype.

Diagnosed by comparing the linker error message (edited to give just the symbols) against the output of
objdump -t formula/formula.a.o | grep -v debug | grep -v ^AUX | grep -v data | grep -v text | grep -v constprop | sed s/.*\ // | sort | c++filt | grep "n<" | sort -V

claude boosted

Don't just read the link and go "I can't strike," there's also coordinated protests and other ways to get involved.

As the website says, "[o]ur house is on fire - let's act like it."

(Boost this or a better call to action, or write your own, please.)

nevermind. that approach violates the precondition that z (as argument to the outer A_n) is small when n is not a multiple of the periodic return to 0.

I think I want something more like $A_n(c, B_m(c, z))$ but I can't figure out if the order of A and B is conducive to what I'm trying to do... I don't think it commutes.

That expression is for A_n → A_{n+1}, which I already have code for (thanks to knighty) but what I'm really after today is something for A_n → A_{2n}.

$$ A_n(c,z) = \sum a_{n,i,j} c^i z^j $$ and
$$ A_{2n} = A_n(c, A_n(c, z)) $$
find expressions for
$$ a_{2n,i,j} $$
in terms of
$$ a_{n,i,j} $$

got something to expand by limiting summation ranges to 3 instead of \infty. would have been nicer to get summations with binomial coefficients or what have you. this is an expansion of something done to $\sum{i,j} a_{i,j} c^i z^j$, and I want to collect up all the powers and find expressions for the new $a_{i,j}$ in terms of the previous ones. maybe I should try some other software, maxima is a pain

trying to do some maths in Maxima, it is telling me "if a < 0 then b else if a = 0 then b else if a > 0 then b". b is my original input that I'm trying to get it to expand/rearrange. this is not useful. it shouldn't matter if it's even real or not, is just rearranging algebra (bivariate series)

Show more

Welcome to, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that. This is part of a family of services that include mailing lists, group chat, and XMPP.