HN user

substack

1,135 karma

Whatever.

Posts27
Comments181
View on HN
bits.coop 7y ago

Animating a dog in webgl with data structures and math

substack
1pts0
medium.com 8y ago

Bankai, the frindly web compiler

substack
6pts0
substack.net 11y ago

Offline decentralized single sign-on in the browser

substack
3pts1
sentimentalversioning.org 11y ago

Sentimental versioning

substack
31pts9
feedopensource.com 12y ago

Feed Open Source

substack
69pts24
substack.net 12y ago

Task automation with `npm run`

substack
16pts0
substack.net 13y ago

Sharing rendering code in node and the browser

substack
6pts0
browserify.org 13y ago

Browserify v2 released

substack
43pts13
substack.net 14y ago

Multi-server continuous deployment with fleet

substack
7pts0
substack.net 14y ago

Colorful javascript object diffs with difflet

substack
15pts1
substack.net 14y ago

Semver your services with seaport

substack
2pts0
substack.net 14y ago

The node.js aesthetic

substack
136pts76
substack.net 14y ago

Bounce your http requests around with bouncy

substack
44pts18
substack.net 14y ago

Heatmaps for node.js and the browser

substack
56pts3
substack.net 15y ago

Javascript AST trickery with burrito

substack
64pts6
github.com 15y ago

Node.js: batteries not included

substack
2pts0
substack.net 15y ago

Browserify: browser-side require() for your node.js

substack
40pts9
www.scottmcd.net 15y ago

Salvador Dali, spatial frequency, and Lincoln

substack
2pts0
substack.net 15y ago

Sesame - persistent http sessions using harmony proxies in node.js

substack
4pts0
substack.net 15y ago

Graph of node.js package dependencies

substack
4pts0
substack.net 15y ago

Optimist: option parsing for node.js that gets out of your way

substack
2pts0
substack.net 15y ago

Seq: chainable asynchronous flow control for node.js

substack
7pts1
substack.net 15y ago

Roll your own PubSub with DNode in node.js

substack
16pts0
substack.net 16y ago

DNode: Asynchronous Remote Method Invocation for Node.js and the Browser

substack
17pts4
www.catonmat.net 16y ago

More one-liners from commandlinefu explained

substack
51pts2
www.googlelunarxprize.org 16y ago

An average half-kilometer S-type asteroid is worth more than $20 trillion.

substack
61pts61
substack.net 16y ago

This winter break, I built a python-powered robot telescope.

substack
16pts1

What happens when a developer can't publish a security update because they don't have 2FA enabled for a popular package? I was almost in this position. I don't have a phone, I don't have 2FA enabled and am not looking to do so. It seems like a 2FA mandate is going to ensure that people lose access to their accounts and won't be able to publish updates at all.

The VPS we're running on has 60GB of RAM which should be plenty but the ingest program needs more work to use less memory so it stops crashing when denormalizing multipolygon relations, which involves denormalizing ways which fetch nodes... all referenced by ID which has not much locality spread across the pbf file. And if you write to temporary storage it can use a lot of disk and denormalization based on the on-disk format can get really slow. It's just all very tricky to get working well within reasonable time constraints (less than a week of processing ideally) and a reasonable memory footprint.

It's similar how with a torrent you can start seeking into a particular spot in a file and start playing by requesting particular chunks at that spot. Some clients like webtorrent support this behavior but it changes the dynamics of the network somewhat if many clients do this kind of thing. You can build some supplementary peer info to help the process along for different p2p networks depending on if they let you create side-channels or let you make more explicit connections to peers. For peermaps, the database is file and directory based so most of that peer tree traversal should be handled already by the network. And there are more ways to optimize the connections with additional tricks once you get the basics working with a somewhat slower and less sophisticated transfer method.

