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 index 921e664..003199a 100644 --- 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 new file mode 100644 index 0000000..1a6eb26 --- /dev/null +++ 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 new file mode 100644 index 0000000..d431fb0 --- /dev/null +++ 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 + + + + + + + +... put your html code here... + + + +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 . + +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 new file mode 100644 index 0000000..355282a --- /dev/null +++ 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 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.055​b≤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)​=​(03​21​)​ + +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)+3​4⋅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 +.5​0.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​∗5​71​) + +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​⋅⎝⎛​31​53​∗ +75​753​531​⎠⎞​ + +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​∗11​11​1​⎠⎞​ + +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 new file mode 100644 index 0000000..7d78183 --- /dev/null +++ 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