commit 55c1010ce2bb490d84878a83fb358e8baeb64c16
parent ff15d58c419ccf3e44ec92237ccea44679de1a06
Author: David Eisinger <[email protected]>
Date: Mon, 5 Feb 2024 10:00:36 -0500
start dither post
Diffstat:
5 files changed, 6571 insertions(+), 0 deletions(-)
diff --git a/content/elsewhere/email-photos-to-an-s3-bucket-with-aws-lambda-with-cropping-in-ruby/index.md b/content/elsewhere/email-photos-to-an-s3-bucket-with-aws-lambda-with-cropping-in-ruby/index.md
@@ -3,6 +3,11 @@ title: "Email Photos to an S3 Bucket with AWS Lambda (with Cropping, in Ruby)"
date: 2021-04-07T00:00:00+00:00
draft: false
canonical_url: https://www.viget.com/articles/email-photos-to-an-s3-bucket-with-aws-lambda-with-cropping-in-ruby/
+references:
+- title: "Ditherpunk — The article I wish I had about monochrome image dithering — surma.dev"
+ url: https://surma.dev/things/ditherpunk/
+ date: 2024-02-05T14:50:25Z
+ file: surma-dev-e4sfuv.txt
---
In my annual search for holiday gifts, I came across this [digital photo
diff --git a/content/journal/encrypt-and-dither-photos-in-hugo/index.md b/content/journal/encrypt-and-dither-photos-in-hugo/index.md
@@ -0,0 +1,67 @@
+---
+title: "Encrypt and Dither Photos in Hugo"
+date: 2024-02-05T09:47:45-05:00
+draft: false
+references:
+- title: "Elliot Jay Stocks | 2023 in review"
+ url: https://elliotjaystocks.com/blog/2023-in-review
+ date: 2024-02-02T15:51:48Z
+ file: elliotjaystocks-com-fcit8u.txt
+- title: "Encrypt and decrypt a file using SSH keys"
+ url: https://www.bjornjohansen.com/encrypt-file-using-ssh-key
+ date: 2024-02-05T14:50:24Z
+ file: www-bjornjohansen-com-hqud3x.txt
+- title: "Ditherpunk — The article I wish I had about monochrome image dithering — surma.dev"
+ url: https://surma.dev/things/ditherpunk/
+ date: 2024-02-05T14:50:25Z
+ file: surma-dev-e4sfuv.txt
+- title: "About the Solar Powered Website | LOW←TECH MAGAZINE"
+ url: https://solar.lowtechmagazine.com/about/the-solar-website/
+ date: 2024-02-05T14:50:28Z
+ file: solar-lowtechmagazine-com-vj7kk5.txt
+---
+
+* https://github.com/gohugoio/hugo/issues/8598
+
+A more ambitions version of me would take a crack at adding this functionality to Hugo and opening a PR.
+
+```sh
+openssl rand -hex -out secret.key 32
+```
+
+---
+
+```sh
+openssl \
+ aes-256-cbc \
+ -in secretfile.txt \
+ -out secretfile.txt.enc \
+ -pass file:secret.key \
+ -iter 1000000
+```
+
+---
+
+```ruby
+Dir.glob("content/**/*.{jpg,jpeg,png}").each do |path|
+ `openssl aes-256-cbc -in #{path} -out #{path}.enc -pass file:secret.key -iter 1000000`
+end
+```
+
+* https://gohugo.io/content-management/image-processing/#remote-resource
+
+## Deleting images out of Git history
+
+* https://stackoverflow.com/a/64563565
+* https://github.com/newren/git-filter-repo
+* https://formulae.brew.sh/formula/git-filter-repo
+
+```ruby
+Dir.glob("content/**/*.{jpg,jpeg,png}") do |path|
+ `git filter-repo --invert-paths --force --path #{path}`
+end
+```
+
+***
+
+I'm 41 years old, and this stuff still gives me a buzz like it did when I was 14.
diff --git a/static/archive/solar-lowtechmagazine-com-vj7kk5.txt b/static/archive/solar-lowtechmagazine-com-vj7kk5.txt
@@ -0,0 +1,5544 @@
+[1]
+
+[2]LOW←TECH MAGAZINE
+
+[3]This is a solar-powered website, which means it sometimes goes offline
+
+ • [4]English
+ • [5]Français
+ • [6]Deutsch
+ • [7]Nederlands
+ • [8]Español
+ • [9]Italiano
+ • [10]Português
+ • [11]Polski
+ • [12]العربية
+ • [13]Tiếng Việt
+ • [14]한국어
+
+Menu
+
+ • [15] About
+ • [16] Low-tech Solutions
+ • [17] High-tech Problems
+ • [18] Obsolete Technology
+ • [19] Read the Magazine Off-line
+ • [20] Archive
+ • [21] Donate
+ • [22] NTM
+ • [23] [24]
+
+About the Solar Powered Website
+
+This website is solar-powered and self-hosted. It has been designed to
+radically reduce the energy use associated with accessing our content.
+
+Translations [25]fr [26]de [27]nl [28]es
+The solar powered server that runs this website.
+The solar powered server that runs this website.
+View original image View dithered image
+
+Last update: April 22, 2022
+
+Low-tech Magazine questions the belief in technological progress, and
+highlights the potential of past knowledge and technologies for designing a
+sustainable society. Because a web redesign was long overdue – and because we
+try to practice what we preach – we decided to build a low-tech website that
+meets our needs and abides by our principles.
+
+To reduce energy use, we opted for a back to basics web design, using a static
+site instead of a database driven content management system. We further apply
+default typefaces, dithered images, off-line reading options, and other tricks
+to lower energy use far below that of the average website. In addition, the low
+resource requirements and open design help to keep the blog accessible for
+visitors with older computers and/or less reliable Internet connections.
+
+Because it uses so little energy, this website can be run on a mini-computer
+with the processing power of a mobile phone. It needs 1 to 2.5 watts of power,
+which is supplied by a small, off-grid solar PV system on the balcony of the
+author’s home. Typical for off-the-grid renewable power systems, energy storage
+is limited. This means that the website will go off-line during longer periods
+of cloudy weather.
+
+[29]Why a low-tech website?
+
+[30]Why does it go off-line?
+
+[31]How often is it off-line?
+
+[32]When is the best time to visit?
+
+[33]How is the website designed?
+
+[34]Which hardware and software do you use?
+
+[35]What happens to the old website?
+
+[36]Who made this?
+
+[37]Can I help?
+
+[38]Comments
+
+[39]The solar powered website in the media
+
+Why a low-tech website?
+
+We were told that the Internet would [40]“dematerialise” society and decrease
+energy use. Contrary to this projection, it has become a large and rapidly
+growing consumer of energy itself. According to the latest estimates, the
+entire network already consumes [41]10% of global electricity production, with
+data traffic doubling roughly every two years.
+
+In order to offset the negative consequences associated with high energy
+consumption, renewable energy has been proposed as a means to lower emissions
+from powering data centers. For example, Greenpeace’s yearly [42]ClickClean
+report ranks major Internet companies based on their use of renewable power
+sources.
+
+However, running data centers on renewable power sources is not enough to
+address the growing energy use of the Internet. To start with, the Internet
+already uses three times more energy than all wind and solar power sources
+worldwide can provide. Furthermore, [43]manufacturing, and regularly replacing,
+renewable power plants also requires energy, meaning that if data traffic keeps
+growing, so will the use of fossil fuels.
+
+Finally, solar and wind power are not always available, which means that an
+Internet running on renewable power sources would require infrastructure for
+energy storage and/or transmission that is also [44]dependent on fossil fuels
+for its manufacture and replacement. Powering websites with renewable energy is
+not a bad idea. However, the trend towards growing energy use must also be
+addressed.
+
+Websites are getting “fatter”
+
+The growing energy use of the Internet is associated with two trends. First,
+content is becoming increasingly resource-intensive. This has a lot to do with
+the growing importance of video, but a similar trend can be observed among
+websites.
+
+The [45]size of the average web page (defined as the average page size of the
+500,000 most popular websites) increased from 0.45 megabytes in 2010 to 1.7
+megabytes in June 2018. For mobile websites, the average “page weight” rose
+tenfold from 0.15 MB in 2011 to 1.6 MB in 2018. Using different measurement
+methods, other sources report average page sizes of up to 2.9 MB in 2018.
+
+ The size of the average web page increased at least threefold from 2010 to
+ 2018.
+
+The growth in data traffic [46]surpasses the advances in energy efficiency (the
+energy required to transfer 1 megabyte of data over the Internet), resulting in
+more and more energy use.
+
+Over and above this, “heavier” or “larger” websites not only increase energy
+use in the network infrastructure, but they also shorten the lifetime of
+computers – larger websites require more powerful computers to access them.
+This means that more computers need to be manufactured, which is a [47]very
+energy-intensive process.
+
+Always online
+
+A second reason for growing Internet energy consumption is that we spend more
+and more time on-line. Before the arrival of portable computing devices and
+wireless network access, we were only connected to the network when we had
+access to a desktop computer in the office, at home, or in the library. We now
+live in a world in which no matter where we are, we are always on-line,
+including, at times, via more than one device simultaneously.
+
+ Continuous network access doesn’t combine well with renewable energy
+ sources such as wind and solar power, which are not always available.
+
+“Always-on” Internet access is accompanied by a cloud computing model –
+allowing more energy efficient user devices at the expense of increased energy
+use in data centers. Increasingly, activities that could perfectly happen
+off-line – such as writing a document, filling in a spreadsheet, or storing
+data – are now requiring continuous network access. This does not combine well
+with renewable energy sources such as wind and solar power, which are not
+always available.
+
+Addressing both issues
+
+Our new web design addresses both these issues. Thanks to a low-tech web
+design, we managed to decrease the average page size of the blog by a factor of
+five compared to the old design – all while making the website visually more
+attractive. Secondly, our new website runs 100% on solar power, not just in
+words, but in reality: it has its own energy storage and will go off-line
+during longer periods of cloudy weather.
+
+The 50W and 30W solar PV panels on the balcony. One is powering the website,
+the other is powering the lights in the living room. Image by Marie Verdeil.
+The 50W and 30W solar PV panels on the balcony. One is powering the website,
+the other is powering the lights in the living room. Image by Marie Verdeil.
+View original image View dithered image
+
+How is the website designed?
+
+The Internet is not an autonomous being. Its growing energy use is the [48]
+consequence of actual decisions made by software developers, web designers,
+marketing departments, publishers and internet users. With a lightweight,
+off-grid solar-powered website, we want to show that other decisions can be
+made.
+
+ The average page size of this website is below 0.5 MB – roughly a sixth of
+ the average page size of the original website
+
+With about 100 articles online, the average page weight on the solar powered
+website is now below 0.5 MB – roughly a fifth of the average page size of the
+previous design, and less than three times the average page size of the 500,000
+most popular blogs in June 2018. The page weight for each article on this
+website is shown in the lower left corner of the screen.
+
+Below are some of the design decisions we made to reduce energy use. We have
+published a [49]separate document that focuses on the front-end efforts, and
+one [50]that focuses on the back-end. We have also [51]released the source code
+for our website design.
+
+Static Site Generator
+
+One of the fundamental choices we made was to build a static website. Most of
+today’s websites use server side programming languages that generate the
+website on the fly by querying a database. This means that every time someone
+visits a web page, it is generated on demand.
+
+On the other hand, a static website is [52]generated once and exists as a
+simple set of documents on the server’s hard disc. It’s always there – not just
+when someone visits the page. Static websites are thus based on file storage
+whereas dynamic websites depend on recurrent computation. Static websites
+consequently require less processing power and thus less energy.
+
+ A static website requires less processing power because it is not dependent
+ on recurrent computation
+
+The choice for a static site enables the possibility of serving the site in an
+economic manner from our home office in Barcelona. Doing the same with a
+database-driven website would be nearly impossible, because it would require
+too much energy. It would also be a big security risk. Although a web server
+with a static site can be hacked, there are significantly less attack routes
+and the damage is more easily repaired.
+
+Dithered Images
+
+The main challenge was to reduce page size without making the website less
+attractive. Because images take up most of the bandwidth, it would be easy to
+obtain very small page sizes and lower energy use by eliminating images,
+reducing their number, or making them much smaller. However, visuals are an
+important part of Low-tech Magazine’s appeal, and the website would not be the
+same without them.
+
+ By dithering, we can make images ten times less resource-intensive, even
+ though they are displayed much larger than on the old website.
+
+Instead, we chose to apply an obsolete image compression technique called
+“dithering”. The number of colours in an image, combined with its file format
+and resolution, contributes to the size of an image. Thus, instead of using
+full-colour high-resolution images, we chose to convert all images to black and
+white, with four levels of grey in-between. These black-and-white images are
+then coloured according to the pertaining content category via the browser’s
+native image manipulation capacities.
+
+The solar powered server in its new housing, screwed against the wall in the
+living room. The battery is in front. The solar charge controller below the
+laptop powers the lights in the room. Image by Marie Verdeil.
+The solar powered server in its new housing, screwed against the wall in the
+living room. The battery is in front. The solar charge controller below the
+laptop powers the lights in the room. Image by Marie Verdeil.
+View original image View dithered image
+
+Compressed through this dithering plugin, images featured in the articles add
+much less load to the content: compared to the old website, the images are
+roughly ten times less resource-intensive.
+
+Default typeface / No logo
+
+All resources loaded, including typefaces and logos, are an additional request
+to the server, requiring storage space and energy use. Therefore, our new
+website does not load a custom typeface and removes the font-family
+declaration, meaning that visitors will see the default typeface of their
+browser. Only one weight (regular) of a font is used, demonstrating that
+content hierarchy can be communicated without loading multiple typefaces and
+weights.
+
+ Visitors will see the default typeface of their browser, eliminating the
+ need to load a custom typeface.
+
+We use a similar approach for the logo. In fact, Low-tech Magazine never had a
+real logo, just a banner image of a spear held as a low-tech weapon against
+prevailing high-tech claims. Instead of a designed logotype, which would
+require the production and distribution of custom typefaces and imagery,
+Low-tech Magazine’s new identity consists of a single typographic move: to use
+the left-facing arrow in place of the hypen in the blog’s name: LOW←TECH
+MAGAZINE. This pared-down identity drew inspiration from the past as well as
+the banner image of the previous design.
+
+Why does it go offline?
+
+Quite a few web hosting companies claim that their servers are running on
+renewable energy. However, even when they actually generate solar power
+on-site, and do not merely “offset” fossil fuel power use by planting trees or
+the like, their websites are always online.
+
+This means that either they have a giant battery storage system on-site (which
+makes their power system unsustainable), or that they are relying on grid power
+when there is a shortage of solar power (which means that they do not really
+run on 100% solar power).
+
+ Keeping the server on-line no matter what simply requires too many
+ batteries, which makes the system unsustainable and expensive.
+
+In contrast, this website runs on an off-the-grid solar power system with its
+own energy storage, and will go off-line during longer periods of cloudy
+weather. Less than 100% reliability is [53]essential for the sustainability of
+an off-the-grid solar system, because above a certain threshold the fossil fuel
+energy used for producing and replacing the batteries is higher than the fossil
+fuel energy saved by the solar panels.
+
+Apart from sustainability (and costs), the author’s home has limited space for
+installing solar panels and batteries. Keeping the server on-line no matter
+what – the standard business model of webhosting companies – simply requires
+too many batteries.
+
+[solar-pane]
+View original image View dithered image
+The sizing of battery and solar panel is a compromise between uptime and
+sustainability. Illustration: Diego Marmolejo
+The sizing of battery and solar panel is a [54]compromise between uptime and
+sustainability. Illustration: [55]Diego Marmolejo
+View original image View dithered image
+
+How often is it offline?
+
+Over a period of roughly one year (351 days, from 12 December 2018 to 28
+November 2019) the server was up for 95.26% of the time. This means that we
+were offline for 399 hours (which corresponds to 16.64 days).
+
+These numbers don’t tell the whole story, though. During the first ten months
+of this period, the server was online for 98.2% of the time. This means that it
+was offline for only 152 hours (6.4 days) – and this includes the winter
+months.
+
+However, uptime from 1 October to 30 November 2019 plummeted to 80.17%. This
+was caused by a software upgrade of the Linux kernel, which increased the
+average power use of the server from 1.19 to 1.49 watts, and consequently
+brought the website down for at least a few hours every night.
+
+Image: In October 2019, average power use suddenly increases and the site goes
+down every night.
+Image: In October 2019, average power use suddenly increases and the site goes
+down every night.
+View original image View dithered image
+
+The graph above, which shows the power use of the server from 15 July to 15
+November 2019, reveals the effect of the software upgrade. Power use is zero
+when the server is offline. Before the software upgrade, this happens only now
+and then, during longer periods of bad weather. From October onwards, it
+happens every night. The two peaks at the beginning of November show two
+intents to charge the battery with grid power, because we initially assumed the
+problem was caused by a deteriorating battery.
+
+All the data above refer to a set-up consisting of a 50W solar panel with an
+energy storage capacity that is equivalent to that of an 86.4 Wh lead-acid
+battery. In December 2019 and January 2020, we have been running the system on
+[56]different sizes of solar panels and batteries. Based on these experiments,
+we decided to continue with a smaller (30W) solar panel and a larger (168 Wh)
+lead-acid battery. Since then, the uptime has been 100% (March to September
+2020), even though we have added a lot of content by making the website
+multilingual. This is due to the larger (brand new) battery but also to the
+better orientation of the smaller solar panel. The battery’s capacity will
+decline over time, so the higher storage capacity will make it last longer. If
+the uptime remains 100% through the winter 2020/2021, we will probably
+downgrade to a 20W solar panel.
+
+[57]Here’s a graphic representation of our uptime in 2020, related to the
+weather.
+
+When is the best time to visit?
+
+The accessibility of this website depends on the weather in Barcelona, Spain,
+where the solar-powered web server is located. Because it is solar powered, the
+website is most often online during the summer. To help visitors “plan” their
+visits to Low-tech Magazine, we provide them with several pointers.
+
+A battery meter provides crucial information because it may tell the visitor
+that the blog is about to go down – or that it’s “safe” to read it. The design
+features a background colour that indicates the capacity of the solar-charged
+battery that powers the website server. A decreasing height indicates that
+night has fallen or that the weather is bad.
+
+ To help visitors “plan” their visits to Low-tech Magazine, we provide them
+ with several pointers such as a battery meter and a weather forecast.
+
+In addition to the battery level, other information about the website server is
+visible with a [58]statistics dashboard. This includes contextual information
+of the server’s location: time, current sky conditions, upcoming forecast, and
+the duration since the server last shut down due to insufficient power.
+
+To access Low-tech Magazine no matter the weather, we have [59]several offline
+reading options available. These include four printed volumes with a total of
+2,398 pages and 709 images.
+
+The Printed Website.
+The Printed Website.
+View original image View dithered image
+
+Which hardware and software do you use?
+
+We wrote three extra articles with more in-depth technical information:
+
+ • [60]How to build a low-tech website: software and hardware, which focuses
+ on the back-end.
+ • [61]How to Build a Low-tech Website: Design Techniques and Process, which
+ focuses on the front-end.
+ • [62]How sustainable is a solar powered website?, which focuses on the
+ sizing of the solar PV system and the optimal balance between uptime and
+ sustainability.
+
+In addition, Roel Roscam Abbing wrote a conference paper about Low-tech
+Magazine’s solar powered website: [63]‘This is a solar-powered website, which
+means it sometimes goes offline’: a design inquiry into degrowth and ICT.”
+Workshop on Computing within Limits. 2021.
+
+SERVER: This website runs on an [64]Olimex A20 computer. It has 2 Ghz of
+processing power, 1 GB of RAM, and 16 GB of storage. The server draws 1 - 2.5
+watts of power.
+
+SERVER SOFTWARE: The webserver runs Armbian Stretch, a Debian based operating
+system built around the SUNXI kernel. We wrote [65]technical documentation for
+configuring the webserver.
+
+DESIGN SOFTWARE: The website is built with [66]Pelican, a static site
+generator. We have [67]released the source code for ‘solar’, the Pelican theme
+we developed here.
+
+INTERNET CONNECTION. The server is connected to a 100 MBps fibre internet
+connection. [68]Here’s how we configured the router. For now, the router is
+powered by grid electricity and requires 10 watts of power. We are
+investigating how to replace the energy-hungry router with a more efficient one
+that can be solar-powered, too.
+
+SOLAR PV SYSTEM. At the moment, the server runs on a 30W solar panel and a 168
+Wh lead-acid battery. However, we keep [69]experimenting with different setups.
+The PV installation is managed by a 10A solar charge controller.
+
+What happens to the old website?
+
+The solar powered Low-tech Magazine is a work in progress. For now, the
+grid-powered Low-tech Magazine remains on-line. Readers will be encouraged to
+visit the solar powered website if it is available. What happens later, is not
+yet clear. Our work on the website was interrupted by lockdowns and travel
+restrictions in early 2020. We hope to get together again in 2022 and finish
+the job.
+
+Who made this website?
+
+Idea: [70]Kris De Decker
+
+Web design and development: [71]Marie Otsuka, [72]Roel Roscam Abbing.
+
+Computer hardware: Roel Roscam Abbing
+
+Solar hardware: Kris De Decker
+
+Content production & translations: Kathy Vanhout
+
+The printed website: [73]Lauren Traugott-Campbell.
+
+Can I help?
+
+Yes, you can.
+
+On the one hand, we’re looking for ideas and feedback to further improve the
+website and reduce its energy use. We will document the project extensively so
+that others can build low-tech websites too. [74]Here are some specific
+technical questions that we have.
+
+To make a comment, please send an e-mail to solar (at) lowtechmagazine (dot)
+com. Comments will be published at the bottom of this page.
+
+On the other hand, we’re hoping for people to support this project with a
+financial contribution. Advertising services, which have maintained Low-tech
+Magazine since its start in 2007, are not compatible with our lightweight web
+design. Therefore, we are searching for other ways to finance the website:
+
+ 1. We offer [75]print-on-demand copies of the website. These publications
+ allow you to read Low-tech Magazine on paper, on the beach, in the sun, or
+ whenever and where ever you want.
+ 2. You can support us through [76]PayPal, [77]Patreon and [78]LiberaPay.
+ Patrons get early access to new books, book promotions, special editions,
+ and more.
+
+The solar powered website in the media
+
+“[79]How to build a solar powered website?”, Justine Paradis, Outside/In, New
+Hampshire Public Radio, 2022
+
+“[80]Can the Internet Survive Climate Change?”, Kevin Lozano, The New Republic,
+2019
+
+“[81]The future of web design is less, not more”, Kelsey Campbell-Dollaghan,
+Fastcompany, September 10, 2018.
+
+“[82]Imagining a Solar-Powered Internet: Kris De Decker Low<–Tech Magazine”,
+Jasio Stefanski, The Gradient, Walker Art Magazine, November 21, 2018.
+
+“[83]Interview: Marie Otsuka. Podcast, HTML.energy, December 2019
+
+“[84]How to Build a Low-Tech Website”, Roman Zolotarev, Hacker News, 2018.
+
+“[85]Low-Tech Magazine switches to a low-tech, low carbon website”, Lloyd
+Alter, Treehugger, September 26, 2018.
+
+“[86]The philosophy of low-tech: a conversation with Kris De Decker”, Aaron
+Vansintjan, Never Apart Magazine, July 2019.
+
+“[87]Reconsider the thinking that everything should become digital”, Svensk
+biblioteksförening, March 2020.
+
+“[88]Perfecting the solar powered web server”, Tom Nardi, Hackaday, October 8,
+2018.
+
+“[89]This Solar-Powered, ‘Low Tech’ Website Goes Offline When It’s Cloudy”,
+Slashdot, October 2, 2018.
+
+“[90]The Internet’s Carbon Footprint”, IRL Mozilla Firefox Podcast, July 2019.
+
+“[91]The Solar-Powered Website Offering a Vision for an Eco-Friendly Internet”,
+Leander Jones, RESET, April 2020
+
+“[92]Low-tech Magazine website”, Matthijs Sluiter, Fonts in use, January 9,
+2019.
+
+“[93]Low-tech Magazine’s Solar-Powered Website is Rewriting the Rules of Web
+Design”, Liz Stinson, Aiga Eye on Design, November 12, 2018.
+
+“[94]YouTube’s carbon footprint is huge, but smarter web design could fix it”,
+Nicole Kobie, Wired, May 7, 2019.
+
+“[95]How an online magazine avoids the internet’s impact on the environment”,
+Alexandria Neason, Columbia Journalism Review, April 30, 2019.
+
+“[96]Kris De Decker on web design’s energy-efficient future”, Kathryn Bishop,
+LSN Global, October 25, 2018.
+
+“[97]A solar-powered, self-hosted version of Low-Tech Magazine”, Hemmert
+(pseudonym), Hacker News, April 2019.
+
+“[98]A website that runs on a solar-powered server in Barcelona”, Peey
+(pseudonym), Hacker News, May 2019.
+
+“[99]Solar Powered Website”, Ars Electronica, Ars Electronica Prix 2019.
+
+“[100]Low-tech Magazine and a better internet for the Anthropocene”, Naomi
+Huffman, MCD Books, April 9, 2019.
+
+“[101]The Future of Websites? How one site has Gone 100% Solar”, S. Fraser,
+Seabr0 .
+
+“[102]Restart Podcast Ep. 53: Our low-tech future with Kris De Decker”,
+Restart, May 2020.
+
+Off-line portal to the solar powered website at the Dutch Design Week in
+Eindhoven. Designed and built in collaboration with Marie Verdeil. More images
+here.
+Off-line portal to the solar powered website at the Dutch Design Week in
+Eindhoven. Designed and built in collaboration with Marie Verdeil. [103]More
+images here.
+View original image View dithered image
+
+Other low-tech websites:
+
+“[104]Solar Protocol”, March 2021
+
+“[105]Formafantasma”, February 2021
+
+“[106]Ontaarde Beschaving, 2021
+
+“[107]Post Growth Toolkit”, November 2020
+
+“[108]Low Tech Lab”, October 2020
+
+“[109]Branch”, October 2020
+
+“[110]Chaire Diament, Université du Québec, 2020
+
+“[111]Louwrentius”, July 2020
+
+“[112]Finding Pleasure in Scarcity”, Daniel Parnitzke!, May 2020
+
+“[113]Digital guide to low tech”, Gauthier Roussilhe, Gauthier Roussilhe
+Writings, March 11, 2019.
+
+“[114]Our lighter website”, Caroline Whyte, Feasta, July 16, 2019
+
+“[115]Fisk Solar”, A solar powered website in Sourhall, Todmorden, Yorkshire,
+UK, 2019
+
+“[116]Solar powered media project”, 2019
+
+Media links in French:
+
+“[117]Pour un Web Frugal”, Framalang (pseudonym), Framablog, January 24, 2019.
+
+“[118]Le design pour lutter contre le changement climatique”, Hubert Guillaud,
+internetactu.net, September 18, 2019
+
+“[119]Environnement : un site internet fonctionne à l’énergie solaire”,
+Caroline Drzewinski, RTL Online, October 10, 2018.
+
+“[120]Quel avenir pour les sites « low-tech » ?”, Geoffrey Dorne, Grafisme et
+interactivité, September 1, 2019
+
+“[121]Relier numérique et low tech”, Fing, Agenda pour un futur numérique et
+écologique, Défi No. 13, March 2019.
+
+“[122]Faire tourner un site web à l’énergie solaire”, Claire, L’assembleuse,
+November 15, 2018.
+
+“[123]Ce site est tellement low tech qu’il est hors ligne quand il n’y a pas de
+soleil, Numerama, October 2018
+
+Media links in Spanish
+
+“[124]Si internet quiere ser sostenible, necesita adelgazar”, El Pais, February
+15, 2020
+
+“[125]Low tech magazine, un sitio web sostenible”, Cátedra Telefónica-UOC de
+Diseno y Creación Multimedia, October 10, 2018.
+
+“[126]Esta página web funciona con energía solar y consume menos debido a su
+diseño”, Alicia Ruiz Fernández, Ticbeat, 9 october 2018.
+
+Media links in German
+
+“[127]Wie du einen mit Photovoltaik angetriebenen Webserver baust”, Thomas
+Reis, Spandauer Volksblatt, September 26, 2018.
+
+“[128]Solarbetrieben: Bei schlechtem Wetter ist diese Website offline”, Kim
+Rixecker, t3n, October 9, 2018.
+
+“[129]Diese radikal nachhaltige Webseite zeigt, wie ein umweltfreundliches
+Internet aussehen könnte”, Leander Jones, RESET, May 2020.
+
+“[130]Low-Tech-Website geht offline, wenn die Wolken aufziehen”, Helga Hansen,
+Heise Online, October 12, 2018.
+
+“[131]Wie das Internet Strom frisst”, Philip Bovermann, Süddeutsche Zeitung,
+August 28, 2019.
+
+“[132]How to build a solar powered website?” A Bits & Bäume 2018
+Podiumsdiskussion by Kris De Decker, media.ccc.de, November 18, 2018
+(mediafile).
+
+In other languages
+
+“[133]Uma revista com muitas dúvidas sobre a tecnologia”, João PedroPerera,
+Publico, May 5, 2019.
+
+“[134]Low Tech Magazine gaat terug naar zijn roots”, Branko Collin, 2019.
+
+The solar powered website in the Design Museum in London. It forms part of the
+exhibition “Waste age: what can design do?“, which runs until 20 February 2022.
+The solar powered website in the Design Museum in London. It forms part of the
+exhibition “[135]Waste age: what can design do?“, which runs until 20 February
+2022.
+View original image View dithered image
+
+Reactions
+
+To make a comment, please send an e-mail to solar (at) lowtechmagazine (dot)
+com. Your e-mail address is not used for other purposes, and will be deleted
+after the comment is published. If you don’t want your real name to be
+published, sign the e-mail with the name you want to appear.
+
+Reactions
+
+Seppe
+
+Very interesting project! It’ll be interesting to see how well it holds up
+during the winter.
+
+What software are you running on the server to keep the energy usage so low?
+(I’m mainly interested in the OS and HTTP server.)
+
+I have a few ideas/suggestions:
+
+I think it should be possible to reach much higher uptime by creating a network
+of nodes that all host the same set of websites. It wouldn’t be a very simple
+project, and you might argue that it’s not as lowtech anymore. But hear me out:
+
+Say you have 5 “lowtech websites” each running on its own server (node), and
+each located in a different place on earth. You could then duplicate the
+content of each server to the 4 other servers. This only costs you extra
+storage. The servers only need to communicate with each other when the content
+changes. The energy/bandwidth cost of this communication should be negligible
+for static websites that are updated for example once a day.
+
+The main challenge is the DNS. There needs to be some kind of load balancing
+between these 5 clients. A rudimentary solution would be to use round-robin
+DNS. Say you have and A record for solar.lowtechmagazine.com that contains all
+5 of the nodes’ IP addresses and a lifetime of 5 minutes. Every time a node
+detects it is going to go down in less than 5 minutes, it updates this DNS
+record: it removes it’s own IP address. Every time a node boots back up, it
+re-adds it’s own IP address to the DNS record.
+
+I’m not an expert on DNS, so I’m not 100% sure that this would work. But I
+think it’s worth investigating if you’re thinking about improving uptime.
+
+Obviously more complex schemes would be necessary to handle unexpected node
+downtime. Depending on the type of website this may be overkill.
+
+About the images. I think you may have gone a bit too far in the image
+compressing. I see that most (all?) of the images on the grid-powered website
+or stored in the lossless PNG format. In general this is not a good choice for
+photos (as opposed to icons or other graphics with few colors): the file size
+will be much larger than when you’re using the lossy JPEG format.
+
+For example: [136]the main picture for this article is 739 KB in PNG
+
+The dithered version in PNG is 43 KB, which is indeed a huge improvement, but
+comes [137]at a big cost in image quality
+
+The B&W JPEG version of the main picture [138](70% compression) is only 35 KB,
+and I’d say the image quality is much higher than that of the dithered image.
+(The image resolutions don’t match entirely. For the same resolution the image
+size of the JPEG would probably be more or less the same as the dithered image,
+but with increased image quality.) You could even lower the JPEG quality
+further than 70%, but this quickly becomes rather unpleasant to look at, so you
+may not want to do this.
+
+Jiehong
+
+Very interesting experiment!
+
+But what about CDN caching and all other kind of caching between your server
+and each of the browsers?
+
+It might very be the case that CDN will cache the content of this website for
+some time according to default cache policies, and also that the client’s
+browsers might also cache part of the website directly.
+
+I’d say that having big caching time for the browser is a big plus, as it would
+still allow users to access previously accessed pages when they are down at no
+energy cost.
+
+On the other hand, estimating network caching energy usage might be
+complicated.
+
+Sofie
+
+“The design features a background colour that indicates the capacity of the
+solar-charged battery that powers the website server. A decreasing height
+indicates that night has fallen or that the weather is bad.”
+
+So that’s what it is! It looks more like a glitch. I think it would be better
+to just add it to the header:
+
+This is a solar-powered website, which means it sometimes goes offline.
+Battery: xx%
+
+Some other minor issues (in Firefox):
+
+The area you can click on links is some places longer than the text.
+
+When the window is wide the images become too big and lines denoting cut-out
+text go much further out than the text, which looks odd.
+
+QWxleA
+
+Quite enjoyed the article, and am interested how you did the image dithering
+and coloring. Do you have a link that explains more?
+
+Thanks, Alex
+
+PS you could add a logo if you convert /create it in svg and embed it in the
+page.
+
+Case D
+
+I think it’s a really cool project. I’m a hobbyist website tinkerer with a
+blog, and I’ve been experimenting with CMSes (I just installed WordPress, but I
+think it might be too much for what I want to do – really I’d like a flat-file,
+static site that I can push to from anywhere (i.e., with a webform), which is
+what I can’t figure out).
+
+I’m writing you because I was curious if you’d share how your publishing
+workflow works – do you have a CMS that you use? If so, how do you get from a
+web form to a published post? Is that how you do it?
+
+tx
+
+Some thoughts:
+
+RSS feed is missing!
+
+jquery-3.3.1.min.js is the biggest file on your page, from the limited amount
+of JS I saw, it could be easily removed. you could cache the your in a separate
+js file, this would also prevent uselessly sending your script to browser that
+won’t support/accept it.
+
+would you mind sharing the dithering script you apply to images?
+
+I discovered LOW TECH MAGAZINE through this article and I’m really happy with
+the look and feel of the website! Keeping the default typeface is so rare
+nowadays and it works very well without JS.
+
+kris de decker
+
+Roel Roscam Abbing wrote a conference paper about Low-tech Magazine’s solar
+powered website: ‘This is a solar-powered website, which means it sometimes
+goes offline’: a design inquiry into degrowth and ICT.” Workshop on Computing
+within Limits. 2021. [139]https://computingwithinlimits.org/2021/papers/
+limits21-abbing.pdf
+
+George Dorn
+
+@ Case D (#5)
+
+Look into various static site generators, like Pelican, Jekyll and dozens of
+others - [140]https://www.staticgen.com/
+
+They require a little bit of effort to set up, design the template, etc, but
+then whenever you want to publish, you run a command and it (re)generates all
+of the html. You can run the generator on the server itself, or on any other
+machine and just send the results to the server (somewhat automatically, via
+rsync, ftp, scp, etc).
+
+I publish a blog this way via Pelican. I edit a file in reST (other languages
+also supported) and when I’m ready I run ‘make html’ and ‘make publish’ to send
+it to the server.
+
+Perry
+
+very cool. have you considered p2p/distributed web technologies like beaker
+browser? [141]https://github.com/beakerbrowser/beaker
+
+Dan
+
+Your site doesn’t load in Naked Browser on Android.
+
+Ben S
+
+It’s a cute idea, but please don’t dither your images.
+
+One problem which you haven’t addressed is the increasing attitude towards
+web-pages as being “disposable”.
+
+A good page, living on a sensible URL, could be available for decades if not
+centuries - but then, surely, there must also be a compromise made to maintain
+sources at the highest basic quality possible? What is worse that researching
+an interesting topic, only to run into photocopies of photocopies of a now lost
+technical drawing, which has become indecipherable over time. Dithering is
+basically this. You are an important source. Please don’t be a source providing
+photocopies of photocopies. I often find myself just grabbing screenshots and
+putting them into presentations or other documents. Ironically, this leads to a
+continual bit-rot as others do the same and screenshot my content. It’s
+surprising how many images in searches are clearly screenshots of poorly
+rescaled original images. Dithering will make this even worse.
+
+I understand you’re trying to make a point - and there is a perverse value in
+stubbornly pissing into the wind, otherwise I wouldn’t enjoy low-tech so much
+and try to put it into practice myself - but please don’t let a low-energy
+perspective compromise on the real core of what you do, which is communicating
+excellent alternatives.
+
+Edwan Summers
+
+Thanks for this excellent post about a very important experiment. The
+adjustment around a website always being on seems like an important part of
+this work.
+
+I’ve recently been experimenting with dat [142]1 which can often involve
+adjusting expectations about when content is going to be online or not. They
+have some nice instructions for publishing your static site using dat [143]2,
+which would mean that someone could potentially get your website from a peer
+who is sharing the cost of keeping your content online.
+
+I honestly don’t know of what the energy costs associated with this are, but
+presumably the peers would only start to contribute traffic when content was
+requested. I imagine this is something the dat folks would be interesting in
+helping answer.
+
+PS. I love the idea of doing web comments over email. It also makes me wonder
+if there could be static site plugins for supporting this process. Like running
+a Pelican/Jeckle/Hugo/etc conmand every day to examine an mailbox and look for
+comments on webpages. I guess there would be a necessary step of reviewing them
+too.
+
+Damon Hart-Davis
+
+My off-grid solar server:[144]http://www.earth.org.uk/
+note-on-Raspberry-Pi-2-setup.html
+
+You may also be interested in some of my tools to reduce page and image weight.
+(No ditherin:; zopfli(png) and similar in my case…)
+
+Jeremy Keith
+
+Hi Kris,
+
+That’s an absolutely fascinating article! I really like what you’re doing.
+
+You mentioned that you were looking for ideas. There’s a technology you could
+use that would allow people to see something from your website, even when the
+server is down: service workers.
+
+As long as someone has visited your site at least once, you could show them
+something when they try to visit the site when the server is powered down. That
+could just be a simple message, or it could be articles that you previously put
+in the visitor’s cache (for example, every time someone visits an article, you
+could store a copy of that article in a cache to show them later when the
+server’s offline).
+
+Usually service workers come into play when the user’s device isn’t connecting
+to the network, but they also apply in your situation, where the server isn’t
+connecting to the network.
+
+I’d be happy to help you write the service worker script if you like.
+
+Jacob Hall
+
+Hello there,
+
+I absolutely love this concept, and I hope this is where the world is headed;
+it simply doesn’t make sense to bloat the internet with so much needless data.
+
+My first thought, which commenter Alex also mentioned, is that you may be able
+to preserve the “modern” look of your site by using .svg graphics for logos and
+some images (such as graphs). As cool as dithered images look, I suspect a .svg
+would have an even smaller footprint, and could greatly improve the readability
+of content such as graphs used in “How Much Energy Do We Need?”
+
+Secondly, I’ve heard a lot of people say recently that the future of the
+internet is decentralization, with users “seeding” visited websites to future
+users to create a more efficient and secure internet experience. I believe that
+this concept would lend itself well to the ideals of low energy consumption,
+potentially providing backup should your server ever go down due to weather. I
+know it isn’t practical to implement right now, but I hope that is where the
+world is headed.
+
+Thank you for the well-written and thought-provoking article.
+
+Jeff Jahr
+
+I like the old-timey dithered look of your images, and the way you are using
+the multiply blend to sepia tone them, that is very cool! However, if you want
+to have even lower page weight, then you might consider converting the images
+to grayscale jpg with a reduced quality instead of converting to dithered png.
+
+Here’s a quick comparison using your original image, the dithered image that
+appears in the article, and a conversion to gray jpg using an ImageMagick
+‘convert’ command.
+
+zeppelin:/tmp> convert -grayscale RMS -quality 50 -geometry 800x600
+6a00e0099229e88833022ad3b23825200b-750wi.png test.jpg
+
+zeppelin:/tmp> du -bh 6a00e0099229e88833022ad3b23825200b-750wi.png
+sps_close.png test.jpg
+
+739K 6a00e0099229e88833022ad3b23825200b-750wi.png
+
+43K sps_close.png
+
+28K test.jpg
+
+The image (test.jpg) is 15KB smaller than your dithered one, and still looks
+good with your color blending method.
+
+If you like the rough look that your dither gives the images, you could ramp
+the -quality parmeter down to 10 or so, and your jpgs will start to look rough
+and mottled too- AND the image size will be reduced into the 9KB range for even
+more weight reduction.
+
+zeppelin:/tmp> convert -grayscale RMS -quality 10 -geometry 800x600
+6a00e0099229e88833022ad3b23825200b-750wi.png test10.jpg
+
+zeppelin:/tmp> du -bh test10.jpg
+
+9.1K test10.jpg
+
+Cool stuff, good luck with your web server!
+
+Bill Daniel
+
+I’m such a fan. I love your work, I only wish you published more frequently.
+
+The low tech website is brilliant.
+
+I would happily pay to get print versions of your articles.
+
+I’d likely print the whole archive! I’m a paper freak. Film and paper-based
+photographer, book collector, and collector and archivist of a wide variety of
+paper-based artifacts.
+
+As a media archivist I’m constantly railing against digital storage, on the
+cloud or on drives. The future is going to have a dim understanding of what
+happened in our century, since most of the evidence will be non-existent/
+un-recoverable.
+
+Keep up the good work! I hope I get the opportunity to purchase some print on
+demand articles.
+
+Drew Gulino
+
+It might go against the spirit of what you’re trying to do with your solar web
+site, but users could go to the [145]web archive of solar.lowtechmagazine.com
+when it’s down (once it is archived; www. is already archived)
+
+On the other hand, you’re not using ads, so you’re not out any money if users
+go to the archived site instead.
+
+Francesco
+
+Like others have said:
+
+Instead of dithering you can use JPEG. I can achieve 52.4 KB with the image of
+this post, keeping the colors (compressing with gimp, quality 70, artifacts
+visible, but if you ask me only to somebody looking for them). Sure it’s
+slightly more, but the image looks almost the same.
+
+Also, since your homepage has a lot of images and might get lots of visits, why
+not thumbnail the images to a lower resolution? This might cut in half or more
+the size of the homepage.
+
+Also embedded svg for the logo or other non-photographic graphics it the way to
+go (if embedded you avoid http requests).
+
+Additionally, like already said, eliminate jQuery (or at least use the slim
+build, that eliminates some features, see here [146]https://cdnjs.com/libraries
+/jquery).
+
+Putting the computer outside in winter might help a bit with energy efficiency
+and cooling.
+
+I am convinced this is a low-power website and I like the project, but it
+remains to be seen wether more energy could be saved in a data center where the
+computational resources are shared and they have proper cooling solutions.
+
+Evan V
+
+Just so you know, if you “snap to web colors” when exporting your dithered PNG
+you can get a similar aesthetic at an additional 50% size savings.
+
+Mengyang Li
+
+Yep, the JPEG format is much better in storing pictures than PNG, You can even
+use bpg to reduce size while maintain pretty acceptable quality.
+
+[147]Visual comparison
+
+I think this is over engineered with a huge trade off on the image quality.
+
+Leo Tindall
+
+One potential way to reduce energy consumption while still retaining content
+accessibility might be to publish the site on IPFS, as I’ve done with my blog
+[1]. That way, people accessing the site help serve the site.
+
+1:[148]https://leotindall.com/post/putting_this_blog_on_ipfs/
+
+Job van der Zwan
+
+So I checked the solar powered website images to the regular website images.
+
+To my shock and dismay, TypeKit for some reason uses PNGs for photos. This is
+extremely inefficient: PNG really is only good at compressing smooth surfaces
+and gradients. Photos are a terrible choice for PNGs.
+
+I made a test gallery to compare alternative options:
+
+[149]https://blindedcyclops.neocities.org/low-tech-image-tests/gallery.html
+
+In my experience, and as shown in the above gallery, cleaning up the image
+first makes an enormous difference in compression size, and results in better
+maintained quality at extreme compression values. I suggest Darktable and GIMP:
+
+[150]http://www.darktable.org/
+
+[151]https://www.gimp.org/
+
+Another conclusion that I would draw is that JPGs aren’t that bad.
+
+However, if we insist on using dithered PNGs, here are some suggestions.
+
+PNGquant is a lossy PNG encoder, which can be found here:
+
+[152]https://pngquant.org/
+
+The downside is that it only supports Floyt-Steinberg dithering.
+
+PNGs can also be losslessly optimized with optipng:
+
+[153]http://optipng.sourceforge.net/
+
+It is often even worth putting the output of GIMP and/or PNGquant through
+optipng for a few extra percentages.
+
+Ivan Vandot
+
+Love the idea, great job. For the even more low-tech site definitely remove
+jQuery and rewrite in plain JS part for the icon and weather.
+
+A Baldo
+
+Wow, this is good news! As one of your readers who lives in a passive solar
+off-grid home in northeastern North America, your new lower-bandwidth site
+loads wonderfully fast over my slow cell signal. I tend to browse in “text
+mode” anyway, for speed and readability on my little phone screen.
+
+Because of my slow connection I have become painfully sensitive to the growing
+bandwidth requirements you describe, even to read the news. I rely heavily on
+the text-only NPR page and the text-only National Weather Service forecast
+page; in cloudy weather they are sometimes the only pages that DO load!
+
+Glad to be able to add the solar version of your site to the list. It is an
+informative, entertaining, and practical resource (I am now a thermal cooker
+aficionado, thanks to you!)
+
+anja
+
+PS I agree with Sofie that a simple text battery percentage in the header would
+probably be sufficient and more readable (when Safari isn’t already in text
+mode) than having the web page display battery status via background color.
+
+Garve Scott-Lodge
+
+Love the idea. Here are a couple of ideas which might improve the site further
+
+There’s an easy way to shave a few bytes. The type=“text/JavaScript” attribute
+to the script tag is not needed on html5 pages like yours.
+
+But there may be a more complex way of doing away with jQuery entirely.
+
+All you seem to be using jQuery for is to pull in a JSON file with the current
+weather and battery stats. Your server is obviously creating the JSON file on
+the fly. If instead you created a small CSS file with the data you could pull
+it in instead, setting the attributes of the battery div and using the content
+declaration of :before and :after pseudo elements to insert words like “snowy”
+into your content. You’d need to ensure the CSS file wasn’t cached, either
+server side or using a little JavaScript.
+
+Cheers
+
+Jeff Gnatek
+
+hi there, curious if you have considered doing an inverted color scheme, so
+dark background with light text.(/blackle.com/ claims to have saved lots of
+watt hours for not being on a white background.
+
+i love the magazine and look forward to reading more in the future
+
+Sava Chankov
+
+Great re-design, completely in line with the site’s topic! Reminds me in a way
+of Fidonet, a lowtech computer network that was popular in early 1990s, before
+the Internet takeoff. It was ran by volunteers, who ran bulletin board systems
+that dialed automatically each other in the early morning hours to exchange
+emails, which took quite long to travel on it compared to the modern email.
+
+Jan Steinman
+
+YAY! You guys are my heroes! I’ve been wanting to do such a thing for some
+time.
+
+One of the fundamental choices we made was to build a static website. Most of
+today’s websites use server side programming languages that generate the
+website on the fly by querying a database. This means that every time someone
+visits a web page, it is generated on demand.
+
+But wouldn’t caching deal with that?
+
+We run a MediaWiki server on a Mac Mini, and are running memcached. About 90%
+of page requests end up being served by memcached, as far as I can tell. And
+with an SSD behind that, there isn’t too much energy penalty for a cache miss,
+anyway.
+
+Nicolas Huillard
+
+@Kris “due to the fact that the router is not yet solar powered”
+
+Yes, make sure that everything needed to connect the server to the Internet (on
+your side) is solar-powered. Not powering the router, ONT or anything else from
+the sun is cheating ;-)
+
+You should be able to switch off the grid in the house and still see the lights
+blink…
+
+Having a nice RRD dataset of the information provided in /api/stats.json, and
+generating graphs from it would be very educational: we could see how the
+battery drains in the night, probably faster in the evening when lots of people
+browse the site, then less so in the middle of the night. We could notice when
+solar production starts in the morning, offsetting the drain from the server,
+then starting to charge the battery, and produce a lot of surplus at
+solar-noon. We should also see seasonal variations and how they’re strong.
+
+I use 5 minutes resolution RRD for a few days, then ~1h resolution for a full
+year, then store nearly daily data for a few years. The problem with RRD is
+that you must predefine everything at the beginning. The positive side is that
+it’s very light, and suitable for the hardware you have (just take care of
+Flash wear, probably with tmpfs synchronized with Flash at intervals, or a kind
+of in-memory RRD server which will store the RRD file at intervals).
+
+(I post on the heavy-website, in the hope that it may reduce your hand-work.
+You may decide to redirect from the old site to the solar one ASAP, not until
+you have solved the differences in URIs : old /2018/09/
+how-to-build-a-low-tech-website.html vs. new /2018/09/
+how-to-build-a-low-tech-website/ ; we should be able to replace www. with
+solar. in the addresse bar and get the same article, not a 404 - nothing a tiny
+rewrite in nginx couldn’t solve)
+
+STPo
+
+You did a really great job here. Improvements are always possible (and welcome)
+but hey guys, that’s what I call a redesign!
+
+Glad to see some folks showing us the path.
+
+Laplace Victor
+
+First, I’m a huge fan of your solar project !
+
+I’m a front-end developer and I see some improvements :
+
+ • as mentioned in other comments you can easily remove jquery (or at least
+ use the [154]CDN version it will be less ressource intensive for your
+ server) and as I like your project, I rewrite your code in [155]vanilla
+ javascript (let me know if you have any issue)
+
+ • images have width 100%, this is ok for mobile but not really on desktop, as
+ your images max size is 800px, so I think you can add this style :
+ .entry-content p.img{ max-width: 800px } it will be less pixel to render,
+ so less energy consumption for visitors.
+
+ • also mentioned in other comments, PNG is not the lightest image format, you
+ can have almost the same weight and preserve colors with jpg (or even webp)
+
+ • you can “minify” images. All images comes with metadatas, those datas are
+ not necessary for displaying image on the web (ex for [156]sps_close.png
+ 40.172 bytes vs 43.415 bytes for original). Have a look at [157]https://
+ github.com/imagemin/imagemin
+
+ • you can [158]lazyload images. Don’t use the technique using ‘scroll’ event
+ as it’s really ressource intensive for visitors, prefer the Intersection
+ Observer API
+
+ • you can also improve browser caching to limit reload of assets [159]https:/
+ /varvy.com/pagespeed/leverage-browser-caching.html
+
+ • you can also replace images cloud, sun in footer by unicode characters,
+ [160]https://unicode-search.net/unicode-namesearch.pl?term=cloud [161]
+ https://unicode-search.net/unicode-namesearch.pl?term=sun
+
+That’s it :)
+
+Paul Ito
+
+First of all: I love your website and wish I had come across it much earlier.
+
+The article on how to build a lowtech website was super inspirational and
+sparked (re-sparked?) my interest in building a website with easy and
+low-impact tools.
+
+My comments on the project:
+
+ 1. I would love if you would give direct IBAN bank account information if in
+ any way possible. As much as I respect the mission of donation tools like
+ patreon and librepay, they do take their cut from the donations. The most
+ direct way to support your product and your mission is monthly payments
+ directly to you. I understand that this is only free of charge if your
+ supporters happen to have an EU bank account with IBAN/BIC, but it would be
+ worth at least giving readers the option to support you in that way.
+
+ 2. I am not a big fan of the yellow battery indicator that is (as of right
+ now) splitting the screen in half. This feels gimmicky to me and is
+ distracting my attention from your great articles. (Very much personal
+ preference of course)
+
+ 3. In addition to other people commenting on the use of dithered images, you
+ might consider hosting more hi-res (jgp?) versions on the server and
+ linking the dithered images to them. That way people who want the better
+ picture quality can have it, without everyone having to load articles with
+ heavy images in them.
+
+Keep up the great work, I will definitely come back more often!
+
+Cheers,
+
+Paul
+
+Frederik Van Der Veken
+
+Excellent project!
+
+I love the idea of a static, non-always on website.
+
+You’re making a fair point, and I agree we need to make a mental shift in what
+we expect from the on-time of a website.
+
+However, I have some issues with the images.
+
+As some people already mentioned, the dithering really lowers the quality a
+lot, while a lossy compression could achieve the same file size but with better
+quality.
+
+Another issue is the black-and-white. This is indeed a smart thing to do as it
+saves a lot in file size, however, you have to make sure that your article does
+not depend on the color in the image..
+
+E.g. in your [162]article on the high-speed trains the original low-speed train
+route and the newer high-speed train route between Paris and Amsterdam are
+shown on a map in different colours. Of course both look the same in black and
+white and the distinction is lost. Maybe you could solve such issues by make
+one of the lines dashed?
+
+Abelardo
+
+Kris, I am cuban reader that become crazy with the cool low tech website
+
+Could Low Tech design and host low tech websites for a fee, that contributes
+with the magazine?
+
+Skye
+
+Just wanted to say absolutely fantastic project - I will be watching this
+develop and plan to use your example as a template to follow in a website I
+will be building in the next year or so. The work you are doing is so important
+- thank you!
+
+Geoffrey Tolle
+
+I haven’t had a chance to read all the way through your latest article (and
+won’t understand most of it when I do) but I did catch one point that I thought
+worthy of consideration in the design of your energy storage system.
+
+I see that you chose to use lead / sulfuric acid batteries as your battery
+back-up. May I suggest that you consider switching to iron-nickel batteries. It
+may be that I’m preaching to the choir but, in case you haven’t heard of them,
+iron-nickel batteries are a proven if bulky rechargeable technology. They use
+alternating iron and nickel plates (relatively cheap) in a basic electrolyte to
+store energy.
+
+They are rechargeable hundreds of times, have less toxic waste products, and
+are very durable. They have a slow charge and discharge rate but should present
+few problems for powering low-tech websites. While the units can be quite
+expensive, they are also amenable to home-production (something that anyone who
+can assemble a low-tech website should be able to handle).
+
+Well, even if I don’t understand the exact nature of this technology, I feel
+that the possibilities and the look into energy cycling will be helpful to me.
+
+Roel RA
+
+@ Ploc, Jan Fabry,
+
+It seems indeed like a good idea to do the GZIP pre-compression as a step in
+the generation process. I’ll look into this. Thanks for the tips.
+
+@ Dave,
+
+The whole set up, including the webserver, is described here: [163]https://
+homebrewserver.club/low-tech-website-howto.html
+
+I think both Apache and Nginx are quite suitable for small websites. They are
+particularly good to use when learning about selfhosting, since there are many
+articles online about these softwares.
+
+greetings,
+
+Roel
+
+Tomasz Jadowski
+
+Yes, grid-powered router is the weakest part of this project.
+
+Have you ever heard about mesh networks and [164]Hyperboria project?
+
+When you setup a hyperboria node you could backup your internet connection
+
+with Wi-Fi, GSM or another link and powered them by solar.
+
+The cost is access only via hyperboria network when a grid is off, you could
+run both versions
+
+(for “normal” IPv4 and for Hyperboria mesh) simultaneously.
+
+I don’t know how “expensive” in CPU and power is to run a Hyperboria node.
+
+Good luck! I love this idea!
+
+ijk_ijk
+
+Your new solar site is fully accessible from not so powerfull client like old
+pcs and old tablets with poor hardware and obsolete OS. The regular site makes
+the browser of my 6 years old tablet to crash but the solar one is perfect
+..and faster. Static sites are increasing the life of all clients.
+
+J Campbell
+
+Hi,
+
+This is so cool.
+
+I have always thought static websites are the best when your content is just
+pictures and words. Even the old image rollovers can be fun and generate a
+little interactivity. But I especially like the dithering idea. I use dithering
+as an artistic tool for some of my works because I find the dot pattern
+generated rather pleasing to look at. I also play around with the number of
+colors and swap colors used in the images. Photoshop’s “Save for Web(Legacy)”
+tool is where I play with images and dithering. I find the diffuse style of dot
+pattern the most aesthetically pleasing.
+
+Another energy saving concept is that of a black background. When displayed on
+users devices it required less energy. But it’s a significant change to the
+site appearance.
+
+I just wanted to let you know that this is a fantastic idea you have and it
+gives your website a palpable quality that does not exist on any dynamic
+webpage.
+
+Joel Mikulyak
+
+I’m a front-end developer, and just wanted to state that I completely love your
+decision to go low-tech and energy-efficient with your site. If you have any
+other great resources on the topic, I’d love to read more.
+
+Marie Otsuka
+
+Hi all,
+
+I’m Marie, and I’m one of the designers / developers of the website. Thanks so
+much for your feedback! As Kris and Roel have mentioned, it somehow got out
+before we were quite ready, but it’s been amazing to hear all of the responses
+so far. We’d planned for this platform to provoke discussion, so we’re excited
+to get this jumpstarted.
+
+A large part of the challenge of this project was balancing functional
+decisions with the design concept. Often, we opted for the more radical option
+so that this design questions our current aesthetic expectations. To chime in:
+
+Images
+
+Dithering
+
+Certain images are better suited for other forms of compression. But our goal
+was to not only compress images, but also to call to attention this act of
+compression.
+
+We found that dithered images can be stretched beyond their actual image size
+while providing a distinct aesthetic, and that the artifacts of compression can
+become an integral part of the design.
+
+(Along those lines… many sites produce multiple images for different sizes
+appropriate for various display sizes. We opted to use the same image file for
+both thumbnail and featured images to prioritize the caching, even if it means
+that the listing pages may be a bit heavier.)
+
+SVG
+
+Inline SVG definitely makes sense as a lightweight graphic form! (They’re
+actually used for the social media icons already.)
+
+I also agree that the legibility of graphs can be improved with SVGs. But we’d
+need to convert the given raster images we have of these graphs into a vector
+format — which, if done automatically, would end up producing a super heavy SVG
+file. What would be ideal is for any informational graphics to be readable and
+text-based, with svg/css-based shapes, which we unfortunately currently don’t
+have the capacity for within our workflow. But definitely a problem to address!
+
+Using an SVG for the logo is a good practice too, which I’ve actually seen done
+well on many sites. But once defined, that logo would have to be preserved on
+any platform, not just on this website — whether publishing in print or web
+form. That file would need to be sent around as an asset for any marketing
+needs. Again, we wanted to question what it means to create a “brand” identity.
+
+We also played with Unicode for the weather icons, but found that the way they
+displayed (especially more non-default characters such as “windy” or “clear
+night”) were too unreliable. We’ll work on better sizing/compressing these
+though! Also, more improvements are coming to the battery indicator / dashboard
+/ weather page!
+
+JS
+
+jQuery
+
+As Roel mentioned, removing jQuery is in the plans. Thanks to all those with
+the tips! We thought about doing some more research on potential browser
+compatibility issues the library helps take care of, but looks like it won’t be
+an issue.
+
+Offline
+
+Service workers for offline reading is something I’ve also been doing some
+research on! We’re looking forward to further develop how caching might fit
+into improvements for the site.
+
+Thanks again for all of the comments!
+
+And we appreciate your patience as we work through some kinks.
+
+More soon!
+
+QB
+
+I’m a longtime reader and fan; I just wanted to let you know that on Firefox
+61.0.2 on Mac OS 10.13, the website has a huge semi-transparent yellow box over
+the lower half. I think it’s a sun-meter or a battery-meter.
+
+I’m not sure whether it’s deliberate or if it’s a bug that is causing it to
+cover all the text on the page. If it’s deliberate, I just wanted to let you
+know that it makes it almost impossible for me to read the page, it’s super
+distracting. I’d love for it to be just a thin sidebar or something in a top
+scrolling navbar sort of thing. Having something overlaid on the text like that
+basically renders the website unusable for me.
+
+Thanks for all the work that you do, and the new server sounds really cool!
+
+TC
+
+First off thanks for introducing the world to your website, absolutely love it.
+I’m new to reading your site, but I assume low-tech is not at the exclusion of
+clever solutions (which IMHO is where the fun starts). The capability of low
+cost hardware means that there is a huge amount of potential in even the most
+basic setups.
+
+It is a very neat idea and I think it could be a very useful concept which
+could also be applied to many situations where internet access is difficult or
+limited. In some cases a link to the internet may not be possible, so localised
+hotspots could also be used. This could be in developing countries, areas of
+natural disasters or even war zones. Allowing vital information to be
+broadcast, from medical information/advice to emergency assistance, lost/found
+persons to providing educational resources. Potential website-in-a-box?
+
+This could also provide an excellent project for schools for teaching.
+
+With regards to the site as a technology news site, I have several observations
+(none is intended as criticism):
+
+Images:
+
+I agree the dithered styled images are a nice design feature and adds a real
+charm to the site, particularly the colour categories flowing through to the
+article. However, you are right to concede that certain images don’t lend
+themselves well to this treatment - ie. your web page speed test image. For
+diagrams/tables etc SVGs or similar would allow technical details to be read
+clearly, even if you apply the same grayscale colour mapping (if feasible).
+
+Power bar:
+
+Although I don’t think I have any particular sensitivity to colours, I do find
+the colour hue across the article very distracting when trying to read and
+absorb the content (people who are particularly sensitive to this - often a
+characteristic of neurodiversity - will find it even harder). Perhaps consider
+limiting the overlay to the home page only, or (if feasible) to the article
+header bar only. A nice feature would be to have a day/night theme so people
+can select a contrast which is best for them - ensuring the site is accessible
+to a wider audience (and as someone else commented an added bonus OLED devices
+will use less power).
+
+Uptime:
+
+I do agree with the principle of 90% uptime, and it underlines the whole
+concept - adding additional panels and battery/storage, like you say, isn’t the
+point. However it would be interesting if you can determine if the downtime is
+likely to be off-peak or not. Clearly for yourselves and your readers within +/
+-2-3 hours GMT their peak times will be very similar and may well be a good fit
+to the site availability. A study of loading before a downtime could provide an
+indication of if a certain group of readers are inadvertently being excluded
+(due to geographical or demographical reasons). Longer term it may be possible
+to characterise the charging and the loading to allow the site to predict the
+best times to go offline in order to meet peak times (and provide forecasted
+downtimes during off-peak periods). I’m sure that would make an interesting
+project for some students looking at machine learning.
+
+Multisite:
+
+The multiple site location concept does introduce some excellent possibilities,
+since even one similar site elsewhere in the world could provide complete
+coverage with additional redundancy, while reducing overall power needs by
+sharing the serving of multiple sites. This does complicate the setup a little
+but it does provide the opportunity to grow the idea further. This could
+perhaps provide the opportunity to scale down the setup with smaller panels and
+battery. As mentioned before this could have very useful applications for the
+website-in-box concept where multiple setups could be meshed to cover an area.
+
+Energy storage:
+
+I wonder how feasible alternative energy storage systems would be. It would be
+interesting if eventually you could replace the need for the batteries
+completely by using kinetic storage or similar (I claim no knowledge on how
+practical this is and probably is not suitable for your setup).
+
+John
+
+Great site, but what software did you use to generate the site?
+
+You’ve given hardware details but no software.
+
+peter garner
+
+I’m truly inspired!
+
+I’ve already been running my web site on a Raspberry Pi for a couple of years
+now and it’s proved very economical. This morning I’ve managed to get my home
+page size down from 225Kb to 7.5Kb just by getting rid of “decorative” images
+and reducing the size of others. I found that some page loading speed can be
+recovered by using sprites, assembled using glue-sprite.
+
+If you didn’t want to serve images on-the-fly a potential low(er) energy option
+is to use a Gopher server. I also run one of these on a low-power Raspberry Pi
+and it’s very effective for serving documents of all types. I know it’s an old
+protocol but according to a recent survey there are 333 active gopherholes
+(servers).
+
+I plan to start setting up a solar-powered web/gopher server soon, but as I
+live in Yorkshire, UK, my sunlight hours are not quite as good as Barcelona!
+
+Thanks once again for a brilliant idea - it’s the future!
+
+Craig Balfour
+
+My name is Craig. I’m a big fan of what you’re doing with the Low Tech
+Magazine, and I love the idea of a solar powered website! The newsletter asked
+for feedback and suggestions, so I had a look if I could come up with any. This
+is all pretty rough, so I’m sure I’ve missed stuff, probably with
+responsiveness etc.
+
+Anyway, this is my feedback:
+
+Make battery meter a lot less in your face
+
+Love the idea of the battery indicator, but it’s so distracting when reading!
+When it’s low it also visually breaks the content and makes anything in the
+battery indicator look like a footer. Here’s how I’d change it:
+
+Align it right, not left.
+
+Make its width something like 64px so it’s just a bar at the side (in the new
+whitespace)
+
+Move the top border from the content to the battery div so it covers the top
+nicely.
+
+Lessen the “intensity” of the black on the readout. I found something around #
+333 to be quite nice, but just play around and see what looks nice.
+
+Also, when at smaller screen sizes, reduce it further and don’t bother with the
+icon, and maybe even the number.
+
+Centre content
+
+Wrap your page in a div with margin: 0 auto; max-width 960px; or something like
+this to keep it in a nice tidy column on the screen. Otherwise it looks a bit
+like a newspaper and is hard to follow.
+
+Font family
+
+Really not a fan of the serif font. Nothing wrong with Arial and co, or maybe
+even a mono font to get that typewriter feel? Idk. I think just the normal
+sans. This won’t increase network traffic, since it’s not sending fonts.
+
+Spacing
+
+I have changed the page layout from using lists to using divs with
+display:flex. It’s pretty powerful and a lot more flexible than ul. I think it
+will make life easier, and it’s much easier to get decent spacing around things
+like the nav.
+
+Logo
+
+I do think you need a logo. A simple SVG is pretty tiny, and it makes the site
+look heaps more professional. I made a quick one, but use whatever (use that
+one if you want, or make your own, but I think it needs something!)
+
+Sky background
+
+I stuck a simply CSS gradient as a background to resemble the sky (since it’s
+solar, it seemed nice). Not sure I like the gradient, but whatever. I did
+wonder about changing the background gradient by time of day. So at night where
+it’s hosted, it would have a black background, then moving into yellow then
+blue as the day goes on. Only on the body background, not the content
+background or it would just be annoying. But it shouldn’t be too hard. I think
+a gradient of black through yellow to blue scaled to something like 5000vh then
+offset based on the time. Shouldn’t be much Javascript. Might look super ugly
+or distracting though, so not sure it’s worth it.
+
+Image sizes
+
+There’s one image I found called sunnyday.png which is displayed at width 20px,
+but the image itself is 800px wide! This is not good. It’s a simple BW png so
+it’s small, but a simple SVG is still less than 10% of the size. Further, if
+you’re displaying images small on some pages and big on others, save two copies
+and only send the small one if you can. Storage is cheap, bandwidth (for you
+server) is not.
+
+Minify agressively!
+
+Ok, so I know how much we hate inlining, but it has its place. Not at the
+element level, but on the document level. The size of the files being sent is
+important, smaller files use less energy. However, the number of files is worth
+thinking about too. Sending a bunch of small files results in a server call per
+file, which can add up. Having a working copy of the site with all its separate
+files is a very good idea for building it, it’s SO much easier! But for the
+published one, I would think about minifying everything and putting your
+stylesheet contents in a style tag, using inline SVG for icons (this is a
+tradeoff, since they are duplicated when you use them again. And doing the
+“use” trick is not a whole lot better because it sticks them in an iframe-which
+means you’ve got another request anyway. But for small, one-hit images you
+could base64 encode them. For icons, make a stylesheet for just these and
+base64 encode the SVG itself, which is very small and doesn’t require hitting
+the server again.
+
+I minified my version of your homepage to be one file which includes your
+original css, my overrides, the html itself, and the logo image as a base64
+encoded svg. The whole thing is 41kb and loads instantly. It would only be one
+request to the server (the images on the page would all be their own, but
+there’s not much you can do about this. Base64 encoding them would make them
+larger, so best to leave as is)
+
+Also, you’re using jQuery. I would avoid that tbh. It’s a pretty big library,
+and all you’re doing is reading some JSON data, which you could do in a similar
+amount of code without needing to import jQuery at all. Until you rewrite that
+function, why not hotlink jQuery from a CDN? It will save your poor little
+solar server from transferring it each reques.
+
+Don’t hold open connections
+
+Your script for showing battery percentage etc holds an open connection the
+server. I get why you did, but I think until you’ve got your power problems
+sorted, just query it on page load, then close the connection. Just fire and
+forget. Otherwise your server is maintaining a heap more connections than it
+needs, wasting power.
+
+With something like this, you want your server to be doing as little as
+possible while still working. So anything the browser can do for you is
+fantastic. The use of image filters etc you’re doing is really great! Keep that
+up! Same goes for Javascript. So many effects can be done by the browser with
+some clever CSS. Try to avoid animating etc with Javascript when CSS will do
+fine. When you do need Javascript, try and avoid jQuery and other large
+libraries.
+
+Also, when you are querying things like the weather JSON data, where are you
+getting that from? Can you hit that directly rather than storing it on your
+server then hitting your own server?
+
+I know this seems like a lot, I hope it doesn’t come across as arrogant or like
+I don’t like what you’ve done. I am so impressed! I wish I could build
+something like this tbh. Just trying to throw some ideas around, and they
+hopefully some help. You’re more than welcome to use any of my suggestions or
+code, or simply throw it all away.
+
+I tried attaching my modifications etc but google doesn’t allow sending zip
+files, so here’s [165]a drive link.
+
+If that link doesn’t work I could try sending loose files.
+
+I’ve also attached some screenshots just because it’s easier to glance at them
+quickly.
+
+[166]http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad3b4657e200b-pi
+
+[167]http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad394c691200d-pi
+
+[168]http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad394c69e200d-pi
+
+[169]http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad36e9bd0200c-pi
+
+All the best, and hope some of this helps.
+
+[Craig, thanks a lot, I hosted your screenshots on Typepad otherwise the
+colours won’t show, KDD]
+
+Posted by: Craig Balfour | September 28, 2018 at 04:29 PM
+
+Premkumar Masilamani
+
+Hi Team - I am impressed with the solar powered website running from the home.
+Congratulations. I disabled comments on my blog and used a contact form to let
+the visitors send a message to me. That was one portion of my blog which is
+hosted elsewhere. Your idea of asking the users to send email to get the
+comments is really well thought of. I am going to implement that in my blog.
+
+ 1. How feasible is it to put the email address on the webpage?. Are you net
+ yet spammed?. Are you doing something on this front?.
+
+ 2. How are the emails converted as blog comments?. Is it a manual conversion
+ or automated? If automated, could you tell us how?. I would like to
+ implement that in my blog as well.
+
+Hans Fast
+
+Many congratulations on taking this step: making the statement, showing that
+it’s possible and even extremely attractive to build a website without all the
+weight we’ve come to accept. Loading this website is like a breath of fresh
+air. And your server performance under peak load speaks for itself!
+
+It’s clear that you’re doing more than publishing a website, it’s a
+demonstrator of the energy usage involved in serving a site. Respect for that.
+
+I would like to mention dat and Beaker browser again (mentioned at least once
+above). While making a point of letting the website go offline when the battery
+is empty is a powerful educational move, the various peer-to-peer protocols all
+overcome this limitation of the http model (I’m only familiar with dat).
+Publishing over both http and dat simultaneously is fairly straightforward and
+maintenance-free, so it adds little overhead. Then everyone who views your site
+rehosts it: if your server is offline, others can still access it via those
+peers. No need for the solar panels and battery or even the server, you can
+publish from your laptop. Even more (embodied) energy savings :)
+
+Of course, this is only practically true once all browsers speak peer-to-peer
+protocols .. and I believe a server is still needed for DNS resolution (so
+people can find the dat archive that belongs with solar.lowtechmaganize.com).
+In the meantime, fantastic work of public education going on here.
+
+iří Maha
+
+Hey guys,
+
+love your project of low energy consumption website.
+
+I have a two questions:
+
+Any use of versioning system for development? If not, how would xou scale such
+a project?
+
+How do you deploy? Simply copy files manually?
+
+Thanks and cheers from Czech republic,
+
+Jiří
+
+Nikolaus Bartke
+
+Wow, fantastic project, I‘m in love!
+
+I really like the literally spoken „background information“ about energy and
+weather.
+
+This makes a big difference in perception and creates awarenes in several
+respects!
+
+Pertaining the comment section, perhaps you can publish a timestamp, like when
+the mail was sent…
+
+Kris De Decker
+
+Hi all
+
+Sorry for the late reply and delayed publication of the comments.
+
+We will address all feedback in a forthcoming article.
+
+Greg Melton
+
+Many thanks to all the work that has gone into this site. On a personal level,
+it has inspired me to take up something along the same lines.
+
+I’m not a technical guy, but I did notice that solar.lowtechmagazine.com loaded
+quite quickly even over a dialup connection. Image dithering may have played a
+role in the fast load time and perhaps it also requires less cpu power to
+present the image
+
+in the browser. Power savings at the server and the browser.
+
+Although it is most likely not compatible with the goals of
+
+Lowtechmagazine, the Gopher protocol, I understand is also much less energy
+intensive. Perhaps a gopher server on the same machine could serve up a Gopher
+version of Lowtechmagazine.
+
+Adam
+
+Hi there,
+
+I love your solar powered project. Fantastic post about it too. One thing I
+noticed is that your dithered images can be even smaller file sizes if you run
+them through the tool at tinypng.com - I tried out a couple and it shaved 3-5kb
+off each image.
+
+I’m a designer/dev and even though there are lots of ways to squish images in
+gulp, photoshop and many other tools, I’ve found that the tinypng tool works
+brilliantly, there’s even a CLI you can use.
+
+Just to clarify, I have no links to tinypng, I just really rate their tool.
+
+In my job, I make a lot of static sites with lots of javascript scrolling
+effects and images so I’m always squishing and minimising to optimise
+performance but I’m still dealing with quite large page sizes so it’s great to
+see optimisation really pushed to the limit.
+
+I think it’s a really interesting project. I work in the news industry so
+taking pages down to the bare minimum is a really interesting idea, especially
+when you’re disseminating essential news in countries or situations where
+internet is sporadic at best.
+
+Fascinating stuff and I can’t wait to read how the experiment progresses.
+
+Thanks,
+
+Adam
+
+Brando
+
+Hi, I saw yesterday your solar website (via Hacker Newsletter), amazing
+experiment: probably if half the web would save on bandwidth the world could be
+a better place.
+
+Just a note, the dithered images are a nice hack but on my full HD screen are
+streched to the border and I think they would look better if you put a maximum
+width at 1080 px, also because the text doesn’t reach the borders (good) and
+the images are 800 px wide.
+
+I subscribed the RSS feed, you have some nice articles there but I’m really
+curious how your experiment will evolve. And also you let me think about the
+option to migrate my personal site from WordPress to a static generator like
+HUGO.
+
+All the best, Brando.
+
+N Bennett
+
+Hi,
+
+I just read your article on your new web-server approach. Besides your
+technical implementation, I really liked the way you reduced the web sites data
+footprint. It is so refreshing to see a website that concentrates on content,
+and is not overloaded with cookies, banners and whatsoever content I had to
+ignore otherwise. Websites nowadays are so overloaded with functionality and
+advertisement, which distracts from the actual content of interest. Thanks! I
+think, others should follow your approach as well. Clean, nice, and slick.
+
+Leon Stafford
+
+I’ve been a happy subscriber to Low Tech Mag’s newsletters for many years now
+and so glad to see web hosting addressed here, as it’s also my nice product at
+the moment. It allows WordPress sites to be published as static websites,
+perfect for then serving on a raspberryPi, as some users have reported doing.
+Depending on the size/load of the site, you can also generate it on the Pi, but
+I’d keep that stripped down as much as possible and just do static file serving
+from it. Almost every Pi owner has another computer that can run their WP site
+for the development part.
+
+Tom
+
+You guys are awesome! I’ve been following your blog for quite some time now, I
+think the first article I read was the one on velomobiles. As an IT student and
+sustainable, low-tech living-minded individual, let me tell you that your
+article on a low tech internet rang close to home. And now that I see that
+you’re working on an actual low-tech website, I can’t help but offer a helping
+hand. I’ve got a few ideas on how you could make comments work in an
+computationally-efficient manner, and how you could further trim down on page
+weight too, so anyways, hit me up if you could do with an extra pair of hands
+on board.
+
+Tomas
+
+Hi
+
+I saw your article on the sustainability of solar power [1], and I believe your
+argment is a bit off.
+
+Yearly insolation for PV purposes doesn’t vary as much with lattitude as you
+think, at least judging by the use of GHI in the article, which is very unfair
+to any installation outside 30°N-30°S or so.
+
+A more fair estimate is to use global normal irradiance (GNI), weighted by how
+much power loss is expected due to imperfect pointing [2]. If I do this for the
+solar installation I’m currently building I come up with the number 2500 kWh/
+year, for a 2750 W installation, based on data from the Swedish Meteorological
+and Hydrological Institute for my location.
+
+Whether this pans out remains to be seen, so take these numbers with some
+reservation :)
+
+There’s two other problems near the poles however: fewer sun hours in winter,
+and the distance between rows must increase. The latter isn’t a huge problem
+since land is much cheaper than PVs. The former is nicely covered by wind
+power, which is more plentiful in winter (but turbines must be quite large to
+be worthwhile).
+
+Apart from this I think most of your points are valid.
+
+Using nuclear power to produce PVs is something I’ve suggested to some
+environmentalists, and reactionaries pretending to be environmentalists, and
+neither of those have wanted to hear it.
+
+Tomas
+
+[1] [170]https://solar.lowtechmagazine.com/2015/04/how-sustainable-is-pv-sol
+
+ar-power.html
+
+[2] [171]http://solarpaneltilt.com/
+
+Rod
+
+I agree the “battery meter” is not clear. The battery is around 90% now and I
+kept wondering why the “white header bar” didn’t scroll off with the top of the
+page. I read near the top of page and I hate the visual distraction (on all
+websites). If the battery was 50%-80% I think I’d close the page. :/
+
+Why don’t you make it 5-10em wide on the left or right so that it will (most
+likely) fall outside of the text column?
+
+Or better yet make it a thin horizontal meter at the top or bottom?
+
+Nick
+
+Hi there!
+
+Very impressive project, especially in today world of overkill. And thank you
+very much for detailed instruction, I was planning on doing something similar
+myself on RPi.
+
+But I have one question about storage: you mention that you use SD cards. How
+long do they last for you? I had two cards die on me that were used as system
+storage on Pi. If yours last better would you mind telling me which ones do you
+use?
+
+Best regards, Nick.
+
+Rick Canfield
+
+Hello Kris,
+
+Really love the design and mentality behind the website, I think it’s the start
+of a new trend for all potential eco-friendly sites in the future. I can
+picture a coalition of energy saving sites existing with their own badge of
+honor.
+
+One thing I’d like to suggest or ask about, and maybe it’s something you guys
+have looked into, but whether inverting the site (dark background and light
+colored text) might not save more energy? I recall Google having an energy
+saving day many moons ago and they inverted the Google homepage to black for a
+day, saving a significant amount of power.
+
+I use a plugin Google Chrome plugin called Dark Reader, which helps invert the
+color of pages in a readable manner, more for the sake of reducing fatigue on
+my eyesight.
+
+It doesn’t make much of a difference with LCD screens, but would with CRT and
+OLED screens, (which OLED may be the way of the future). It may be good
+practice to start with. [172]https://www.quora.com/
+How-much-energy-would-be-saved-if-Google-used-a-black-screen-instead-of-white
+
+I’m just wondering if this something you all have considered. I commend the
+extensive endeavor, creating rare and unique online experiences I believe
+enhances authenticity.
+
+Abraham Palmer
+
+You might have heard this from others but there are many peer-to-peer and
+synchronization type of technologies that align completely with your goals. It
+allows people to share the hosting. The technologies haven’t crossed over to
+critical mass, but do appear close. I follow things like Holochain, DAT project
+and Beaker Browser, IPFS, and Scuttlebutt. You have already done all the hard
+work and so any mostly available can be replicated now globally with very low
+total energy usage. I need to get my own website and cloud hosted application
+converted over to one or more of these. I’m sure the extended community will be
+happy to help further if you need it.
+
+Ander Gomez
+
+I’ve seen that you used Armbian, that’s a good choice.
+
+Did you consider Alpine with the lbu mode? (r/o image with commits made from
+the user with “lbu commit -a”, will all the new stuff is written back to the sd
+image, which is the rootfs.
+
+optipng can optimize PNG images without losing too much quality.
+
+Finally, thanks for your low-power site inspiration :D
+
+Fred
+
+Your website is really excellent, bravo! And it is nice & practical to follow
+the rss. Just one (small) regret, there are no social links (you know, images
+where you may click to “bookmark” the page), on twitter (I like), facebook (I
+hate) or other social media.
+
+Alex
+
+Dear Lowtechmag Team, hello Kris,
+
+First of all thanks you very much for this really nice and interesting piece of
+work. I find it quite inspiring – and also a bit discomforting as it does push
+the what-is-possible quite a bit and is therefore making my everyday life (in
+big IT) definitely not easier. ;)
+
+Recently I‘ve had the chance to dive quite a bit into Progressive Web Apps
+(PWA) and Service Workers and while a lot of this is just hype (in my eyes),
+one thing struck out: with PWAs it is possible to make websites offline capable
+and cache resources in a way that goes way beyond Cache Headers in HTTP.
+
+I would like to explore this in the context of your website and for that
+already cloned you theme on Github and had a look.
+
+Of course it has turned out that things are not as easier as they seemed
+(because I have to learn how to setup pelican with your theme and plugins
+first) and so, before wasting time, I wanted to ask you if this would be of
+interest for your project?
+
+If yes, I would create a well documented Pull Request on Github and leave it up
+to you to decide whether or not you find it worth to merge it – but if you know
+this is nothing you would consider I would much rather not invest the effort.
+:)
+
+Please keep up the great work and publish more inspiring articles!
+
+Best regards from Berlin
+
+Alex
+
+Andy Jacobs
+
+I love the idea that you’re pursuing with the server and it clued me in to some
+great resources for open-source hardware and related projects.
+
+A couple thoughts on the comments section (and community). First, there are
+ways to accept comments, store them in git, then rebuild the site. Check out
+[173]https://staticman.net/ which is designed for Gatsby.
+
+Secondly, there is a burgeoning movement called IndieWeb that allows people to
+comment, like, or RSVP to your posts from their self-hosted website. Your site
+can be notified using a “webmention” so that you know they’ve commented via
+their own website. Webmentions work a lot like trackbacks, but have some cool
+new features. [174]https://indieweb.org/Webmention
+
+Somewhat related ideas: how does hosting on IPFS or Dat align with your goals?
+In that way, the static resources are distributed among nodes, and would still
+be available from the mesh if your node goes down.
+
+Keep up the good work! Someone turned me on to your work from the Scuttleverse.
+
+LWATCDR
+
+Like the solar website layout but I agree that your site would use fewer
+resources if it was run on a cloud server. Modern cloud-based systems are very
+energy efficient. When no one is visiting your site you are still using power
+waiting for a request. On a cloud, that system is serving someone else’s site.
+Second, your solar powered site is not low tech. ARM-based SBC running Linux
+using PV solar is anything but low tech.
+
+I find it kind of funny that some of the same things you are using today I used
+20 years ago when I wrote my companies website. I was obsessed with making it
+work well over dial-up and used a lot of static pages. For example, I had a
+directory of people looking for work. It was a static page that was generated
+when someone added an entry.
+
+The dithering is kind of cool and retro looking but just not really worth it
+for informative sites.
+
+christian weber
+
+Hi Lowtech<-magazine Team,
+
+Great work with your new solar driven web-server. Even when my SBCs are mostly
+a bit more power-hungry, I like the concept of max out an A20. ‘Featured’ in
+the forum now. :)
+
+[175]https://forum.armbian.com/topic/8315-daily-tech-related-news-diet/?do=
+findComment&comment=64064
+
+I would love to see a short sum-up tutorial here as well (if time allows it):
+
+[176]https://forum.armbian.com/forum/26-research-guides-tutorials/
+
+You might get some hints when posting it again there how to improve consumption
+even more.
+
+Benjamin Henrion
+
+There might be a way to consume way less energy would be to use a mix
+
+of an openwrt router as an HTTP proxy caching the connections, and
+
+waking up a more powerful device, such as an Allwinner A20 board.
+
+Some Allwinner boards have a PMU chip that is well supported on
+
+Android kernels. But last time I looked at linux-sunxi.org, the
+
+suspend to ram supporting that chip was sparse.
+
+I have tried a setup with an openwrt router caching the pages, and
+
+that can wakes up an x86 PC with an SSD within 2 seconds with a WOL
+
+packet, and some iptables+tc delay magic.
+
+Andreas Kosmehl
+
+Hello,
+
+i read the article about image compression on your page.
+
+[177]https://homebrewserver.club/low-tech-website-howto.html
+
+If you compress the image with [178]https://tinypng.com/,
+
+the image quality is better than dithering and the file is also small.
+
+Dithering is not so nice in the browser display when zoomed out.
+
+[179]https://homebrewserver.club/images/international-switchboard.jpg
+
+tiny.png from 163.3 KB (jpg) to 81.9 KB
+
+Dominic
+
+Thanks for this excellent post on a very interesting topic.
+
+I share your concerns about the increasing energy demand (not only) of the
+internet. Therefore using a purely solar power setup (except for the router…)
+is a pretty radical, yet very consequent (given the “low tech”) approach. In
+addition, to me it seems a bit like art :-)
+
+Coming from a job, which is all about power conversion and power management
+(funnily enough: for ARM based system) and having an interest into solar power
+applications for myself I could not stop myself from digging into the described
+and depicted solar charger and supply setup.
+
+I may well be wrong (having maybe searched for the wrong part, or maybe just
+found outdated information), but is it possible, that the charge controller is
+just a linear type with no MPP tracking? (I found this one:
+
+[180]https://wholesaler.alibaba.com/product-detail/
+CM2024-PWM-12v-24v-20a-solar_6 0099884539.html)
+
+In this case, the power being stored into the battery is not 50Wp, but just,
+say, 20Wp (depending on the way the solar panel is built/ internally
+connected).
+
+Opting for the (indeed) more complex technology of an MPP tracker, or at least
+simple switch mode step down converter (Solar -> Battery) could drastically
+increase the amount of power you can use for your setup or other
+
+household applications.
+
+Even if the charge controller was an MPP tracker, you might want to consider
+using one with a lower current rating. Using (massively) oversized supplies,
+
+can ruin (usually it does) the efficiency of such a switcher.
+
+In addition a separate step down converter from the solar panel directly to 5V
+for powering the server board might (depends on how’s it built) increase the
+efficiency of the system even further. The input of such a setup would
+
+be a (wired) OR (using a dual diode with a common cathode) from solar panel and
+12V lead acid battery then.
+
+Having built my own solar powered setup (for a clock and an USB charger/ 5V
+supply for all kind of stuff) I can highly recommend using some(!) more
+sophisticated parts. It really pays!
+
+I would also be interested in getting to know, which way the supply voltage
+(5V?) for the Olimex board is generated?!
+
+Best regards
+
+Dominic
+
+Pete
+
+I have seen your low-tech-website and when I have seen your “Room for
+improvements” section, I had some ideas, I want to share:
+
+Image Dithering:
+
+I am not sure, if you can use that for your website, but another day I stumbled
+upon thet project for compressing images: [181]https://github.com/FLIF-hub/FLIF
+
+According to the compression experiments we have performed FLIF files are on
+average:
+
+14% smaller than lossless WebP ,
+
+22% smaller than lossless BPG ,
+
+33% smaller than brute-force crushed PNG files (using ZopfliPNG),
+
+43% smaller than typical PNG files,
+
+46% smaller than optimized Adam7-interlaced PNG files,
+
+53% smaller than lossless JPEG 2000 compression,
+
+74% smaller than lossless JPEG XR compression.
+
+Another more popular image format is “WebP”:
+
+[182]https://developers.google.com/speed/webp/
+
+From description:
+
+" WebP lossless images are 26% smaller in size compared to PNGs. WebP lossy
+images are 25-34% smaller than comparable JPEG images at equivalent SSIM
+quality index. "
+
+Router for the internet connection (lower power consumption):
+
+I would expect, that a sort of ARM computer like RaspberryPi con do the job
+with less power comsumption. As most of them are only equipped with one NIC
+only, you hace serveral options to add a second network interface, which is the
+“clean” way for a router.
+
+a) use a USB to RJ45 network card and connect it to the USB port of the
+single-board computer.
+
+b) use a “Multiple Ethernet Expansion Board” [183]https://www.raspberrypi.org/
+forums/viewtopic.php?t=179904
+
+Look here for a example for RaspberryPi: [184]https://www.raspberrypi.org/
+forums/viewtopic.php?t=179904
+
+And here: [185]http://www.industrialberry.com/ethernetberry-v-1-1/
+
+SSL and Legacy browsers
+
+Should we maintain both HTTP and HTTPS versions of the site?
+
+In my opinion: A clear NO. There are a lot of linux distributions, that offer
+SSL compatible browsers with a very small footprint. So I will not trade in the
+security for old browser compatibility.
+
+Just my two cents - hope it helps,
+
+Pete
+
+Paul Clarke
+
+I like the idea of the dithering, especially combined with the idea of “print
+on demand” of articles or issues - let people have the high quality images if
+they really want them, but offline. Could perhaps do a paywall with high
+quality versions of the images? Not quite sure how it works with a static site
+but I will think on this. I like the dithering but think you do need to be sure
+you have the lowest file size if you’re going to have low quality images, I’m
+sure you’re on to this now.
+
+I also moved to a static site for my family tree site (using metalsmith) and
+don’t really have images on there at the moment, but will be taking some
+inspiration from here, muting my colours and adding in some low res black and
+white imagery while still trying to give it some style.
+
+Also inspired to reinstate my solar powered ambitions - I had a raspberry pi
+based webcam powered by motorcycle batter and solar battery charger, but could
+not keep it online for more than a few hours…
+
+I have a solution for searching articles while using a static site, for example
+[186]http://www.clarkeology.com/wiki/#solar/power - the (very simple, no
+dependencies) source is below, the minified version is inlined in the page.
+
+‘(function (location, innerHTML, path, div, h2, folders, i) {
+
+function get (url, callback, request) {
+
+request = new XMLHttpRequest() // sorry ie6 etc
+
+request.open(‘GET’, url, true)
+
+request.onreadystatechange = function () {
+
+if (request.readyState == 4 && request.status == 200) { // eslint-disable-line
+eqeqeq
+
+callback(request.responseText)
+
+}
+
+}
+
+request.send()
+
+}
+
+function change (e, hash) {
+
+hash = location.hash
+
+if (!hash) return
+
+path = hash.substr(1)
+
+div = document.getElementsByTagName(‘div’)[0]
+
+h2 = ’’ + path.replace(/\W/g, ’ ‘) + '’
+
+// div.innerHTML === div[‘innerHTML’] and we passed in the string innerHTML
+
+div[innerHTML] = h2
+
+folders = [’/names’, ‘/gig’, ‘’]
+
+for (i in folders) {
+
+get(folders[i] + ‘/wiki/’ + path + ‘/’, function (content) {
+
+div[innerHTML] = div[innerHTML] + content
+
+})
+
+}
+
+}
+
+window.onhashchange = change
+
+change(location.hash)
+
+})(location, ‘innerHTML’)’
+
+Rob van der Zwan
+
+Dear Kris and team,
+
+First of all, thank you for many years of inspiring articles. Not only were
+they a joy to read, I have used the insights from them on many occasions in my
+own life (though admittedly I have trouble going through with all the radical
+steps required for sustaining this planet, because the mismatch with current
+societal structures makes it so hard to (ironically) sustain).
+
+Not only than that: I have shared specific topics on response to people asking
+for advice on buying something new, fixing an issue in the house, and many
+other cases were your articles can give inspiring alternative ideas¹.
+
+Which leads to my suggestion. The articles are great, but also very dense and
+often elaborate, giving historical contexts, developments, etc.
+
+My sister just got a new apartment. It is empty. That is a great opportunity to
+start fresh and do things right from the start! I am looking for one myself,
+and when the time comes I look forward to having the same opportunity. However,
+while I enjoy doing the research, the act of “optimisation” my lifestyle, so to
+speak, my sister represents the more typical case of simply not having the time
+to read the whole Low Tech Magazine archive digging for gold nuggets.
+
+While I’m already suggestion infrared heating, hooded chairs, Japanese-style
+insulated tables (forgot the name), putting thermal masses on sunny parts of
+her room, fireless cookers, pot skirts, but I know I’m missing lots.
+
+Now imagine an illustration of a house, featuring almost all of the ideas you
+ever wrote into one image. A counter-image to the stereotypical technologist’s
+House of the Future. A House of the Past for the Future, as it were.
+
+Add an image map (look it up, its forgotten but amazon old HTML technology)
+with links to articles and summaries of articles, and you have a something that
+lowers the treshold for people to start changing their lifestyles.
+
+Kind regards,
+
+Job van der Zwan
+
+¹ for example, last week I shared the article on heated clothing with the owner
+of [187]https://www.sockmama.com/, who actually makes most of her money selling
+special socks in person on markets. Both as a suggestion for heated clothing
+for herself to keep warm in Christmas markets, as wel as promoting warmer and
+even heated clothing through selling the socks herself - she loved the idea and
+is looking into it!
+
+(Oh, BTW: I have donated to the project in the past and would like to again,
+but I’d like to do so directly per bank transfer. Is that a possibility? And
+I’ll try to make some time to contribute to that research into image dithering
+pipelines, but I can’t promise anything)
+
+Hunor Karamán
+
+Yo Kris,
+
+First of all good job on the carefully crafted magazine. I really enjoy the
+content and the whole way you handle this site!
+
+I don’t know if you intentionally haven’t done it, but sharing the site through
+Dat would be a good fallback for the times it’s down (because of the sun). If
+you’re not familiar with the protocol, I would happily help on that
+
+I’m just overall curious about your opinion on this.
+
+Michael
+
+I’m from Germany and read on an advertisement in the bus this afternoon about
+your website and that it goes out during bad weather. I believe that pointing
+out the last part that the websites sometimes shuts down delivers the wrong
+message about solar which is the biggest argument for coal and other dirty
+forms of energy.
+
+The argument that you can’t store solar energy. But it is possible to store
+energy with batteries. Have you thought about buying one so that your website
+doesn’t shut down? Like a Tesla power wall or something. It would deliver a
+much better picture about the sustainability and availability of solar power.
+
+Thanks for reading my thoughts on this small topic.
+
+Ploc
+
+Hi,
+
+I’ve been very interested in reading your article named “How to build a
+Low-Tech website: Software & Hardware” :
+
+[188]https://homebrewserver.club/low-tech-website-howto.html#
+compression-of-transmitted-data
+
+I’m also involved in generating static website and I’m surprised that you
+confifured your server to gzip resources on-the-fly. As the website is static,
+and already generated, the result og gzipping is a predictable process and can
+then be done at the static website generation step.
+
+This would consume less cpu on the server than compressing of the fly, and
+hence save energy.
+
+What do you think of that?
+
+Jan Fabry
+
+Hello,
+
+One small CPU improvement for nginx: if you use the gzip_static module, you can
+serve precompressed files, instead of letting the server gzip the requests on
+the fly every time. This should save some CPU cycles.
+
+[189]https://nginx.org/en/docs/https/ngx_https_gzip_static_module.html
+
+You would need to change the Pelican workflow to also create .gz versions of
+the content that can be compressed, but that can’t be too hard.
+
+Regards,
+
+Jan Fabry
+
+Dave Evans
+
+Hey there!
+
+Just a quick word to say hi and that I really appreciate the project that
+you’re working on. I’ve been a HBSC mailing list lurker for a while as I too am
+interested in self hosting a low power solutions to hosting and creating
+networks.
+
+I’m actually doing a PhD at Goldsmiths, University of London speculating on the
+relationship between historical
+
+asceticism (hermits, monks, austere protestant living) and networks, looking
+for clues to how reimagine the network at a more human scale (I’m not religious
+in the slightest, but the link between how monks etc dealt with the vastness of
+their God and how we might cope with the vastness of the web seemed like a
+nice, perverse lens to look at the
+
+internet!).
+
+Anyhow. I’ve made some solar wireless local area networks (the most recent in a
+community permaculture garden in a train station). I’m also just trying to get
+a raspberry pi running as a home server to host my research. What web server do
+you use for the magazine? I used apache as it was what I’ve been used to, but
+would be interested in
+
+alternatives (although I studied printmaking and sculpture so am on a steep
+technical learning curve these days!).
+
+I have presented at various international conferences and written some stuff
+about the relationship between asceticism and the internet at the address below
+- and would love to publish to your magazine if you think it might be
+appropriate.
+
+[190]https://independent.academia.edu/DaveEvans19
+
+Keep up the good work - I will follow with interest!
+
+Best wishes from Liverpool,
+
+Dave
+
+Raúl
+
+Hi Kris,
+
+your project just boom me!
+
+I am a webdesign freelance from Madrid mountains that works to transform
+internet into something more simple. I also use portable solar panels to work
+on the woods.
+
+If you need some collaboration or help with the project please contact me! you
+can check here some of my portfolio [191]https://lapatineta.com/en/portfolio
+
+hasta luego!
+
+Raúl
+
+Mikoláš Štrajt
+
+Hi,
+
+I just found link to Low tech magazine on Hackers news.
+
+I really enjoy the articles because I am interested in both old technology and
+solar punk.
+
+I also enjoy the somewhat controversial design element - dithering of images.
+
+But - sometimes dithering the images makes them “unreadable”. For example some
+of those wood carvings in article about ropeways ([192]https://
+solar.lowtechmagazine.com/2011/01/
+aerial-ropeways-automatic-cargo-transport-for-a-bargain.html). Even worse is
+map at article about high speed trains ([193]https://solar.lowtechmagazine.com/
+2013/12/high-speed-trains-are-killing-the-european-railway-network.html) - this
+probably should stay as is, because it’s already PNG with limited color set.
+
+Anyway I really like your site. I hope there will be enough light/battery to
+stay online at weekend. :-)
+
+Also If you need some photos of obsolete tech (steam trains, old tramways etc)
+I can look for it in my archives. I visit transport themed events quite often.
+
+greetings from Prague by
+
+–
+
+Severák
+
+[194]https://tilde.town/~severak/
+
+PS: now after some 30 years we have again trolleybuses (in trial operation) in
+Prague
+
+They did presentation with old vehicle from musem on new track.
+
+My photos from that event: [195]https://www.zonerama.com/metropolis/303066
+
+Paul Laborde
+
+Hello,
+
+I read your article from France and I love your idea.
+
+I tried few time ago to create this kind of machine for an automated solution
+in gardens.
+
+Maybe I can share some ideas :
+
+Add a proxy page when your server is down a temporary offline page can be
+displayed
+
+How is user traffic ? Wan you maybe integrate directly a cellular connectivity
+instead of optical fiber ? (like Soracom)
+
+This new connectivity allow to move server to original hosting zones (trees,
+mountains, etc)
+
+Maybe you can add an power indicator about battery capacity and solar level
+with a downtime estimation ?
+
+A super light server with ESP8266 could be original too
+
+I just discovered your website, it’s great !
+
+N Valova
+
+Hello, Kris.
+
+I’ve just come across Lowtechmagazine project, thanks to a reshare of a friend
+on Mastodon.
+
+The idea behind your project is wonderful, and it’s valuable that you provide
+RSS subscription (thank you).
+
+The project is also broadcasting on Twitter. The big Twitter with fat data
+centres. Have you heard of Mastodon? It’s one Fediverse project - a
+twitter-like federating platform.
+
+To be honest, Mastodon relies on modern web technologies, so it can’t be easily
+hosted at home on a small computer. But there are other interconnected projects
+(for example, Pleroma) that are more ligthweight and can be hosted “on a
+potato” some users say.
+
+Self-hosting. Could this topic be of interest to you, in the context of what
+you’re writing about?
+
+I don’t know whether self-hosting one’s social media can possibly decrease
+energy consumption worldwide… May be? If people start paying small ammounts of
+money for energy (self-hosting) or to friends-administrators who will do the
+server work for them, perhaps people will re-evaluate their social network
+habits? When there’re no big companies providing “free” unlimited server space,
+and no algorithms showing constant ads with brands telling you to buy this and
+that “because fashionable”, perhaps, users will stop over-consuming and learn
+once again how to have meaningful online conversations.
+
+Please, consider joining Mastodon (Fediverse generally). There are ways to
+automatically post from Mastodon to Twitter ([196]https://
+crossposter.masto.donte.com.br) Many people follow your project on Twitter. I’m
+sure there are also people among fedizens who will be glad to read you on
+Fediverse. Perhaps even some of your Twitter followers will eventually join. :)
+
+Sylvain Couhault
+
+Hello,
+
+I loved your low tech website and think you’ve done e real great job.
+
+Since I’ve read the “Room for Improvements” section I’ve got some ideas to
+share with you that, I hope, will help you to go further:
+
+-Images: Did you try the “.GIF” format ? You can use it for static picture
+limited to 256 colors. It is supported by most of internet browsers. [197]
+https://en.wikipedia.org/wiki/GIF
+
+-SSL ciphers: if there aren’t any sensible or personnal datas on the website,
+maybe it’s not needed to maintain HTTPS. The new General Data Protection Rules
+requires Ciphered content only if you use personnal datas. For full public
+datas, it’s not mandatory I think.
+
+Nevertheless it would need to be tested on different internet browsers because
+some of them are blocking sites or displaying security warnings when not in
+HTTPS (Google Chrome mainly). I think Google Chrome plans to block non HTTPS
+website in the longterm future but for the moment it works and other browsers
+will still allow it in the future. Maybe the best way is to test your site with
+HTTP (no S) with different browsers (Chrome, Opera, Firefox, Microsoft Edge,
+Brave … ), see how it displays (warnings and so on ..) and to inform people
+about the browser they can use to watch your site and the warnings they could
+encounter.
+
+-Energy sources: maybe you can combine the solar panel with a little wind
+turbine (thus you can still collect power even with bad weather. It’s less
+efficient than solar panel, but in combination it could be useful to keep along
+a few hours or days without sun). I think this can be coupled with your battery
+system (with some other components to avoid interference between solar panel
+and wind turbine) Here are some examples:
+
+[198]https://www.youtube.com/watch?v=hBx3O55lTDw
+
+[199]https://www.youtube.com/watch?v=o2XEQZsXcIg
+
+I hope these ideas will help you :)
+
+Regards,
+
+Sylvain
+
+Adrien CLERC
+
+Hi,
+
+I read [200]https://homebrewserver.club/low-tech-website-howto.html and I was
+
+interested by your image compression techniques.
+
+I would like to give you two ways of optimizing more aggressively.
+
+Optimizing JPEG
+
+==========
+
+If you want to keep the same quality of the input image, here are my
+
+best experience : use Guetzli (first) and MozJPEG (after Guetzli). The
+
+first one (see [201]https://github.com/google/guetzli/) is destructive, and
+
+produce a different image, but with the exact same perceptual result for
+
+our human eyes. The second (see [202]https://github.com/mozilla/mozjpeg) is a
+
+fork of JPEGTurbo with aggressive optimization without any change to the
+
+final results.
+
+So here are the two steps with your original image
+
+([203]https://homebrewserver.club/images/international-switchboard.jpg):
+
+ • guetzli international-switchboard.jpg international-switchboard.g.jpg
+
+ • jpegtran -outfile international-switchboard.g.m.jpg
+
+international-switchboard.g.jpg
+
+I have the following resulting images:
+
+156721 nov. 22 10:55 international-switchboard.g.jpg
+
+135206 nov. 22 10:56 international-switchboard.g.m.jpg
+
+163314 nov. 22 10:54 international-switchboard.jpg
+
+Optimizing PNG
+
+=========
+
+If you have PNG (from ditherised images), you can use zopflipng. This
+
+tool (see [204]https://github.com/google/zopfli/) tries to find the best
+
+combinations for a PNG, and achieves better result than optipng.
+
+One step from your 11 color image
+
+([205]https://homebrewserver.club/images/international-switchboard11.png):
+
+ • zopflipng -m international-switchboard11.png
+
+international-switchboard11.z.png
+
+I have the following resulting images:
+
+111255 nov. 22 10:59 international-switchboard11.png
+
+106772 nov. 22 10:58 international-switchboard11.z.png
+
+Conclusion
+
+======
+
+With the original JPEG, I have a 17.3% improvement, using only JPEG.
+
+This image is still 21.5% larger than your 11-color PNG.
+
+With the 11-color PNG, I have a 4.1% improvement. This is not so much,
+
+but still significant.
+
+Note that guetzli needs a lot of memory and CPU. Other tool are more
+
+lightweight.
+
+Have a nice compression day,
+
+Adrien
+
+Erick Lavoie
+
+I have read your magazine over the years and I have found tremendous
+
+value in your writings. I occasionally give workshops for kids in which
+
+I want to introduce principles of low-tech and alternative energies
+
+using Lego and custom parts, partly inspired by some of the ideas you
+
+have articulated so well.
+
+I have just read “How to Build a Low-tech Website” and couldn’t help
+
+wonder whether you have thought of using decentralized technologies to
+
+distribute your content. The main advantage is that your server does not
+
+need to be online all the time for content to be accessible, it can be
+
+distributed by your readers themselves. We could even imagine hosting
+
+availability following the day cycle around the Earth to reduce the need
+
+for energy storage, i.e. people could pull their content from places
+
+that are currently sunny.
+
+Some friend of mine has started to build their own magazine with the
+
+Beaker Browser [1]. I have personally been using Secure-Scuttlebutt [2],
+
+which has a mobile application in the works [3], and I am currently
+
+actively participating in the community. Obviously most of your readers
+
+are currently not using either one of those so that is not a viable
+
+replacement to web hosting now. But I think they could still be part of
+
+a future analysis in an article and a potential progressive transition
+
+as more people adopt them. I also think you would fit right in with the
+
+ethos of the current SSB community, so I would be glad to get you
+
+on-board and introduce you to people if your are interested.
+
+Cheers,
+
+Erick
+
+[1] [206]https://beakerbrowser.com/
+
+[2] [207]https://www.scuttlebutt.nz/
+
+[3] [208]https://www.manyver.se/
+
+Terry
+
+Hello Kris, Roel and Marie,
+
+Very cool project for the WebServer.
+
+I am even more interested how you run the office (light and what i guess is an
+good old IBM Thinkpad) on solar power.
+
+Are you charging the Battery of the Laptop or are you running it without
+battery direkt through solor / or batterythat is loaded through solar panel.
+
+Could you share the experiance please?
+
+Or give the details on the “electric” hardware you use?
+
+Thank you very much in advance.
+
+I plan on doing similar and wonder what Solarpanel and PowerControler/Battery
+controler to use.
+
+Best regards
+
+Terry
+
+Arne
+
+The gatling webserver is especially resource efficient.
+
+[209]http://www.fefe.de/gatling/
+
+It’s author uses it for his own blog (blog.fefe.de), which has a wide
+
+readership but was hosted on very old hardware until recently.
+
+Léo
+
+Hi,
+
+I find your solar website amazing!
+
+Compressing a page is quite demanding for the CPU so your server may use even
+less power if you cache a compressed version of your pages.
+
+Basically, you just need to tweak your nginx configuration and generate a .gz
+for each page, which is very easy to script. Then, for each request, nginx will
+use the .gz file and avoid recompressing the page. If the browser does not
+support compression, the .html file is served.
+
+This blog post describe the all process https://www.carnaghan.. Here is the
+official documentation of the module [210]http://nginx.org/en/docs/http/ which
+seems to be installed in every version of the debian nginx package.
+
+Best regards,
+
+Léo
+
+Viga
+
+I just stumbled upon your website, and I really love the idea.
+
+However, I will agree with a lot of the comments about the battery indicator.
+It fails both on conveying the message (it is far from obvious what it
+represents) and at making a user-friendly website.
+
+At first it got me to not even attempt reading past the introduiction. It is
+that annoying. I enentually came back because I al really interrested in the
+project, but was annoyed constantly during my reading.
+
+It is also marked with a sun icon, wich doesn’t map to “battery” in my mind, so
+the meaning of it may get lost.
+
+I understand that you want to convey the message that it isn’t a standard
+website, and the dithered images do that pretty well (with the caveat of graphs
+and tables, as others noted), but the battery meter in its current state isn’t
+the way to go.
+
+Also, did you consider minifying the html/js source? Just stripping whitespace
+and comments from the javascript saves a bit more than 2kb per page load. You
+could go further than this by stripping whitespace, comments, and mangling
+variable names in the whole html/js. I do understand why you wouldn’t want to
+do it, as it closes the code by obfucating it, but the CSS is already minified,
+so you may not consider this as an issue.
+
+Also, as I read this articles and comments today (jan. 25th, 2019), I have no
+way when they were published, which is a context I really would like to have
+when writing this comment. I believe it would be a nice addition to the site.
+
+Viga
+
+Sebastian Furnigel
+
+Hi,
+
+Your project got our attention and we’re thinking about what would it take to
+make a similar project.
+
+Therefore, I’m curious about
+
+the solar cell used – we’re considering a 230w cell;
+
+the raspberry model and what aspects were optimized on it;
+
+and the battery pack used – which direction did you follow for battery metrics?
+
+Your project is a real head-turner and it would be really interesting to have
+some insight into how yours was done.
+
+Thank you and have a nice day,
+
+Sebastian Furnigel
+
+Kyle Norton
+
+I absolutely love the solar-powered website. I love the design, I love the
+concept.. I want to try and build one of my own here in Austin, Texas.
+
+If I can toss out a suggestion … I love the battery level indicator, but I
+would also love to see an indicator of local time and if the site is operating
+on solar or battery power.
+
+Jim Morgan
+
+I’ve recently had problems with aggressive searchbots on some websites I run.
+Up to 80% of the bandwidth of the webserver was from bots! I imagine if you
+reduced or blocked bots on your site, you’d also see some energy savings.
+
+To combat this, you can create a ‘map’ in nginx, whereby you ban or rate-limit
+bots matching a certain regex pattern.
+
+eg. In the main nginx.conf
+
+map $http_user_agent $limit_bots {
+
+ ~*Baiduspider 'baidu';
+
+ default '';
+
+}
+
+limit_req_zone $limit_bots zone=badbots:5m rate=10r/m;
+
+Then in the actual website config in the server{} stanza
+
+rate limit for poorly behaved bots
+
+limit_req zone=badbots;
+
+Monitor the error.log to see crawlers getting banned.
+
+Jim Morgan
+
+Aleksandar Milovac (Александар Миловац)
+
+Hi,
+
+Maybe this can help to get more accurate result of battery status, temp, etc…
+
+[211]https://github.com/KoljaWindel
+
+Br,
+
+Aleks
+
+RC
+
+I suspect 99% of power consumption for solar.lowtechmagazine.com is from
+regular kernel book keeping. From what I read, using less ticks per second for
+the HZ variable in Linux or enabling NO_HZ should reduce power even more. I’m
+not particularly knowledgeable in this, but I do admire the direction of your
+website as tech companies build websites only for people who buy the latest
+products, and for everyone to use the latest unmaintainable codebases.
+
+As I read this, it looks like your five week uptime may finally fail.
+
+Chris
+
+Hello,
+
+I’ve came across your website today and like your minimal attitude to web
+design pretty much. It is quite a contrast to the bloated webpages we are used
+to today (the performance improvement is even very noticable when using a quite
+fast connection - 1000mbps at work / 100mbps at home) and I think the web would
+be a lot more enjoyable if more pages were built like that.
+
+I’ve read the article about the webserver configuration [1] and got a
+suggestion for a configuration change to the nginx configuration. As it wasn’t
+listed there in the improvement list you might not be aware of this already.
+There is a configuration item called “gzip_static on” [2] which does tell nginx
+to simply deliver precompressed files from the webroot (so if requesting
+“index.html” it does send “index.html.gz”)
+
+Pre-Compressing the Webpages when updating the site and shipping these
+compressed versions should decrease cpu load and therefore energy consumption
+of the Server as the computation for the compression is only necessary one time
+when updating the page and not for every request. You might even use a higher
+compression level for this one-time task (though with gzip bumping the level
+from 6 to 9 doesn’t improve the compression ratio a whole lot in my experience
+- at least with my usual datasets)
+
+I’ve got no idea how much of a difference this does make - especially as there
+is quite a bit of processing necessary for the https encryption but it might be
+worth a try.
+
+Kind regards,
+
+Chris
+
+[1] [212]https://homebrewserver.club/low-tech-website-howto.html#software
+
+[2] [213]http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html
+
+David Galeano
+
+Hi,
+
+I think your solar powered server project is very interesting and I may have a
+couple of suggestions.
+
+I think you could improve performance when serving static files by using the
+open file cache: [214]https://nginx.org/en/docs/http/ngx_http_core_module.html#
+open_file_cache
+
+The size of PNG files depends heavily on the compressor used and the contents
+of the image. I found zopfli to be the best compressor: [215]https://github.com
+/google/zopfli/blob/master/README.zopflipng
+
+Also the PNG format is very good at compressing images with vertical patterns
+because each row can be stored as a delta of the previous one, not sure how
+that could help you but for example in the past I found that just by rotating
+the image 90 degrees it became a lot smaller.
+
+Anyway, hope any of this helps.
+
+Kind regards,
+
+David
+
+Matisse VerDuyn
+
+The goal of this project is great!
+
+A while ago, I put together [216]https://github.com/matisseverduyn/aureum with
+a similar goal in mind. The concept stemmed from two objectives:
+
+1.) The sole purpose of a website is to provide content, and to be useful, that
+content must be “comfortably readable” (on any device), and
+
+2.) It’s critical, for many reasons, to minimize data transfer (through the
+elimination of all non-essential HTML tags / attributes, and all CSS classes,
+especially those that are merely there to indicate visibility toggling).
+
+Aureum helps to display “comfortably readable” information on all screen sizes
+(including both very large projector screens and very small displays, like
+smartwatches), and does so with only 3kb of minified CSS. I guess it could be
+considered a “reset file”, but as I’ve actually used it on a few projects
+without adding much additional CSS, that classification might not convey its
+benefits with much justice.
+
+It seems that “certain devices” which may not support features such as CSS
+media queries are a concern of your current design (“keep the blog accessible
+for visitors with older computers”)? If not, I hope that Aureum is useful to
+your project. As another commenter Anja mentioned, having sites load quickly
+(or at all) under really low-bandwidth is both environmentally sensible and a
+pleasant relief (and quite a surprise to come across).
+
+Thanks for what you’ve done here,
+
+Matisse
+
+sune Petersen
+
+Hello Low Tech Magazine.
+
+What are your thoughts on IPFS and DAT?
+
+Have you thought about putting a mirror of your site up on these protocols?
+
+Götz Hildebrandt
+
+Dear de Decker,
+
+reading about your low tech magazine, and the solar powered server.
+
+is thier a plan to enable hosting on that server, or clustering with several
+servers world wide,
+
+that works on the same way - low tech as yours?
+
+For most web site no interpreting language is need, data access is neeed yes
+but that is all.
+
+C++ as server side language is for common cases enough. (for mine it is)
+
+what are your plans?
+
+Greetings from Germany
+
+Ruben
+
+Hi!
+
+Your article on your setup is great, but I was surprised that you don’t
+precompress your pages, images, etc and serve it with nginx, using the option
+“gzip_static on”.
+
+It would be better on your CPU (you’d have to just compress once) and
+
+you could use the strongest compression possible. Would be good for
+
+speed as well, as nginx will be able to sent the page right away,
+
+without waiting for the slow arm CPU to compress it.
+
+Just my two cents!
+
+Cheers,
+
+Ruben
+
+Brian Sutherland
+
+Hi, Kris:
+
+Cool website, and one I may be discussing in my PhD thesis on DIY sustainable
+IT and electronics design.
+
+I suggest that instead of batteries you use a graphene supercapacitor array.
+Buy it once, it lasts for 10-20 years, and the system can recharge 1,000,000
+times without wearing out. No heavy or toxic metals, just carbon, plastic and
+aluminum. Just be careful about insulating it properly if you stack it into 12
+volts rather than 5 volts and use the appropriate cell balancing kit to ensure
+the capacitors charge evenly.
+
+Also, if your site mirror was in a different time zone with the sun shining, it
+would never need to go offline, but it would still be 100% solar powered. Fibre
+optics being light don’t need much power to send information far.
+
++1 to 117) Ruben’s suggestion to use the gzip standard for webpages to reduce
+the storage and data transfer.
+
+I’m not certain I agree that static HTML pages make for a significant power
+saving compared to dynamically generated pages since the CPU still needs be
+running on the storage requests and it writes requests into a log file, that’s
+not much different from a web page call.
+
+Complements to your awesome city: my spouse and I visited a few years ago. We
+enjoyed the art and culture, especially the architecture, and I’ve been
+following Francisca Bria’s digital citizenship work very closely.
+
+Paul Geraghty
+
+Hi,
+
+I followed with interest the Olimex link to your pages (via twitter and
+@EENewsEurope)
+
+Fine work, this board might be a solution for a problem I have too.
+
+However, being an ex-LAMP dev kinda guy, with experience of caching I noted
+with interest you do not seem use a memcache.
+
+Heres a link to more info:
+
+[217]https://blog.octo.com/en/http-caching-with-nginx-and-memcached/
+
+I used to do similar on a .gov website for certain common webpages like home
+page etc.
+
+But this was 10+ years ago using PHPs own memcache on Apache, so I cannot
+really help you much more.
+
+In effect, this loads, for example, your html in MEMORY so you are not
+constantly pulling from your sd card. You just need to flush the ram every time
+you update your page, or it will do it when the SBC reboots, or you can set a
+time limit, I used to use hourly.
+
+Sorry if my ignorance of SBCs is lacking, and what I am saying is not doable -
+eg more ram is a no-go, or even if the idea of ram does not translate to the
+SBC world. Your the sample nginx config seems to show you are not using this.
+
+Just thought I’d share that with you in case it leads to something positive.
+
+Thanks again for the detailed write-up.
+
+Shelby Marvell
+
+I’m thinking of making my raspberry pi a super low-power server… Just wondering
+if you had done any more to improve it since this article: [218]https://
+homebrewserver.club/low-tech-website-howto.html
+
+And had a suggestion to maybe reduce image size. GIFs? They take dithering
+really well… But I know PNGs are compressed at varying strengths. And now I
+need to find a way to use a solar battery or something for powering it…
+
+Nicolai
+
+Hello,
+
+I love your site! It’s pushed me to make actual changes in my life.
+
+Here are some small changes you can make to improve your https
+
+configuration to maintain (or increase) security while also using less
+
+electricity.
+
+First, on the server itself, type these commands and compare the output:
+
+openssl speed aes-128-gcm
+
+openssl speed aes-256-gcm
+
+openssl speed chacha20-poly1305
+
+Since your server’s CPU (ARM Cortex A7) doesn’t support accelerated
+
+AES, chacha20-poly1305 should be SIGNIFICANTLY faster (possibly 10x
+
+faster) which means less electricity usage. Similarly, aes-128-gcm
+
+should be a bit faster than aes-256-gcm. In the real world, in actual
+
+TLS usage, aes-256 doesn’t solve a problem that aes-128 doesn’t.
+
+So, you should configure nginx to support and prefer only these ciphers:
+
+chacha20-poly1305
+
+aes-128-gcm
+
+aes-128-cbc
+
+You don’t even need aes-256. For ECDH curves, you also don’t need
+
+secp521r1 or secp384r1. Even google.com, which is famous for not
+
+wanting to lose any users, doesn’t support these curves. You should
+
+just support x25519 and P-256 (aka secp256r1).
+
+Finally, making ECDSA signatures requires less power than making RSA
+
+signatures. So switching from an RSA cert to an ECDSA cert would
+
+lower your electrical usage.
+
+Hope this helps, and thanks again for your outstanding website!
+
+Artūrs Pupausis
+
+Intresting project for sure!
+
+When speaking of server efficiency. Old 40nm SoC isn’t the way to go. PNG could
+be optimized by PNGgauntlet or use webp but I guess it only supports 24bit
+colors. Brolti compression is more efficient than gzip. CSS, HTML & JS can be
+minifyed before compression. One commented about Flif but it isn’t optimized
+and not natively supported in browsers.
+
+Combining multiple websites on one server to uses hardware more effectively.
+SPF+ uses less power for given amount of data compared 100m nic. From a larger
+server waste heat can be recovered for water heating or room heating in winter.
+Waste heat can be recovered from waste water drain as well as that water can be
+reused for toilet. 10nm ARM server uses far less power for the same work
+compared even to latest Intel offers.
+
+Even better if it is running on hybrid solar PV system with a small battery
+backup plus optimized PV system with minimal conversion of electricity.
+
+Lastly reusing certain parts of servers like a case and hard drive
+Remanufacturing instead of shredding could help reduce emissions of the
+internet.
+
+Speaking of printed version depending on the tech used on paper production,
+weight, shopping, power source, raw material, disposal & etc. Typical sheet of
+A4 paper uses ~50 watt hours of energy or more. While reading on modern
+smartphone for one hour takes Less than a watt hour, but it quickly changes if
+done on a laptop or older desktop with multiple monitors. But does not include
+cradle to grave impact of hardware and software used for it Also it would need
+to be divided by all other stuff used on computer.
+
+Amos Blanton
+
+I thought I’d share my solar powered website as it stands, along with
+
+the offer of any help I can give should anyone run into problems I might
+
+be able to help with.
+
+[219]http://solar.amosamos.net/
+
+([220]https://gitlab.com/Lightnin/amosamos.net)
+
+ • It uses an ina219 to measure the state of the battery (Thanks Roel!)
+
+ • I’m experimenting with changing the background image depending on the
+
+weather. I’m intrigued by the idea of physically situated servers tied
+
+to their place in space.
+
+I have yet to tackle the data optimization or server customization and
+
+caching, and logging the power usage to look at trends / see if I can
+
+cope with a Danish winter (unlikely at this point). And I am proxying to
+
+my site on nearlyfreespeech.net [221]http://nearlyfreespeech.net when the
+
+pi is down. I’m rather attached to uptime at the moment as I am looking
+
+for new opportunities in the realm of playful learning and sustainability.
+
+Thanks for to you all for making this list / club, and for your
+
+contributions to solar.lowtechmagazine.com
+
+[222]http://solar.lowtechmagazine.com and associated documentation - which
+
+I found to be really inspiring.
+
+Best,
+
+Amos
+
+Petar Marinov
+
+Hello,
+
+I’ve been reading articles when you post on lowtechmagazine.com and I like how
+your photos look (and how little space they take). I’ve spent some time
+attempting to replicate the dithering effect of my own photos by I couldn’t
+make it look like in lowtechmagazine.com.
+
+Could you please share what is the command-line (imagemagic) which you use to
+produce your photos?
+
+–pe
+
+[223]https://github.com/pmarinov
+
+Roel Roscam Abbing
+
+Hello,
+
+We wrote a Pelican plugin for it.
+
+You can find the code here:
+
+[224]https://git.vvvvvvaria.org/rra/page_metadata
+
+greetings,
+
+Roel
+
+Stephen Henderson
+
+You forgot to subtract, car trips to library, record store, theaters, not
+watching TV, delivering newspapers, producing paper. The internet is an
+extremely efficient, fast, decentralized way off transferring information
+compared to other methods. Therefore your premise of the Internet as a carbon
+problem is just not true, it’s a large savings.
+
+If there was simply a fair carbon tax on on everything producing carbon they
+would all use renewable energy. A server farm produces NO carbon using
+electricity from an utility. The utility produces carbon because they burn the
+fossil fuels to supply a server farm. ALWAYS, atack a problem at it’s source.
+
+A fair carbon tax is just so simple it makes you sick to think it’s not
+implemented.
+
+rockyIII
+
+Hello,
+
+Thanks for your very interesting website.
+
+I´m reading “How to Build a Low-tech Website?“ with lots of attention.
+
+I also have read on several other places (e.g. [225]https://developer-blog.net/
+raspberry-pi-mit-sonnenenergie-betreiben-teil-4/) that the needed emeryfor a
+singelborad computerdoes not so much depend on the use of given capacity… so
+even so astatic web page is faster and needs less energy we could still
+consider to build also dynamic pages…
+
+That said – I really like the design of [226]https://solar.lowtechmagazine.com/
+but it limits us by using some interesting functions if we think of interactin
+websites, which is a feature that becomes more and more important.
+
+You seem to have no problem to use Facebook and twitter - but this use is a
+contradiction to your project I want to to address here.
+
+Have you heard of the “Fediverse”?
+
+[227]https://en.wikipedia.org/wiki/Fediverse
+
+and the decentralized networking options? This is a very interesting option
+which would be interesting to integrated in the Low-tech website project too.
+
+Here I want to recommend the project Hubzilla.
+
+[228]https://hubzilla.org
+
+You can run it in a PHP environment.
+
+Hubzilla has a function called „normadic identity“. With this function you can
+clone and transfer network accessibility from one to an other server. If one
+server is down, the other server takes over the job and can do the work. So
+this concept would allow downtime for a solar driven websites even so
+functionality of connections would still be working. You jut have to find few
+partners - self hosted severs, spread all over the world, each powered by solar
+power, to have a 100% up time. This would be an other innovative concept for a
+low tech website ;-)
+
+What do you think?
+
+all the best
+
+chris
+
+Tom Sparks
+
+For static comments, you could look at [229]https://mademistakes.com/articles/
+jekyll-static-comments/ it is jekyll centric but you should be to adapt it to
+use with Pelican.
+
+stilbruch
+
+Greetings,
+
+First off, I just want to say how much I absolutely love the lowtechmagazine
+website. I’m a member of tilde.town, and me and some other members were talking
+about the site today. We all enjoy the special attention that is paid to design
+and sustainability. However, the one thing that many of us find slightly
+annoying about using the site is the presence of the yellow line through the
+articles indicating the battery of the site. The site would be much easier to
+read in my opinion, if simply the battery level, or perhaps a bar indicating
+the level, were presented on the page. Thanks so much for putting out this
+amazing content!
+
+Hayden
+
+Rick Carlino
+
+Hi Kris,
+
+I loved the article about building a low tech internet. I started building a
+software package that could support people and systems that do not have the
+luxury of constant power or connectivity. Its main use case is for peer-to-peer
+sneakernet applications.
+
+I wanted to share it with you because your work was one of the main
+inspirations for it. The first proof-of-concept is still in the works ([230]
+https://github.com/PigeonProtocolConsortium/pigeon-cli-ruby). I hope you have a
+moment to look it over and I would value your feedback very much, given your
+level of research into low uptime / low tech systems. Please feel free to share
+it with anyone and everyone.
+
+[231]https://github.com/PigeonProtocolConsortium/pigeon-spec
+
+Thanks again for all the great articles and research!
+
+Alva
+
+I saw many comments regarding the battery level indicator.
+
+One thing I didn’t see mentioned, is that it forces the web browser to
+
+perform (possibly expensive) compositing operations, due to the
+
+resulting layers.
+
+It can’t just move the whole page without redrawing the visible parts,
+
+when scrolling.
+
+On computers that can’t use hardware acceleration (such as mine,) this
+
+results in very poor scrolling performance.
+
+Making the browser do more work than neccessary means it consumes more
+
+power for all of your visitors, so I think it could be quite beneficial
+
+to reimplement it in a way that does not require compositing several
+
+layers.
+
+Kapibara
+
+Very good ideology, but no way to make it alive. Ip address and DNS are the
+bottlenecks. It’s my opinion, but it’s much more efficient to place an
+optimized website on shared hosting in a data center with an optimized
+environment placed in an optimized climate zone + use CDN to reduce the load on
+routing devices. Your hosting machine is NOT an energetical bottleneck.
+
+Maik Merten
+
+Dear Mr. De Decker,
+
+I find the concept of low-power website hosting very interesting -
+
+thanks for documenting your effort!
+
+The choice of using dithered PNGs to save bandwidth is an unique
+
+approach and your website demonstrates that it can result in quite
+
+charming results.
+
+I noticed, though, that the pictures you host don’t appear to be
+
+optimized with latest PNG optimization tools. For instance, the
+
+open-source tool “zopflipng” can losslessly recompress PNGs (it contains
+
+a better implementation of the DEFLATE compression algorithm than what
+
+usually is used in graphics software).
+
+For the pictures on [232]https://solar.lowtechmagazine.com/about.html I get
+
+the following results with zopflipng:
+
+file | original size | zopflipng size
+
+—————————————+—————+—————
+
+new-solar-charge-controller.png | 44591 | 41135
+
+solar-panel-solar-powered-server-2.png | 63238 | 58667
+
+solar-powered-server-detail-2.png | 33061 | 30346
+
+sps_bats.png | 36452 | 33559
+
+—————————————+—————+—————
+
+total | 177342 | 163707
+
+That’s a saving of 13635 bytes, which means that roughly 8% of savings
+
+can be had.
+
+With best regards,
+
+Maik Merten
+
+Heikki Lotvonen
+
+Hi!
+
+Big fan of LOW←TECH MAGAZINE and as a “critical” web developer&designer, very
+inspiring to read your approach with how you built your site and your ideas
+behind it.
+
+On the page [233]https://solar.lowtechmagazine.com/2018/09/
+how-to-build-a-low-tech-website.html
+
+you had said you are looking for ideas and feedback to further improve the
+website and reduce its energy use. I’ve been musing on a very incidental power
+saving possibility on the users side. According to this discussion [234]https:/
+/superuser.com/questions/483456/
+does-a-computer-screen-consume-more-power-to-display-black-or-white, white
+background on a page saves more power on LCD monitors, while a black background
+saves power on OLED screens. This led me to think that serving a “dark mode” to
+mobile users and “light mode” to desktop users could possibly save some (albeit
+probably a minuscule amount) energy on the users side. Just a thought!
+
+cheers,
+
+Heikki Lotvonen (Finland)
+
+Guillaume
+
+Hello,
+
+I seen you’re using Armbian Stretch (base image ~300 MB)
+
+Had you tried Alpine Linux (base image 128 MB) ?
+
+Have a good week-end, from France :)
+
+IPv7
+
+James
+
+Hi,
+
+I noticed that you say that the solar powered server used gzip compression. I
+wonder if you’ve configured Nginx to serve .gz files if available? If the site
+is already static that should avoid all the CPU load due to compression leaving
+only I/O load and could save a couple of Watts.
+
+Jörg
+
+Hi There,
+
+ 1. perhaps this could be interesting
+
+[235]https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-source-hardware
+
+since is very low power and there is software available for serving
+
+static files from microsd card.
+
+its low cost and poe powered, so stackable..
+
+you can use a standard PoE switch for multiple boards and
+
+multiple webpages/vhosts. like this one
+
+[236]https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/
+global/smb_switches_poe/es-5104ph_v2/
+
+you just have to connected the PoE switch to your solar power supply.
+
+ 2. you generally could save more traffic and avoid unnecessary requests
+
+by doing this:
+
+ • packing/compressing html. since most modern browsers understand
+
+ html.gz if your server delivers this.
+
+ [237]https://www.lemoda.net/mod_rewrite/gzip-static/index.html
+
+ • put all images base64 encoded in this single html per article.
+
+ so it’s easy to archive and copy an article. don’t use a image twice
+
+ in the document. set reference to it.
+
+ • don’t insert menu and double content, social media stuff and anything
+
+ like that. use server directory listing as
+
+ menu. just for choosing and delivering static html files. and just a
+
+ normal about.html.gz for further information about author etc.
+
+ • don’t blowup up html files with bullshit tags, javascript etc.
+
+ dont use css classes. just clever combine short html tags and set
+
+ style for that tag. h1,h2,h3,p,em,b and so on.
+
+ generally: don’t force user visitor to use
+
+ your stylesheets at all. give him plain old html and one single
+
+ reference to your stylesheet.
+
+ • save spaces, line breaks etc. in html since you can use auto line
+
+ wrap while editing. (have a look at html coding style in
+
+ the attached example)
+
+ • insert <link rel="icon" href="data:;base64,="
+
+ to prevent browser from trying to fetch a favicon icon,
+
+ which doesn’t existent. (addition useless request)
+
+example attached. have a look at source code via any
+
+text editor with line wrap mode.
+
+total page size ~ 136kb (including images)
+
+compressed… ~94kb.
+
+This is a quite minimalistic and function html wrap:
+
+no need for body/head tags etc. saving additional
+
+requests and has not further dependencies.
+
+<html style="padding:4em">
+
+<link rel="icon" href="data:;base64,=">
+
+<style>img{width:100%;height:auto;}</style>
+
+<meta charset="utf-8">
+
+... put your html code here...
+
+</html>
+
+Kind Regards
+
+Jörg
+
+Oliver Fleischer
+
+Dear Lowtechmagazine team,
+
+thank You so much for providing a website that dares to stand up against
+
+modern design fantasies of the modern web and the bloat that follows.
+
+Thank You all so so much for creating a responsive, fast-loading website
+
+that respects their users and puts them first. I felt obligated to get
+
+this off my chest seeing how this is the first comment ever left here by
+
+me.
+
+The dissection of how this here experiment worked out, how to improve it
+
+and the fundamentals is has to rely upon is fascinating to read. I too
+
+like to see such efforts since they inherently come with speed and
+
+efficiency from which every user benefits.
+
+If web-design is cut down, then client software would be cleaner,
+
+smaller and more efficient. Less required computing power obviously
+
+comes with cheaper and less power hungry hardware.
+
+I am sorry for rambling on, I just wanted to elaborate on why everyone
+
+should be invested in this.
+
+What I wanted to throw into the conversation – since I have not seen it
+
+in the comments yet – is Gopher. An ancient protocol which sadly has
+
+been supplanted by HTTP. It is way more resource-friendly because all of
+
+the metadata has been cut. It’s document format (the gopher menu) is
+
+much smaller than HTML.
+
+This is mainly due to the fact that it uses TSV which has way less
+
+overhead than XML on which HTML is based.
+
+Just my two cents.
+
+Anonymousemail
+
+Please add an option to remove the “coloring” that shows how much the battery
+of the website is charged. It is a nice idea but I find it a bit annoying and
+makes reading harder. This is of cource not urgent just a tip.
+
+N07070
+
+Hello.
+
+I’m writing to you after reading your last article on growing oranges in
+
+the snow. I liked it a lot, as I’ve liked a lot of other articles I’ve
+
+been reading for a few years now.
+
+I really enjoyed the initiative to build a Solar-Powered website. And,
+
+as the world is going more and more to shit everyday, I’ve been thinking
+
+of low-tech ways to keep the internet running, in situations where grid
+
+power might not be available, and where fiber optic links might not be
+
+available. In that optic, I’ve started
+
+[238]https://git.n07070.xyz/n07070/Solar-Server, which ..is an ongoing
+
+research project that aims to develop a Solar-powered off-grid internet
+
+server." I thought you might like to contribute to it, maybe ? You can
+
+send me patch commits by email if you wish !
+
+Another thing, is that I might have a few suggestions about improving
+
+the website. I’ve seen that it might soon be offline, as a lack of
+
+battery. But, maybe someone has a copy of the website that I could read
+
+? Like, when the library is closed, I can always ask around, see if
+
+someone else has the book.
+
+On the internet, we can do it in several ways. On of this ways if the
+
+DAT protocol. “Dat is a new p2p hypermedia protocol. It provides
+
+public-key-addressed file archives which can be synced securely and
+
+browsed on-demand.” Think HTTPS, but decentralized. Do you think it
+
+could be interesting to implement this solution ?¹
+
+Second, more minor, but regarding the interaction of the website, I
+
+think the language selector should be more visible, for example by
+
+making the round black button a globe emoji. As you already load
+
+font-awesome, it should be trivial to implement. If you have a git repo
+
+I can make a pull request too, I can do it myself. Is the website
+
+open-source ?
+
+I look forward to hearing from you,
+
+N07070
+
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+[1] : [239]https://www.datprotocol.com/
+
+Marcia
+
+Hi, Kris,
+
+My son introduced me to your site today.
+
+I am now a fan and a subscriber!
+
+My ranch is in a cold canyon in California’s central coast where we get temps
+down to 16 degrees fahrenheit on winter nights. Until now I thought I couldn’t
+grow citrus here. After reading your article I’m eager to grow Satsumas which
+we loved in Santa Barbara.
+
+Long ago I was a book designer, learning the trade in a small publishing house.
+
+Book design isn’t just lllustrations or cover art; it really means making the
+material accessible.
+
+Serif fonts were all designed for readability, sans-serif came in for
+advertising.
+
+A well chosen serif font, correct line width, and enough space between lines
+(what used to be called “leading,”) are all important factors in the
+readability of text.
+
+I implore you to think about ways to improve the accessibility of your
+material!
+
+Check out The New Yorker online, which is probably the best in this area.
+
+All the best,
+
+Marcia
+
+Swann Sokolov
+
+Hi ! Nice website !
+
+I guess the texture of your pictures allows them to be very light. What is the
+process ? How do you call this kind of texture ?
+
+Thanks !
+
+David Schlachter
+
+Hi,
+
+I enjoyed your article on building a low-tech website. You mention that
+dithering is an open question: I wanted to recommend HyperDither, which
+reimplements the dithering algorithm in Apple’s HyperCard software [1]. The
+algorithm creates distinctive images in 1-bit color, which you could convert to
+a different two-color (white, color) palette to match the site’s aesthetic. I
+find the quality is such that it could be realistic to use 1-bit images. I’d
+suggest post-processing the resulting images by converting to PNG and
+optimizing with a tool like optipng [2].
+
+David
+
+[1] [240]https://www.tinrocket.com/content/hyperdither/
+
+[2] [241]http://optipng.sourceforge.net/
+
+Nicolas
+
+Hello
+
+I found your articles about running a very low tech website on a solar powered
+RPi really inspiring
+
+Do you think it would be feasible and relevant to create a hosting company
+based solely on this kind of setup ? And why not replicating it in several
+places and use ZeroNet or Hypercore Protocol to make the whole service
+distributed and more resilient ?
+
+Thanks
+
+Best
+
+Nicolas
+
+Jannis
+
+Hi,
+
+I just stumbled over the Low Tech Magazine and its solar-powered website and
+I’m absolutely intrigued. This is a very nice project, and I even find the
+solar-powered version better to use than the regular version. (I think this is
+especially because the delay between clicking a link and getting a fully
+rendered visual result is noticably lower than with most websites. I really
+don’t know why people don’t bother to reduce UI latency. Anyway.)
+
+Since you write on [1] that gzipping »lowers the size of transmitted
+information at the cost of a slight increase in required processing« I wanted
+to remark that I noticed the Caddy web server [2], when configured to serve
+static files, will transparently serve the contents of an equally-named .gz
+file that is stored next to the file that was actually requested, and gzip
+encoding is Accepted. So for example, if you request about.html with
+Accept-Encoding: gzip, and the server sees the file about.html.gz, it will
+serve the contents of about.html.gz.
+
+(If you’re wondering how I noticed, imagine somebody only updating the contents
+of the uncompressed file, and wondering why the change doesn’t become apparent
+in their browser…)
+
+While I haven’t got any experience with the power overhead of a Go-based HTTP
+server over nginx (might be an interesting experiment though, let me know if
+you’d be interested in me running benchmarks), maybe there is a way to teach
+nginx the same behaviour? This might further reduce the average power usage
+since the compression algorithm only needs to be run once.
+
+Best regards from Heidelberg, Germany
+
+Jannis
+
+[1] [242]https://homebrewserver.club/low-tech-website-howto.html#
+compression-of-transmitted-data
+
+[2] [243]https://caddyserver.com/
+
+Charles-Édouard Coste
+
+Hello,
+
+I’m a big fan of the solar version of the lowtechmagazine. The only bad aspect
+for me, is that it requires a battery to work. And the availability of the site
+depends a lot on the battery capacity.
+
+So I don’t know if you are aware about those new peer-to-peer oriented
+protocols like ipfs, zeronet, and hypercore… Hypercore is my favorite for now
+as it’s easy to try with Beaker Browser ([244]https://beakerbrowser.com/).
+
+I told myself that if this kind of protocol would become popular, it could be
+possible to remove the battery and just seed the web site few hours a day…
+
+Maybe, you already know all of that… So I write you this mail to ask if you
+already experienced things with it and what results you got. If you didn’t ever
+eared about it, just take it as some hints for futur potential improvements. :D
+
+Best regards
+
+Brian Ramirez
+
+Hello Kris,
+
+I really love your site and and what it stands for.
+
+I just noticed that the images are not lazy-loading. You might want to consider
+adding a little attribute to your image links so that they lazy-load and save
+kilobytes of data whenever visitors don’t scroll down the whole way (at least
+in Chrome): [245]https://web.dev/native-lazy-loading/
+
+Sincerely,
+
+Brian
+
+[246]http://blr.design
+
+Pablo Lazo
+
+Hi!
+
+I came across an article on your website and I love the idea of running it off
+solar power.
+
+I found the battery meter background made it a little hard to read the article,
+just wanted to suggest lowering the opacity a bit. I tried the same color with
+50% opacity and it’s much less jarring while keeping the same effect.
+(screenshot attached)
+
+Best,
+
+Pablo
+
+Luis M. Portillo
+
+Hi,
+
+First of all, congratulations on your project because I think it is very
+interesting and successful.
+
+I wanted to ask you about the interpolation used in the images of the web. Do
+you use any program or script in particular? I’ve been trying different options
+in some programs (using GNU/Linux) but, even if I get a similar aesthetic
+effect, I can’t reduce the size of the images.
+
+I was hoping you could give me some hints about it.
+
+Thank you and best regards,
+
+Luis M. Portillo
+
+Marcus Rohrmoser
+
+Hi fellow Low-Techies,
+
+[247]https://homebrewserver.club/low-tech-website-howto.html#
+sensible-comments-on-static-sites says “Dynamic content such as comments are in
+theory incompatible with a static site.” - which is true and isn’t.
+
+While it is true for what the server sends as a document, it is not for what
+the reader gets as a visible document.
+
+Think of images - they (usually) are not part of the sent html, but are
+nevertheless part of what the reader considers the document.
+
+As to comments - put them into an iframe! See my blog as an example without
+[248]https://blog.mro.name/2019/05/wp-to-hugo-making-of/ and with [249]https://
+blog.mro.name/2009/07/nsurlcache-joke-iphone/ comments.
+
+What do you think of that?
+
+Cheers,
+
+Marcus
+
+P.S.: Awesome magazine.
+
+Kea Youll
+
+Hi Mr. Kris,
+
+As a suggestion for further reducing your websites energy usage, may I suggest
+offering a fully compressed downloadable version. I think Wikipedia has
+something similar where you can just download Wikipedia as a file. At this
+point I’ll probably end up reading all your pages over time.
+
+If you need ad revenue, you can simply have people hop through a few ad-page
+hoops to reach the download link perhaps. But then, perhaps I should grow a
+beard? Growing a beard saves on razors after all, but denies a source of
+donatable bird nest material.
+
+My teeth go clack,
+
+Kea Youll
+
+Mike Graham
+
+Hi Kris,
+
+I love the solar-powered edition of Low-Tech Magazine, and the really
+
+thorough articles you’ve written about how it was achieved. It’s given
+
+me a lot to think about – and maybe a project to embark upon. The
+
+climate up here is perhaps not as conducive to solar-powered hosting.
+
+I was working on a friend’s (non-solar-powered) website redesign, and
+
+one of the main goals was to reduce page-size as much as possible. I’d
+
+independently realised dithering as one way of doing this, followed by
+
+heavy optimisation/compression of the dithered images to further reduce
+
+file-sizes.
+
+In that vein, I did a quick test on some images I pulled from the
+
+solar-powered edition of LTM. I wanted to share the results in case
+
+they’re useful to you.
+
+I made up a sample set of 13 images from the site and optimised them.
+
+Here are the results:
+
+ Original size: 362K
+
+ After optipng: 360K -0.55%
+
+ After tinypng: 337K -6.91%
+
+Some notes:
+
+ • All sizes reported are as output by du on Mac OS 10.11 using the ‘-h’
+
+ and ‘–apparent-size’ flags.
+
+ • I used optipng with the flags ‘-opv’. This runs locally as it’s an
+
+ installed package.
+
+ • I used the tinypng-cli program available here:
+
+ [250]https://github.com/websperts/tinypng-cli
+
+ This sends the image to tinypng.com, which compresses it and sends it
+
+ back. It needs a (free) TinyPNG API key, which is limited to 500 uses
+
+ a month. You also need to make sure you have a good backup –
+
+ occasionally this loses a file by replacing it with a 0-byte file of
+
+ the same name.
+
+ • I have absolutely no idea how much power you’d use for these
+
+ optimisations, and how long it would take to ’earn’ the power used by
+
+ serving the smaller files.
+
+I’ve attached a zip file with the three sample sets in it. I figured
+
+this was probably preferable to leaving the zip sitting on Dropbox or
+
+iCloud’s servers.
+
+Cheers,
+
+Mike
+
+Reg Tait
+
+Hi there Kris, Roel, and the team
+
+First, I’m a huge fan of solar LOW←TECH MAGAZINE. I love everything about it.
+The lightweight presentation makes it a much better website. So much more of
+the web should be built like this.
+
+I have a simple suggestion to help reduce energy use. Add (native HTML) lazy
+loading to each image.
+
+As you might know, the idea of lazy loading is to defer loading any image until
+it’s near the viewable screen—so only loaded when needed. The idea has been
+around for a long time. It’s great for performance, but needed JavaScript
+plugins in the past. Now we can do it in HTML. It works really well.
+
+Hope that’s worth looking up and trying out. Appreciate everything.
+
+Cheers
+
+Reg
+
+Mattieu Moreau-Domecq
+
+Hello Chris,
+
+I hope you’re fine
+
+First I want to congratulate you for the good work on your website !
+
+I’m building a website mainly inspired by your guidelines for some friends of
+mine.
+
+I have a question and I thought you might help me.
+
+What script do you use to display the weight of your pages at the bottom of
+each page ?
+
+is it a script ? or some text ?
+
+I’m trying to do the same but I can’t find any resources, I would appreciate if
+you can help me with this !
+
+thanks and best from Paris !
+
+Marco
+
+Hello,
+
+I really like your solar website and the technology behind.
+
+It has been since I found out about your website that I thought how nice
+
+would be to have a webserver like yours for my website.
+
+I lack all the skill to make a webserver, I would like to know if you are
+
+considering selling kits or sd card configured to run on a raspberry.
+
+I am of course willing to pay for this. I looked in the internet but I
+
+found no one that sell this kind of kits.
+
+I don’t think I am the only one looking for more sustainable ways to do
+
+activism.
+
+Anyway I bought both of your books so that I do not have to use a computer
+
+to read all the nice articles you have made.
+
+I hope one day to be able to deploy a solar powered website like yours.
+
+All the best,
+
+Marco
+
+Hans Wernars
+
+Dear Lowtechmagazine,
+
+Instead of dithering pictures there might be another technique to get the
+desired low file size.
+
+This is the (often forgotten) JPEG compression in combination with reduced
+resolution.
+
+Reducing resolution sounds dramatic, but when showing in the browser it can be
+showed with a factor 2x.
+
+In this way the visitor will see the image at the original size.
+
+Most visitors will hardly notice any difference. Some do.
+
+By adding optimal JPEG compression it is possible to reduce even further.
+(optimal for the tool used=50% setting)
+
+The advantage is that the picture still has the full-color properties.
+
+Example:
+
+Original picture: 1280 x 518 pixels. File size 160KByte
+
+Compressed to 50%: 1280 x 518 pixels, file size 90.8Kbyte
+
+Half size and compressed: 640 x 259 pixels, file size 28.2Kbyte (17%)
+
+Tool used: JPEG resize V2.1 from Heinrich Peuser ([251]http://
+www.virtualzone.de)
+
+Attached the original picture and the compressed ones to verify the results
+
+The original picture can be downloaded at: Megen_panorama
+
+With kind regards,
+
+Hans Wernars
+
+Christian Hieke
+
+Hi Low-Tech-Team,
+
+I rediscovered this project while researching solar and battery-powered
+devices.
+
+While I was looking at your website code I saw some room for improvement in the
+JavaScript code. Attached [1] you can find the modified code which reduces
+filesize by over 2 KB (uncompressed) or 0.7 KB (gzipped) when run through a
+compiler ([252]https://closure-compiler.appspot.com). Hope that helps to
+further reduce energy consumption, even if it’s just on a small scale :) If you
+have any questions or need more help don’t hesitate to contact me.
+
+Christian
+
+[1] [253]https://www.codepile.net/pile/3m4jZRQ5
+
+Daniel Parnitzke
+
+Dear Kris
+
+I already wanted to reach out to you earlier. Based on the example of
+solar.lowtechmagazine.com I hosted my MA thesis on a solar server out of my
+bedroom. I think you might have already come across it. You can find it here:
+pleasureinscarcity.com (currently I’m on the move, so it’s in a box, the stats
+don’t work). It’s not as consequently designed as solar.lowtechmagazine.com,
+and it’s also been offline more frequently as it’s consuming around 4W
+constantly, (in the Netherlands). Therefore I started scheduling offline times
+every night.
+
+I recently graduated from my MA Social Design in the Netherlands, with a
+research on how change can occur in simple acts of creation and joyful moments
+of communal gathering. I therefore constructed rocket stoves with locally
+available (scrap)materials and with the help of local communities. Therefore,
+your articles were super inspiring, regarding the theme of setting limits to
+behaviour based on the availability of resources. Your research on rocket
+stoves, efficient heating, windmills, alternative ways of energy production
+(and so on) offer great insight into ’ecological alternatives’, and more than
+once it helped me develop my own research.
+
+If you’re interested in my graduation work, which promotes a different
+perspective on ’enacting change’ – not through fear/guilt but through pleasure/
+joy – you can find a short video outlining my research and the outcomes. [254]
+https://www.youtube.com/watch?v=oocbejOMXtA
+
+Right now I’m fixing up a van which will be my mobile home and workshop for
+2021. Therefore I’m building a wind generator, carving some wood rotors at the
+moment (thanks for that) based on the plans of Hugh Piggott. In 2021, I hope to
+visit (and participate in) interesting projects, places and initiatives all
+over Europe. (Maybe you know of a place that I shouldn’t miss on my trip?)
+
+As a last note, I’d like to bring your attention to two people I came across in
+the past year: Barnabé Chaillot, a French YouTuber and Alexandre Monin, a
+French academic/teacher/philosopher. The former was great in terms of applied
+inspiration, the latter just initiated a Master program in Lyon which is called
+“Master of Science Strategy & Design for Anthropocene”.
+
+Keep up your great work, and if I’ll ever be close to Barcelona I’d love to
+visit to see the server and how it works :)
+
+I hope there are good things coming your way.
+
+All the best from Germany,
+
+Dani
+
+Simon
+
+Hello Kris De Decker,
+
+together with friends I am starting an architecture collective near Cologne,
+Germany.
+
+We are willing to go unexpected paths and engage ourselves in transformation
+and urban design tasks in this area.
+
+There is plenty of work as the area is mostly aligned on car-depended urban
+design and coal energy.
+
+Since we stepped on the low-tech magazine website we would like to adopt your
+idea and the technology for our project.
+
+On the other hand we should focus on our projects and the urban design field.
+And, we like the idea of becoming accomplice for future development.
+
+Therefore we would like to know, if you ever thought about the possibility of
+hosting other sides (with the solar low tech system) as a business model?
+
+At the moment we do not have enough time (and less sun hours) to build of our
+own system…
+
+I am looking forward to hear from you!
+
+Best
+
+Simon
+
+Jakub
+
+Hey Kris,
+
+I’ve been reading Low-tech Magazine magazine for a while now, I find the idea
+captivating and the content is thought-provoking. Thank you for working on it!
+I also appreciate the fact that it has an RSS feed, it makes it much easier fo
+find the new content.
+
+One piece of feature-requesty feedback that I have is it’d be cool if the HTML
+
+Best wishes,
+
+Jakub
+
+Nathan Landry
+
+Hola desde el soleado puerto rico,
+
+Me gusta su sitio web de bajo consumo y me gustaría sugerir cómo reducir el
+consumo de energía del enrutador.
+
+calor = desperdicio
+
+Use un tubo de calor pasivo y saque el enrutador de la carcasa, móntelo en el
+chip caliente del enrutador.
+
+Mo Lotman
+
+Hi Kris,
+
+I just wanted to say I’m a big fan of Low Tech magazine and have the printed
+version. I started a magazine/nonprofit along a similar theme a few years ago
+(The Technoskeptic), although ours is more related to social crit/philosophy/
+policy than physical implementations. We’ve been in a bit of hibernation lately
+so there is not a lot of new content up there right now, but I’ve been thinking
+about what the next steps might be, and I’m very interested in following your
+lead so far as the web design/sustainability, both in terms of saving energy
+and also (I presume) avoiding interfacing with abusive tech companies. Did you
+do it all yourself? I’m curious if you could recommend anyone to help do a
+redesign according to the principles you generally espouse. I don’t think the
+average person would know how to do it. Any suggestions?
+
+Thanks so much, and keep up the great work!
+
+Best,
+
+Mo
+
+Gauthier
+
+Hi guys,
+
+Following your excellent work on building a solar powered host for lowtech mag,
+you mentionned that a service rate lower than 100% is essential to a truly
+efficient system in terms of ressources vs service ratio.
+
+It sure is, yet the internet is not an autonomous system (as you mentioned) -
+so could you not use this as a leverage for a higher service rate?
+
+The idea would be to use a network of fair players - let say a community of
+solar powered websites (yours becoming one amongst many others) - on each,
+several other websites being mirrored and hidden most of the time (I’ll come
+back to this point a bit later).
+
+Once your server power runs super low, it just anticipate a bit and request
+another server to play it’s mirror role. Once your server is back online,
+another request is sent and voila, back to normal.
+
+With a network of those servers, it would become easy to have virtually 100%
+(let say 99.9999% of the time) at least a way to access knowledge.
+
+Back on the hidden concern, in terms of energy, I don’t know what’s the actual
+impact of distance between server and client and if it would make sense to have
+closer mirrors used when enough power is available.
+
+I guess this should also be compared to the increasing power consumption of
+local servers hosting several sites and being more visited due to geographical
+reasons (let say servers closer to high density areas such as big cities).
+
+Anyway, that was just an idea :) Thanks a lot for everything you do!
+
+Gauthier
+
+Peter Fischer
+
+Hi Chris!
+
+this got some traction in nerd circles lately:
+
+[255]https://en.wikipedia.org/wiki/Gemini_(protocol)
+
+centre of the gemini universe
+
+[256]https://gemini.circumlunar.space/
+
+list of awesome links regarding gemini
+
+[257]https://github.com/kr1sp1n/awesome-gemini
+
+feels like the 90ies (the good, new shiny party of it).
+
+-> 1 URL = 1 document, no inline content.
+
+-> styling is don in the client, no CSS
+
+-> server kays are handles like in SSH, no CAs involved
+
+What it needs is more non-nerd content, like
+
+solar.lowtechmagazine.com … ;)
+
+Cheers,
+
+Peter
+
+P.S.: lowtechmagazine.com (the “normal” version ) seems to be down at
+
+the moment?
+
+vadim
+
+Hi,
+
+thanks a lot for your solar journal/blog/magazine, whatever you call it.
+
+I thoroughly enjoyed your logic and consistency you operate with.
+
+Insightful articles as well ❤
+
+I thought I’d share the feedback about site’s CSS, I slightly tweaked it
+
+for my own pleasure using the Stylish extension.
+
+3 points:
+
+ 1. I find the article text with is too narrow for reading. (Maybe the
+
+artificial big margins also look weird on mobile, wasting useful screen
+
+space?) I opted to make max-width: 40rem; oh and I also used 90% zoom,
+
+the text was too big for me.
+
+ 2. Images are hard to view when they are stretched to full width on a
+
+16:9 monitor, made them smaller
+
+ 3. Captions also centered now, because images are
+
+ 4. Battery. I understand this might be artistic, but I noticed from an
+
+UX point of view, I scrolled down such that the “entire” reading area
+
+was covered by the yellow indicator (i.e. text I’m reading is not split
+
+between yellow/white). It’s the same phenomenon like on mobile: Even
+
+though you have 30%+ space left, you scroll further down (wasting
+
+precious battery charge btw).
+
+So I made the battery indicator a smaller bar on the right and it
+
+stopped bothering me. Yet it was still an “eye catcher” to see how much
+
+% remains. The CSS for it looks fine with articles, but a little off on
+
+the main page.
+
+I’m no CSS wizard, this absolutely needs testing on mobile etc. :)
+
+Greetings from Germany,
+
+Vadim
+
+Yiming
+
+Hi Kris!
+
+I’m Yiming, a student writer/illustrator from China. I was applying some low
+tech mindset for some time, and recently I rebuilt my blog into a low tech one
+([258]http://www.wellobserve.com/index.html). I mostly rebuilt the style into
+what it looks like the solar one and did some optimizations for Chinese
+paragraph viewing and printing. And to showcase some of my paintings, I made a
+gallery mode which made it easy to layout text and images for direct printing
+into pictorial books, like this one here.
+
+[259]http://www.wellobserve.com/blog/2020/04/
+01_CloudTravelClassics_03_TropicOfCancer.html
+
+Although it looks almost the same to the solar site, I did not use existing CMS
+but wrote my own script to generate the HTMLs according to my need. My script
+can be downloaded at this page.
+
+[260]http://www.wellobserve.com/blog/2021/01/15_StaticBlogGenerator.html
+
+:D
+
+Your low tech stuff is so inspiring! Thank you for bringing such wonderful
+content into the world!
+
+Yiming
+
+Stefan
+
+Hello,
+
+I’ve just discovered your very interesting site.
+
+I’ve found two issues:
+
+ 1. German RSS feed content does not reflect the latest German articles
+
+ 2. The bottom icons for RSS, Twitter and Mail overlap the footer text.
+
+Best regards
+
+Stefan
+
+Juan J. Alcolado
+
+Hola Kris!
+
+he conocido de vuestra iniciativa desde artículo en El Economista, encontrando
+cierto hermanamiento como podéis comprobar por el nombre de este dominio
+ServidorSolar.com desde donde os estoy escribiendo.
+
+Ciértamente nuestra finalidad es que la fuente de alimentación sea plenamente
+solar, si bien -y para evitar sensaciones frustrantes- lo tomo como un ideal en
+pos del que trato de luchar de forma efectiva.
+
+Además de felicitar por el logro y la gesta, también me permito alguna
+indicación que en aras de la eficiencia humildemente apunto.
+
+Así, veo que el código html, al menos de la home [261]https://
+solar.lowtechmagazine.com y el de la página principal en español, idem + /es/,
+adolecen de algunos errores en cuanto al cierre de etiquetas de contenedores
+(“div”), por cuanto su interpretación por los navegadores fuerza el uso de
+recursos para corrección y sucesiva presentación en pantalla.
+
+En la home ocurre en la línea nº 21 del código, que con el browser Firefox
+marca en rojo </link></link></meta></meta></meta></meta>.
+
+Saludo cordialmente, y quedamos a vuestra disposición, de forma personal y como
+medio editorial que gestiono encantado de publicar sobre cuánto estiméis
+
+Juan J. Alcolado
+
+[262]https://suelosolar.com
+
+Isaiah
+
+Hello,
+
+I am not sure if you have researched but I think the Tor Network and their
+hidden services would provide a lot of benefit in hosting/domain costs and
+encourage, lean energy efficient websites like yours. I really believe in Tor.
+I think Tor among a few other projects have really great potential to allow
+secure, private independent, but also far more energy efficient services than
+the terribly bulky garbage that is normally available. I personally am doing a
+lot of research into this and I will let you know any progress. I hope you have
+a wonderful day! Linked below is a link to the Tor Project.
+
+[263]https://www.torproject.org/
+
+[264]http://expyuzz4wqqyqhjn.onion/
+
+With great respect,
+
+K N
+
+“…do the same with less…”
+
+This is a great statement - this is the first time I’ve come across someone who
+wants to get off the “perpetual upgrade arms race”.
+
+Some suggestions, if I may?
+
+ 1. Reduce your kernel size and potentially make it run more efficiently.
+
+e.g Minimise RAM utilisation by Kernel and save on SD card swap space (which
+delays things).
+
+The following might be a useful overview as to why the kernel should be
+optimised.
+
+It’s in the context of embedded hardware, but I think you’re aiming to do the
+same.
+
+[265]http://events17.linuxfoundation.org/sites/events/files/slides/
+opdenacker-embedded-linux-size-reduction-techniques_0.pdf
+
+ 2. Blacklist kernel modules: /etc/modprobe.d/blacklist.conf
+
+Disable drivers for bits of hardware you’re not going to use on the board =
+more RAM
+
+Faster kernel execution.
+
+ 3. Recompile your kernel
+
+This is to remove modules that are integrated into the kernel itself that can’t
+be black listed.
+
+[266]https://linux-sunxi.org/Mainline_Kernel_Howto
+
+ 4. NGINX Web server
+
+It’s not clear whether this was the standard (dynamically linked) one from the
+repository or whether you built this with static modules from source.
+
+If pre-packaged, suggest that you consider building from source a binary to
+optimize.
+
+Above presentation also covers RAM, Size & performance profiles of dynamically/
+statically linked binaries.
+
+Faster execution if smaller
+
+ 4. Investigate changing the clock frequencies - although not 100% clear if it
+ can be done on this board.
+
+Whilst I didn’t find a specific link to underclocking the CPU, I did find
+references in the Linux sunxi pages that refer to overclocking.
+
+This suggests you can specify lower values to attempt to underclock.
+
+Simliar or same performance with less power.
+
+Here: [267]https://linux-sunxi.org/Cpufreq
+
+My Raspberry Pi 2 is underclocked and works just fine.
+
+Kwok
+
+Erik
+
+Hi Kris,
+
+I’m not quite sure you don’t mind the informal salutation. If you do, I’m
+
+sorry.
+
+Yesterday, I read about the Gemini project in the German computer magazine
+
+»c’t« and immediately thought of you because it might be of interest for
+
+your magazine since it is quite »low-tech« and therefore sustainable. I’m
+
+not involved in this project (although I’m thinking of launching a Gemini
+
+site myself), so this is not an ad 😉
+
+In short, the Gemini project is about some kind of parallel Internet which
+
+does use the Internet infrastructure but has its own super-lightweight
+
+software stack on top of it (like Gopher). The explicit goals, among
+
+others, are to keep it as simple as possible while protecting people’s
+
+privacy (no cookies, tracking and the likes, but encryption of the
+
+connection is mandatory). As an illustration, my Fairpone 2, which is
+
+always short on memory and often takes minutes to open a ordinary web page,
+
+has no problem accessing Gemini content.
+
+From what I have understood, the Gemini »web« is quite text-centric. It is
+
+made up of text pages called »gemtext« which contain a simplistic markup
+
+(even more simplistic than basic HTML). They don’t even include extensive
+
+styles so that the device which displays them is free to adjust the looks
+
+to the user’s requirements and wishes. It’s not so simple that it does not
+
+support multimedia files, but they’re only loaded on request.
+
+Gemini also has made adjustments on the tech below the gemtext (like the
+
+before-mentioned abandonment of cookies, minimalistic requests and so on),
+
+but i wrote »in short« above, so …
+
+If you’re curious, you might want to start here (I’d like to link you the
+
+c’t article but it’s behind a paywall unfortunately):
+
+[268]https://gemini.circumlunar.space/
+
+I imagined that this might also be something for your solar-powered
+
+website. Just a suggestion 😉
+
+Anyways, keep up the good work!
+
+Erik
+
+Jiri Slimarik
+
+Hi,
+
+I really like your blog. The way it is made and the topic as well. I’m
+
+curious how to make my photos to look similar. I guess making the
+
+photos look this way also reduces energy consumption, so I wonder, how
+
+do you do that? Is there any blog post on this theme? Any rules to
+
+apply?
+
+Looking forward to your response.
+
+Best regards,
+
+Jiri Slimarik
+
+Alexander
+
+Hello, Kris!
+
+I learned with great interest about your site running on a
+
+microcomputer. The Internet is full of instructions for using a
+
+microcomputer as a home hosting server, but there are almost no real
+
+applications.
+
+However, I can tell you about another amateur site running on a homemade
+
+microcomputer hosting service! This site works in Russia and on a
+
+Russian microcomputer. Home page [269]http://mb7707.su/ notes on the Russian
+
+microcomputer [270]http://mb7707.su/module/articles/articles.html homemade
+
+products [271]http://mb7707.su/other/handmades/handmades.html gallery of my
+
+developments [272]http://mb7707.su/other/gallery/gallery.html The site was
+
+launched in early 2018, last year I changed my domain, but in general,
+
+my Internet resource has been working for three years.
+
+I wish you further creative success!
+
+Sincerely, Alexander.
+
+Ian
+
+Hi,
+
+A friend pasted a link to your site on IRC (libera.chat #gopherproject).
+
+Having read some of your articles over the past day or so; I would like
+
+to firstly say, thank you. The articles are informative and appear well
+
+researched. Secondly, I’d like to recommend offering your site via
+
+Gopher. Gopher provides ultra low resource content browsing and delivery,
+
+the forerunner to the modern web. It would seem to fit well with the
+
+ethos of what you are doing.
+
+Gopher is making a comeback, due to people becoming increasingly
+
+frustrated with surveilance and marketing on the web. Myself and a
+
+number of others who share the same feeling host our own Gopher servers.
+
+Gopher has more a feel of the old web, where the content was mostly
+
+provided by enthusiats.
+
+Gopher Protocol: [273]https://en.wikipedia.org/wiki/Gopher_(protocol)
+
+More about gopher: gopher://gopherproject.org
+
+My gopher-hole: gopher://gopher.icu
+
+Hopefully you have lynx installed which will allow you to browse gopher
+
+sites without additional software. Though there are other clients,
+
+http proxys and browser plugins also available.
+
+Best regards,
+
+Ian
+
+BTD Master
+
+This is partially crazy, but how does moving to Redbean for reduced
+
+power consumption sound? [274]https://redbean.dev/ [275]http://
+redbean.justine.lol/
+
+Ruben Vorderman
+
+Dear Kris,
+
+Thank you for your inspiring website. It inspired me to start working on
+
+my own blog that will be hosted in a similar way.
+
+As a consequence I found an easy way to save power on the server. The
+
+server CPU runs on a certain frequency. Higher frequencies are faster,
+
+lower frequencies save more power. This is however not a one-to-one
+
+relationship. Higher frequencies cost more power than the speed that
+
+they bring. It is therefore most efficient to run at the lower
+
+frequencies. By default power is managed by the “ondemand” governor.
+
+That governor quickly ramps up the frequency when the demand increases
+
+and quickly ramps down again as it decreases. This makes the system more
+
+responsive but in terms of power efficiency this continuous over
+
+correction leads to power loss. This is fine for wall-connected devices,
+
+but for battery powered devices it is less than optimal.
+
+It can be fixed quite easily. For this you will need to install
+
+‘cpufrequtils’ and run ‘cpufreq-info’. This shows you the current
+
+frequency as well as the available governors for your CPU. It also shows
+
+you stats about how much time is spent in certain frequencies. Very useful.
+
+I recommend using either the “conservative” or the “powersave” governor.
+
+Powersave runs at the lowest frequency all the time and is therefore
+
+most efficient, but also always slowest. Conservative is the next best
+
+thing in power-efficiency, it scales up when demand is higher for a
+
+longer period of time. It is therefore more suited for continual load
+
+tasks with spikes such as your web server. I recommend checking if
+
+powersave delivers adequate performance, and if not switching up to
+
+conservative.
+
+To set the governor to powersave use “sudo cpufreq-set -g powersave”. To
+
+make this change persistent at boot make sure that the cpufrequtils
+
+service is enabled with “sudo systemctl enable cpufrequtils” and create
+
+a file /etc/default/cpufrequtils with contents GOVERNOR=powersave.
+
+Hope this helps!
+
+Best regards,
+
+Ruben Vorderman
+
+More information on available governors:
+
+[276]https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html#
+generic-scaling-governors
+
+Johannes Löthberg
+
+Hello,
+
+While discussing dithering and image compression on IRC I was linked to
+
+your article on building a low-tech website[277]0, and I have some comments
+
+on your decision regarding using dithering.
+
+It essentially boils down to that if you want to save data transfered
+
+you should be using a modern JPEG compressor such as MozJPEG[278]1, not
+
+dither the images. I do not think that you’re going to be able to find
+
+any cases in which a dithered PNG will be able to beat compressing the
+
+original image with MozJPEG.
+
+For example, passing the first JPEG of the switchboard operators through
+
+MozJPEG’s cjpeg without any option leads to an output file that is 104.5
+
+KiB, which is not only smaller than the original (159.5 KiB), but also
+
+smaller than the your final dithered PNG (110 KiB). And this with no
+
+loss in visual quality.
+
+If I run it with -quality 70 that number goes down to 82 KiB, also
+
+without any loss in visual quality.
+
+If you want to keep the dithering because you like the visual look of
+
+it, then running the last dithered image through MozJPEG with `-quality
+
+70`, the resulting image is 94.9 KiB, which is still significantly
+
+smaller.
+
+JJ
+
+Like many, I presume, I found your project through Hacker News and I’d like to
+answer this question:
+
+“For example energy savings from disabling some of the hardware such as the the
+USB-hub? Some tips or insights into this are greatly appreciated!”
+
+Powertop is what you need. Just apt install powertop and you’ll start saving
+energy immediately. More information in man powertop or on [279]https://
+en.m.wikipedia.org/wiki/PowerTOP
+
+Best of luck with your awesome project!
+
+Greetings,
+
+JJ
+
+Roel
+
+Hi,
+
+First of all, what a brilliant project! I love seeing solar-powered computers
+online, especially so well thought out! I’m curious to know how the project
+evolves.
+
+In the past I have played a little bit with a similar setup to yours. I ran a
+raspberry pi zero w on a 9Ah 12V battery with an IVT SCplus charge controller.
+My code from back then can be found here[1].
+
+What I did on the Pi zero was:
+
+ • Turn off USB ports, see [280]https://github.com/roeles/solarpi/blob/master/
+ code/disable_usb.sh
+
+ • Turn off HDMI
+
+ • Turn off DHCP for reduced traffic
+
+ • Turn off IPv6
+
+I also noticed that flash reads cost me more power than using a RAMdisk
+(tmpfs).
+
+I think you could also turn off the second core on the machine, if it normally
+has enough power. The frequency on the first core can perhaps be limited.
+
+If the IVT SCplus charge controller might be interesting for you, here[2] is
+some reverse-engineered code to get data from it over USB. I turn on USB, wait
+for the bus to settle, read data, turn USB off again.
+
+best regards,
+
+Roel
+
+[1] [281]https://github.com/roeles/solarpi
+
+[2] [282]https://github.com/roeles/solarpi/blob/master/code/scdplus.cpp
+
+Noah Pendleton
+
+This is a very cool project!
+
+Multiple solar-powered servers with a non-100% uptime could work
+
+together by using something like IPFS, so that content can be served
+
+even when the “main site” hosting the files is down. Such a system
+
+could be very flexible in terms of surviving certain servers going
+
+down.
+
+Cheers
+
+pep
+
+Hey, I enjoyed your article after seeing it on hacker news.
+
+[283]https://solar.lowtechmagazine.com/2018/09/
+how-to-build-a-low-tech-website.html
+
+I’ve made the transition to static sites a few months back and am absolutely
+pleased with the results.
+
+One thing suggestion to make the site even more efficient would be to use a
+tool like [284]https://purgecss.com/
+
+I went with Hugo for the static site builder and have the purgecss command run
+on build. I’m sure you can figure out how to hook it in with Pelican.
+
+Cheers to a faster, more energy efficient web.
+
+pep
+
+Erik Wallace
+
+Good morning, I read your article “How to Build a Low-tech Website” and enjoyed
+it. Most of the things I could think of you have already checked off. However,
+there are two quick wins that will shave down file size: minifying your CSS and
+further optimizing your images.
+
+Minify CSS
+
+Your stylesheet is 21 k at the moment, a minified version would be 16 k.
+
+Image Optimization
+
+Using a drag and drop image compressor (ImageOptim) I was able to shrink the 5
+images in the article without a loss in the quality. The savings range from 13%
+to 6.8%.
+
+Best,
+
+Erik Wallace
+
+Draco Metallium
+
+Hi! I know that the solar powered website is an old project, but I was
+
+wondering if it would be possible to still make some changes to the
+
+presentation.
+
+I love the look of the solar site and find it more comfortable to read
+
+than the standard one, but only when the battery is full or I disable
+
+javascript (which I can’t do on my phone). I find the change of the
+
+tint at half the page uncomfortable. I have found myself going to the
+
+nonsolar site just to have a consistent look across the screen.
+
+Could you please limit the battery charge to a bar a few pixels wide?
+
+Something like changing the battery div style to ´#battery{ position:
+
+fixed; bottom: 0; right: 0; width: 1em; background: #fff5d1;};´
+
+might be enough.
+
+Anyway, thanks for your articles! I find them thought provoking. I
+
+have changed some of my routines already. Thanks!
+
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+Draco Metallium
+
+Mirroronthewall
+
+Something to possibly blog about or create (don’t think I saw on the site), in
+trying to consume less internet bandwidth, some sites have a text-only mode,
+for example NPR: [285]https://text.npr.org/
+
+It’s often that URL format of text.[Address], like solar.lowtechmagazine.com to
+text.lowtechmagazine.com
+
+sometimes pictures just aren’t that necessary, sometimes they’re helpful
+
+Cheers
+
+O.Q. Olarte
+
+Hi Low-tech Magazine!
+
+I came across the “Can I Help?” section in your site and eventually stumbled
+upon the “SSL & Legacy browsers” section[286]1.
+
+Old machines can benefit from the Gemini Protocol[287]2, a new internet
+protocol that is text-based yet still secure. Since this is text-based, I think
+it would drastically reduce the power consumption required to host, serve, and
+fetch the data in this protocol.
+
+It’s written in Gemtext, a variety of Markdown. There are programs that can
+convert Markdown (or even HTML, I think) to gemtext, like lowdown[288]3.
+
+I guess the challenge would then be to format the content of Low-tech Magazine
+for gemtext. That is, if you consider this route.
+
+And finally, at its current state, old browsers can still access the site via
+terminal-based programs like w3m[289]4 or lynx[290]5 among others. That means
+old computers with these old browsers connected to the internet technically can
+still read your content.
+
+I hope this helps!
+
+Regards,
+
+O.Q. Olarte
+
+542.94KB
+[291] ↑
+
+[292]LOW←TECH MAGAZINE
+
+ • Server Stats
+
+ • Forecast
+
+ • Info
+
+ [293] About [294] Power [295] Our Team [296] Donate [297] Privacy Policy
+ • Contact
+
+ © Kris De Decker
+ solar [at] lowtechmagazine [dot] com
+
+ [298] [299] [300] [301] [302]
+
+
+References:
+
+[1] https://solar.lowtechmagazine.com/power/
+[2] https://solar.lowtechmagazine.com/
+[3] https://solar.lowtechmagazine.com/power/
+[4] https://solar.lowtechmagazine.com/
+[5] https://solar.lowtechmagazine.com/fr/
+[6] https://solar.lowtechmagazine.com/de/
+[7] https://solar.lowtechmagazine.com/nl/
+[8] https://solar.lowtechmagazine.com/es/
+[9] https://solar.lowtechmagazine.com/it/
+[10] https://solar.lowtechmagazine.com/pt/
+[11] https://solar.lowtechmagazine.com/pl/
+[12] https://solar.lowtechmagazine.com/ar/
+[13] https://solar.lowtechmagazine.com/vn/
+[14] https://solar.lowtechmagazine.com/ko/
+[15] https://solar.lowtechmagazine.com/about/
+[16] https://solar.lowtechmagazine.com/low-tech-solutions/
+[17] https://solar.lowtechmagazine.com/high-tech-problems/
+[18] https://solar.lowtechmagazine.com/obsolete-technology/
+[19] https://solar.lowtechmagazine.com/offline-reading/
+[20] https://solar.lowtechmagazine.com/archives/
+[21] https://solar.lowtechmagazine.com/donate/
+[22] https://www.notechmagazine.com/
+[23] https://d69baa34.sibforms.com/serve/MUIEANc2lrp0ZlxefJj9bGWkRWAP8XKI8G25tXyMryhx1Q6iKLoxg-A9u3QuJxksFS7rQuYNdNjVBqcJfwig9kXB6QzKRFg0KK2ZhiJjarVqjLKhFw2Ej58I5aLFMcgBWzD0MrDKgWiQgF_qMW1-rhMF_nsEY44QyiGRITSt0oJGZGZMjXkhgKH6t_x5-HgMgcnO1J4fSoQ_2iw-
+[24] https://solar.lowtechmagazine.com/feeds
+[25] https://solar.lowtechmagazine.com/fr/about/the-solar-website/
+[26] https://solar.lowtechmagazine.com/de/about/the-solar-website/
+[27] https://solar.lowtechmagazine.com/nl/about/the-solar-website/
+[28] https://solar.lowtechmagazine.com/es/about/the-solar-website/
+[29] https://solar.lowtechmagazine.com/about/the-solar-website/#why_website
+[30] https://solar.lowtechmagazine.com/about/the-solar-website/#offline
+[31] https://solar.lowtechmagazine.com/about/the-solar-website/#often
+[32] https://solar.lowtechmagazine.com/about/the-solar-website/#visit
+[33] https://solar.lowtechmagazine.com/about/the-solar-website/#how
+[34] https://solar.lowtechmagazine.com/about/the-solar-website/#hardware
+[35] https://solar.lowtechmagazine.com/about/the-solar-website/#old_website
+[36] https://solar.lowtechmagazine.com/about/the-solar-website/#who
+[37] https://solar.lowtechmagazine.com/about/the-solar-website/#help
+[38] https://solar.lowtechmagazine.com/about/the-solar-website/#comments
+[39] https://solar.lowtechmagazine.com/about/the-solar-website/#media
+[40] https://www.bcg.com/publications/2012/energy-environment-technology-industries-smarter-2020-role-ict-driving-sustainable-future.aspx
+[41] https://solar.lowtechmagazine.com/2015/10/why-we-need-a-speed-limit-for-the-internet/
+[42] http://www.greenpeace.org/usa/global-warming/click-clean/
+[43] https://solar.lowtechmagazine.com/2015/04/how-sustainable-is-pv-solar-power/
+[44] https://solar.lowtechmagazine.com/2017/09/how-not-to-run-a-modern-society-on-solar-and-wind-power-alone/
+[45] https://httparchive.org/reports/page-weight
+[46] https://www.researchgate.net/publication/224224694/download
+[47] https://solar.lowtechmagazine.com/2009/06/the-monster-footprint-of-digital-technology/
+[48] http://tonsky.me/blog/disenchantment/
+[49] https://github.com/lowtechmag/solar/wiki/Solar-Web-Design
+[50] https://homebrewserver.club/low-tech-website-howto.html#software
+[51] https://github.com/lowtechmag/solar
+[52] https://varia.zone/en/what-a-website-can-be.html
+[53] https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html
+[54] https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html
+[55] https://www.instagram.com/ddidak/
+[56] https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html
+[57] https://www.notechmagazine.com/2021/04/solar-powered-website-uptime-for-2020.html
+[58] https://solar.lowtechmagazine.com/power.html
+[59] https://solar.lowtechmagazine.com/offline-reading.html
+[60] https://homebrewserver.club/low-tech-website-howto.html
+[61] https://github.com/lowtechmag/solar/wiki/Solar-Web-Design
+[62] https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html
+[63] https://computingwithinlimits.org/2021/papers/limits21-abbing.pdf
+[64] https://homebrewserver.club/low-tech-website-howto.html#server
+[65] https://homebrewserver.club/low-tech-website-howto.html#configuring-the-webserver
+[66] https://blog.getpelican.com/
+[67] https://github.com/lowtechmag/solar
+[68] https://homebrewserver.club/low-tech-website-howto.html#network
+[69] https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html
+[70] http://www.krisdedecker.org/
+[71] http://motsuka.com/
+[72] https://roelof.info/
+[73] http://squishysystems.com/
+[74] https://homebrewserver.club/low-tech-website-howto.html#room-for-improvements
+[75] https://solar.lowtechmagazine.com/offline-reading.html
+[76] https://www.paypal.me/lowtechmagazine
+[77] https://www.patreon.com/lowtechmagazine
+[78] https://liberapay.com/lowtechmagazine/
+[79] http://outsideinradio.org/shows/how-to-build-a-solar-powered-website
+[80] https://newrepublic.com/article/155993/can-internet-survive-climate-change
+[81] https://www.fastcompany.com/90246767/the-future-of-web-design-is-less-not-more
+[82] https://walkerart.org/magazine/low-tech-magazine-kris-de-decker
+[83] https://html.energy/marie.html
+[84] https://news.ycombinator.com/item?id=18075143
+[85] https://www.treehugger.com/solar-technology/low-tech-magazine-switches-low-tech-low-carbon-website.html
+[86] https://www.neverapart.com/features/low-tech-kris-de-decker/
+[87] https://www.biblioteksforeningen.se/nyheter/reconsider-the-thinking-that-everything-should-become-digital/
+[88] https://hackaday.com/2018/10/08/perfecting-the-solar-powered-web-server/
+[89] https://tech.slashdot.org/story/18/10/02/1739237/this-solar-powered-low-tech-website-goes-offline-when-its-cloudy
+[90] https://irlpodcast.org/season5/episode3/
+[91] https://en.reset.org/blog/solar-powered-website-offering-vision-eco-friendly-internet-04232020
+[92] https://fontsinuse.com/uses/24504/low-tech-magazine-website
+[93] https://eyeondesign.aiga.org/low-tech-magazines-solar-powered-website-is-rewriting-the-rules-of-web-design/
+[94] https://www.wired.co.uk/article/youtube-digital-waste-interaction-design
+[95] https://www.cjr.org/innovations/low-tech-magazine.php
+[96] https://www.lsnglobal.com/big-ideas/article/22970/kris-de-decker-on-web-design-s-energy-efficient-future
+[97] https://news.ycombinator.com/item?id=19407847
+[98] https://news.ycombinator.com/item?id=20038619
+[99] https://calls.ars.electronica.art/prix2019/prixwinner/32502/
+[100] https://www.mcdbooks.com/electric_eel/issue-021
+[101] http://www.seabro.it/the-future-of-websites-how-one-site-has-gone-100-solar/
+[102] https://therestartproject.org/podcast/low-tech/
+[103] https://www.notechmagazine.com/2021/11/off-line-portal-to-solar-powered-website.html
+[104] http://solarprotocol.net/index.html
+[105] https://formafantasma.com/website
+[106] https://ontaardebeschaving.nl/openuren.html
+[107] http://postgrowth.art/
+[108] https://lowtechlab.org/en/news-blog/le-low-tech-lab-lance-son-site-internet-low-tech
+[109] https://branch.climateaction.tech/2020/10/15/designing-branch-sustainable-interaction-design-principles/
+[110] https://diament.uqam.ca/apropos/
+[111] https://louwrentius.com/
+[112] http://pleasureinscarcity.com/chapter/27
+[113] http://gauthierroussilhe.com/en/posts/convert-low-tech
+[114] https://www.feasta.org/2019/07/16/our-lighter-website/
+[115] http://fisksolar.ddns.net/
+[116] https://wp.nyu.edu/solarpoweredmedia/
+[117] https://framablog.org/2019/01/24/pour-un-web-frugal/
+[118] http://www.internetactu.net/a-lire-ailleurs/le-design-pour-lutter-contre-le-changement-climatique/
+[119] https://www.rtl.fr/actu/futur/environnement-un-site-internet-fonctionne-a-l-energie-solaire-7795101025
+[120] https://graphism.fr/quel-avenir-pour-les-sites-low-tech/
+[121] http://fing.org/IMG/pdf/Agenda-pour-un-futur-numerique-et-ecologique_Defi13.pdf
+[122] https://www.lassembleuse.fr/lowtech/2018/11/15/low-tech-mag.html
+[123] https://www.numerama.com/tech/424983-ce-site-est-tellement-low-tech-quil-est-hors-ligne-quand-il-ny-a-pas-de-soleil.html
+[124] https://retina.elpais.com/retina/2020/02/14/tendencias/1581676543_075092.html
+[125] http://catedratelefonica.uoc.edu/2018/10/10/low-tech-magazine-un-sitio-web-sostenible/?platform=hootsuite
+[126] https://www.ticbeat.com/innovacion/esta-pagina-web-funciona-con-energia-solar-y-consume-menos-gracias-a-su-diseno/
+[127] https://www.berliner-woche.de/gatow/c-umwelt/wie-du-einen-mit-photovoltaik-angetriebenen-webserver-baust_a182528
+[128] https://t3n.de/news/solarbetriebene-website-server-1116595/
+[129] https://reset.org/blog/diese-radikal-nachhaltige-webseite-zeigt-wie-ein-umweltfreundliches-internet-aussehen-koennte-0
+[130] https://www.heise.de/make/meldung/Low-Tech-Webseite-geht-offline-wenn-die-Wolken-aufziehen-4183293.html?hg=1&hgi=3&hgf=false
+[131] https://www.sueddeutsche.de/digital/nachhaltig-surfen-wie-das-internet-strom-frisst-1.4578748
+[132] https://media.ccc.de/v/bub2018-365-how_to_build_a_solar_powered_website#t=103
+[133] https://www.publico.pt/2019/05/05/tecnologia/noticia/revista-duvidas-tecnologia-1871255
+[134] http://www.brankocollin.nl/blog/2019/11/low-tech-magazine-gaat-terug-naar-zijn-roots
+[135] https://designmuseum.org/exhibitions/waste-age-what-can-design-do
+[136] http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad3b23825200b-750wi
+[137] https://solar.lowtechmagazine.com/dithers/sps_close.png
+[138] https://i.imgur.com/9Z5HkTk.jpg
+[139] https://computingwithinlimits.org/2021/papers/limits21-abbing.pdf
+[140] https://www.staticgen.com/
+[141] https://github.com/beakerbrowser/beaker
+[142] https://datproject.org/
+[143] https://taravancil.com/blog/how-i-publish-taravancil-com/
+[144] http://www.earth.org.uk/note-on-Raspberry-Pi-2-setup.html
+[145] https://web.archive.org/web/20180926204746/https://solar.lowtechmagazine.com/
+[146] https://cdnjs.com/libraries/jquery
+[147] http://xooyoozoo.github.io/yolo-octo-bugfixes/#mascot&jpg=s&bpg=s
+[148] https://leotindall.com/post/putting_this_blog_on_ipfs/
+[149] https://blindedcyclops.neocities.org/low-tech-image-tests/gallery.html
+[150] http://www.darktable.org/
+[151] https://www.gimp.org/
+[152] https://pngquant.org/
+[153] http://optipng.sourceforge.net/
+[154] https://code.jquery.com/jquery-3.3.1.min.js
+[155] https://jsfiddle.net/59kopbx3/
+[156] https://imgur.com/VsSji3A
+[157] https://github.com/imagemin/imagemin
+[158] https://css-tricks.com/the-complete-guide-to-lazy-loading-images/
+[159] https://varvy.com/pagespeed/leverage-browser-caching.html
+[160] https://unicode-search.net/unicode-namesearch.pl?term=cloud
+[161] https://unicode-search.net/unicode-namesearch.pl?term=sun
+[162] https://solar.lowtechmagazine.com/2013/12/high-speed-trains-are-killing-the-european-railway-network/
+[163] https://homebrewserver.club/low-tech-website-howto.html
+[164] https://docs.meshwith.me/
+[165] https://drive.google.com/drive/folders/1G8j1G9JyVuq8d8kz4EWUity2gmXKuuih?usp=sharing
+[166] http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad3b4657e200b-pi
+[167] http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad394c691200d-pi
+[168] http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad394c69e200d-pi
+[169] http://krisdedecker.typepad.com/.a/6a00e0099229e88833022ad36e9bd0200c-pi
+[170] https://solar.lowtechmagazine.com/2015/04/how-sustainable-is-pv-sol
+[171] http://solarpaneltilt.com/
+[172] https://www.quora.com/How-much-energy-would-be-saved-if-Google-used-a-black-screen-instead-of-white
+[173] https://staticman.net/
+[174] https://indieweb.org/Webmention
+[175] https://forum.armbian.com/topic/8315-daily-tech-related-news-diet/?do=findComment&comment=64064
+[176] https://forum.armbian.com/forum/26-research-guides-tutorials/
+[177] https://homebrewserver.club/low-tech-website-howto.html
+[178] https://tinypng.com/
+[179] https://homebrewserver.club/images/international-switchboard.jpg
+[180] https://wholesaler.alibaba.com/product-detail/CM2024-PWM-12v-24v-20a-solar_6
+[181] https://github.com/FLIF-hub/FLIF
+[182] https://developers.google.com/speed/webp/
+[183] https://www.raspberrypi.org/forums/viewtopic.php?t=179904
+[184] https://www.raspberrypi.org/forums/viewtopic.php?t=179904
+[185] http://www.industrialberry.com/ethernetberry-v-1-1/
+[186] http://www.clarkeology.com/wiki/#solar/power
+[187] https://www.sockmama.com/
+[188] https://homebrewserver.club/low-tech-website-howto.html#compression-of-transmitted-data
+[189] https://nginx.org/en/docs/https/ngx_https_gzip_static_module.html
+[190] https://independent.academia.edu/DaveEvans19
+[191] https://lapatineta.com/en/portfolio
+[192] https://solar.lowtechmagazine.com/2011/01/aerial-ropeways-automatic-cargo-transport-for-a-bargain.html%29
+[193] https://solar.lowtechmagazine.com/2013/12/high-speed-trains-are-killing-the-european-railway-network.html
+[194] https://tilde.town/~severak/
+[195] https://www.zonerama.com/metropolis/303066
+[196] https://crossposter.masto.donte.com.br/
+[197] https://en.wikipedia.org/wiki/GIF
+[198] https://www.youtube.com/watch?v=hBx3O55lTDw
+[199] https://www.youtube.com/watch?v=o2XEQZsXcIg
+[200] https://homebrewserver.club/low-tech-website-howto.html
+[201] https://github.com/google/guetzli/
+[202] https://github.com/mozilla/mozjpeg
+[203] https://homebrewserver.club/images/international-switchboard.jpg%29
+[204] https://github.com/google/zopfli/
+[205] https://homebrewserver.club/images/international-switchboard11.png%29
+[206] https://beakerbrowser.com/
+[207] https://www.scuttlebutt.nz/
+[208] https://www.manyver.se/
+[209] http://www.fefe.de/gatling/
+[210] http://nginx.org/en/docs/http/
+[211] https://github.com/KoljaWindel
+[212] https://homebrewserver.club/low-tech-website-howto.html#software
+[213] http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html
+[214] https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache
+[215] https://github.com/google/zopfli/blob/master/README.zopflipng
+[216] https://github.com/matisseverduyn/aureum
+[217] https://blog.octo.com/en/http-caching-with-nginx-and-memcached/
+[218] https://homebrewserver.club/low-tech-website-howto.html
+[219] http://solar.amosamos.net/
+[220] https://gitlab.com/Lightnin/amosamos.net
+[221] http://nearlyfreespeech.net/
+[222] http://solar.lowtechmagazine.com/
+[223] https://github.com/pmarinov
+[224] https://git.vvvvvvaria.org/rra/page_metadata
+[225] https://developer-blog.net/raspberry-pi-mit-sonnenenergie-betreiben-teil-4/
+[226] https://solar.lowtechmagazine.com/
+[227] https://en.wikipedia.org/wiki/Fediverse
+[228] https://hubzilla.org/
+[229] https://mademistakes.com/articles/jekyll-static-comments/
+[230] https://github.com/PigeonProtocolConsortium/pigeon-cli-ruby%29
+[231] https://github.com/PigeonProtocolConsortium/pigeon-spec
+[232] https://solar.lowtechmagazine.com/about.html
+[233] https://solar.lowtechmagazine.com/2018/09/how-to-build-a-low-tech-website.html
+[234] https://superuser.com/questions/483456/does-a-computer-screen-consume-more-power-to-display-black-or-white
+[235] https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-source-hardware
+[236] https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/smb_switches_poe/es-5104ph_v2/
+[237] https://www.lemoda.net/mod_rewrite/gzip-static/index.html
+[238] https://git.n07070.xyz/n07070/Solar-Server
+[239] https://www.datprotocol.com/
+[240] https://www.tinrocket.com/content/hyperdither/
+[241] http://optipng.sourceforge.net/
+[242] https://homebrewserver.club/low-tech-website-howto.html#compression-of-transmitted-data
+[243] https://caddyserver.com/
+[244] https://beakerbrowser.com/%29
+[245] https://web.dev/native-lazy-loading/
+[246] http://blr.design/
+[247] https://homebrewserver.club/low-tech-website-howto.html#sensible-comments-on-static-sites
+[248] https://blog.mro.name/2019/05/wp-to-hugo-making-of/
+[249] https://blog.mro.name/2009/07/nsurlcache-joke-iphone/
+[250] https://github.com/websperts/tinypng-cli
+[251] http://www.virtualzone.de/
+[252] https://closure-compiler.appspot.com/
+[253] https://www.codepile.net/pile/3m4jZRQ5
+[254] https://www.youtube.com/watch?v=oocbejOMXtA
+[255] https://en.wikipedia.org/wiki/Gemini_%28protocol%29
+[256] https://gemini.circumlunar.space/
+[257] https://github.com/kr1sp1n/awesome-gemini
+[258] http://www.wellobserve.com/index.html%29
+[259] http://www.wellobserve.com/blog/2020/04/01_CloudTravelClassics_03_TropicOfCancer.html
+[260] http://www.wellobserve.com/blog/2021/01/15_StaticBlogGenerator.html
+[261] https://solar.lowtechmagazine.com/
+[262] https://suelosolar.com/
+[263] https://www.torproject.org/
+[264] http://expyuzz4wqqyqhjn.onion/
+[265] http://events17.linuxfoundation.org/sites/events/files/slides/opdenacker-embedded-linux-size-reduction-techniques_0.pdf
+[266] https://linux-sunxi.org/Mainline_Kernel_Howto
+[267] https://linux-sunxi.org/Cpufreq
+[268] https://gemini.circumlunar.space/
+[269] http://mb7707.su/
+[270] http://mb7707.su/module/articles/articles.html
+[271] http://mb7707.su/other/handmades/handmades.html
+[272] http://mb7707.su/other/gallery/gallery.html
+[273] https://en.wikipedia.org/wiki/Gopher_%28protocol%29
+[274] https://redbean.dev/
+[275] http://redbean.justine.lol/
+[276] https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html#generic-scaling-governors
+[277] https://homebrewserver.club/low-tech-website-howto.html
+[278] https://github.com/mozilla/mozjpeg
+[279] https://en.m.wikipedia.org/wiki/PowerTOP
+[280] https://github.com/roeles/solarpi/blob/master/code/disable_usb.sh
+[281] https://github.com/roeles/solarpi
+[282] https://github.com/roeles/solarpi/blob/master/code/scdplus.cpp
+[283] https://solar.lowtechmagazine.com/2018/09/how-to-build-a-low-tech-website.html
+[284] https://purgecss.com/
+[285] https://text.npr.org/
+[286] https://homebrewserver.club/low-tech-website-howto.html#room-for-improvements
+[287] https://gemini.circumlunar.space/
+[288] https://kristaps.bsd.lv/lowdown/
+[289] http://w3m.sourceforge.net/
+[290] https://lynx.invisible-island.net/
+[291] https://solar.lowtechmagazine.com/about/the-solar-website/#top
+[292] https://solar.lowtechmagazine.com/
+[293] https://solar.lowtechmagazine.com/about/
+[294] https://solar.lowtechmagazine.com/power/
+[295] https://solar.lowtechmagazine.com/about/the-solar-website/{%20absLangURL%20"about/team/"%20}}
+[296] https://solar.lowtechmagazine.com/donate/
+[297] https://solar.lowtechmagazine.com/privacy/
+[298] https://solar.lowtechmagazine.com/feeds
+[299] https://d69baa34.sibforms.com/serve/MUIEANc2lrp0ZlxefJj9bGWkRWAP8XKI8G25tXyMryhx1Q6iKLoxg-A9u3QuJxksFS7rQuYNdNjVBqcJfwig9kXB6QzKRFg0KK2ZhiJjarVqjLKhFw2Ej58I5aLFMcgBWzD0MrDKgWiQgF_qMW1-rhMF_nsEY44QyiGRITSt0oJGZGZMjXkhgKH6t_x5-HgMgcnO1J4fSoQ_2iw-
+[300] https://www.patreon.com/lowtechmagazine
+[301] https://www.linkedin.com/in/krisdedecker/
+[302] https://www.youtube.com/@lowtechmagazine/videos
diff --git a/static/archive/surma-dev-e4sfuv.txt b/static/archive/surma-dev-e4sfuv.txt
@@ -0,0 +1,621 @@
+[1]← Back to home
+
+Ditherpunk — The article I wish I had about monochrome image dithering
+
+2021-01-04
+
+I always loved the visual aesthetic of dithering but never knew how it’s done.
+So I did some research. This article may contain traces of nostalgia and none
+of Lena.
+
+How did I get here? (You can skip this)
+
+I am late to the party, but I finally played [2]“Return of the Obra Dinn”, the
+most recent game by [3]Lucas Pope of [4]“Papers Please” fame. Obra Dinn is a
+story puzzler that I can only recommend, but what piqued my curiosity as a
+software engineer is that it is a 3D game (using the [5]Unity game engine) but
+rendered using only 2 colors with dithering. Apparently, this has been dubbed
+“Ditherpunk”, and I love that.
+
+[obradinn] Screenshot of “Return of the Obra Dinn”.
+
+Dithering, so my original understanding, was a technique to place pixels using
+only a few colors from a palette in a clever way to trick your brain into
+seeing many colors. Like in the picture, where you probably feel like there are
+multiple brightness levels when in fact there’s only two: Full brightness and
+black.
+
+The fact that I have never seen a 3D game with dithering like this probably
+stems from the fact that color palettes are mostly a thing of the past. You may
+remember running Windows 95 with 16 colors and playing games like “Monkey
+Island” on it.
+
+[win95] Windows 95 configured to use 16 colors. Now spend hours trying to find
+the right floppy disk with the drivers to get the “256 colors” or, gasp, “True
+Color” show up. [monkeyisland16] Screenshot of “The Secret of Monkey Island”
+using 16 colors.
+
+For a long time now, however, we have had 8 bits per channel per pixel,
+allowing each pixel on your screen to assume one of 16 million colors. With HDR
+and wide gamut on the horizon, things are moving even further away to ever
+requiring any form of dithering. And yet Obra Dinn used it anyway and rekindled
+a long forgotten love for me. Knowing a tiny bit about dithering from my work
+on [6]Squoosh, I was especially impressed with Obra Dinn’s ability to keep the
+dithering stable while I moved and rotated the camera through 3D space and I
+wanted to understand how it all worked.
+
+As it turns out, Lucas Pope wrote a [7]forum post where he explains which
+dithering techniques he uses and how he applies them to 3D space. He put
+extensive work into making the dithering stable when camera movements occur.
+Reading that forum post kicked me down the rabbit hole, which this blog post
+tries to summarize.
+
+Dithering
+
+What is Dithering?
+
+According to Wikipedia, “Dither is an intentionally applied form of noise used
+to randomize quantization error”, and is a technique not only limited to
+images. It is actually a technique used to this day on audio recordings, but
+that is yet another rabbit hole to fall into another time. Let’s dissect that
+definition in the context of images. First up: Quantization.
+
+Quantization
+
+Quantization is the process of mapping a large set of values to a smaller,
+usually finite, set of values. For the remainder of this article, I am going to
+use two images as examples:
+
+[dark-original] Example image #1: A black-and-white photograph of San
+Francisco’s Golden Gate Bridge, downscaled to 400x267 ([8]higher resolution).
+[light-original] Example image #2: A black-and-white photograph of San
+Francisco’s Bay Bridge, downscaled to 253x400 ([9]higher resolution).
+
+Both black-and-white photos use 256 different shades of gray. If we wanted to
+use fewer colors — for example just black and white to achieve monochromaticity
+— we have to change every pixel to be either pure black or pure white. In this
+scenario, the colors black and white are called our “color palette” and the
+process of changing pixels that do not use a color from the palette is called
+“quantization”. Because not all colors from the original images are in the
+color palette, this will inevitably introduce an error called the “quantization
+error”. The naïve solution is to quantizer each pixel to the color in the
+palette that is closest to the pixel’s original color.
+
+ Note: Defining which colors are “close to each other” is open to
+ interpretation and depends on how you measure the distance between two
+ colors. I suppose ideally we’d measure distance in a psycho-visual way, but
+ most of the articles I found simply used the euclidian distance in the RGB
+ cube, i.e. Δred2+Δgreen2+Δblue2\sqrt{\Delta\text{red}^2 + \Delta\text
+ {green}^2 + \Delta\text{blue}^2}Δred2+Δgreen2+Δblue2.
+
+With our palette only consisting of black and white, we can use the brightness
+of a pixel to decide which color to quantize to. A brightness of 0 means black,
+a brightness of 1 means white, everything else is in-between, ideally
+correlating with human perception such that a brightness of 0.5 is a nice
+mid-gray. To quantize a given color, we only need to check if the color’s
+brightness is greater or less than 0.5 and quantize to white and black
+respectively. Applying this quantization to the image above yields an...
+unsatisfying result.
+
+grayscaleImage.mapSelf(brightness =>
+ brightness > 0.5
+ ? 1.0
+ : 0.0
+);
+
+ Note: The code samples in this article are real but built on top of a
+ helper class GrayImageF32N0F8 I wrote for the [10]demo of this article.
+ It’s similar to the web’s [11]ImageData, but uses Float32Array, only has
+ one color channel, represents values between 0.0 and 1.0 and has a whole
+ bunch of helper functions. The source code is available in [12]the lab.
+
+[dark-quantized] [light-quantized] Each pixel has been quantized to the either
+black or white depending on its brightness.
+
+Gamma
+
+I had finished writing this article and just wanted to “quickly” look what a
+black-to-white gradient looks like with the different dithering algorithms. The
+results showed me that I failed to consider the thing that always becomes a
+problem when working with images: color spaces. I had written the sentence
+“ideally correlating with human perception” without actually following it
+myself.
+
+My [13]demo is implemented using web technologies, most notably <canvas> and
+ImageData, which are — at the time of writing — specified to use [14]sRGB. It’s
+an old color space specification (from 1996) whose value-to-color mapping was
+modeled to mirror the behavior of CRT monitors. While barely anyone uses CRTs
+these days, it’s still considered the “safe” color space that gets correctly
+displayed on every display. As such, it is the default on the web platform.
+However, sRGB is not linear, meaning that (0.5,0.5,0.5)(0.5, 0.5, 0.5)(0.5,0.5,
+0.5) in sRGB is not the color a human sees when you mix 50% of (0,0,0)(0, 0, 0)
+(0,0,0) and (1,1,1)(1, 1, 1)(1,1,1). Instead, it’s the color you get when you
+pump half the power of full white through your Cathode-Ray Tube (CRT).
+
+[gradient-srgb] A gradient and how it looks when dithered in sRGB color space.
+
+
+ Warning: I set image-rendering: pixelated; on most of the images in this
+ article. This allows you to zoom in and truly see the pixels. However, on
+ devices with fraction devicePixelRatio, this might introduce artifacts. If
+ in doubt, open the image separate in a new tab.
+
+As this image shows, the dithered gradient gets bright way too quickly. If we
+want 0.5 be the color in the middle of pure black and white (as perceived by a
+human), we need to convert from sRGB to linear RGB space, which can be done
+with a process called “gamma correction”. Wikipedia lists the following
+formulas to convert between sRGB and linear RGB.
+
+srgbToLinear(b)={b12.92b≤0.04045(b+0.0551.055)γotherwiselinearToSrgb(b)=
+{12.92⋅bb≤0.00313081.055⋅b1γ−0.055otherwise(γ=2.4)\begin{array}{rcl} \text
+{srgbToLinear}(b) & = & \left\{\begin{array}{ll} \frac{b}{12.92} & b \le
+0.04045 \\ \left( \frac{b + 0.055}{1.055}\right)^{\gamma} & \text{otherwise} \
+end{array}\right.\\ \text{linearToSrgb}(b) & = & \left\{\begin{array}{ll} 12.92
+\cdot b & b \le 0.0031308 \\ 1.055 \cdot b^\frac{1}{\gamma} - 0.055 & \text
+{otherwise} \end{array}\right.\\ (\gamma = 2.4) \end{array}\\ srgbToLinear(b)
+linearToSrgb(b)(γ=2.4)=={12.92b(1.055b+0.055)γb≤0.04045otherwise{12.92⋅b1
+.055⋅bγ1−0.055b≤0.0031308otherwise
+
+Formulas to convert between sRGB and linear RGB color space. What beauties they
+are 🙄. So intuitive.
+
+With these conversions in place, dithering produces (more) accurate results:
+
+[gradient-linear] A gradient and how it looks when dithered in linear RGB color
+space.
+
+Random noise
+
+Back to Wikipedia’s definition of dithering: “Intentionally applied form of
+noise used to randomize quantization error”. We got the quantization down, and
+now it says to add noise. Intentionally.
+
+Instead of quantizing each pixel directly, we add noise with a value between
+-0.5 and 0.5 to each pixel. The idea is that some pixels will now be quantized
+to the “wrong” color, but how often that happens depends on the pixel’s
+original brightness. Black will always remain black, white will always remain
+white, a mid-gray will be dithered to black roughly 50% of the time.
+Statistically, the overall quantization error is reduced and our brains are
+eager to do the rest and help you see the, uh, big picture.
+
+grayscaleImage.mapSelf(brightness =>
+ brightness + (Math.random() - 0.5) > 0.5
+ ? 1.0
+ : 0.0
+);
+
+[dark-random] [light-random] Random noise [-0.5; 0.5] has been added to each
+pixel before quantization.
+
+I found this quite surprising! It is by no means good — video games from the
+90s have shown us that we can do better — but this is a very low effort and
+quick way to get more detail into a monochrome image. And if I was to take
+“dithering” literally, I’d end my article here. But there’s more…
+
+Ordered Dithering
+
+Instead of talking about what kind of noise to add to an image before
+quantizing it, we can also change our perspective and talk about adjusting the
+quantization threshold.
+
+// Adding noise
+grayscaleImage.mapSelf(brightness =>
+ brightness + Math.random() - 0.5 > 0.5
+ ? 1.0
+ : 0.0
+);
+
+// Adjusting the threshold
+grayscaleImage.mapSelf(brightness =>
+ brightness > Math.random()
+ ? 1.0
+ : 0.0
+);
+
+In the context of monochrome dithering, where the quantization threshold is
+0.5, these two approaches are equivalent:
+
+brightness+rand()−0.5>0.5⇔brightness>1.0−rand()⇔brightness>rand()\begin{array}
+{} & \mathrm{brightness} + \mathrm{rand}() - 0.5 & > & 0.5 \\ \Leftrightarrow &
+\mathrm{brightness} & > & 1.0 - \mathrm{rand}() \\ \Leftrightarrow & \mathrm
+{brightness} &>& \mathrm{rand}() \end{array} ⇔⇔brightness+rand()−0.5brightnes
+sbrightness>>>0.51.0−rand()rand()
+
+The upside of this approach is that we can talk about a “threshold map”.
+Threshold maps can be visualized to make it easier to reason about why a
+resulting image looks the way it does. They can also be precomputed and reused,
+which makes the dithering process deterministic and parallelizable per pixel.
+As a result, the dithering can happen on the GPU as a shader. This is what Obra
+Dinn does! There are a couple of different approaches to generating these
+threshold maps, but all of them introduce some kind of order to the noise that
+is added to the image, hence the name “ordered dithering”.
+
+The threshold map for the random dithering above, literally a map full of
+random thresholds, is also called “white noise”. The name comes from a term in
+signal processing where every frequency has the same intensity, just like in
+white light.
+
+[whitenoise] The threshold map for O.G. dithering is, by definition, white
+noise.
+
+Bayer Dithering
+
+“Bayer dithering” uses a Bayer matrix as the threshold map. They are named
+after Bryce Bayer, inventor of the [15]Bayer filter, which is in use to this
+day in digital cameras. Each pixel on the sensor can only detect brightness,
+but by cleverly arranging colored filters in front of the individual pixels, we
+can reconstruct color images through [16]demosaicing. The pattern for the
+filters is the same pattern used in Bayer dithering.
+
+Bayer matrices come in various sizes which I ended up calling “levels”. Bayer
+Level 0 is 2×22 \times 22×2 matrix. Bayer Level 1 is a 4×44 \times 44×4 matrix.
+Bayer Level nnn is a 2n+1×2n+12^{n+1} \times 2^{n+1}2n+1×2n+1 matrix. A level
+nnn matrix can be recursively calculated from level n−1n-1n−1 (although
+Wikipedia also lists an [17]per-cell algorithm). If your image happens to be
+bigger than your bayer matrix, you can tile the threshold map.
+
+Bayer(0)=(0231)\begin{array}{rcl} \text{Bayer}(0) & = & \left( \begin{array}
+{cc} 0 & 2 \\ 3 & 1 \\ \end{array} \right) \\ \end{array} Bayer(0)=(0321)
+
+Bayer(n)=(4⋅Bayer(n−1)+04⋅Bayer(n−1)+24⋅Bayer(n−1)+34⋅Bayer(n−1)+1)\begin
+{array}{c} \text{Bayer}(n) = \\ \left( \begin{array}{cc} 4 \cdot \text{Bayer}
+(n-1) + 0 & 4 \cdot \text{Bayer}(n-1) + 2 \\ 4 \cdot \text{Bayer}(n-1) + 3 & 4
+\cdot \text{Bayer}(n-1) + 1 \\ \end{array} \right) \end{array} Bayer(n)=(4⋅
+Bayer(n−1)+04⋅Bayer(n−1)+34⋅Bayer(n−1)+24⋅Bayer(n−1)+1)
+
+Recursive definition of Bayer matrices.
+
+A level nnn Bayer matrix contains the numbers 000 to 22n+22^{2n+2}22n+2. Once
+you normalize the Bayer matrix, i.e. divide by 22n+22^{2n+2}22n+2, you can use
+it as a threshold map:
+
+const bayer = generateBayerLevel(level);
+grayscaleImage.mapSelf((brightness, { x, y }) =>
+ brightness > bayer.valueAt(x, y, { wrap: true })
+ ? 1.0
+ : 0.0
+);
+
+One thing to note: Bayer dithering using matrices as defined above will render
+an image lighter than it originally was. For example: An area where every pixel
+has a brightness of 1255=0.4%\frac{1}{255} = 0.4\%2551=0.4%, a level 0 Bayer
+matrix of size 2×22\times22×2 will make one out of the four pixels white,
+resulting in an average brightness of 25%25\%25%. This error gets smaller with
+higher Bayer levels, but a fundamental bias remains.
+
+[bayerbias] The almost-black areas in the image are getting noticeably
+brighter.
+
+In our dark test image, the sky is not pure black and made significantly
+brighter when using Bayer Level 0. While it gets better with higher levels, an
+alternative solution is to flip the bias and make images render darker by
+inverting the way we use the Bayer matrix:
+
+const bayer = generateBayerLevel(level);
+grayscaleImage.mapSelf((brightness, { x, y }) =>
+ // 👇
+ brightness > 1 - bayer.valueAt(x, y, { wrap: true })
+ ? 1.0
+ : 0.0
+);
+
+I have used the original Bayer definition for the light image and the inverted
+version for the dark image. I personally found Level 1 and 3 the most
+aesthetically pleasing.
+
+[dark-bayer0] [light-bayer0] Bayer Dithering Level 0. [dark-bayer1]
+[light-bayer1] Bayer Dithering Level 1. [dark-bayer2] [light-bayer2] Bayer
+Dithering Level 2. [dark-bayer3] [light-bayer3] Bayer Dithering Level 3.
+
+Blue noise
+
+Both white noise and Bayer dithering have drawbacks, of course. Bayer
+dithering, for example, is very structured and will look quite repetitive,
+especially at lower levels. White noise is random, meaning that there
+inevitably will be clusters of bright pixels and voids of darker pixels in the
+threshold map. This can be made more obvious by squinting or, if that is too
+much work for you, through blurring the threshold map algorithmically. These
+clusters and voids can affect the output of the dithering process negatively.
+If darker areas of the image fall into one of the clusters, details will get
+lost in the dithered output (and vice-versa for brighter areas falling into
+voids).
+
+[whitenoiseblur] Clear clusters and voids remain visible even after applying a
+Gaussian blur (σ = 1.5).
+
+There is a variant of noise called “blue noise”, that addresses this issue. It
+is called blue noise because higher frequencies have higher intensities
+compared to the lower frequencies, just like blue light. By removing or
+dampening the lower frequencies, cluster and voids become less pronounced. Blue
+noise dithering is just as fast to apply to an image as white noise dithering —
+it’s just a threshold map in the end — but generating blue noise is a bit
+harder and expensive.
+
+The most common algorithm to generate blue noise seems to be the
+“void-and-cluster method” by [18]Robert Ulichney. Here is the [19]original
+whitepaper. I found the way the algorithm is described quite unintuitive and,
+now that I have implemented it, I am convinced it is explained in an
+unnecessarily abstract fashion. But it is quite clever!
+
+The algorithm is based on the idea that you can find a pixel that is part of
+cluster or a void by applying a [20]Gaussian Blur to the image and finding the
+brightest (or darkest) pixel in the blurred image respectively. After
+initializing a black image with a couple of randomly placed white pixels, the
+algorithm proceeds to continuously swap cluster pixels and void pixels to
+spread the white pixels out as evenly as possible. Afterwards, every pixel gets
+a number between 0 and n (where n is the total number of pixels) according to
+their importance for forming clusters and voids. For more details, see the [21]
+paper.
+
+My implementation works fine but is not very fast, as I didn’t spend much time
+optimizing. It takes about 1 minute to generate a 64×64 blue noise texture on
+my 2018 MacBook, which is sufficient for these purposes. If something faster is
+needed, a promising optimization would be to apply the Gaussian Blur not in the
+spatial domain but in the frequency domain instead.
+
+ Excursion: Of course knowing this nerd-sniped me into implementing it. The
+ reason this optimization is so promising is because convolution (which is
+ the underlying operation of a Gaussian blur) has to loop over each field of
+ the Gaussian kernel for each pixel in the image. However, if you convert
+ both the image as well as the Gaussian kernel to the frequency domain
+ (using one of the many Fast Fourier Transform algorithms), convolution
+ becomes an element-wise multiplication. Since my targeted blue noise size
+ is a power of two, I could implement the well-explored [22]in-place variant
+ of the Cooley-Tukey FFT algorithm. After [23]some initial hickups, it did
+ end up cutting the blue noise generation time by 50%. I still wrote pretty
+ garbage-y code, so there’s a lot more to room for optimizations.
+
+[bluenoiseblur] A 64×64 blue noise with a Gaussian blur applied (σ = 1.5). No
+clear structures remain.
+
+As blue noise is based on a Gaussian Blur, which is calculated on a torus (a
+fancy way of saying that Gaussian blur wraps around at the edges), blue noise
+will also tile seamlessly. So we can use the 64×64 blue noise and repeat it to
+cover the entire image. Blue noise dithering has a nice, even distribution
+without showing any obvious patterns, balancing rendering of details and
+organic look.
+
+[dark-bluenoise] [light-bluenoise] Blue noise dithering.
+
+Error diffusion
+
+All the previous techniques rely on the fact that quantization errors will
+statistically even out because the thresholds in the threshold maps are
+uniformly distributed. A different approach to quantization is the concept of
+error diffusion, which is most likely what you have read about if you have ever
+researched image dithering before. In this approach we don’t just quantize and
+hope that on average the quantization error remains negligible. Instead, we
+measure the quantization error and diffuse the error onto neighboring pixels,
+influencing how they will get quantized. We are effectively changing the image
+we want to dither as we go along. This makes the process inherently sequential.
+
+ Foreshadowing: One big advantage of error diffusion algorithms that we
+ won’t touch on in this post is that they can handle arbitrary color
+ palettes, while ordered dithering requires your color palette to be evenly
+ spaced. More on that another time.
+
+Almost all error diffusion ditherings that I am going to look at use a
+“diffusion matrix”, which defines how the quantization error from the current
+pixel gets distributed across the neighboring pixels. For these matrices it is
+often assumed that the image’s pixels are traversed top-to-bottom,
+left-to-right — the same way us westerners read text. This is important as the
+error can only be diffused to pixels that haven’t been quantized yet. If you
+find yourself traversing an image in a different order than the diffusion
+matrix assumes, flip the matrix accordingly.
+
+“Simple” 2D error diffusion
+
+The naïve approach to error diffusion shares the quantization error between the
+pixel below the current one and the one to the right, which can be described
+with the following matrix:
+
+(∗0.50.50)\left(\begin{array}{cc} * & 0.5 \\ 0.5 & 0 \\ \end{array} \right) (∗0
+.50.50)
+
+Diffusion matrix that shares half the error to 2 neightboring pixels, * marking
+the current pixel.
+
+The diffusion algorithm visits each pixel in the image (in the right order!),
+quantizes the current pixel and measures the quantization error. Note that the
+quantization error is signed, i.e. it can be negative if the quantization made
+the pixel brighter than the original brightness value. We then add fractions of
+the quantization error to neighboring pixels as specified by the matrix. Rinse
+and repeat.
+
+Error diffusion visualized step by step.
+
+This animation is supposed to visualize the algorithm, but won’t be able to
+show that the dithered result resembles the original. 4×4 pixels are hardly
+enough do diffuse and average out quantization errors. But it does show that if
+a pixel is made brighter during quantization, neighboring pixels will be made
+darker to make up for it (and vice-versa).
+
+[dark-simple2d] [light-simple2d] Simple 2D Error Diffusion Dithering.
+
+However, the simplicity of the diffusion matrix is prone to generating
+patterns, like the line-like patterns you can see in the test images above.
+
+Floyd-Steinberg
+
+Floyd-Steinberg is arguably the most well-known error diffusion algorithm, if
+not even the most well-known dithering algorithm. It uses a more elaborate
+diffusion matrix to distribute the quantization error to all directly
+neighboring, unvisited pixels. The numbers are carefully chosen to prevent
+repeating patterns as much as possible.
+
+116⋅(∗7351)\frac{1}{16} \cdot \left(\begin{array} {} & * & 7 \\ 3 & 5 & 1 \\ \
+end{array} \right) 161⋅(3∗571)
+
+Diffusion matrix by Robert W. Floyd and Louis Steinberg.
+
+Floyd-Steinberg is a big improvement as it prevents a lot of patterns from
+forming. However, larger areas with little texture can still end up looking a
+bit unorganic.
+
+[dark-floydsteinberg] [light-floydsteinberg] Floyd-Steinberg Error Diffusion
+Dithering.
+
+Jarvis-Judice-Ninke
+
+Jarvis, Judice and Ninke take an even bigger diffusion matrix, distributing the
+error to more pixels than just immediately neighboring ones.
+
+148⋅(∗753575313531)\frac{1}{48} \cdot \left(\begin{array} {} & {} & * & 7 & 5 \
+\ 3 & 5 & 7 & 5 & 3 \\ 1 & 3 & 5 & 3 & 1 \\ \end{array} \right) 481⋅⎝⎛3153∗
+75753531⎠⎞
+
+Diffusion matrix by J. F. Jarvis, C. N. Judice, and W. H. Ninke of Bell Labs.
+
+Using this diffusion matrix, patterns are even less likely to emerge. While the
+test images still show some line like patterns, they are much less distracting
+now.
+
+[dark-jarvisjudiceninke] [light-jarvisjudiceninke] Jarvis’, Judice’s and
+Ninke’s dithering.
+
+Atkinson Dither
+
+Atkinson dithering was developed at Apple by Bill Atkinson and gained notoriety
+on on early Macintosh computers.
+
+18⋅(∗111111)\frac{1}{8} \cdot \left(\begin{array}{} & * & 1 & 1 \\ 1 & 1 & 1 &
+\\ & 1 & & \\ \end{array} \right) 81⋅⎝⎛1∗11111⎠⎞
+
+Diffusion matrix by Bill Atkinson.
+
+It’s worth noting that the Atkinson diffusion matrix contains six ones, but is
+normalized using 18\frac{1}{8}81, meaning it doesn’t diffuse the entire error
+to neighboring pixels, increasing the perceived contrast of the image.
+
+[dark-atkinson] [light-atkinson] Atkinson Dithering.
+
+Riemersma Dither
+
+To be completely honest, the Riemersma dither is something I stumbled upon by
+accident. I found an [24]in-depth article while I was researching the other
+dithering algorithms. It doesn’t seem to be widely known, but I really like the
+way it looks and the concept behind it. Instead of traversing the image
+row-by-row it traverses the image with a [25]Hilbert curve. Technically, any
+[26]space-filling curve would do, but the Hilbert curve came recommended and is
+[27]rather easy to implement using generators. Through this it aims to take the
+best of both ordered dithering and error diffusion dithering: Limiting the
+number of pixels a single pixel can influence together with the organic look
+(and small memory footprint).
+
+[hilbertcurve] Visualization of the 256x256 Hilbert curve by making pixels
+brighter the later they are visited by the curve.
+
+The Hilbert curve has a “locality” property, meaning that the pixels that are
+close together on the curve are also close together in the picture. This way we
+don’t need to use an error diffusion matrix but rather a diffusion sequence of
+length nnn. To quantize the current pixel, the last nnn quantization errors are
+added to the current pixel with weights given in the diffusion sequence. In the
+article they use an exponential falloff for the weights — the previous pixel’s
+quantization error getting a weight of 1, the oldest quantization error in the
+list a small, chosen weight rrr. This results in the following formula for the
+iiith weight:
+
+weight[i]=r−in−1\text{weight}[i] = r^{-\frac{i}{n-1}} weight[i]=r−n−1i
+
+The article recommends r=116r = \frac{1}{16}r=161 and a minimum list length of
+n=16n = 16n=16, but for my test image I found r=18r = \frac{1}{8}r=81 and n=
+32n = 32n=32 to be better looking.
+
+[dark-riemersma] [light-riemersma]
+
+Riemersma dither with r=18r = \frac{1}{8}r=81 and n=32n = 32n=32.
+
+The dithering looks extremely organic, almost as good as blue noise dithering.
+At the same time it is easier to implement than both of the previous ones. It
+is, however, still an error diffusion dithering algorithm, meaning it is
+sequential and not suitable to run on a GPU.
+
+💛 Blue noise, Bayer & Riemersma
+
+As a 3D game, Obra Dinn had to use ordered dithering to be able to run it as a
+shader. It uses both Bayer dithering and blue noise dithering which I also
+think are the most aesthetically pleasing choices. Bayer dithering shows a bit
+more structure while blue noise looks very natural and organic. I am also
+particularly fond of the Riemersma dither and I want to explore how it holds up
+when there are multiple colors in the palette.
+
+Obra Dinn uses blue noise dithering for most of the environment. People and
+other objects of interest are dithered using Bayer, which forms a nice visual
+contrast and makes them stand out without breaking the games overall aesthetic.
+Again, more on his reasoning as well his solution to handling camera movement
+in his [28]forum post.
+
+If you want to try different dithering algorithms on one of your own images,
+take a look at my [29]demo that I wrote to generate all the images in this blog
+post. Keep in mind that these are not the fastest. If you decide to throw your
+20 megapixel camera JPEG at this, it will take a while.
+
+ Note: It seems I am hitting a de-opt in Safari. My blue noise generator
+ takes ~30 second in Chrome, but takes >20 minutes Safari. It is
+ considerably quicker in Safari Tech Preview.
+
+I am sure this super niche, but I enjoyed this rabbit hole. If you have any
+opinions or experiences with dithering, I’d love to hear them.
+
+Thanks & other sources
+
+Thanks to [30]Lucas Pope for his games and the visual inspiration.
+
+Thanks to [31]Christoph Peters for his excellent [32]article on blue noise
+generation.
+
+[33]← Back to home [surma]
+
+Surma
+
+DX at Shopify. Web Platform Advocate.
+Craving simplicity, finding it nowhere.
+“A bit of a ‘careless eager student’ archetype” according to HN.
+Internetrovert 🏳️🌈 He/him.
+
+[34] twitter [35] mastodon [36] github [37] instagram [38] keybase [39] podcast
+[40] rss [41]Licenses
+
+References:
+
+[1] https://surma.dev/
+[2] https://obradinn.com/
+[3] https://twitter.com/dukope
+[4] https://papersplea.se/
+[5] https://unity.com/
+[6] https://squoosh.app/
+[7] https://forums.tigsource.com/index.php?topic=40832.msg1363742#msg1363742
+[8] https://surma.dev/things/ditherpunk/dark-hires.jpg
+[9] https://surma.dev/things/ditherpunk/light-hires.jpg
+[10] https://surma.dev/lab/ditherpunk/lab
+[11] https://developer.mozilla.org/en-US/docs/Web/API/ImageData
+[12] https://surma.dev/lab/ditherpunk
+[13] https://surma.dev/lab/ditherpunk/lab
+[14] https://en.wikipedia.org/wiki/SRGB
+[15] https://en.wikipedia.org/wiki/Bayer_filter
+[16] https://en.wikipedia.org/wiki/Demosaicing
+[17] https://en.wikipedia.org/wiki/Ordered_dithering#Pre-calculated_threshold_maps
+[18] http://ulichney.com/
+[19] https://surma.dev/things/ditherpunk/bluenoise-1993.pdf
+[20] https://en.wikipedia.org/wiki/Gaussian_blur
+[21] https://surma.dev/things/ditherpunk/bluenoise-1993.pdf
+[22] https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm#Data_reordering,_bit_reversal,_and_in-place_algorithms
+[23] https://twitter.com/DasSurma/status/1341203941904834561
+[24] https://www.compuphase.com/riemer.htm
+[25] https://en.wikipedia.org/wiki/Hilbert_curve
+[26] https://en.wikipedia.org/wiki/Space-filling_curve
+[27] https://twitter.com/DasSurma/status/1343569629369786368
+[28] https://forums.tigsource.com/index.php?topic=40832.msg1363742#msg1363742
+[29] https://surma.dev/lab/ditherpunk/lab
+[30] https://twitter.com/dukope
+[31] https://twitter.com/momentsincg
+[32] http://momentsingraphics.de/BlueNoise.html
+[33] https://surma.dev/
+[34] https://twitter.com/dassurma
+[35] https://mastodon.social/@surma
+[36] https://github.com/surma
+[37] https://instagram.com/dassurma
+[38] https://keybase.io/surma
+[39] https://http203.libsyn.com/
+[40] https://surma.dev/index.xml
+[41] https://surma.dev/licenses/
diff --git a/static/archive/www-bjornjohansen-com-hqud3x.txt b/static/archive/www-bjornjohansen-com-hqud3x.txt
@@ -0,0 +1,334 @@
+[1]Skip to content
+
+[2]{bjørn:johansen}
+
+☆ Not an expert. Probably wrong.
+
+Close collapsed
+
+ • [4]Home
+ • [5]About me
+ • [6]Privacy Policy
+
+Menu expanded
+
+Encrypt and decrypt a file using SSH keys
+
+[encrypt]
+
+If you have someone’s public SSH key, you can use OpenSSL to safely encrypt a
+file and send it to them over an insecure connection (i.e. the internet). They
+can then use their private key to decrypt the file you sent.
+
+If you encrypt/decrypt files or messages on more than a one-off occasion, you
+should really use GnuPGP as that is a much better suited tool for this kind of
+operations. But if you already have someone’s public SSH key, it can be
+convenient to use it, and it is safe.
+
+There is a limit to the maximum length of a message – i.e. size of a file –
+that can be encrypted using asymmetric RSA public key encryption keys (which is
+what SSH keys are). For this reason, we’ll actually generate a 256 bit key to
+use for symmetric AES encryption and then encrypt/decrypt that symmetric AES
+key with the asymmetric RSA keys. This is how encrypted connections usually
+work, by the way.
+
+Encrypt a file using a public SSH key
+
+Generate the symmetric key (32 bytes gives us the 256 bit key):
+
+$ openssl rand -out secret.key 32
+
+You should only use this key this one time, by the way. If you send something
+to the recipient at another time, don’t reuse it.
+
+Encrypt the file you’re sending, using the generated symmetric key:
+
+$ openssl aes-256-cbc -in secretfile.txt -out secretfile.txt.enc -pass file:secret.key
+
+In this example secretfile.txt is the unencrypted secret file, and
+secretfile.txt.enc is the encrypted file. The encrypted file can be named
+whatever you like.
+
+Encrypt the symmetric key, using the recipient’s public SSH key:
+
+$ openssl rsautl -encrypt -oaep -pubin -inkey <(ssh-keygen -e -f recipients-key.pub -m PKCS8) -in secret.key -out secret.key.enc
+
+Replace recipients-key.pub with the recipient’s public SSH key.
+
+Delete the unencrypted symmetric key, so you don’t leave it around:
+
+$ rm secret.key
+
+Now you can send the encrypted secret file (secretfile.txt.enc) and the
+encrypted symmetric key (secret.key.enc) to the recipient. It is even safe to
+upload the files to a public file sharing service and tell the recipient to
+download them from there.
+
+Decrypt a file encrypted with a public SSH key
+
+First decrypt the symmetric.key:
+
+$ openssl rsautl -decrypt -oaep -inkey ~/.ssh/id_rsa -in secret.key.enc -out secret.key
+
+The recipient should replace ~/.ssh/id_rsa with the path to their secret key if
+needed. But this is the path to where it usually is located.
+
+Now the secret file can be decrypted, using the symmetric key:
+
+$ openssl aes-256-cbc -d -in secretfile.txt.enc -out secretfile.txt -pass file:secret.key
+
+Again, here the encrypted file is secretfile.txt.enc and the unencrypted file
+will be named secretfile.txt
+
+Posted by[8]Bjørn Johansen[9]January 5, 2017November 18, 2022Posted in[10]
+SecurityTags:[11]encryption, [12]howto, [13]openssl, [14]security
+
+Published by Bjørn Johansen
+
+Bjørn has been a full-time web developer since 2001, and have during those
+years touched many areas including consulting, training, project management,
+client support, and DevOps. He has worked with WordPress for more than 16
+years, and he is a plugin author, core contributor, WordCamp speaker, WordCamp
+co-organizer and Translation Editor for Norwegian Bokmål. [15] View all posts
+by Bjørn Johansen
+
+Post navigation
+
+[16]Previous Post Previous post:
+Flexible Content Fields in Field Manager
+[17]Next Post Next post:
+Keep the internet healthy – Internet for people, not profit.
+
+20 Comments
+
+ 1. [84ea] bob says:
+ [18]May 10, 2017 at 23:39
+
+ * Why are you generating 192 bytes when only 32 are needed for the AES-256
+ symmetric key?
+
+ * Use OAEP (as PKCS#1 v1.5 is deterministic) when encrypting your symmetric
+ key, otherwise two identical keys will have the same ciphertext. (chosen
+ plaintext attack)
+
+ 1. [21e2] Bjørn Johansen says:
+ [19]May 11, 2017 at 20:06
+
+ * I … I … have no other explanation that I must have had temporary
+ brain damage. I mixed up bits and bytes! :-o Well, at least generating
+ 1536 bits for the “password” didn’t do any harm :-)
+
+ * You’re absolutely right. PKCS#1 v1.5 should only be used for signing,
+ not for encryption. I’ve updated the commands now.
+
+ Thank you so much for your comment, I really appreciate it!
+
+ 2. [5226] [20]Rodrigo Siqueira says:
+ [21]September 2, 2022 at 16:04
+
+ I tried the suggested encryption command (openssl aes-256-cbc) but got
+ the warning result:
+ *** WARNING : deprecated key derivation used.
+ Using -iter or -pbkdf2 would be better.
+
+ 2. [1863] guest says:
+ [22]July 30, 2017 at 11:37
+
+ $ openssl rand 32 -out secret.key
+ rand: Use -help for summary.
+
+ 1. [1863] guest says:
+ [23]July 30, 2017 at 11:37
+
+ command not working.
+
+ 3. [5e78] Stephen Fromm says:
+ [24]August 22, 2017 at 23:00
+
+ “-pass file:secret.key”
+
+ Reading around the web, plus looking at the docs, it seems to me that -pass
+ is not for inputting the key, but rather inputting a password, from which
+ both the key and the IV for CBC are derived. This isn’t good, insofar there
+ seems to be a consensus that OpenSSL’s key derivation isn’t all that good.
+
+ 1. [21e2] Bjørn Johansen says:
+ [25]August 22, 2017 at 23:07
+
+ We are using the 256 bit symmetric “key” as the password. The key to
+ the file containing the password is the asymmetric SSH key.
+
+ 1. [5e78] Stephen Fromm says:
+ [26]August 23, 2017 at 20:28
+
+ Right. I’m merely noting that the password is not the symmetric
+ key. Rather, OpenSSL uses the password to generate both the actual
+ symmetric key and the IV. (In that sense, the password does not
+ have to be 256 bits, except insofar as it’s probably a good idea
+ for it to have as much entropy as the actual key that will be
+ derived from it.)
+
+ This distinction isn’t entirely unimportant from a practical
+ standpoint, as apparently many people in the security community
+ don’t like OpenSSL’s method for deriving the key from the password.
+
+ 2. [0808] Jarvis says:
+ [27]March 7, 2019 at 00:08
+
+ Exactly! That was my first thought when I saw it mentioned as the key
+ used for symmetric encryption. You are absolutely right Stephen. The
+ pass argument is not the symmetric encryption key. It is a password
+ from which key and IV are derived.
+
+ 4. [5e78] Stephen Fromm says:
+ [28]August 28, 2017 at 16:12
+
+ I do want to add—don’t take my comment the wrong way. This page was
+ extremely useful to me. There was stuff on StackOverflow, but much of it
+ wasn’t quite as concrete as the solution you posted here.
+
+ 1. [21e2] Bjørn Johansen says:
+ [29]September 2, 2017 at 05:51
+
+ Thank you!
+
+ 5. [e853] Nidhi says:
+ [30]September 25, 2017 at 08:36
+
+ Here we are encrypting and decrypting a file. What if we need to encrypt
+ and decrypt a password saved in that file instead. Can we do it using the
+ same commands?
+
+ 6. [dfc6] [31]Robert R says:
+ [32]February 28, 2018 at 18:27
+
+ Using:
+ openssl rand 32 -out secret.key
+
+ I sometimes got these errors:
+ bad decrypt
+ 140625532782232:error:06065064:digital envelope
+ routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:531:
+
+ I did not get those errors if i base64 encode the random string using:
+ openssl rand 32 | base64 -w 0 > secret.key
+
+ (replace -w with -b on BSD/OSX)
+
+ 7. [9ba4] Simon says:
+ [33]April 26, 2018 at 15:50
+
+ Thank you for this post!
+ I made a bash script to put this all together and easily encrypt/decrypt
+ files with ssh key: [34]https://github.com/S2-/sshencdec
+
+ 8. [2e9b] Andy Gayton says:
+ [35]April 30, 2018 at 19:51
+
+ This is likely a terribly naive question.
+
+ What is the benefit to generating a one-off symmetric password and
+ encrypting that with the target’s public key, vs encrypting the desired
+ payload directly with the target’s public key?
+
+ Thanks!
+
+ 1. [21e2] Bjørn Johansen says:
+ [36]April 30, 2018 at 21:19
+
+ Hi Andy
+
+ I tried to explain that in the beginning:
+
+ There is a limit to the maximum length of a message – i.e. size of
+ a file – that can be encrypted using asymmetric RSA public key
+ encryption keys (which is what SSH keys are).
+
+ The problem is that anything we want to encrypt probably is too large
+ to encrypt using asymmetric RSA public key encryption keys.
+
+ 1. [2e9b] Andy Gayton says:
+ [37]April 30, 2018 at 22:02
+
+ Thank you for the reply. That makes sense!
+
+ 9. [79e7] Olivier Cloirec says:
+ [38]June 12, 2018 at 07:07
+
+ Hi, thanks for the tip!
+
+ I got the following error message with 1.1.0h:
+ “`
+ openssl rand 32 -out secret.key
+ Extra arguments given.
+ rand: Use -help for summary.
+ “`
+
+ The command works when options are before the size:
+ “`
+ openssl rand -out secret.key 32
+ “`
+
+ 1. [21e2] Bjørn Johansen says:
+ [39]June 12, 2018 at 11:28
+
+ Yeah, I’ve noticed that OpenSSL started being picky about that lately.
+ Updated the text now.
+
+ Thank you for leaving the comment, Olivier.
+
+10. [583a] pierre says:
+ [40]April 9, 2019 at 17:40
+
+ Hi Bjørn
+ thank’s for your post !
+ Realy simple and easy.
+ It can be used to start discover other features in openssl.
+
+Comments are closed.
+
+[41]{bjørn:johansen}, [42] Proudly powered by WordPress. [43]Privacy Policy
+
+References:
+
+[1] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#content
+[2] https://www.bjornjohansen.com/
+[4] https://www.bjornjohansen.com/
+[5] https://www.bjornjohansen.com/about-me
+[6] https://www.bjornjohansen.com/privacy-policy
+[8] https://www.bjornjohansen.com/author/bjorn
+[9] https://www.bjornjohansen.com/encrypt-file-using-ssh-key
+[10] https://www.bjornjohansen.com/category/security
+[11] https://www.bjornjohansen.com/tag/encryption
+[12] https://www.bjornjohansen.com/tag/howto
+[13] https://www.bjornjohansen.com/tag/openssl
+[14] https://www.bjornjohansen.com/tag/security-2
+[15] https://www.bjornjohansen.com/author/bjorn
+[16] https://www.bjornjohansen.com/field-manager-flexible-content
+[17] https://www.bjornjohansen.com/support-mozilla
+[18] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-1256
+[19] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-1276
+[20] https://www.inbot.com.br/
+[21] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-60127
+[22] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2516
+[23] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2517
+[24] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2882
+[25] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2883
+[26] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2894
+[27] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-24144
+[28] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2948
+[29] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-2994
+[30] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-3212
+[31] http://nisosgroup.com/
+[32] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-5006
+[33] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-6928
+[34] https://github.com/S2-/sshencdec
+[35] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-7079
+[36] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-7081
+[37] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-7085
+[38] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-10189
+[39] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-10190
+[40] https://www.bjornjohansen.com/encrypt-file-using-ssh-key#comment-24648
+[41] https://www.bjornjohansen.com/
+[42] https://wordpress.org/
+[43] https://www.bjornjohansen.com/privacy-policy