article-tgtimes-most-minimal-gopher-client.mw - tgtimes - The Gopher Times HTML git clone git://bitreich.org/tgtimes git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/tgtimes DIR Log DIR Files DIR Refs DIR Tags DIR README --- article-tgtimes-most-minimal-gopher-client.mw (3667B) --- 1 .SH tgtimes 2 Most minimal gopher client 3 . 4 .PP 5 Gopher is a protocol allowing browsing text, images interactively, 6 reach telnet interfaces, and download any file, or open any URL, 7 for custom action to be chosen by the user. 8 . 9 .IP "Network" 10 One reliable way to fetch the content from internet would be Ethernet, 11 but convenience and price would push toward using radio transmission 12 such as WiFi. 13 .FS 14 Ethernet would require an extra transceiver chip, while wifi takes mostly 15 just a wire acting as antenna, which partly explains its low cost. 16 .FE 17 . 18 .IP "Processing" 19 One inexpensive family of processors featuring a high cost-to-performance 20 ratio, which also features WiFi, is the ESP32. The C3 iteration even uses 21 the open-source architecture RISC-V. The speed is decent enough for 22 decoding JPEG an PNG, or support TLS as used in gophers://. 23 . 24 .IP "Display" 25 The cost of displays have dropped considerably as they invaded the market. 26 Economy of scale made small color displays even cheaper than 27 character-based displays. 28 . 29 .IP "Input" 30 Browsing content is a lot about scrolling. Since we do custom hardware, 31 capacitive touch buttons can be used for little to no extra cost. 32 This could permit a smooth scrolling through the content. 33 .FS 34 Once again, mostly requiring wires, this cuts the price and explain 35 their popularity. 36 .FE 37 . 38 .IP "Text" 39 Text is compact and efficient, and bitmap font requires a bit of storage 40 for all the common non-ASCII characters, but ESP32 have 16MB of flash 41 storage enough for the entire uncompressed Unifont: 42 .LK http://unifoundry.com/unifont/ 43 . 44 .IP "Audio" 45 Producing sound does not cost much more than a small audio amplifier, 46 software for decoding MP3, and a 3.5mm Jack connector. 47 Very small cost added. 48 . 49 .IP "Extension" 50 an USB interface would allow plugging the device to a computer for 51 either automation or using a full keybaord. 52 . 53 .IP "Power" 54 A small dedicated battery could be included increasing the cost, 55 but getting all power from USB would also preserve the choice to 56 the user, free to chose a wall charger or portable power bank. 57 . 58 .IP "Enclosure" 59 A custom 3D printed case would allow keeping the cost very low 60 even at small volume production. 61 . 62 .PP 63 There exist boards around 5 USD which would provide all of the above 64 except audio and a few wires, typically the size of an MP3 player. 65 The grand total bill of material could realistically approach 10 USD. 66 An actual product could eventually reach as low as 15 USD if keeping 67 only a small margin for the seller, and eventually lower if produced 68 on a larger scale. 69 . 70 .PP 71 The support of TLS does not bring any cost in this example: an ESP8266 72 could be used at around 0.85 USD instead of 1.25 USD for the ESP32-C3, 73 but is also capable of TLS. 74 Image decoding would then probably be much slower. 75 By far the most resource hungry part of this project. 76 . 77 .PP 78 Writing the software for such a product from the ground up could take 79 typically an entire week, including JPEG and PNG decoding libraries, 80 image and font rendering, writing driver for all the parts involved, 81 integrating the TCP/IP stack and TLS stack. 82 . 83 .PP 84 While an XML parser able to fetch content over HTTP would be relatively 85 as difficult to build, this would not permit the same level of user 86 experience as the Gopher-based project: CSS and JavaScript are becoming 87 an increasingly frequent requirement to access the Web, and reimplementing 88 a new compatible rendering engine is not feasible to a single person. 89 . 90 .PP 91 This requirement would in turn affect the minimal performance of the 92 processing unit used: a processor in the GHz range with RAM in the 93 GB range, in particular if anticipating future needs of the Web 94 software system.