OK, turing.

<- leave blank

Sat Jul 27 01:24:07 EDT 2024

Hey,

Cybersecurity is crucial.  ARSource offers comprehensive services to keep your
business safe.

Take our quiz to find out how secure your business is.

https://tally.so/r/nGzyYo

Best regards,

Matthew Williams
President, ARSource


Fri Jul 26 19:38:49 EDT 2024
I saw that your okturing.com website may be missing out on approximately 1,000
visitors daily.  Our AI powered traffic system is tailored to boost your site's
visibility: https://cutt.ly/3ehQFP9d
We're offering a free trial that includes 4,000 targeted visitors to show the
potential benefits.  After the trial, we can supply up to 250,000 targeted
visitors per month.  This service could greatly amplify your website's reach and
visitors.


Fri Jul 26 17:09:22 EDT 2024
--- /sys/src/9/ip/ipmux.c
+++ /tmp/ipmux.c
@@ -1,6 +1,3 @@
-/*
- * IP packet filter
- */
 #include "u.h"
 #include "../port/lib.h"
 #include "mem.h"
@@ -9,14 +6,46 @@
 #include "../port/error.h"

 #include "ip.h"
-#include "ipv6.h"
+#define DPRINT if(0)print

 typedef struct Ipmuxrock Ipmuxrock;
 typedef struct Ipmux Ipmux;
+typedef struct Ip4hdr Ip4hdr;
+typedef struct Ip6hdr Ip6hdr;

 enum
 {
- Tver,
+ IPHDR = 20, /* sizeof(Ip4hdr) */
+};
+
+struct Ip4hdr
+{
+ uchar vihl; /* Version and header length */
+ uchar tos; /* Type of service */
+ uchar length[2]; /* packet length */
+ uchar id[2]; /* ip->identification */
+ uchar frag[2]; /* Fragment information */
+ uchar ttl; /* Time to live */
+ uchar proto; /* Protocol */
+ uchar cksum[2]; /* Header checksum */
+ uchar src[4]; /* IP source */
+ uchar dst[4]; /* IP destination */
+ uchar data[1]; /* start of data */
+};
+
+struct Ip6hdr
+{
+ uchar vcf[4]; /* version, class label, and flow label */
+ uchar ploadlen[2]; /* payload length */
+ uchar proto; /* next header, i.e.  proto */
+ uchar ttl; /* hop limit, i.e.  ttl */
+ uchar src[16]; /* IP source */
+ uchar dst[16]; /* IP destination */
+};
+
+
+enum
+{
	Tproto,
	Tdata,
	Tiph,
@@ -23,8 +52,28 @@
	Tdst,
	Tsrc,
	Tifc,
+
+ Cother = 0,
+ Cbyte, /* single byte */
+ Cmbyte, /* single byte with mask */
+ Cshort, /* single short */
+ Cmshort, /* single short with mask */
+ Clong, /* single long */
+ Cmlong, /* single long with mask */
+ Cifc,
+ Cmifc,
 };

+char *ftname[] =
+{
+[Tproto] "proto",
+[Tdata] "data",
+[Tiph] "iph",
+[Tdst] "dst",
+[Tsrc] "src",
+[Tifc] "ifc",
+};
+
 /*
  * a node in the decision tree
  */
@@ -33,12 +82,16 @@
	Ipmux *yes;
	Ipmux *no;
	uchar type; /* type of field(Txxxx) */
+ uchar ctype; /* tupe of comparison(Cxxxx) */
	uchar len; /* length in bytes of item to compare */
	uchar n; /* number of items val points to */
- int off; /* offset of comparison */
+ short off; /* offset of comparison */
+ short eoff; /* end offset of comparison */
+ uchar skiphdr; /* should offset start after ipheader */
	uchar *val;
	uchar *mask;
	uchar *e; /* val+n*len*/
+
	int ref; /* so we can garbage collect */
	Conv *conv;
 };
@@ -53,7 +106,6 @@

 static int ipmuxsprint(Ipmux*, int, char*, int);
 static void ipmuxkick(void *x);
-static void ipmuxfree(Ipmux *f);

 static char*
 skipwhite(char *p)
@@ -86,33 +138,27 @@
	Ipmux *f;

	p = skipwhite(p);
- if(strncmp(p, "ver", 3) == 0){
- type = Tver;
- off = 0;
- len = 1;
- p += 3;
- }
- else if(strncmp(p, "dst", 3) == 0){
+ if(strncmp(p, "dst", 3) == 0){
		type = Tdst;
- off = offsetof(Ip6hdr, dst[0]);
- len = IPaddrlen;
+ off = offsetof(Ip4hdr, dst[0]);
+ len = IPv4addrlen;
		p += 3;
	}
	else if(strncmp(p, "src", 3) == 0){
		type = Tsrc;
- off = offsetof(Ip6hdr, src[0]);
- len = IPaddrlen;
+ off = offsetof(Ip4hdr, src[0]);
+ len = IPv4addrlen;
		p += 3;
	}
	else if(strncmp(p, "ifc", 3) == 0){
		type = Tifc;
- off = -IPaddrlen;
- len = IPaddrlen;
+ off = -IPv4addrlen;
+ len = IPv4addrlen;
		p += 3;
	}
	else if(strncmp(p, "proto", 5) == 0){
		type = Tproto;
- off = offsetof(Ip6hdr, proto);
+ off = offsetof(Ip4hdr, proto);
		len = 1;
		p += 5;
	}
@@ -130,7 +176,7 @@
			return nil;
		p++;
		off = strtoul(p, &p, 0);
- if(off < 0)
+ if(off < 0 || off > (64-IPHDR))
			return nil;
		p = skipwhite(p);
		if(*p != ':')
@@ -159,6 +205,11 @@
	f->mask = nil;
	f->n = 1;
	f->ref = 1;
+ if(type == Tdata)
+ f->skiphdr = 1;
+ else
+ f->skiphdr = 0;
+
	return f;
 }

@@ -194,7 +245,7 @@
 static Ipmux*
 parsemux(char *p)
 {
- int n;
+ int n, nomask;
	Ipmux *f;
	char *val;
	char *mask;
@@ -219,7 +270,7 @@
		case Tdst:
		case Tifc:
			f->mask = smalloc(f->len);
- parseipmask(f->mask, mask, 0);
+ v4parseip(f->mask, mask);
			break;
		case Tdata:
		case Tiph:
@@ -229,13 +280,15 @@
		default:
			goto parseerror;
		}
- } else if(f->type == Tver){
+ nomask = 0;
+ } else {
+ nomask = 1;
		f->mask = smalloc(f->len);
- f->mask[0] = 0xF0;
+ memset(f->mask, 0xff, f->len);
	}

	/* parse vals */
- f->n = getfields(val, vals, nelem(vals), 1, "|");
+ f->n = getfields(val, vals, sizeof(vals)/sizeof(char*), 1, "|");
	if(f->n == 0)
		goto parseerror;
	f->val = smalloc(f->n*f->len);
@@ -242,21 +295,10 @@
	v = f->val;
	for(n = 0; n < f->n; n++){
		switch(f->type){
- case Tver:
- if(f->n != 1)
- goto parseerror;
- if(strcmp(vals[n], "6") == 0)
- *v = IP_VER6;
- else if(strcmp(vals[n], "4") == 0)
- *v = IP_VER4;
- else
- goto parseerror;
- break;
		case Tsrc:
		case Tdst:
		case Tifc:
- if(parseip(v, vals[n]) == -1)
- goto parseerror;
+ v4parseip(v, vals[n]);
			break;
		case Tproto:
		case Tdata:
@@ -266,11 +308,34 @@
		}
		v += f->len;
	}
+
+ f->eoff = f->off + f->len;
	f->e = f->val + f->n*f->len;