The website hasn't been updated in a while and the stack somewhat diverges from what is written there but we're very hard at work making all the pieces fit together. The p2p database (eyros) works pretty well with only some transfer size improvements left. The database is fully symmetric and runs fully in the browser with a ~400kb wasm build (will work on getting this down later). And the rendering stack works pretty well. The main hurdle at the moment which I have been working on is the ingest phase which consumes planet-osm.pbf and writes into the spatial database (eyros). I can process all the nodes in 1 hour and all the ways in 35 hours on a not very expensive vps but processing the relations I still run out of memory. Probably in the next few weeks I can get this ingest phase working and we will have an initial data release. There is still some rendering work with polish and label rendering but it basically works.

The main initial benefit for the project is to have completely free embeddable web maps hosted p2p (using ipfs, hyperdrive, webtorrent) where you can entirely customize the rendering. Then later the benefits of the fully symmetric nature of the database will start to make more sense and the project has the potential to become less centralized on open street map servers and data. For some prior work that I and other people who work on peermaps have worked on check out https://mapeo.world/ and this very old writeup I made about an early version of the osm-p2p database. The experiences of working on that project and prior versions heavily informs how the current peermaps stack works.

You can check out a more up to date version of the progress on this talk we gave for speakeasyjs recently: https://www.youtube.com/watch?v=P7X7C-door4

Or here is a slightly old slightly broken version of panning across a processed version switzerland using the end-to-end stack on my laptop (it looks better now) https://www.youtube.com/watch?v=gHEmmQ6GnDI

Many projects[1][2][3][4] in the dat ecosystem use kappa-core[5] for multi-user applications on top of hypercores (the low-level append-only log used by dat). kappa-core is designed around the kappa architecture where the logs serve as the historical record and primary source of truth (so you get version control) and materialized views ingest the logs to answer application-specific queries.

Some nice properties of the kappa-core implementation of this architecture are that:

* works fully offline by default and many of the apps (especially mapeo) are designed for very offline use

* device to device replication is first-class

* you can completely rebuild the materialized views from the log data whenever your schema changes (very nice way of handling database migrations)

* there's a lot of flexibility in how you design the materialized views and an ecosystem of views on npm you can use instead of writing your own crdts

* works in the browser

There is also some progress in the ecosystem for sparse mode where content downloads from other feeds are driven by application-specific queries.

There is a kappa-core workshop[6] that covers some of the introductory topics.

[1] https://cabal.chat/

[2] https://mapeo.world/

[3] https://cobox.cloud/

[4] https://arso.xyz/

[5] https://github.com/kappa-db/kappa-core

[6] https://kappa-db.github.io/workshop/build/01.html

That's not really a fair comparison. Just because something is "baked in" doesn't mean you can't get similar functionality from other libraries in a more ala-carte fashion.

location: hawai'i (utc-10)

remote: yes

willing to relocate: no

technologies: webgl, js, node, c++, glsl, linux, web

cv: https://substack.neocities.org/cv.html

email: substack@gmail.com

Looking for remote webgl, p2p, data viz, and mapping projects.

I'm particularly interested in work that ties together industrial, engineering, CAD, hardware, physical simulations, and field work with computer software. Preference for web tech.

Programming for 17 years, 12 professionally.

These things build on each other over time and learning a language is not exactly easy, especially if you are starting out. An important aspect of the transferability here is that you can go from programming a jewelbot in c++ to programming other microcontrollers. You don't have to learn a completely different language and toolchain to continue exploring programming on a different platform.

I think the real C++ part is so important because it respects the abilities and intelligence of children to participate in the adult world using a real (yet approachable) technology that is also used in industry. This also makes these skills earned poking around with a fun toy transferable to solving their own problems, doing coursework at university, and later on entering the technology labor market. Other programming toys aimed at kids like NXT graphical programming or scratch don't have the same transferability and I've noticed that kids see right through that.

GDP has its own limitations, as it measures aggregate economic activity and does not take into consideration things like wealth distribution, environmental impact, unrenumerated labor. Further, imagine a society where everyone must pay for something that used to be free, like breathable air. If air becomes commodified, GDP goes up, but quality of life goes down as something that was previously a public good enters the realm of private profit. Extrapolate for various kinds of state-run services.

https://en.wikipedia.org/wiki/Gross_domestic_product#Limitat...