+ f->ctype = Cother;
+ if(f->n == 1){
+ switch(f->len){
+ case 1:
+ f->ctype = nomask ? Cbyte : Cmbyte;
+ break;
+ case 2:
+ f->ctype = nomask ? Cshort : Cmshort;
+ break;
+ case 4:
+ if(f->type == Tifc)
+ f->ctype = nomask ? Cifc : Cmifc;
+ else
+ f->ctype = nomask ? Clong : Cmlong;
+ break;
+ }
+ }
	return f;

 parseerror:
- ipmuxfree(f);
+ if(f->mask)
+ free(f->mask);
+ if(f->val)
+ free(f->val);
+ free(f);
	return nil;
 }

@@ -293,7 +358,8 @@
		return n;

	/* compare offsets, call earlier ones more specific */
- n = a->off - b->off;
+ n = (a->off+((int)a->skiphdr)*offsetof(Ip4hdr, data[0])) -
+ (b->off+((int)b->skiphdr)*offsetof(Ip4hdr, data[0]));
	if(n != 0)
		return n;

@@ -363,10 +429,6 @@
	*nf = *f;
	nf->no = ipmuxcopy(f->no);
	nf->yes = ipmuxcopy(f->yes);
- if(f->mask != nil){
- nf->mask = smalloc(f->len);
- memmove(nf->mask, f->mask, f->len);
- }
	nf->val = smalloc(f->n*f->len);
	nf->e = nf->val + f->len*f->n;
	memmove(nf->val, f->val, f->n*f->len);
@@ -376,10 +438,8 @@
 static void
 ipmuxfree(Ipmux *f)
 {
- if(f == nil)
- return;
- free(f->val);
- free(f->mask);
+ if(f->val != nil)
+ free(f->val);
	free(f);
 }

@@ -388,8 +448,10 @@
 {
	if(f == nil)
		return;
- ipmuxfree(f->no);
- ipmuxfree(f->yes);
+ if(f->no != nil)
+ ipmuxfree(f->no);
+ if(f->yes != nil)
+ ipmuxfree(f->yes);
	ipmuxfree(f);
 }

@@ -464,8 +526,6 @@
		return ipmuxremove(&ft->no, f);
	}

- ipmuxremove(&ft->no, f->no);
-
	/* we found a match */
	if(--(ft->ref) == 0){
		/*
@@ -487,55 +547,8 @@
 }

 /*
- * convert to ipv4 filter
- */
-static Ipmux*
-ipmuxconv4(Ipmux *f)
-{
- int i, n;
-
- if(f == nil)
- return nil;
-
- switch(f->type){
- case Tproto:
- f->off = offsetof(Ip4hdr, proto);
- break;
- case Tdst:
- f->off = offsetof(Ip4hdr, dst[0]);
- if(0){
- case Tsrc:
- f->off = offsetof(Ip4hdr, src[0]);
- }
- if(f->len != IPaddrlen)
- break;
- n = 0;
- for(i = 0; i < f->n; i++){
- if(isv4(f->val + i*IPaddrlen)){
- memmove(f->val + n*IPv4addrlen, f->val + i*IPaddrlen + IPv4off,
IPv4addrlen);
- n++;
- }
- }
- if(n == 0){
- ipmuxtreefree(f);
- return nil;
- }
- f->n = n;
- f->len = IPv4addrlen;
- if(f->mask != nil)
- memmove(f->mask, f->mask+IPv4off, IPv4addrlen);
- }
- f->e = f->val + f->n*f->len;
-
- f->yes = ipmuxconv4(f->yes);
- f->no = ipmuxconv4(f->no);
-
- return f;
-}
-
-/*
  * connection request is a semi separated list of filters
- * e.g.  ver=4;proto=17;data[0:4]=11aa22bb;ifc=135.104.9.2&255.255.255.0
+ * e.g.  proto=17;dat[0:4]=11aa22bb;ifc=135.104.9.2&255.255.255.0
  *
  * there's no protection against overlapping specs.
  */
@@ -571,18 +584,6 @@
		return Ebadarg;
	mux->conv = c;

- if(chain->type != Tver) {
- char ver6[] = "ver=6";
- mux = parsemux(ver6);
- mux->yes = chain;
- mux->no = ipmuxcopy(chain);
- chain = mux;
- }
- if(*chain->val == IP_VER4)
- chain->yes = ipmuxconv4(chain->yes);
- else
- chain->no = ipmuxconv4(chain->no);
-
	/* save a copy of the chain so we can later remove it */
	mux = ipmuxcopy(chain);
	r = (Ipmuxrock*)(c->ptcl);
@@ -657,84 +658,95 @@
	Block *bp;

	bp = qget(c->wq);
- if(bp != nil) {
+ if(bp == nil)
+ return;
+ else {
		Ip4hdr *ih4 = (Ip4hdr*)(bp->rp);
-
- if((ih4->vihl & 0xF0) != IP_VER6)
- ipoput4(c->p->f, bp, nil, ih4->ttl, ih4->tos, nil);
- else
- ipoput6(c->p->f, bp, nil, ((Ip6hdr*)ih4)->ttl, 0, nil);
+ if((ih4->vihl)&0xF0 != 0x60)
+ ipoput4(c->p->f, bp, 0, ih4->ttl, ih4->tos, nil);
+ else {
+ Ip6hdr *ih6 = (Ip6hdr*)(bp->rp);
+ ipoput6(c->p->f, bp, 0, ih6->ttl, 0, nil);
+ }
	}
 }

-static int
-maskmemcmp(uchar *m, uchar *v, uchar *c, int n)
-{
- int i;
-
- if(m == nil)
- return memcmp(v, c, n) != 0;
-
- for(i = 0; i < n; i++)
- if((v[i] & m[i]) != c[i])
- return 1;
- return 0;
-}
-
 static void
 ipmuxiput(Proto *p, Ipifc *ifc, Block *bp)
 {
+ int len, hl;
	Fs *f = p->f;
+ uchar *m, *h, *v, *e, *ve, *hp;
	Conv *c;
- Iplifc *lifc;
	Ipmux *mux;
- uchar *v;
- Ip4hdr *ip4;
+ Ip4hdr *ip;
	Ip6hdr *ip6;
- int off, hl;

- ip4 = (Ip4hdr*)bp->rp;
- if((ip4->vihl & 0xF0) == IP_VER4) {
- hl = (ip4->vihl&0x0F)<<2;
- ip6 = nil;
- } else {
- hl = IP6HDR;
- ip6 = (Ip6hdr*)ip4;
- }
+ ip = (Ip4hdr*)bp->rp;
+ hl = (ip->vihl&0x0F)<<2;

	if(p->priv == nil)
		goto nomatch;

- c = nil;
- lifc = nil;
+ h = bp->rp;
+ len = BLEN(bp);

- /* run the filter */
+ /* run the v4 filter */
	rlock(f);
+ c = nil;
	mux = f->ipmux->priv;
	while(mux != nil){
- switch(mux->type){
- case Tifc:
- if(mux->len != IPaddrlen)
- goto no;
- for(lifc = ifc->lifc; lifc != nil; lifc = lifc->next)
- for(v = mux->val; v < mux->e; v += IPaddrlen)
- if(maskmemcmp(mux->mask, lifc->local, v, IPaddrlen) == 0)
- goto yes;
- goto no;
- case Tdata:
- off = hl;
+ if(mux->eoff > len){
+ mux = mux->no;
+ continue;
+ }
+ hp = h + mux->off + ((int)mux->skiphdr)*hl;
+ switch(mux->ctype){
+ case Cbyte:
+ if(*mux->val == *hp)
+ goto yes;
			break;
- default:
- off = 0;
+ case Cmbyte:
+ if((*hp & *mux->mask) == *mux->val)
+ goto yes;
			break;
- }
- off += mux->off;
- if(off < 0 || off + mux->len > BLEN(bp))
- goto no;
- for(v = mux->val; v < mux->e; v += mux->len)
- if(maskmemcmp(mux->mask, bp->rp + off, v, mux->len) == 0)
+ case Cshort:
+ if(*((ushort*)mux->val) == *(ushort*)hp)
				goto yes;
-no:
+ break;
+ case Cmshort:
+ if((*(ushort*)hp & (*((ushort*)mux->mask))) == *((ushort*)mux->val))
+ goto yes;
+ break;
+ case Clong:
+ if(*((ulong*)mux->val) == *(ulong*)hp)
+ goto yes;
+ break;
+ case Cmlong:
+ if((*(ulong*)hp & (*((ulong*)mux->mask))) == *((ulong*)mux->val))
+ goto yes;
+ break;
+ case Cifc:
+ if(*((ulong*)mux->val) == *(ulong*)(ifc->lifc->local + IPv4off))
+ goto yes;
+ break;
+ case Cmifc:
+ if((*(ulong*)(ifc->lifc->local + IPv4off) & (*((ulong*)mux->mask))) ==
*((ulong*)mux->val))
+ goto yes;
+ break;
+ default:
+ v = mux->val;
+ for(e = mux->e; v < e; v = ve){
+ m = mux->mask;
+ hp = h + mux->off;
+ for(ve = v + mux->len; v < ve; v++){
+ if((*hp++ & *m++) != *v)
+ break;
+ }
+ if(v == ve)
+ goto yes;
+ }
+ }
		mux = mux->no;
		continue;
 yes:
@@ -747,24 +759,28 @@
	if(c != nil){
		/* tack on interface address */
		bp = padblock(bp, IPaddrlen);
- if(lifc == nil)
- lifc = ifc->lifc;
- ipmove(bp->rp, lifc != nil ? lifc->local : IPnoaddr);
- qpass(c->rq, concatblock(bp));
+ ipmove(bp->rp, ifc->lifc->local);
+ bp = concatblock(bp);
+ if(bp != nil)
+ if(qpass(c->rq, bp) < 0)
+ print("Q");
		return;
	}

 nomatch:
	/* doesn't match any filter, hand it to the specific protocol handler */
- if(ip6 != nil)
+ ip = (Ip4hdr*)bp->rp;
+ if((ip->vihl&0xF0)==0x40) {
+ p = f->t2p[ip->proto];
+ } else {
+ ip6 = (Ip6hdr*)bp->rp;
		p = f->t2p[ip6->proto];
- else
- p = f->t2p[ip4->proto];
- if(p != nil && p->rcv != nil){
- (*p->rcv)(p, ifc, bp);
- return;
	}
- freeblist(bp);
+ if(p && p->rcv)
+ (*p->rcv)(p, ifc, bp);
+ else
+ freeblist(bp);
+ return;
 }

 static int
@@ -780,14 +796,11 @@
		n += snprint(buf+n, len-n, "\n");
		return n;
	}
- n += snprint(buf+n, len-n, "%s[%d:%d]",
- mux->type == Tdata ? "data": "iph",
- mux->off, mux->off+mux->len-1);
- if(mux->mask != nil){
- n += snprint(buf+n, len-n, "&");
- for(i = 0; i < mux->len; i++)
- n += snprint(buf+n, len - n, "%2.2ux", mux->mask[i]);
- }
+ n += snprint(buf+n, len-n, "h[%d:%d]&",
+ mux->off+((int)mux->skiphdr)*((int)offsetof(Ip4hdr, data[0])),
+ mux->off+(((int)mux->skiphdr)*((int)offsetof(Ip4hdr,
data[0])))+mux->len-1);
+ for(i = 0; i < mux->len; i++)
+ n += snprint(buf+n, len - n, "%2.2ux", mux->mask[i]);
	n += snprint(buf+n, len-n, "=");
	v = mux->val;
	for(j = 0; j < mux->n; j++){


Fri Jul 26 15:14:27 EDT 2024
diff c220d0acc67b3f5e0e8af2bbe41fa8e367e6aa60 uncommitted
--- a/sys/src/9/ip/ipmux.c
+++ b/sys/src/9/ip/ipmux.c
@@ -212,7 +212,7 @@
		goto parseerror;

	/* parse mask */
- mask = follows(p, '&');
+ mask = follows(val, '&');
	if(mask != nil){
		switch(f->type){
		case Tsrc:


Fri Jul 26 13:01:54 EDT 2024
DP-2 "LG Electronics LG ULTRAGEAR 304MXAY7W408 (DP-2)"
  Make: LG Electronics
  Model: LG ULTRAGEAR
  Serial: 304MXAY7W408
  Physical size: 600x340 mm
  Enabled: yes
  Modes:
    2560x1440 px, 143.973007 Hz (preferred, current)
    2560x1440 px, 120.016998 Hz
    2560x1440 px, 119.998001 Hz
    2560x1440 px, 99.945999 Hz
    2560x1440 px, 96.002998 Hz
    2560x1440 px, 72.010002 Hz
    2560x1440 px, 60.007999 Hz
    2560x1440 px, 59.951000 Hz
    2560x1440 px, 50.000000 Hz
    2560x1440 px, 48.000999 Hz
    1920x1200 px, 143.973007 Hz
    1920x1080 px, 120.000000 Hz
    1920x1080 px, 119.879997 Hz
    1920x1080 px, 100.000000 Hz
    1920x1080 px, 60.000000 Hz
    1920x1080 px, 60.000000 Hz
    1920x1080 px, 59.939999 Hz
    1920x1080 px, 50.000000 Hz
    1600x1200 px, 143.973007 Hz
    1680x1050 px, 143.973007 Hz
    1280x1024 px, 143.973007 Hz
    1440x900 px, 143.973007 Hz
    1280x800 px, 143.973007 Hz
    1280x720 px, 60.000000 Hz
    1280x720 px, 59.939999 Hz
    1280x720 px, 50.000000 Hz
    1024x768 px, 60.004002 Hz
    800x600 px, 60.317001 Hz
    720x480 px, 60.000000 Hz
    720x480 px, 59.939999 Hz
    640x480 px, 60.000000 Hz
    640x480 px, 59.939999 Hz
    640x480 px, 59.939999 Hz
  Position: 0,0
  Transform: normal
  Scale: 1.000000
  Adaptive Sync: disabled



Fri Jul 26 03:57:48 EDT 2024
term% lstk
/proc/217/text:arm64 plan 9 executable
/sys/lib/acid/port
/sys/lib/acid/arm64
acid: abort()+0x4 /sys/src/libc/9sys/abort.c:6
_assert(s=0x1fffef678)+0x30 /sys/src/libc/port/_assert.c:11
apply(buf=0x1fffef6e0,nbuf=0x100000300,m=0x1fffef5d8,kv=0x2598a10)+0x250
/sys/src/cmd/gefs/tree.c:411
	t=0x11
	p=0x3900000039
btlookup(r=0x1fffef678,k=0x1fffefb88,buf=0x1fffef6e0,nbuf=0x100000300)+0x1b4
/sys/src/cmd/gefs/tree.c:1364
	h=0x3900000003
	b=0x2598a10
	p=0x109f2838
	ok=0x300000000
	i=0x1ecb800000000
	same=0x1
	bp=0x14e6e4000
	m=0x58203
	j=0x39
writeb(n=0x8000,o=0x30000,m=0x1fffefb80,f=0x10a002d8,sz=0x30000,s=0x109e1013,ret=0x1fffefc20)+0x1ac
/sys/src/cmd/gefs/fs.c:504
	fb=0x30000
	fo=0x0
	b=0x25f19e0
	t=0x0
	kv=0xe849de8
	buf=0x2601000000000000
	bp=0x109f2828
fswrite(m=0x109e0ed8,id=0x1)+0x3b8 /sys/src/cmd/gefs/fs.c:2166
	f=0x10a002d8
	r=0x66666f0200000077
	w=0x0
	p=0x109e1013
	o=0x30000
	c=0x8000
	t=0x109b1558
	i=0x0
	kv=0x10a00f01
	kbuf=0x2601000000000000
	vbuf=0x12f54
	j=0x6
	bp=0x3a198
	n=0x4000
	sbuf=0x108cec4800000000
runmutate(id=0x1)+0x178 /sys/src/cmd/gefs/fs.c:2347
	a=0x0
	m=0x109e0ed8
	f=0x490
launch(f=0x1f590,text=0x57f3c,arg=0x0)+0xa4 /sys/src/cmd/gefs/main.c:211
	id=0x1
main(argc=0x0,argv=0x1fffeff88)+0x3b8 /sys/src/cmd/gefs/main.c:419
	nann=0x0
	memsz=0x3d5e0000
	_argc=0x41
	_args=0x1fffeffb7
	ann=0x0
	e=0x0
	s=0x0
	i=0x1
	srvfd=0x100000006
_callmain+0x24 /sys/src/libc/9sys/callmain.c:20
acid:
echo kill > /proc/217/ctl

Fri Jul 26 01:40:54 EDT 2024
OK, turing.

Thu Jul 25 22:42:19 EDT 2024
Apple (business model: "Uber for spyware")
TikTok (business model: "Uber for Vine")
Github (business model: "Uber for README.MD")
Microsoft (business model: "Uber for customer abuse")
Apple (business model: "Uber for garden walls")
Reuters (business model: "Uber for chatlogs")
Asahi (business model: "Uber for Yellow Dog Linux")
Canonical (business model: "Uber for Debian")
Valve (business model: "Uber for Gamestop")
I'll do whatever the fuck I please over port 80, thanks.  I will abstain from port
443, because my site does not need HTTPS.
I do not give a shit about SEO and I fervently wish for the speedy retirement of
everyone who does.  SEO shitbags rank with email spammers as the absolute lowest
pigshit dirtfuck dregs of humanity.  The world would be a better place without any
of their noise.
Stripe (business model: "Uber for Paypal")
Stripe (business model: "Uber for Palantir")
A new version of an old text editor is released.  Among the features listed is
GPU-accelerated text rendering, which is presented as an optimization, instead of
an embarassment.
Some terrorists share notes about exactly which awful webshit can be crammed into
which email clients.  Surprisingly, Microsoft Outlook supports the least of the
bullshit here on display, making it the best email client available for Windows.
Signal (business model: Uber for Cryptocurrency Scams)
Facebook (business model: "Uber for Radicalization")
Signal (business model: "Uber for SMS")
You know that huge pile of bad software the "devops" people wrote so that they
wouldn't have to ever actually install their software?  This guy wants to make
that the norm.  Everywhere.
The talk description contains a typo and refers to Docker as 'Dicker'.  This is a
much more valuable contribution than anything else the Ansible team has done.
At long last, someone is tackling the important work: porting software nobody
uses, written in a language nobody uses, to an operating system nobody uses, to
enable a package manager nobody uses.
Speaker affiliation: Red Hat (Business Model: "Uber for Support Fees")
Red Hat (Business Model: "Uber for Freedesktop.org")
Huawei (Business Model: "Uber for Espionage")
Just in time, X11 develops feature parity with Windows-98-era ActiveX.
Red Hat (Business Model: "Uber for QEMU")
SUSE (Business Model: "Uber for Red Hat")
Element (Business Model: "Uber for IRC")
Atlassian (Business Model: "Uber for Sourceforge")
Ubiquiti (business model: "Uber for Cisco")
Rockstar Games (business model: "Uber for microtransactions")
Google (business model: "Uber for spyware")
Reddit (business model: "Uber for Digg")
A programming language gets slightly faster to run and remains moderately
unreadable.
A lobbyist tries to respin a popular pornography-archiving tool as the bedrock of
human freedom.  Hackernews chimes in to report how important the porn tool is to
police, which is the first time in my life I have even considered supporting an
RIAA action.
A trash blog bikesheds some favicons.  The article is so utterly devoid of insight
or interest that I would be angry about the electricity wasted in displaying it;
however, since that power was renewably generated via solar panels, I must
conclude that the dipshits who wrote, edited, and published this worthless drivel
owe a refund to the Sun.
Mozilla shakes down a social media startup by blocking its advertising technology.
Why Facebook is subject to this interference and Google is not is not explained in
the documentation, except possibly by the Google Analytics deployment in the
product page's source code.  Hackernews links to other Firefox extensions, which
will presumably work until the next minor release of Firefox, which will remove
key APIs, implement whatever Google thinks should be next week's HTML standard,
and include a sad-face emoji alongside the announcement of further layoffs.  The
CEO of Mozilla earned over $85 for every line of code in the extension's
repository.
Mozilla (business model: "Uber for Also-rans")
Zoom (business model: "Uber for whatever makes Xi happy")
The Rust Evangelism Strike Force heralds the first real improvement to the Rust
programming language: the ability to use a completely different programming
language.
Zoom (business model: "Uber for chaturbate")
Google (business model: "fuck you") decides that URLs are unattractive, and users
would be better off with a giant unexplained blank space at the top of their web
browser.
AirBnB (business model: "Uber for toilets")
Uber (business model: "Uber for cars")
Some webshits have managed to completely remove any advantage of CSS while
simultaneously making it an even bigger percentage of a given web page.  This sort
of counterproductive wheelspinning is right up Hackernews' alley, so they
immediately get elbow-deep in pedantic arguments about the most aesthetically
pleasing and ethos-expressing methods of putting a drop shadow on a modal
newsletter-nag dialog.
Microsoft continues the war against its most entrenched and dangerous threat: a
struggling webshit vendor who is hemorrhaging money.  Hackernews recalls the
isolated incidents when Microsoft engaged in unethical business practices hostile
to community developed software.
A webshit has something to say about Python internals, but I couldn't focus on the
article, because the first comment on the blog post involves the text "it brings
Python on par with PHP," which is such a monumentally alien thought that I think I
need medical attention.
The Rust Evangelism Strike Force, using a mere five thousand lines of code (not
counting the twenty remotely-imported libraries), implements a version of ls(1)
that is not good at listing files.  Hackernews has been looking for a file
explorer with a complicated user interface for a very long time, and is extremely
pleased.  The author shows up, and to demonstrate their gratitude, Hackernews
bickers over the Github etiquette, then lists all the other programs that have had
the same functionality since the Reagan administration.
Some webshits invent the text editor.  Hackernews lists all of the other webshit
text editors.  The Cult of Org-mode hands out pamphlets.
Deezer (business model: Spotify for music)
A multi-billion-dollar company fixes a legal issue via generous application of
money, and then paints itself as the underdog.
Mozilla makes a bit of noise pretending they care about Firefox user privacy.
beacon.enabled still defaults to true.
An Internet translates the United States Constitution's changes over time into
git.  Thanks to this, we're able to relive the experience of Alexander Hamilton's
historic "Format paragraphs with new lines" crisis, as well as examine the pivotal
.editorconfig file, rumored to have been manually created by Betsy Ross using her
husband John Claypoole's personal copy of LINED on their family PDP-6.  Hackernews
learns a few things about United States history but mostly just bitches; the most
common complaints are that not enough legal documents are treated as computer
programs or that whoever did this didn't obsess enough about the process.
BBC News desperately searches for someone who wants to read BBC News.  Hackernews
discusses approaches to getting involved with community security theater.
An Internet discovers a scam on Airbnb, which is presumably a different scam than
Airbnb itself.  It turns out that by entering into a contract in good faith,
getting pushed around by a stranger on the internet, and then completely failing
to hold anyone accountable, it's possible to lose money without receiving goods or
services.  The article goes into lengthy, pointless detail about the failed
attempts to find out what the hell was going on, and then concludes by embracing
some sort of revolting Stockholm syndrome and declaring fealty to a business who
takes a cut of the scam.  Hackernews recounts all the ways Airbnb has shafted them
as well.  It's a shame, decides Hackernews, that there is literally no other
choice.  All you can do is take an Uber to your Airbnb and get counterfeit goods
delivered by Amazon.
An extremely dull person wastes everyone's time by explaining in unnecessary and
interminable detail exactly why a byte in a computer program was changed from
whitespace to other whitespace.  At no point is it explained why a British
computer program in 2013 was using US-ASCII encoding, why utf-8 was a problem for
their garbage tool stack, how the hell U+00A0 got into the document in the first
place, or how anyone can avoid this problem going forward, so nobody learns
anything except what this moron likes to see in automated GitHub emails.
Hackernews just bikesheds commit message formatting, but they were doing that
already.
Some webshits, overwhelmed by nostalgia, overestimate the value of a specific
remote-code execution vector.  We can look forward in ten or twenty years to a
followon work entitled "WebAssembly is Responsible for the Internet's Most
Creative Era."
An academic creates a method for automatically making pictures less interesting.
The author then shows up in the comments to argue with Hackernews about how many
of them clicked on the video.  Then, Hackernews nitpicks the terminology,
resulting in a collaborative catalogue of all the various ways that filmmakers can
make pictures less interesting to look at.
Lyft (business model: "Uber for cars")
Some Pythons promise, in small words so that Python programmers can understand
them, that they're going to stop updating a version of their language Real Soon
Now, honest this time, they swear on their mum.  Hackernews chides the laggards
and an argument breaks out about whether moving to the new version is the easiest
thing ever conceived or else the most grueling six-month slog ever enforced.
Mozilla convinces a tech rag that it blocks ad trackers, while still shipping
Google Analytics directly with Firefox.  A gullible person points out some ways to
help Mozilla pretend to defend our privacy, and Hackernews immediately requests a
method to send money to Mozilla while ensuring none of that money helps women or
brown people.  Almost half the comments on the article are debating the merits and
methods to do exactly that.  None of them will work, because they all depend on
the idea that Mozilla accepts source code from strangers who do not work for
Google.  The rest of the comments are Hackernews arguing about whether it's
possible (or even desirable) to network two computers without advertising
appearing on at least both of them.
After all, that's not the job of a web browser -- the web browser is there to
render HTML, display pictures, play sounds and videos, render 3D graphics, provide
a platform for interactive video games, support your virtual reality headset,
provide enough operating system primitives to support an entire JITted language
capable of being used to write email clients, realtime GIS packages, CAD/CAM
operations, and manage radio communications with hardware peripherals.  Asking it
to also render one XML document is, according to Hackernews, unreasonable.
Beings from a higher plane of existence descend from the heavens to spread
"necessities" such as "curly quotes." Hackernews is wildly enthusiastic about this
endeavor, as the only thing preventing them from reading these ancient classic
texts is the insufficiently diverse lengths of the dashes.  Then they argue about
whether mailing lists are good.
Hackernews loves the commitment and the good-faith effort to lay out a
comprehensive and consistent argument, and recognizes it as a valuable springboard
from which to declare advertising as a fundamental building-block of human nature,
like copyright law, HTTP, and food.
Some programmers confuse a licensing contract with a religion.  Hackernews can't
understand why more people don't convert to the religion.  After spending some
time bikeshedding the phrasing of the liturgy, Hackernews invents the labor theory
of value from first principles, but mistakes 'typing things into VS Code' for
labor.
Microsoft regards Patreon as a threat to GitHub's lock-in business model, and does
something about it.  Hackernews is doubtful of the concept of accepting money for
work performed, and suggests instead selling ad space in README files.  Despite
the fact that people have been able to distribute money in myriad ways for
centuries, Hackernews believes that GitHub getting involved is a fundamental
revolution.
A webshit reimplements SDL in javascript.  Reimplementing ancient shit in
javascript is Hackernews' entire reason for being, so this story is highly ranked,
but the article is about software that is not useful, interesting, or unique, so
the comment threads just fight about how to render vector graphics.
AirBNB: I don't know how hotels work so I simulated one in code
Uber: I don't know how taxi services work so I simulated one in code
Tesla: I don't know how cars work so I simulated one in code
Palantir: I don't know how amoral secret police agencies work so I simulated one
in code
Code43: I don't know how unreliable backup services work so I simulated one in
code
Intel continues the war against its own users.  The news of an Intel hardware
security flaw is by now so unsurprising that Hackernews spends most of its time
complaining that the academics who identified the latest batch of failures did not
get a sufficiently artistic shout-out in the GReeTZ section of Intel's mitigation
.nfo.  If Intel spent as much money on hardware engineering as they do on
convincing shareholders their core product is not a Matroyshka doll of bad
decisions, at the very least they wouldn't be a full generation behind on PCIe.
Mozilla opens a new front in the war against its own users.  Instead of wasting
money on useless side projects nobody wants, they decide to torpedo their own
primary product.  The only mechanism Mozilla has to restore functionality is to
repurpose user-spying malware-distribution pipelines.  In the process of trying to
unfuck the only program any of them run on their computers, Hackernews is startled
to discover that the configuration window in Firefox does not have any predictable
correlation to the configuration of Firefox.  Many of them declare they are giving
up and switching to alternative software from Google, a company widely regarded
for respecting the privacy of anyone at all.
A domain squatter accidentally gets a real job, leading to the only onion routing
that's actually lived up to its promises.  Hackernews describes aiming over two
thousand dollars at a domain name purchase as a "moment of whimsy."
Webshit number 56,302 notices that when you turn your hypertext document browser
into a Turing-equivalent virtual machine with full access to the underlying
hardware, bad people can do mean things with it.
A webshit demonstrates the depth of javascript depravity.  The demonstration is
pointless, wasteful, and obnoxious, so Hackernews is on board for votes, but it is
not interesting, so the webshit shows up in the comment thread to talk about how
to make bad videos instead.
Mozilla introduces another product that has nothing to do with their only valuable
asset.  Hackernews is extremely excited, because they regard Mozilla as the only
possible resistance against the dominance of Google.  Since the primary difference
is that when Google arbitrarily terminates a product there are users affected, we
can conclude the foremost concern among Hackernews is harm reduction for
abandonware.
The Saudi royal family will stop at nothing to collect dick pics, which raises the
obvious question: why did they pursue Jeff Bezos instead of just making a Tinder
account?  Hackernews is flabbergasted that mobile phones are not perfectly secure,
and begins to panic about the amount of blackmail material being theoretically
accumulated by whatever political operative a given commenter fears the most.
An academic turns to computers in a never-ending quest to make learning harder
than it needs to be.  Naturally, computers are up to the task.  Hackernews
disapproves of the approach in the article, because it requires the operator to
understand the tools in use.  A few Hackernews have created similar grotesqueries
from alternative programs, and proceed to list them in great detail, to the
edification of no one.
A simple question results in The Gospel According to Some Dipshit, illustrating to
the Philistines the wisdom and divinity of the Lord your Google.  Hackernews
upvotes the shit out of this testament, even though one of the other answers was
written by the creator of the fucking technology being described.
Apple continues the war against its own products, reviving their previous practice
of avoiding security backdoors in favor of security frontdoors.  One Hackernews
wants to know how Apple can release such obviously broken garbage, and the
Apple-ogists arrive in force to explain how hard it is to be the best phone
manufacturer on earth, and the gang invents all kinds of fantastic scenarios in
which this situation is not the result of extreme incompetence at every level.
The Rust Evangelism Strike Force throws a fancy-dress party, where Rust dresses up
as a programming language anyone wants to use for non-webshit tasks.  Hackernews
finds the material commendably approachable, which is a natural condition that
arises from hypothetical programming.  Sadly, while the article itself receives a
frenzy of vote increases, the content is technical, so Hackernews observes the
traditional ten-to-one vote to comment ratio.  Most of the comments thirst for
embedded systems development in Rust, which is of course a perfect fit for a
language so elegant and lightweight that it must be implemented in six million
lines of C++ grafted onto a multi-gigabyte compiler toolchain.
Bitcoin Idiots, LLC announces that once again they have lost the world's biggest
game of Numberwang.  Hackernews, positively gravid with carefully-Googled economic
theory, sagely discusses the complex fiduciary failures of a fake monetary system
invented by C++ programmers.  Other Hackernews reject this reasoning, debating
instead whether the real measure of success for this technology is whether or not
it is as successful as AirBNB.  At the time of this writing, the entire 'currency'
in question can be completely fucked-out for approximately the cost of a small
single-family home in Oakland.
Microsoft notices that a program is popular nearly twenty years after it comes
out.  Some Hackernews are excited to see that Windows is nearly as useful as a
UNIX machine from the George W Bush administration.  Most Hackernews respond to
the news by speculating on the implementation details.  Nobody looks at the
implementation.
An internet pastes everyone else's documentation into a webshit.  Hackernews
stuffs the webshit into their text editors.
Apparently absolutely nothing occurred on the twentieth of October, so Hackernews
threw a dart at a newspaper: Iceland would like to stop being a wad of mud.
Hackernews is certain that it cannot.
An internet would like to help you fuck your whole house up with bad computers.
Hackernews has been doing it for years, and has many suggestions for other
terrible programs to integrate with this awful idea, but they're too busy arguing
about how and when to turn lights on.
An internet is upset that the latest revision of the USB specification is
inconsistent garbage, precisely like each of the other revisions of the USB
specification.  Hackernews can't stop destroying their hardware.  Other Hackernews
vent some fury about USB-C, and decide that it's basically a user interface
problem and not a fundamental architectural flaw.
An internet stumbles around the world of data structures.  Hackernews takes turns
describing the uniformly bad decisions they made when implementing their
respective toy editors.  Some time is spent arguing whether text files continue to
be text files once they are more than a couple megabytes.  No resolution is
reached.  An Atom developer shows up to give us some tips on reducing memory
usage.  Tips on memory usage from an Atom developer.  An Atom developer decides to
educate others on reducing memory usage.  An Atom develo
Apache is making a remote desktop program.  They call it 'clientless' because it
does not require a client, except for a massive document processing platform with
a turing-complete embedded scripting language whose development requires tens of
thousands of hours of labor per year and the operation of which uses hundreds of
megabytes of ram just to show an empty screen.  Hackernews remarks how easy this
task is, except for the parts that aren't.  The comment thread uses the term "HTML
5" nine times to mean javascript, but does not mention javascript at all.  Half
the comments are arguing about whether the name is stupid.
An internet recapitulates every complaint ever voiced about webshit.  Hackernews
regards these objections as wholly incompatible with reality, but happily whiles
away the afternoon recounting every browser plugin they have spent their lives
chewing.  Breathless defense of webshit comes in the form of someone describing
the web as "universal" and "the perfect platform."
An internet blogs about a new version of a web browser that might be released
eventually.  The traditional markers of progress are still present: removing
popular functionality, breaking the extensions that reimplement it, adding
shitware and disabling its removal, and adding more databases.  However, in an
effort to modernize the project management, much progress has been made in the
most important task: being Chrome.  Hackernews is dutifully impressed by all of
the wonderful progress Firefox has made, but won't use it because it's not Chrome.
Corey Doctorow slowly begins to realize that the internet, like everything else,
exists at the convenience of people with money.  Hackernews, all of whom work for
the companies that lobbied for web DRM standards, ruefully shake their heads;
there was no possible way to avoid this.  The only way forward is to commit all
available resources to web development.
An internet notices that some Mac software was written by idiots.  The idiots'
quick reversal of course is hailed as heroism.  Hackernews dithers about when it
is appropriate for terminal emulation software to undertake its own network
traffic.  Nobody suggests 'never.' The software in question has been sending
random shit over DNS queries for at least two years.
Apple releases their implementation of the Nokia N9. The primary new feature
involves mass collection of incredibly accurate biometric information, which
they're pretty sure will be fine.
An internet posts a memoriam to a previous job.  Hackernews expresses amazement
that someone can be good at their job, but has much more interest in posting their
own epistles: apologetica for Valve's inability to deliver any non-hat-related
product.
An internet complains about bloat on a blog, which makes 77 HTTP requests per page
load.  Hackernews explains that it is not possible to understand how much disk
space a given program takes, because computers are hard, and one Hackernews doubts
that large corporations might hire morons.  Nobody can figure out why the sizes
Apple reports are unrelated to the sizes actually occupied, but they're sure
willing to reconstruct the practice from guesswork.
An internet reimplements ls(1) with missing functionality and more dependencies.
The work is described as "small, fast, and portable"; the binary is 1.1mb
stripped, the utility only reliably builds on Linux and MacOS, and the term "fast"
is defined as "on par with ls".  Hackernews spends some time sternly admonishing
people who are not sufficiently impressed.  Half of the comments are people
arguing about whether computers should emit colors.  The other half of the
comments are people arguing about whether humans can read numbers.  The Rust
Evangelism Strike Force recommends several resources for people who would like to
poorly reimplement other unix tools.
Nobody mentioned Rust this week.  Reports indicate the Rust Evangelism Strike
Force was severely reduced in number after several of them attempted to read Rust
code outside of an Electron-based text editor.  Please send money to the Living
Computers Museum in lieu of flowers.
Big Pharma continues the war against its own users.  Hackernews is sorry that
people are needlessly dying, but it just costs too much money to know things.
Better luck next time!
An internet makes a bash script to encrypt things.  Hackernews dives into a
multi-hour argument about how to make files appear in two places at once.  Once
someone notices this particular program exposes metadata and isn't generally as
useful as real password managers, the floodgates of self-promotion open as every
single Hackernews links to the github url of every home-built password manager
ever made.
Lets Encrypt, having spent years telling the world that wildcard certificates are
a bad idea, announces their upcoming implementation of that bad idea.  They
continue blathering about "100% HTTPS" goals: not on my watch.  Hackernews spends
some time circlejerking about having free access to a bad certificate authority.
Some Hackernews experience cognitive dissonance at the realization they like
something they're not paying for.  The rest of the comments are defending idiotic
decisions by Lets Encrypt.
Some idiots brag about how many 90-day certificates they've shat out.  The
announcement yammers about "a 100% HTTPS Web," which is a goal that n-gate will
single-handedly ensure they never reach.  Hackernews sets about writing love songs
for the idiots, regardless of how much customer data is leaked, how many illegal
certificates are issued, or what percentage of the issued certificates are for
"www.paypal.com.sendmoney.глупец.ru".
Some assholes write a mail transport agent -- not a mail delivery agent -- and
because webshits are incapable of doing otherwise, they write it in Ruby on Rails.
It has over thirty direct dependencies in Ruby, only a handful of which are
version pinned.  One of them is 'mail', raising the question of what the hell the
other thirty are for.
Christ Jesus of Nazareth, Light of the World, Lamb of God, Son of Man descends
bodily from heaven and delivers unto our undeserving civilization the Blessing of
a new version of the Truth.  This one contains minor syntax updates.  An
unsuspecting Hackernews blasphemes by asking what the point of Rust is.  The Rust
Evangelism Strike Force ensures the resulting thread is exclusively comprised of
shitting on other languages.  Never forget: Rust isn't the best because it's good;
it's the best because using anything else is morally equivalent to genocide.  One
Hackernews tries to build code that built last year.  One guess whether it works.
Google, an advertising agency, sets about blocking content from competing
advertising agencies.  Some Hackernews think that maybe Google's motives are a
little selfish here, but by and large Hackernews is incapable of thinking negative
thoughts about Google.  Other Hackernews suggest using software that Google didn't
make, such as software that Apple made.  The end result: everyone agrees it's
going to be great.
Someone wrote a metric fuckload of javascript to create a fragile, overengineered
framework that uses other fragile, overengineered frameworks to build massive
fragile, overengineered CSS files.  "Semantic" is a Latin word that means "wrap
every word of content in its own div tags." Hackernews whines that this particular
abuse of CSS classes isn't in line with their preferred pattern of abuse.  Most of
the comments are bug reports, all of which are blamed on the users.
An internet notices that programs built on single-purpose browser instances are
criminally wasteful of resources.  Hackernews declares that nobody ever listened
to music or talked to other people before the advent of browser-based programs.
The insistence on driving in every conceivable nail with the same javascript
hammer is defended on the basis that programmers' time is more valuable than
literally everything else on earth, pending the next "Ask HN: How to beg for work"
thread.  The Rust Evangelism Strike Force attempts to promote Rust by likening it
to Java.
An academic is given money as a reward for inventing things that share names with
the individual bricks of waste that comprise the modern web, even though he's
spent the remainder of a career attempting to undo the horrible garbage pipeline
set up to feed the resulting trash fire.
Some webshits continue the war against their own users.  They post a product
announcement for their new webshit.  Loading the page in a browser comprises over
a hundred megabytes of traffic; eighty megabytes of useless video and nearly
twenty megabytes of json.  lynx --dump output contains all the same pertinent
information in 20kb.
Some religious extremists updated their cult-approved Scheme implementation.
Hackernews is pleased that this version is bug-compatible with a bad text editor.
One Hackernews asks if Guile is relevant, which produces a thread full of more
affirmative answers than there are Guile programmers on Earth.  Another asks why
Lisp syntax looks the way it does; that post is used as a downvote repository
while Hackernews holds forth on code generation and clarity.  The longest
explanations are from those who have never used Lisp, as usual.
SPOILER ALERT: it's a screen reader.  The author seems surprised it has features
catering to visually-impaired people.  Yahoo considers this a finance story.
People hired to look at terrible shit forty hours a week tend to go crazy.
Hackernews decides this must be why cops are all assholes and that the solution is
more cops.  One Hackernews suggests just hiring perverts.
An internet claims that git's unaimable footgun is evidence that git is the best.
Hackernews is torn between the idea that dangrous overcomplicated garbage might
not be the best and their religious conviction that git is the greatest thing ever
to happen to computing.  This debate is followed by dozens of pages of arguing
about which particular git misfeature is the most important to humanity.
Some academics 'invent' a linked list of pointers to unbalanced trees.  Like all
'innovation' from functional programmers, it has nothing to do with how computers
work and turns out to be slow on actual hardware.  The Rust Evangelism Strikeforce
notes that this is not trivial to implement in Rust, but that is because Rust is
so great.
Microsoft's database software depends directly on the Windows NT kernel.  Instead
of fixing that, they wrote an emulation layer to translate ABI calls to Linux
calls.  Hackernews is deeply impressed with the elegance of this shitshow.  A
late-1990s-style flamewar breaks out when the Knights of Linux invade the Windows
on the Mount.
An Internet thinks the best way to get better at programming is to read programs.
There are two sections highlighted in yellow; one could have been used to replace
this whole article with a tweet and the other is a desperate attempt to increase
audience interaction with a website.  Hackernews isn't so sure and also does not
like the guy's font selections.  I was unable to continue reading the Hackernews
comments when I came across the sentence "I feel like I learned sane C++ by
reading LLVM code" which seems like it should be English but doesn't add up to
anything that can possibly be true.
Google, furious that ISPs are able to compete with Google Analytics at all,
configures Chrome to bitch at people who use unencrypted http.  Self-signed
certificates are still regarded as worse than no encryption at all.  Tim
Berners-Lee, unsatisfied with having ruined the internet to the current degree,
wants to add STARTTLS to http.
damn man I ask for A Real-Time Framework for Peer-to-peer Group Editing on
Arbitrary Data Types every christmas and my parents just keep buying me socks
Home Depot sells a kit to improve key signing parties.  It's a CLOSED sign and
some nails
Putting your life in the hands of some incompetent Belgian fop
This isn't "open source" in the "use this how you want" sense.  This is the "help
us do work for no money" sense.
Setting aside the fact that "machine learning" has yet to prove worthwhile in
basically any current implementation, and the fact that "big data" is almost
always code for "shitty programmers who ran out of memory," this abhorrent pile of
dogshit is intended to strap together a bunch of computers scalemp-style in an
attempt to make single-threaded hobby projects relevant.  Absolutely disgusting.
"so much industry momentum" that nobody gives a shit at all!  Incedentally, if
you've noticed how bad your haswell video support is on linux, this speaker is
part of the reason why.  Cheers!
Seems like a risky move putting the entire one-hour presentation directly into the
talk title, but maybe it'll work out.  We'll have to spend less time getting
excited that they've finally got around to supporting laptops made a mere six
years ago, or that post-Ivy Bridge laptops can never be supported.  At least you
can install this on your servers, thereby destroying all the useful remote
operations shit that might have otherwise made your life easier!
Javascript bullshit, written in canonical node.js style: vendoring every single
piece of software the authors have ever seen, shoving it all in one huge list of
shit, insisting you install multiple docker images to run it, and then calling it
all "lean" and "highly-optimized." What does it actually do?  Take network
requests and perform database operations.  That's it.
some webshit thinks you can solve social problems with git
Ah, this must be the sort of "momentum" that Vulkan experiences.  In practice, an
ODF document means one thing: the user downloaded OpenOffice and forgot to save in
Word format.  Good news, though!  A quick email should be enough to get them to
re-save it and send it to you.
In which it is revealed that their fake version of Office365 is wildly
resource-hungry and subject to security problems.  At the end of the presentation,
everyone who is surprised by this information will be given a Mac and a job at
Facebook.
Two guys think they're going to "focus on the weakness" of their respective
projects without anyone trolling.  NetBSD is not participating because there is
nothing that NetBSD does not suck less than.
A Red Hat employee thinks QEMU is the right program to handle incremental backups.
Nobody is surprised.
Truly, half an hour is not long enough.  This program is a shit festival of
stupendous proportion.  It's a python thing ...  installed by downloading a VM ...
from an OS repository ...  which they tell you not to check the certificate of.
The python thing uses mysql to store its data, but it does everything over http...
except the user interface, which is java.  It's like someone threw a grenade into
a room full of bad decisions.
This is a pretty common theme in modern systems administration (primarily among
the people who call themselves "devops" and mean it): take a handful of tools that
almost everyone on earth uses, make incorrect assumptions about how other people
are using them, and then put it all on Github and give it a name.
Congratulations, all those things are now Your Product, you genius!  Please note:
none of the tools this person is presenting are a spellchecker.
This speaker has never actually done anything except give a lot of talks and write
a lot of books about everything Smelling -- code, design, projects, everything.  I
think he might just need to clean his laptop.
Haiku, an OS that is entirely a reimplementation of another OS, sends a
representative to talk shit about "stealing ideas." The asshole they sent thinks
that being multithreaded will help a program run well on older machines, despite
older machines being more likely to have one core.
Some dink ported his webshit from ASP.NET to javascript and ASP.NET.
This is a handy talk to attend if you want to know which European administrations
are running out of money.
Fedora is ever-so-slowly figuring out why the BSDs have the concept of 'base
system' and 'ports' as separate entities that do not meaningfully interact.  Two
Red Hat employees are trying to nail down sufficiently devopsy terms to replace
shitty utilitarian drab terms like 'base system' and 'package group'.
A genius wants to reimplement Solaris boot environments with btrfs.  Yes, this is
already trivially easy with zfs.  No, btrfs has not fixed their data-loss bugs.
Yes, this guy is serious.
Some asshole wants you to GPL your makefiles.
A carefully-titled talk, because it is not possible to create anything *but*
simple FPGA designs with OSS tools.  The first step in creating complex FPGA
designs is always "buy the toolkit from the FPGA manufacturer."
Remember that news story where some guys demonstrated the ability to remotely fuck
over a Jeep?  Red Hat is here to teach you how to design security vulnerabilities
for your car company!
GPS is not good enough for this guy's autonomous indoor flying drone.  I eagerly
await the video of the talk so I can see if he's figured out how to make his drone
localize and avoid a baseball bat.
I'm sorry.  I was going to say something funny here but the talk title is making
me physically nauseous.  Let's just move along.
The only relationship this talk has to GNU Guile is that Guix is written in it.
It's like presenting a how-to-install-Windows-XP talk in the C++ devroom, only
nobody uses Guix or Guile.
Lisp guys are still mad that computer hardware doesn't speak lisp.
GNU still thinks they can reimplement Twitter.  Maybe they can, but nobody will
ever know, because nobody will ever care.
They had over twenty kids cranking out software all summer!  Come and see the
wondrous benefits of hordes of undereducated programmers!
It should be obvious by now, but anyone who looks at that syntax and is not
immediately repulsed is a monster and should not be trusted with any important
task.
Some bureaucrats arrive to explain to everyone how important bureaucracy is.  One
of them takes credit for introducing Java and XML to IBM, as though that is a
praiseworthy achievement instead of grounds for a war crimes tribunal.

Thu Jul 25 22:38:04 EDT 2024
diff c220d0acc67b3f5e0e8af2bbe41fa8e367e6aa60 uncommitted
--- a/sys/src/cmd/git/git.h
+++ b/sys/src/cmd/git/git.h
@@ -282,6 +282,7 @@
 void unref(Object *);
 void cache(Object *);
 Object *emptydir(void);
+int entcmp(void*, void*);

 /* object sets */
 void osinit(Objset *);
--- a/sys/src/cmd/git/query.c
+++ b/sys/src/cmd/git/query.c
@@ -78,7 +78,7 @@
		be = bp + b->tree->nent;
	}
	while(ap != ae && bp != be){
- c = strcmp(ap->name, bp->name);
+ c = entcmp(ap, bp);
		if(c == 0){
			if(ap->mode == bp->mode && hasheq(&ap->h,
			&bp->h))
				goto next;
--- a/sys/src/cmd/git/save.c
+++ b/sys/src/cmd/git/save.c
@@ -54,33 +54,6 @@
	return a-> order < b->order ? -1 : 1;
 }

-int
-entcmp(void *pa, void *pb)
-{
- char abuf[256], bbuf[256], *ae, *be;
- Dirent *a, *b;
-
- a = pa;
- b = pb;
- /*
- * If the files have the same name, they're equal.
- * Otherwise, If they're trees, they sort as thoug
- * there was a trailing slash.
- *
- * Wat.
- */
- if(strcmp(a->name, b->name) == 0)
- return 0;
-
- ae = seprint(abuf, abuf + sizeof(abuf) - 1, a->name);
- be = seprint(bbuf, bbuf + sizeof(bbuf) - 1, b->name);
- if(a->mode & DMDIR)
- *ae = '/';
- if(b->mode & DMDIR)
- *be = '/';
- return strcmp(abuf, bbuf);
-}
-
 static int
 bwrite(void *p, void *buf, int nbuf)
 {
--- a/sys/src/cmd/git/serve.c
+++ b/sys/src/cmd/git/serve.c
@@ -55,9 +55,9 @@

	s = gethead(&head, buf, sizeof(buf));
	if(s != nil)
- r = fmtpkt(c, "%H HEAD%csymref=HEAD:%s\n", head, 0, s);
+ r = fmtpkt(c, "%H HEAD%csymref=HEAD:%s no-thin\n", head, 0, s);
	else
- r = fmtpkt(c, "%H HEAD\n", head);
+ r = fmtpkt(c, "%H HEAD%cno-thin\n", head, 0);
	if(r == -1)
		goto error;

--- a/sys/src/cmd/git/util.c
+++ b/sys/src/cmd/git/util.c
@@ -35,6 +35,34 @@
 }

 int
+entcmp(void *pa, void *pb)
+{
+ char abuf[256], bbuf[256], *ae, *be;
+ Dirent *a, *b;
+ int r;
+
+ a = pa;
+ b = pb;
+ /*
+ * If the files have the same name, they're equal.
+ * Otherwise, If they're trees, they sort as thoug
+ * there was a trailing slash.
+ *
+ * Wat.
+ */
+ r = strcmp(a->name, b->name);
+ if(r == 0 || (a->mode&DMDIR) == 0 && (b->mode&DMDIR) == 0)
+ return r;
+ ae = seprint(abuf, abuf + sizeof(abuf) - 1, a->name);
+ be = seprint(bbuf, bbuf + sizeof(bbuf) - 1, b->name);
+ if(a->mode & DMDIR)
+ *ae = '/';
+ if(b->mode & DMDIR)
+ *be = '/';
+ return strcmp(abuf, bbuf);
+}
+
+int
 hasheq(Hash *a, Hash *b)
 {
	return memcmp(a->h, b->h, sizeof(a->h)) == 0;


Thu Jul 25 22:30:29 EDT 2024
diff c220d0acc67b3f5e0e8af2bbe41fa8e367e6aa60 uncommitted
--- a/sys/src/cmd/git/query.c
+++ b/sys/src/cmd/git/query.c
@@ -57,6 +57,33 @@
		print("%c %P%s\n", m, e->name);
 }

+int
+entcmp(void *pa, void *pb)
+{
+ char abuf[256], bbuf[256], *ae, *be;
+ Dirent *a, *b;
+
+ a = pa;
+ b = pb;
+ /*
+ * If the files have the same name, they're equal.
+ * Otherwise, If they're trees, they sort as thoug
+ * there was a trailing slash.
+ *
+ * Wat.
+ */
+ if(strcmp(a->name, b->name) == 0)
+ return 0;
+
+ ae = seprint(abuf, abuf + sizeof(abuf) - 1, a->name);
+ be = seprint(bbuf, bbuf + sizeof(bbuf) - 1, b->name);
+ if(a->mode & DMDIR)
+ *ae = '/';
+ if(b->mode & DMDIR)
+ *be = '/';
+ return strcmp(abuf, bbuf);
+}
+
 void
 difftrees(Object *a, Object *b)
 {
@@ -78,7 +105,7 @@
		be = bp + b->tree->nent;
	}
	while(ap != ae && bp != be){
- c = strcmp(ap->name, bp->name);
+ c = entcmp(ap, bp);
		if(c == 0){
			if(ap->mode == bp->mode && hasheq(&ap->h,
			&bp->h))
				goto next;
--- a/sys/src/cmd/git/save.c
+++ b/sys/src/cmd/git/save.c
@@ -59,6 +59,7 @@
 {
	char abuf[256], bbuf[256], *ae, *be;
	Dirent *a, *b;
+ int r;

	a = pa;
	b = pb;
@@ -69,8 +70,9 @@
	 *
	 * Wat.
	 */
- if(strcmp(a->name, b->name) == 0)
- return 0;
+ r = strcmp(a->name, b->name);
+ if(r == 0 || (a->mode&DMDIR) == 0 && (b->mode&DMDIR) == 0)
+ return r;

	ae = seprint(abuf, abuf + sizeof(abuf) - 1, a->name);
	be = seprint(bbuf, bbuf + sizeof(bbuf) - 1, b->name);


Thu Jul 25 15:42:46 EDT 2024
bytedance is scraping my server at consistent speed.

next