The sun is also very intense when it shines and it dries out clothes very quick. We have problems because the sun dries out the soil too much for plants so we have to put them in shadier areas. I live in an area with 300+cm of annual rainfall.

It sounds like the refrigerator is the problem here:

"But they still have rainy weeks where they run out of power and have to run their gas-powered generator to keep the refrigerator from spoiling."

You don't need to run any other appliances all night when the sun isn't shining. Also, why would you even have a microwave, toaster, and ELECTRIC dryer? Those all use obscene amounts of power.

I live off-grid and we run laptops (using boost converters) and lights directly off 12v DC. A big part of making an off-grid system work is reducing your consumption drastically in ways that you can't even do if you're plugged into the grid.

You don't need to trust the security of pubs. Validation of messages happens through cryptographic signing and public messages are public anyways. You also don't need to trust that pubs will be online much because your followers will also help host your content.

Your computer will only help host data that was hosted by people that you follow. If you don't want to spread content that you disagree with, don't follow people who post such content.

Collective action is hard, particularly when tech companies form and dissolve very quickly and turnover is high. In addition to unions, worker ownership through cooperatives is another avenue for better conditions. In worker cooperatives, workers own the business, so business objectives are much more aligned with labor. Cooperatives don't have to worry about management union-busting or moving production elsewhere.

Consider that in a private company, surpluses are paid out to executives and shareholders. How is that not "inefficient"? Meanwhile, workers are paid a subsistence wage of however low the company can get away with paying. In a worker-owned, worker-managed business, those surpluses could be spent on higher wages, lower prices, or increasing productivity. Without having to generate profits for investors and shareholders (who contribute no labor to the enterprise), wouldn't that make a firm much more "efficient"?

Offline is not a mere feature you can bolt on to existing architectures because you are really building a distributed system. Architectures that work well for distributed systems and especially p2p architectures thrive in this environment. Elsewhere in these comments people are discussing command queues, but this idea presumes that servers are somewhat reliable and that all operations need to go through a centralized point of control and failure. Instead, you can take this idea further and implement a kappa architecture (sometimes also called "event sourcing") where you maintain a log locally on every client which is the source of truth, not a server. When a network connection is available, you can replicate the log to a server or directly to other clients. You can build indexes (materialized views) that sit on top of this log to answer queries more quickly than reading the entire log out every time. You can also blow away these indexes and rebuild them from the log whenever your requirements change (migrations).

Unfortunately the web is missing a few pieces that would make it a very good platform for fully p2p, distributed apps. Service workers are a good start, but they have a 24-hour upper cap on max-age of the service worker itself, so users can't trust on first use (TOFU) and then be more secure against kinds of active targeting. The suborigin specification and iframe sandboxes for distributing apps offline and p2p would be much more useful for offline sandboxes if they didn't require that a server send an http header. These will become much more important as the web bluetooth API matures, which can allow distributing user data and application updates in a totally offline environment.

Even without being fully offline, it's very odd that when an automatic update to android or windows comes down the pipe, people in remote areas download the exact same bytes from servers in America over and over again, all over a thin pipe. They could fetch that data from each other and save a lot of money on bandwidth and data caps.

Graeber is an avowed anarchist, so I don't think he's very keen on planned economies. People are forced into labor market participation because they can't meet their basic needs other ways, the police will squash these alternatives with violence.

If you are actually interested in what Graeber has to say instead of making up strawman arguments, you can read "Utopia of Rules".

Another alternative that is not often discussed in technology circles is to form cooperative businesses where workers wholly own the business and make democratic decisions about its governance. Why should the workers, who produce the value, not be paid according to their contributions? Why do we need management to tell us what to do and siphon off the surplus profits in the process?

Also keep in mind that javascript engines have a built-in mechanism for including multi-line strings with a powerful substitution engine: tagged template strings (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...). The upside of template strings is that you can run your code directly in node or electron without using extra tooling first. It is possible and not hard to use tagged templates with react, although few people do. It's more common in some other frontend ecosystems.

One of the features for yarn mentioned is better offline support, but you can also do this with vanilla npm:

  npm install --cache-min Infinity
I have this aliased to `npmi` on my system and use it all the time.