While working on my master’s thesis, I investigated some recently proposed constructions that turn AEADs into key-committing or fully-committing ones. Key commitment has recently gotten a lot more attention and I, therefore, expect this post to be outdated quite soon, as new research emerges. This post serves as a quick collection of personal notes and pointers, that maybe could help someone looking to add key commitment to their AEAD schemes today. There exist constructions proposed in earlier work, but the ones covered herein are the ones I focused on primarily. An implementation of UtC+HtE and CTX for ChaCha20-Poly1305 with BLAKE2b is available here: https://github.com/brycx/CAEAD Key-committing or fully committing? The first question you need to figure out is whether you only want a key-committing AE or fully committing one. If an AEAD is key-committing, it means that it commits to the input (K, N, C). That is the key, nonce, and ciphertext. A fully committing AE will commit to the entire input, meaning the AD as well: (K, N, AD, C). If you deal with protocols where you need message franking, you would for example require a fully-committing AEAD. Both constructions mentioned in this post are generic, meaning they can add commitment on top of any AEAD scheme and not just, say, AES-GCM. UtC, RtC and HtE by Bellare and Hoang These transformations have been described in the 2022 paper “Efficient Schemes for Committing Authenticated Encryption” by Mihir Bellare and Viet Tung Hoang. They define two generic constructions that turn either a nonce-based AEAD (nAEAD) into a key-committing scheme or a misuse-resistant AEAD (MRAE) into a key-committing scheme. UtC (UNAE-then-Commit) UtC adds key commitment to any nonce-based AEAD scheme. It uses what Bellare and Hoang call a committing PRF (F), to derive a commitment block P and subkey L from the key and nonce. The subkey L is what is used as the key for the underlying AEAD and P is appended to the ciphertext. (P, L) ← F(K, N) C ← AEAD(L, N, A, M) C ← P || C Bellare and Hoang propose a specific instantiation of a committing PRF based on AES, in their paper. RtC (MRAE-
(read more)
Almost exactly one year ago I wrote the first commit for rules_xcodeproj. Like a lot of software engineers, I’m pretty bad at estimating, and thought that I would be able to finish 1.0 in 2 to 4 months 😅. The longer development cycle was a result of an increased scope and level of quality that I came to expect for a proper 1.0 release. Over the course of the year, I believe the project has risen to meet my expectations, and today I’m happy to announce the release of version 1.0 of rules_xcodeproj!The road to 1.0​The road to 1.0 has been an incredible journey. Early in the development cycle Spotify, Robinhood, and Slack engineers became adopters and contributors; without their help I wouldn’t be writing this blog post today 🙏. JP became a vocal champion of rules_xcodeproj after integrating it with the SwiftLint and Envoy Mobile projects. During BazelCon 2022 the project got a couple shout-outs, including during Erik’s wonderful talk. And I’m also incredibly grateful th
(read more)
Nothing compares more to the sense of power UNIX sysadmin experiences when being able to print from a command line on its UNIX system :p I kinda omitted this topic (printing) for quite a lot of time – when I was using FreeBSD in the corporate environment I still printed from Windows VM on a network printers. Then they forced me to use Windows anyway. At home my wife always had a printer configured (as she uses it more) and the other printer also had USB port – so you could just copy the PDF or JPG file to a USB pendrive – attach it the printer and hit print button for the selected files. No configuration needed. I was also disappointed when I tried several years ago to configure USB printer on FreeBSD … and failed. Recently I though that its about fucking time to dig into that topic and have at least one working printer on FreeBSD. This guide will focus on using two printers with CUPS on FreeBSD: HP Color LaserJet 200 M251nw Printer (attached over TCP/IP network) Samsung Black/White ML-1915 Printer (local USB attached) There will be two different prompt types used for the commands: starting with % for commands that can be executed as regular user or root starting with # for commands that must be executed as root user The Table of Contents for this article is shown below. CUPS Packages and Service Configuration Network Printer – HP M251nw Try to Print Some Document USB Printer – Samsung ML-1915 Choose Default Printer CUPS Printers Config Command Line Printing Last Chance Fancy Pants Summary There are only three pkg(8) packages needed for my printers – these are: # pkg install cups cups-filters splix We will also need to add some lines to the /etc/devfs.rules file. These lines are important for printing with CUPS: add path 'lpt*' mode 0660 group cups add path 'ulpt*' mode 0660 group cups add path 'unlpt*' mode 0660 group cups The rest of the config is just the rest of my desktop config and can be omitted for printing. The entire /etc/devfs.rules file looks as follows. % cat /etc/devfs.rules [desktop=10] add path 'lpt*' mode 0660 group cups add path 'ulpt*' mode 0660 group cups add path 'unlpt*' mode 0660 group cups add path 'acd*' mode 0660 group operator add path 'cd*' mode 0660 group operator add path 'da*' mode 0660 group operator add path 'pass*' mode 0660 group operator add path 'xpt*' mode 0660 group operator add path 'fd*' mode 0660 group operator add path 'md*' mode 0660 group operator add path 'uscanner*' mode 0660 group operator add path 'ugen*' mode 0660 group operator add path 'usb/*' mode 0660 group operator add path 'video*' mode 0660 group operator add path 'cuse*' mode 0660 group operator We will also need to add devfs_system_ruleset=desktop to the /etc/rc.conf file. % grep desktop /etc/rc.conf devfs_system_ruleset=desktop Now we need to restart the devfs daemon to read new config. # service devfs restart We can also make sure that devfs(8) know our ruleset config. # devfs rule -s 10 show | column -t 100 path acd* group operator mode 660 200 path cd* group operator mode 660 300 path da* group operator mode 660 400 path pass* group operator mode 660 500 path xpt* group operator mode 660 600 path fd* group operator mode 660 700 path md* group operator mode 660 800 path uscanner* group operator mode 660 900 path lpt* group cups mode 660 1000 path ulpt* group cups mode 660 1100 path unlpt* group cups mode 660 1200 path ugen* group operator mode 660 1300 path usb/* group operator mode 660 1400 path video* group operator mode 660 1500 path cuse* group operator mode 660 The column(1) is not needed here – I used it only to format the output. What amaze me to this day that column(1) command is still not available on such enterprise (and overpriced also) IBM AIX system 🙂 Here are the contents of fresh CUPS installation at /usr/local/etc/cups dir. # tree -F --dirsfirst /usr/local/etc/cups /usr/local/etc/cups ├── ppd/ ├── ssl/ ├── cups-files.conf ├── cups-files.conf.sample ├── cupsd.conf ├── cupsd.conf.sample ├── snmp.conf └── snmp.conf.sample 3 directories, 6 files You will need to add cupsd_enable=YES to the /etc/rc.conf file. % grep cups /etc/rc.conf cupsd_enable=YES Make sure that cupsd service is started and running. # service cupsd start Starting cupsd. # service cupsd status cupsd is running as pid 44515. # sockstat -l4 | grep -e ADDRESS -e 631 USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS root cupsd 44515 6 tcp4 127.0.0.1:631 *:* Just in case – here are the groups in which my vermaden user is: % id | tr ',' '\n' uid=1000(vermaden) gid=1000(vermaden) groups=1000(vermaden) 0(wheel) 5(operator) 44(video) 69(network) 145(webcamd) 920(vboxusers) It was not needed to add my vermaden user to the cups group to print – but feel free to also test that if you face any problems. First I will go with the TCP/IP attached network printer – HP M251nw. Before doing any steps or configuration on FreeBSD part we first need to connect that printer to the TCP/IP network. As the HP M251nw printer has WiFi – I decided to connect it to my wireless WiFi router instead of using RJ45 cable. I will not document that part as HP already provides decent guide on how to achieve that – https://youtu.be/jLDzQBAtKyQ – on YouTube service. In my case I used the 10.0.0.9 IP address and I configured my WiFi router to always attach that MAC address to that IP address. Next step is to open http://localhost:631/ page in your browser. You will see default CUPS web interface. Hit the Administration tab on the top. Then click the Add Printer button in the middle of the page – you will be asked for username and password – use your username and your password here. The HP M251nw network attached browser has already been detected by CUPS. Select it and click Continue button. CUPS will suggest some long names and description as showed below. … but we will use simpler and shorter name instead. Next we need to choose which driver to use. We will not find a HP M251nw driver on the CUPS list but there are two drivers that will work here: HP LaserJet Series PCL 6 CUPS (en) HP Color LaserJet Series PCL 6 CUPS (en) As HP M251nw is color printer we will choose HP Color LaserJet Series PCL 6 CUPS here. After a moment we will see a message that HP M251nw printer has been successfully added to CUPS. You can notice that new PPD file appeared at CUPS dir named exactly like the printer name. % ls -l /usr/local/etc/cups/ppd total 9K -rw-r----- 1 root cups 9721 2023-02-06 11:24 HP-M251nw.ppd -rw-r----- 1 root cups 9736 2023-02-06 11:23 HP-M251nw.ppd.O This is how our HP M251nw printer status page looks like. We should now setup the default printing options. From the Administration drop down menu select Set Default Options option. The only things I selected/set that are different from the CUPS defaults are A4 paper size and 1200 DPI resolution. I will now use Atril PDF viewer to test how the printing on the HP M251nw works – I used a small one page PDF file with one of my old guides – the ZFS Madness one from 2014. From the File menu select Print… option – or just hit [CTRL]+[P] shortcut. Then select HP-M251nw printer from the list and hit the Print button below. After some noises and time (not much later) the printer dropped a printed page. Seems to work properly. Looks good. Lets now add USB printer. To get needed PPD driver for the Samsung ML-1915 printer we installed the print/splix package. Here is the exact driver we will use. % pkg info -l splix | grep 1915 /usr/local/share/cups/model/samsung/ml1915.ppd Before attaching the Samsung ML-1915 printer to your computer you may check what devices devd(8) will create. First power on the Samsung ML-1915 printer. Then attach the USB cable from the printer to your FreeBSD box (assuming that printer has AC p
(read more)
Pricing updates for businesses based in the European Economic Area [pdf] Starting 10 April 2023, fees for card processing, disputes, and USD currency payouts will be higher due to increases in network costs (in recent years, major card networks have introduced several new fees and increased existing fees), as well as increases in underlying service costs. Please refer to the following details to understand how these changes may impact your business. Changes for card processing Card fees today Card fees starting 10 April 2023 All EU cards: 1.4% + €0.25 per transaction Standard EU cards: 1.5% + €0.25 per transactionPremium EU card: 1.9% + €0.25 per transaction International cards: 2.9% + €0.25 per transactionUK cards: 2.5% + €0.25 per transaction International cards: 3.25% + €0.25 per transactionUK cards: 2.5% + €0.25 per transaction (no changes) If you have an account located in an EEA country that has not adopted the Euro, here are the fixed fees of €0.25 in local currencies: Bulgaria: ЛВ0.50; Czech Republic: 6.50Kč; Denmark: 1.80kr; Hungary: 85Ft; Liechtenstein: 0.30CHF, Poland: 1zł; Romania: 1LEU, Sweden: 1.80kr. What are standard cards? Consumer cards issued by Visa and Mastercard All cards issued by American Express, Discover, Diners Club, Maestro, Cartes Bancaires, UnionPay What are premium cards? Commercial, corporate, or business cards issued by Visa and Mastercard You can read more on the differences between Standard and Premium cards here. How does Stripe determine when a card is standard or premium? We determine whether a card is standard or premium based on the information available from card networks at point of charge. The accuracy of this mapping is regularly reviewed to ensure the appropriate fee is applied to all card transactions. Changes for disputes Dispute fees (also known as chargebacks) will increase from €15 to €20. Due to costs for managing dispute evidence submissions (regardless of outcome), we'll no longer refund this fee if the customer's bank resolves the dispute in your favor. If you or your users have an account located in an EEA country that has not adopted the Euro, here are the fixed fee
(read more)
AI Alfred can summarize your articles in 1 single click.  You just need to go to the web articles' URL and open the AI Alfred extension. 1. Browse the content you want to summarize Summarize whatever you want by going on the articles you want. 2. Open our Extension or Copy the link Once you're on the article you want to summarize, you just need to open our Extension (Chrome), or you can copy and paste the URL inside the app Your summary is ready.  Save it, edit it, or copy it in 1 click. Why you should choose AI Alfred AI Alfred can help you save hours thanks to o
(read more)
✨ About us ✨PhotoRoom develops cutting-edge technology that empowers entrepreneurs, small businesses, and merchants to easily create images that sell - leveraging deep learning. Our ambition: power the internet’s commerce images.Our first consumer product, the PhotoRoom app, is already a leader in mobile photo editing: we serve 7M+ users across more than 180 countries monthly and our app was awarded as the Best App of 2021 by Android and named Editor’s Choice by Apple.Our company is profitable, and our lean team is made of world-class experts in deep learning, product, and marketing wi
(read more)
Image source, Getty ImagesEnergy giant BP has reported record annual profits after oil and gas prices surged last year following Russia's invasion of Ukraine.The company's profits more than doubled to $27.7bn (£23bn) in 2022, compared with $12.8bn the year before.Other energy firms have seen similar rises, with Shell reporting record earnings of nearly $40bn last week.The profits have led to calls for energy firms to pay more tax as many households struggle with rising bills.BP boss Bernard Looney said the British company was "helping provide the energy the world needs" and investing the transition to green energy.Energy prices had begun to climb following the end of Covid lockdowns but rose sharply in March last year after Russia invaded Ukraine, sparking concerns about global supplies.The price of Brent crude oil reached nearly $128 a barrel, but has since fallen back to about $80. Gas prices also spiked but have come down from their highs. It has led to bumper profits for energy companies, but also fuelled a rise in energy bills for households and businesses. Last year, the ministers introduced a windfall tax - called the Energy Profits Levy - on the "extraordinary" profits being made at energy companies.The rate was originally set at 25%, but has now been increased to 35%, and only applies to profits made from extracting UK oil and gas. BP said its UK business, which accounts for less than 10% of its global profits, will pay $2.2bn in tax for 2022, including $700m due to the Energy Profits Levy. 'Windfalls of war'Andrew Griffith, Economic Secretary to the Treasury, told BBC Radio 4's Today programme the windfall tax struck the "right balance" between helping families with the cost of living and securing the UK's energy supplies. He said its aim was to encourage re-investment of the sector's profits back into the economyNick Butler, previously a senior executive at BP and now a visiting professor at Kings College, who the BBC spoke to because of his knowledge of gas companies, said oil and gas prices would not remain "exceptionally high" forever. "This is a temporary situation. Oil and gas prices are going down and the windfall these companies are making won't last until 2023."Image source, Getty ImagesImage caption, Oil firms can lower the amount of windfall tax they pay by making investments in things like decommissioning North Sea oil platformsBut Lab
(read more)
This tool provides utilities for interacting with OpenAI APIs and storing the results in a SQLite database. See Semantic search answers: Q&A against documentation with GPT3 + OpenAI embeddings for background on this project. Installation Install this tool using pip: pip install openai-to-sqlite Configuration You will need an OpenAI API key to use this tool. You can create one at https://beta.openai.com/account/api-keys You can then either set the API key as an environment variable: export OPENAI_API_KEY=sk-... Or pass it to each command using the --token sk-... option. Embeddings The embeddings command can be used to calculate and store OpenAI embeddings for strings of text. Each embedding has a cost, so be sure to familiarize yourself with the pricing for the embedding model. The command can accept data in four different ways: As a JSON file containing a list of objects As a CSV file As a TSV file By running queries against a SQLite database For all of these formats there should be an id column, followed by one or more text columns. The ID will be stored as the content ID. Any other columns will be concatenated together and used as the text to be embedded. The embeddings from the API will then be saved as binary blobs in the embeddings table of the specified SQLite database - or another table, if you pass the -t/--table option. JSON, CSV and TSV Given a CSV file like this: id,content 1,This is a test 2,This is another test Embeddings can be stored like so: openai-to-sqlite embeddings embeddings.db data.csv The resulting schema looks like this: CREATE TABLE [embeddings] ( [id] TEXT PRIMARY KEY, [embedding] BLOB ); The same data can be provided as TSV data: id content 1 This is a test 2 This is another test Then imported like this: openai-to-sqlite embeddings embeddings.db data.tsv Or as JSON data: [ {"id": 1, "content": "This is a test"}, {"id": 2, "content": "This is another test"} ] Imported like this: openai-to-sqlite embeddings embeddings.db data.json In each of these cases the tool automatically detects the format of the data. It does this by inspecting the data itself - it does not consider the file extension. If the automatic detection is not working, you can pass --format json, csv or tsv to explicitly specify a format: openai-to-sqlite embeddings embeddings.db data.tsv --format tsv Importing data from standard input You can use a filename of - to pipe data in to standard input: cat data.tsv | openai-to-sqlite embeddings embeddings.db - Data from a SQL query The --sql option can be used to read data to be embedded from the attached SQLite database. The query must return an id column and one or more text columns to be embedded. openai-to-sqlite embeddings content.db \ --sql "select id, title from documents" This will create a embeddings table in the content.db database and populate it with embeddings calculated from the title column in that query. You can also store embeddings in one database while reading data from another database, using the --attach alias filename.db option: openai-to-sqlite embeddings embeddings.db \ --attach documents documents.db \ --sql "select id, title from document
(read more)
Prof. Abraham Lempel's groundbreaking work in the field of data compression helped pioneer technologies widely popular to this day; 'few are the researchers whose work has had such a broad impact on technological progress and our daily lives'Famed Israeli computer scientist Prof. Abraham Lempel, whose revolutionary work on lossless data compression algorithms served as a precursor of ubiquitous file formats such as MP3 and ZIP, passed away on Sunday at 86.Lempel’s innovative work together with electrical engineer Prof. Jacob Ziv helped transform the field of computer science and is considered one of the most significant technological breakthroughs in the history of the State of Israel and the Technion, the leading research institute where he was professor emeritus.2 View gallery Prof. Abraham Lempel (Photo: Technion)Technion President Prof. Uri Sivan eulogized Lempel as one of the most consequential researchers in the university’s history."The late Prof. Emeritus Lempel was a source of inspiration for all of us, and was among the greatest researchers the Technion has produced in its hundred years," he said.“The Lempel-Ziv algorithm has contributed to the world, free of charge, an unprecedented technology that enables the transfer of data quickly and without loss of data.In his professional life, Prof. Lempel embodied the connection between deepening in basic science and excelling in applied research. Few are the researchers whose work has had such a broad impact on technological progress and our daily lives. May his memory be a blessing".Prof. Lempel was born in Poland in 1936 and began his studies at the Technion in 1959. He completed his three academic degrees in just eight years.He taught electrical engineering and computer science at the Technion and served as the dean of the Taub Faculty of Computer Science between 1981-1984.In 1993, he was recruited by IT giant HP and established its first operation in Israel a year later, which he managed until 2007. During his time at HP, the company registered eight patents in his name in the U.S.2 View gallery Lempel (R) and Prof. Jacob Ziv (Photo: Technion)His historically-important works start with the presentation of the LZ77 algorithm in a paper entitled "A Universal Algorithm for Sequential Data Compression" in the IEEE Transactions on Information Theory (May 1977), co-authored by Jacob Ziv.The first major milestone of Lempel’s oeuvre came in 1977 when he and his colleague Prof. Jacob Ziv published LZ77, the first version of the Lempel-Ziv algorithm, which was followed up the very next year with LZ78.These algorithms and their derivative works formed the basis of several data compression formats that are widely popular to this day, such as TIFF, PNG, ZIP, and GIF, and played a central role in PDF (for documents) and MP3 (for music) formats.The algorithm developed by Lempel and Ziv allows lossless compression, sans prior knowledge of the statistical properties of the data. Many of the compression technologies used today on the Internet in memory devices, computers, and communications were developed based on the algorithm, and the algorithm still influences tech giants and billions of cel
(read more)
Peter Hutterer peter.hutterer at who-t.net Tue Feb 7 00:28:41 UTC 2023 Previous message (by thread): ANN: luit-20230201 Next message (by thread): [ANNOUNCE] xorg-server 21.1.7 Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] X.Org Security Advisory: February 07, 2023 Security issue in the X server ============================== This issue can lead to local privileges elevation on systems where the X server is running privileged and remote code execution for ssh X forwarding sessions. * CVE-2023-0494/ZDI-CAN-19596: X.Org Server DeepCop
(read more)
Bruce Knuteson writes: Prompted by your blog post this morning, I attach a plot from Figure 3 of They Still Haven’t Told You showing overnight and intraday returns to AIG (with logarithmic
(read more)
Event TimelineThere are a very large number of changes, so older changes are hidden. Show Older Changeslibcxx/include/__algorithm/sort.h 128libcxx/include/__algorithm/sort.h 187–191libcxx/benchmarks/algorithms.bench.cpp 27–28 libcxx/include/__algorithm/sort.h 152 160 187–191 libcxx/test/libcxx/algorithms/robust_against_copying_comparators.pass.cpp 192Comment Actionslibcxx/benchmarks/algorithms.bench.cpp 27–28 libcxx/test/libcxx/algorithms/robust_against_copying_comparators.pass.cpp 192libcxx/include/__algorithm/sort.h 127libcxx/include/__algorithm/sort.h 127libcxx/benchmarks/algorithms.bench.cpp 27–28 libcxx/include/__algorithm/sort.h 160Herald added a project: Restricted Project.
(read more)
Announcing Rust Magazine 2022-12-10
(read more)
podman provides an integrated auto-update mechanism, which I recently applied to all of my containers running on feldspaten. The mechanism is nice, but at first appears a bit counter-intuitive. In this post ’m trying to explain how you can use the mechanism and what to watch out for. I’ll start with the trap I think most people fall for. Most people’s path to containers starts with docker, which by itself is an amazing tool. I see podman as an improvement/modernization step of docker because it can run daemonless, rootless and thereby integrates well with systemd. The last part is in my experience a stumbling block, most people fall over at first. When you deply your applications with docker the typical approach is to use Docker Compose. This allows for easy deployment of your application, consisting of multiple containers and removes the necessity of writing long uncomprehensible command line arguments with tons of -v, -e parameters. This looks honestly ugly and Docker-Compose does a good job in making this building block more accessible. The consequence of Docker Compose is that most people use podman containers the same way as they use docker containers. You first create the container, and then you figure a way out, how to restart the container on every reboot. And this approach does not work with podman auto-update, because it requires this process to be upside-down … Wait upside-down? … What do I mean with that? The canonical way of starting podman containers at boottime is the creation of custom systemd units for them. This is cool and allows to have daemonless, independent containers running. podman itself provides a handy way of creating those system units, e.g. here for a new nginx container: # podman create --name nginx -p 80:80 -v /var/www:/usr/share/nginx/html docker.io/library/nginx:latest # podman generate systemd nginx This generates the following output: # container-c69183be0ce6fd025f04f34ab8e7f8c1abadcd3fa901b116489191df022b480c.service # autogenerated by Podman 3.4.4 # Sat Jul 9 10:45:47 CEST 2022 [Unit] Description=Podman container-c69183be0ce6fd025f04f34ab8e7f8c1abadcd3fa901b116489191df022b480c.service Documentati
(read more)
I built an app called Queryable, which integrates the CLIP model on iOS to search the Photos album OFFLINE. It is available on App Store today and I thought it might be helpful to others who are as frustrated with the search function of Photos as I was, so I wrote this article to introduce it. CLIP CLIP(Contrastive Language-Image Pre-Training) is a model proposed by OpenAI in 2021. CLIP can encode images and text into representations that can be compared in the same space. CLIP is the basis for many text-to-image models (e.g. Stable Diffusion) to calculate the distance between the generated image and the prompt during training. To run on iOS devices in real time, I made a compromise between the performance and the model size, and finally chose the ViT-B-32 model, separated the Text Encoder and Image Encoder. In ViT-B-32: Text Encoder will encode any text into a 1x512 dimensional vector. Image Encoder will encode any image into a 1x512 dimensional vector. We can calculate the proximity of a text sentence and an image by finding the cosine similarity between their text vector and image vector. The pseudo code is as follows: import clip model, preprocess = clip.load("ViT-B/32",
(read more)
Sync’ up! … without getting drained feb 6 It’s imperative If you’re writing code in an imperative language like C or Python, there’s one over-arching heuristic that I think all such hackers should try to follow: don’t write whopper routines. What are whopper routines? Well, if you don’t know, maybe you are subjecting the world to such source-code. Whopper routines are functions, routines, methods, that run on and on, and try to do everything all right there. These routines kind of even look like a whopper (burger), as all the conditional branching is falling out everywhere, like onions and pickles hanging outside of the sandwich. A whopper just does too much. It doesn’t share any of the logic with smaller routines that could more effectively specialize in some of the parts. But this isn’t all about aesthetics; there’s a prime reason why one should avoid whoppers. Unit tests When you create whopper routines, the amount of setup needed to test such code is daunting. Say, for instance, you have a ‘main’ Python routine that calls an external API, digests the data, converts it to something meaningful for your application, and writes to a file. To test this whopper, in a unit test, say, you’d almost need to create the world over in order to make it all work. However, if your ‘main’ routine called a dozen-or-so smaller and more specialized routines, then it would be infinitely easier to write unit tests for these little individual functions. You could have a unit test for the function that converts the API data (you just need to cobble together some binary/plaintext to pass into it); You could have a unit test for the little function that writes to disc, even. With these minion routines, unit tests are a snap to write. And for imperative languages, a tested codebase is a strategy that’s wise to have when code failure isn’t an option.
(read more)
Better font rendering for Windows. Latest beta 2021.1-RC1 (Recommended) Official site MacType official site: http://www.mactype.net What's new? Win10 compatible CET compatible Updated FreeType Support for color fonts 😎 New installer Lots of bug fixes Updates for multi-monitor support Tray app can intercept explorer in Service Mode now Tweaks for diacritics Updates to EasyHook Lower CPU in Tray Mode Better DirectWrite support thanks to しらいと[http://silight.hatenablog.jp] Separate DirectWrite parameter adjustment Traditional Chinese localization greatly improved thanks to GT Wang English localization improved Added Korea localization, thanks to 조현희 MultiLang system improved Donation MacType now accepts donations. Please visit http://www.mactype.net and keep an eye on the bottom right corner ❤️ Thank you for your support! Your donations will keep the server running, keep me updating, and buy more coffees ☕ Known issues Please backup your profiles before upgrading! Only Chinese simplified/Traditional and English are fully localized, some options may missing in MacType Tuner due to the strings missing in the language file. You can help with translations! If you want to use MacType-patch together with MacType official release, remember to add DirectWrite=0 to your profile or you will have mysterious problems If you're running 64 bit Windows, antimalware/antivirus software may conflict with MacType, because it sees MacType trying to modify running software. One possible workaround is to try running in Service Mode (recommended), or add HookChildProcesses=0 to your profile. See https://github.com/snowie2000/mactype/wiki/HookChildProcesses for an explanation Office 2013 does not use DirectWrite or GDI (it uses its own custom rendering), so Office 2013 doesn't work with MacType. If this bothers you you can use Office 2010 which uses GDI or Office 2016+ which uses DirectWrite. WPS has a built in defense that UNLOADS MacType automatically. The latest version has a workaround here thanks to wmjordan. How to get registry mode back It is no longer possible to enable registry mode via the wizard in Windows 10. We have a detail
(read more)
In an attempt to explain why the company had laid off 12,000 employees, Sundar Pichai, the CEO of Google's parent company, Alphabet, said executives decided to slash jobs after a "rigorous review" of Google's internal structures and organization. Pichai suggested that the company "hired for a different economic reality" than the one it faced and that the layoffs were necessary to set Google up for the future.But while Pichai, who made $280 million in compensation in 2019, said he took "full responsibility for the decisions that led us here," he failed to elucidate those choices. He didn't mention that during his time at the helm Google has be
(read more)
Large language models (LLMs) like the GPT family learn the statistical structure of language by optimising their ability to predict missing words in sentences (as in 'The cat sat on the [BLANK]'). Despite the impressive technical ju-jitsu of transformer models and the billions of parameters they learn, it's still a computational guessing game. ChatGPT is, in technical terms, a 'bullshit generator'. If a generated sentence makes sense to you, the reader, it means the mathematical model has made sufficiently good guess to pass your sense-making filter. The language model has no idea what it's talking about because it has no idea about anything at all. It's more of a bullshitter than the most egregious egoist you'll ever meet, producing baseless assertions
(read more)
%PDF-1.4 %���� 299 0 obj <> endobj xref 299 15 0000000016 00000 n 0000001221 00000 n 0000001495 00000 n 0000001756 00000 n 0000002264 00000 n 0000002876 00000 n 0000002912 00000 n 0000003161 00000 n 0000003404 00000 n 0000003481 00000 n 0000005660 00000 n 0000006166 00000 n 0000006422 00000 n 0000001041 00000 n 0000000607 00000 n trailer <<8F6ECC9B26DE9A4EB5CC48BA519C69AA>]>> startxref 0 %%EOF 313 0 obj<>stream x�b```b``Qe`a``lb�[email protected]~V da���*b� ���c�E�E�η:q������ (�%��J�DpOX3#S�d��K���Tv�Im������t<*�!Թ�X�ԋO�)Pj��ķ�A���l��8�����u��9�M�g���ÁL��l=I@c8��;�,%�����aLK��X<@d�� �� Q���@����� ���X,�����Q�ԟ�lêϷ�\d CAL� ��6��,� o�8!&�30�iY�[email protected]ڟ���;8���؇�Q?H330�-���u�� #��1�ȑ@� `8C\� endstream endobj 312 0 obj<>/Size 299/Type/XRef>>stream x�bb�a`b``Ń3� ��^� endstream endobj 300 0 obj<>/Outlines 47 0 R/Metadata 84 0 R/PieceInfo<>>>/Pages 81 0
(read more)
iWF will make you a 10x developer! iWF is a platform providing all-in-one tooling for building long-running business application. It provides an abstraction for persistence(database, elasticSearch) and more, with clean, simple and easy to use interface. It's a simple and powerful WorkflowAsCode general purpose workflow engine. The server is back by Cadence/Temporal as an interpreter, preserved the same power of Cadence/Temporal(including scalability/reliability). Related projects: OpenAPI definition between SDKs and server. iWF Java SDK iWF Java Samples Product use case example: subscription iWF Golang SDK iWF Golang Samples Product use case example: subscription Community & Help What is iWF Architecture Basic Concepts Workflow and WorkflowState definition Workflow execution and WorkflowState execution Commands Persistence Communication Workflow Diagram Client APIs Why iWF If you are familiar with Cadence/Temporal If you are not How to run this server Using docker image & docker-compose How to build & run locally How to use in production Monitoring and Operations iWF server iWF application Debug & Troubleshooting Operation Development Plan How to migrate from Cadence/Temporal Some history Contribution Posts & Articles Slack Channels Github Discussion StackOverflow Github Issues Architecture An iWF application includes a set of iWF workflow workers which host two REST APIs of WorkflowState start and decide. The application calls an iWF server to operate on workflow executions -- start, stop, signal, get results, etc, using iWF SDKs. The iWF server hosts those APIs(also REST) as a iWF API service. Internally the API service will
(read more)
The 6+ miles wide asteroid that hit Earth 66 million years ago, widely accepted to have wiped out nearly all the dinosaurs and roughly three-quarters of the planet’s plant and animal species, also triggered a megatsunami with mile-high waves. Recent historical tsunamis pale in comparison with this globally catastrophic event, thought to be 30,000 times more initial energy than any recorded events. In this dataset, the black continents depict the land masses at the time of the impact, around 66 million years ago. The white country borders show where the land masses are today — moving at approximately 2.5 cm (1 inch) per year, the continents are constantly drifting. The animation shows tsunami wave amplitude 10 minutes after impact until 48 hours after impact, shown in hours below the scale. After the first 48 hours, the tsunami had mostly subsided except near the point of impact. The colors on the tsunami animation are associated with both positive (red) and negative (blue) wave amplitudes, highlighting how the ocean ripples with both higher and lower water levels in the ocean basins during a catastrophic tsunami. Note that even though the color bar numerical values top out at +/- 5 meters, the wave amplitudes were much more extreme in some places. Two and a half minutes after the asteroid struck, a curtain of ejected material pushed a wall of water outward from the impact site, briefly forming a 4.5 kilometers high (2.8 miles) wave that subsided as the eject
(read more)
Here is a copy of the MIT license. One of the well-known open source licenses. It is, effectively, the only license that I’ve used for software I wrote or contributed in the last 10 years: Copyright Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furni
(read more)
DEAR WORLD RADIO AMATEURS - DUE TO THE MASSIVE EARTHQUAKES IN TURKEY, 28.540 MHZ (USB) FREQUENCY HAS BEEN DETERMINED AS A DISASTER COMMUNICATION FREQUENCY PLEASE DO NOT BUSY THIS FREQUENCY 73 TA1XX Last
(read more)
Menace to society — Recent X-rays of her lungs were so bad, doctors thought she had cancer. Enlarge / Scanning electron micrograph of Mycobacterium tuberculosis bacteria, which cause TB. A woman in Washington state is facing electronic home monitoring and possible jail time after spending the past year willfully violating multiple court orders to have her active, contagious case of tuberculosis treated and to stay in isolati
(read more)
This crazy, beautiful chart illustrates the incredible complexity of managing one of our nation’s most crucial – and invisible – national assets: the radio spectrum. This crazy, beautiful chart illustrates the incredible complexity of managing one of our nation’s most crucial – and invisible – national assets: the radio spectrum.A small detail of the United States Frequency Allocation Chart. Source: NTIASomewhere above you right now, a plane is broadcasting its location, speed and bearing on 1090 MHz. A geostationary weather satellite 22 thousand miles from Earth is transmitting detailed weather maps on 1694.1 MHz. A car driving by your home is transmitting a signal with the pressure readout of one of its t
(read more)
You do not have to follow these rules every time. If you have a good reason to break any of them, do. But they are safe to follow every time. Use near-black and near-white instead of pure black and white Pure black looks unnatural on a screen, and pure white is too bright. Use close-to-black and close-to-white instead. Any other references to “black” and “white” in these rules assume you’re following this rule. Saturate your neutrals A neutral is generally a black, white, or grey. If you use colour in your interface, add a little bit of that colour to your neutrals. This will make the colour palette feel more coherent. If you use the HSB colour system less than 5% saturation should do it. Use high contrast for important elements Importa
(read more)
Experience History's Greatest JourneyWhispers of a far land enter your ears. A land flowing with treasure more numerous than the sands of the Taklamakan and where the legends of China fills your mind with wonder. The Silk Roads beckon adventure, and perhaps something much more fulfilling. You take the step out to embark on a journey that surpasses the grandest of dreams, but also the most perilous of trials. All ideas and expectations are removed as you enter into far lands as a stranger. ​ In this interactive, choose-your-own-route across Eurasia, you assume the role of a merchant or explorer. The journey begins in Constantinople and from there the route diverges, and from the next outpost it branches again. Every route may be different, but they all lead to the Middle Kingdom - Ha
(read more)
We’ve just uploaded mypy 1.0 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows: python3 -m pip install -U mypy You can read the full documentation for this release on Read the Docs. New Release Versioning Scheme Now that mypy reached 1.0, we’ll switch to a new versioning scheme. Mypy version numbers will be of form x.y.z. Rules: The major release number (x) is incremented if a feature release includes a significant backward incompatible change that affects a significant fraction of users. The minor release number (y) is incremented on each feature release. Minor releases include updated stdlib stubs from typeshed. The point release num
(read more)
A new PostgreSQL extension is now available in Supabase: pgvector, an open-source vector similarity search. The exponential progress of AI functionality over the past year has inspired many new real world applications. One specific challenge has been the ability to store and query embeddings at scale. In this post we'll explain what embeddings are, why we might want to use them, and how we can store and query them in PostgreSQL using pgvector. What are embeddings? Embeddings capture the “relatedness” of text, images, video, or other types of information. This relatedness is most commonly used for: Search: how similar is a search term to a body of text? Recommendations: how similar are two products? Classifications: how do we categorize a body of text? Clustering: how do we identify tr
(read more)
We propose a new package providing structured logging with levels. Structured logging adds key-value pairs to a human-readable output message to enable fast, accurate processing of large amounts of log data. See the design doc for details. fsouza, zephyrtronium, r5sec5cyl, willfaught, AndrewHarrisSPU, carlmjohnson, gilcrest, wdvxdr1123, komuw, rverton, and 138 more reacted with thumbs up emoji tdakkota, mrwormhole, aea7, 08d2, nahwinrajan, zxysilent, salehmu, and blissd reacted with thumbs down emoji septemhill, fsouza, smlx, r5sec5cyl, gilcrest, hnakamur, bytheway, collinforsyth, mikeschinkel, cypres, and 12 more reacted with ho
(read more)
In software we express our ideas through tools.  In data, those tools think in rectangles.  From spreadsheets to the data warehouses, to do any analytical calculation, you must first go through a rectangle.  Forcing data through a rectangle shapes the way we solve problems (for example, dimensional fact tables, OLAP Cubes).But really, most data isn’t rectangular.  Most data exists in hierarchies (orders, items, products, users).  Most query results are better returned as a hierarchy (category, brand, product).  Can we escape the rectangle?Malloy is a new experimental data programming language that, among other things, breaks the rectangle paradigm and several other long held misconceptions in the way we analyze data.  This example is going to start off very simple, but as you will
(read more)
My iPhone SE 2016 is a good one. It’s easy to handle with one hand. The screen is more than decent. For most things the camera is good enough. It has a headphone jack. Good battery life. The Touch ID works faster than Face ID.I dropped it on the pavement a few times. No problem, only the casing has a few scratches and dents. To you it may look like a piece of junk now, but to me it’s like that proverbial old pair of jeans.Now you may think that it’s slow as mud in a pond. But, contrary to my experience with previous models, the iPhone SE actually got faster with iOS updates! It’s 2023 and this is still a really good phone. None of the currently supported iPhones is as small and light as my current phone. They all are more expensive. And I believed technology was getting sma
(read more)
As a child, I was told many "indoctrinating" stories. While I don't care to name them here, many of these stories were meant to educate and set examples for students. There is one in particular that I find applicable for this discussion. The story goes like this: A young soldier was walking with the general. As they walked on the stone path to cross the stream that surrounded their encampment, the young soldier slipped on a stone. Feeling flustered in front of the general, the young soldier quickly put the stone back in place to catch up. Once they reached the other side, the general asked "aren't you afraid that you'll slip on the same stone on the way back?" "That's okay. I'll know which stone to watch out for," said the young soldier. To which the general replied "what about the rest o
(read more)
We may not know the identities of all the mysterious craft that American military personnel and others have been seeing in the skies as of late, but I have seen more than enough to tell you that it is clear that a very terrestrial adversary is toying with us in our own backyard using relatively simple technologies—drones and balloons—and making off with what could be the biggest intelligence haul of a generation. While that may disappoint some who hope the origins of all these events are far more exotic in nature, the strategic implications of these bold operations, which have been happening for years, undeterred, are absolutely massive.Our team here at The War Zone has spent the last two years indirectly laying out a case for the hypothesis that many of the events involving supposed U
(read more)
AI is the most profound technology we are working on today. Whether it’s helping doctors detect diseases earlier or enabling people to access information in their own language, AI helps people, businesses and communities unlock their potential. And it opens up new opportunities that could significantly improve billions of lives. That’s why we re-oriented the company around AI six years ago — and why we see it as the most important way we can deliver on our mission: to organize the world’s information and make it universally accessible and useful.Since then we’ve c
(read more)
256MB ought to be enough for anybody — Samsung's Android build is 4x bigger than Google's—twice the size of Windows 11. Enlarge / The square one is the S23 Ultra; the other two are the S23 and S23 Plus. As a smartphone operating system, Android strives to be a lightweight OS so it can run on a variety of hardware. The first version of the OS had to squeeze into the T-Mobile G1, with only a measly 256MB of internal storage for Android and all your apps, and ever since then, the idea has been to use as few resources as possible. Unless you have the latest Samsung phone, where Android somehow takes up an incredible 60GB
(read more)
With Twitter being a mess at the moment, I decided to try out Mastodon1 as an alternative. Mastodon is a federated social media platform, built on top of a protocol called ActivityPub2. It can be self-hosted, letting you own your data, and I wanted to do so using Nomad3 as a cluster orchestrator. This post shows how I did it, and will hopefully inspire you to give Mastodon a try if you haven’t already! You can find me on the fediverse at @[email protected] 🐘. A screenshot of Nomad's web UI, showing it running the jobs that make up Mastodon Getting started # The first thing to note is that I’m writing this up as inspiration, not as a step-by-step guide. It’s prove that it works, and offer an alternative to more complex setups that use Kubernetes (which Mastodon have a first-party Helm Chart4 for). Your mileage may vary - use your best judgement! If you know of improvements, feel free to send me a message at the link above. This post is meant to be read with the repository that I’ve open-sourced, containing the actual Nomad task definitions and scripts discussed below: https://github.com/CarrotCodes/nomad-mastodon With that out of the way, let’s start with some goals and assumptions. I wanted to: Self-host a Mastodon server, such that I could own my social media presence Host the server infrastructure on AWS Use Cloudflare in some capacity for caching Use Nomad to do cluster orchestration and keep jobs running Use Ansible and Terraform to manage the basic infrastructure (not in scope for this post) Not spend more than around $50 a month doing so It’s worth noting t
(read more)
In this post, I discuss how I used GPT embeddings to build a smart search tool for my second brain note-taking system. Try this if the video isn't working for you Introduction I spend a lot of time thinking about how to improve my processes for learning and knowledge management; I’ve written extensively about my second-brain note-taking system, Molecular Notes. I use Molecular Notes on a daily basis but am still constantly on the lookout for improvements. As my collection of notes grows, I have recently been running into a retrieval issue: sometimes I’m trying to find an idea I know I’ve written about but I can’t remember the name of the concept or where I came across it. For example, let’s say I remember making some notes on failure modes in large organisations, but I can’t remember any specific names or the source. I can try searching for relevant keywords in Obsidian search, but this doesn’t help much. The problem is that Obsidian’s default search is lexical – it tries to match words in the search query with words in the documents. It would be generous to call this “hit or miss”: as you can see below, when I search for “failure mode”, it matches anything with the string “mode”, including words like “model” which are not relevant. I could do a literal search using double quotes, but that only returns exact matches. (Molecular Notes, through its emphasis on linked notes, provides other means of finding content; in this case I could look at the local graph of notes connected to a relevant topic, like Management, and hopefully find what I’m looking for that way). I was in dire need of semantic s
(read more)
Join the most important conversation in crypto and Web3 taking place in Austin, Texas, April 26-28.Helene is a U.S. markets reporter at CoinDesk, covering the US economy, the Fed, and bitcoin. She is a recent graduate of New York University's business and economic reporting program.Join the most important conversation in crypto and Web3 taking place in Austin, Texas, April 26-28.Crypto exchange Binance is temporarily suspending U.S. dollar bank transfers starting on Wednesday, the company confirmed to CoinDesk on Monday."We are temporarily suspending USD bank transfers as of February 8th," a Binance spokesperson said, noting just 0.01% of monthly active users use USD bank transfers. "Affected customers are being notified directly.""In the interim, all other methods of buying and selling crypto remain unaffected, including bank transfer using one of the other fiat currencies supported by Binance (including euros), buying and selling crypto via credit card, debit card, Google Pay and Apple Pay and via our Binance P2P marketplace," the spokesperson added.Sign up for The Node, our daily newsletter bringing you the biggest crypto news and ideas.By signing up, you will receive emails about CoinDesk product updates, events and marketing and you agree to our terms of services and privacy policy.DISCLOSUREPlease note that our privacy policy, terms of use, cookies, and do not sell my personal informationhas been updated.The leader in news and information on cryptocurrency, digital assets and the future of money, CoinDesk is a media outlet that strives for the highest journalistic standards and abides by a strict set of editorial policies. CoinDesk is an independent operating subsidiary of Digital Currency Group, which invests in cryptocurrenciesand blockchain startups. As part of their compensation, certain CoinDesk employees, including editorial employees, may receive exposure to DCG equity in the form of stock appreciation rights, which vest over a multi-year period. CoinDesk journalists are not allowed to purchase stock outright in DCG.Helene is a U.S. markets reporter at CoinDesk, covering the US economy, the Fed, and bitcoin. She is a recent graduate of New York Univ
(read more)
Since the release of Eleven Labs’s Prime Voice AI platform, AI-based voice synthesis and modification has seen a revival in popularity. Browsing online forums, I stumbled upon Voice.AI, which bills itself as a “Real-Time AI Voice Changer” software program and community platform. Since the program seemed to run offline (more on that later), I was more interested in it than Eleven Labs’s offering. I figured it would be possible to pipe the output of a regular TTS like espeak into Voice.ai in order to obtain better results. As a curious software developer and privacy-conscious person, after installing version 0.1.25.0 (I later updated to 0.1.25.1, which is the latest version as of my writing this post on February 4, 2023), I naturally dug into the program files to see exactly what was installed and how it worked. GPL Violation Saga After running strings on the files in the \Program Files\Voice.ai directory, I discovered some of the third-party components they were using: Praat and libgcrypt. These were statically linked into the VoiceAILib.dll library. Truncated output from strings % strings VoiceAILib.dll | grep -iE '^C:' C:\Users\D\Desktop\PraatLib_CMake\PraatLib_CMake\external\gsl\gsl_specfunc__bessel_In.c C:\Users\D\Desktop\PraatLib_CMake\PraatLib_CMake\external\gsl\g
(read more)
Protocol Buffers are a popular choice for serializing structured data due to their compact size, fast processing speed, language independence, and compatibility. There exist other alternatives, including Cap’n Proto, CBOR, and Avro. Usually, data structures are described in a proto definition file (.proto). The protoc compiler and a language-specific plugin convert it into code: $ head flow-4.proto syntax = "proto3"; package decoder; option go_package = "akvorado/inlet/flow/decoder"; message FlowMessagev4 { uint64 TimeReceived = 2; uint32 SequenceNum = 3; uint64 SamplingRate = 4; uint32 FlowDirection = 5; $ protoc -I=. --plugin=protoc-gen-go --go_out=module=akvorado:. flow-4.proto $ head inlet/flow/decoder/flow-4.pb.go // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.0 // protoc v3.21.12 // source: inlet/flow/data/schemas/flow-4.proto package decoder import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" Akvorado collects network flows using IPFIX or sFlow, decodes them with GoFlow2, encodes them to Protocol Buffers, and sends them to Kafka to be stored in a ClickHouse database. Collecting a new field, such as source and destination MAC addresses, requires modifications in multiple places, including the proto definition file and the ClickHouse migration code. Moreover, the cost is paid by all users.1 It would be nice to have an application-wide schema and let users enable or disable the fields they need. While the main goal is flexibility, we do not want to sacrifice performance. On this front, this is quite a success: when upgrading from 1.6.4 to 1.7.1, the decoding and encoding performance almost doubled! 🤗 goos: linux goarch: amd64 pkg: akvorado/inlet/flow cpu: AMD Ryzen 5 5600X 6-Core Processor │ initial.txt │ final.txt │ │ sec/op │ sec/op vs base │ Netflow/with_encoding-12 12.963µ ± 2% 7.836µ ± 1% -39.55% (p=0.000 n=10) Sflow/with_encoding-12 19.37µ ± 1% 10.15µ ± 2% -47.63% (p=0.000 n=10) I use the following co
(read more)
Release Highlights DBENGINE v2 The new open-source database engine for Netdata Agents, offering huge performance, scalability and stability improvements, with a fraction of memory footprint! FUNCTION: Processes Netdata beyond metrics! We added the ability for runtime functions, that can be implemented by any data collection plugin, to offer unlimited visibility to anything, even not-metrics, that can be valuable while troubleshooting. Events Feed Centralized view of Space and Infrastructure level events about topology changes and alerts. Integrations New and improved plugins for data collection, alert notifications, and data exporters. Collectors Notifications Exporters Visualizations / Charts and Dashboards Database Streaming and Replication API Machine Learning Installation and Packaging Documentation and Demos Administration Other Notable Changes Deprecation notice Netdata Agent release meetup Support options Acknowledgements ❗We are keeping our codebase healthy by removing features that are end-of-life. Read the deprecation notice to check if you are affected. Netdata open-source growth Almost 62,000 GitHub Stars Over four million monitored servers Almost 88 million sessions served Over 600 thousand total nodes in Netdata Cloud Release highlights Dramatic performance and stability improvements, with a smaller agent footprint We completely reworked our custom-made, time series database (dbengine), resulting in stunning improvements to performance, scalability, and stability, while at the same time significantly reducing the agent memory requirements. On production-grade hardware (e.g. 48 threads, 32GB ram) Netdata Agent Parents can easily collect 2 million points/second while servicing data queries for 10 million points / second, and running ML training and Health querying 1 million points / second each! For standalone installations, the 64bit version of Netdata runs stable at about 150MB RAM (Reside Set Size + SHARED), with everything enabled (the 32bit version at about 80MB RAM, again with everything enabled). Read more about the changes over dbengine v1 Key highlights of the new dbengine Disk ba
(read more)
It is a long-standing tradition that every now and then, a member of the OpenStreetMap-community posts that OSM is in trouble. Often times, these essays complain about some trivial things which are, in the end, not that important. For example, they complain that we didn’t implement Bézier curves yet (we don’t need them), or that the data model is stale (it isn’t, new tagging appears every day), that the main OSM.org website doesn’t have some feature and isn’t on par with Google Maps (that’s by intent) or that AI will make the entire manual mapping space obsolete, in “just
(read more)
From launching our technology preview of the new and improved code search experience a year ago, to the public beta we released at GitHub Universe last November, there’s been a flurry of innovation and dramatic changes to some of the core GitHub product experiences around how we, as developers, find, read, and navigate code. One question we hear about the new code search experience is, “How does it work?” And to complement a talk I gave at GitHub Universe, this post gives a high-level answer to that question and provides a small window into the system architecture and tech
(read more)
I've been using Markdown for a long time, and have grown accustomed to it. It has various quirks, features, and oddities, but what doesn't. But recently I decided to take a look at Asciidoc, a Markdown "competetor". I found it a great little document toolchain, but it won't replace Markdown.Both Asciidoc and Markdown allow you to write text based content using a simplified markup syntax. Instead of heavier syntaxes, such as LaTeX, HTML, and friends, or rich-text formats that require WYSIWYG, both allow you to focus on the writing, and add formatting with simple, plain-text friendly characters. And, for most use cases, you won't really see the difference between Markdown and Asciidoc. 90% of the time, it won't make a difference in how you write, save maybe using a different character to format something some way. But the remaining 10% is where empires are built, and in this area Asciidoc is far superior.Markdown++Asciidoc will happily accept Markdown, verbatim. You can take a Markdown snippet, paste it into your Asciidoc file, and it will (generally) work. But ad has so much more to offer, and so many little better ways of doing something, that you'll soon wish Markdown worked similarly.For example, Markdown has a syntax for inserting a break, inside a paragraph. You put two space characters at the end of a line, and the parser will inject a line break. Unfortunately, spaces are a "weird" character. They're not visible, unless you turn on the "show invisibles" equivalent in your editor, and even with that enabled, it can be difficult to see them while scanning a document. Also, many editors will remove trailing spaces, causing your break to disappear. You can typically configure them to not do this to a Markdown document, but its another thing you have to remember, hope the developer of the editor remembered, or set up a plugin to do for you.You don't want to make newlines significant, like GitHub does on its issues and some other sites have done, because then you lose a great feature of Markdown (and most other markup languages): the ability to format and fit content in your editor, loosely independent of how it would be presented to the user. If you've got your editor set up to hard-wrap at 80 cols, for example, you want those lines to be joined together in the output, as the width of output content is a stylistic concern. Copying and pasting a hard-wrapped
(read more)
Eaton • Feb 6, 2023 Key Points / Summary: I hacked Toyota’s Global Supplier Preparation Information Management System (“GSPIMS”), a web app used by Toyota employees and their suppliers to coordinate projects, parts, surveys, purchases, and other tasks related to the global Toyota supply chain. System Admin access achieved through accidentally introduced backdoor as part of a user impersonation/”Act As” feature. Any user could be logged in to just by knowing their email, completely bypassing the various corporate login flows. Read/write access to the global user directory containing 14k+ users was achieved. Data access achieved: 14k+ corporate user account details, confidential documents, projects, supplier rankings/comments, and more. Data access was global and not limited to North America. Issue was responsibly disclosed to Toyota in November 2022 and fixed in a timely manner. Over the course of a slow week in late October 2022, I decided to explore the subdomains of various major companies to see if I could find any exploits worth reporting/writing about. I found several interesting Toyota websites. In 7 days, I reported 4 different security issues to Toyota, all of which were classified as “critical”. One of the reports had a remarkably severe impact and is one of the most severe vulnerabilities I have ever found (so far!) I discovered what was essentially a backdoor login mechanism in the Toyota GSPIMS website/application that allowed me to log in as any corporate Toyota user or supplier just by knowing their email. I eventually uncovered a system administrato
(read more)
Facebook for iOS (FBiOS) is the oldest mobile codebase at Meta. Since the app was rewritten in 2012, it has been worked on by thousands of engineers and shipped to billions of users, and it can support hundreds of engineers iterating on it at a time. After years of iteration, the Facebook codebase does not resemble a typical iOS codebase: It’s full of C++, Objective-C(++), and Swift. It has dozens of dynamically loaded libraries (dylibs), and so many classes that they can’t be loaded into Xcode at once. There is almost zero raw usage of Apple’s SDK — everything has been wrapped or replaced by an in-house abstraction. The app makes heavy use of code generation, spurred by Buck, our custom build system. Without heavy caching from our build system, engineers would have to spend an entire workday waiting for the app to build. FBiOS was never intentionally architected this way. The app’s codebase reflects 10 years of evolution, spurred by technical decisions necessary to support the growing number of engineers working on the app, its stability, and, above all, the user experience. Now, to celebrate the codebase’s 10-year anniversary, we’re shedding some light on the technical decisions behind this evolution, as well as their historical context. 2014: Establishing our own mobile frameworks Two years after Meta launched the native rewrite of the Facebook app, News Feed’s codebase began to have reliability issues. At the time, News Feed’s data models were back
(read more)
Ask HN: Resources to Learn macOS Development? 38 points by smg 2 hours ago | hide | past | favorite | 24 comments Almost 25 years ago before I went down the rabbit hole of backend programming - I did some windows app development. I want to get into macOS programming now (I have been using a mac for the past 5 years and want to get to a place where I can build some hobby apps - I don't need to make money - I just need the damn machine to do what I want it to) - but I am having difficulty figuring out the right resources.I am not interested in API documentation or how-to recipes. I am looking for explanations that will help me build a conceptual understanding of macos UI development. What is the equivalent of the event loop under macos? Do events bubble up through the hierarchy? What is the right way to persist user configuration?In the windows era there was a very famous book called "Programming Windows" by Charles Petzold. I am hoping that I can find similar book for macOS programming.Please do point me to the resources that have helped you.I am not interested in non-native frameworks like Electron or PyQt. If I am developing an app for myself I don't want to deal with daily irritation of working with a non native framework. If you're not writing command line programs (99% of what I do) I suggest adopting SwiftUI for your interface.It's Apple's future for cross platform (ios/macos/watch) applications. Hardcore longtime mac devs find it frustratingly unable to do some complex things they want to do (and yay that they do!) to take advantage of the mac OS. But you don't want that; you just want to interact with your own code. And SwiftUI will let you do the basic stuff easily...and likely just (well, almost just) recompile your program for your iphone or ipad. What sort of complex things are they unable to do? Is there any recourse? Can you use SwiftUI for the majority and dip into something lower level when needed? SwiftUI's weakness on macOS and to a lesser degree iOS is that it's difficult to fine-tune things to the extent that many longtime Apple platform devs have traditionally have. It can usually meet the base case but it makes honing in on the fine details and achieving a high level of polish cumbersome.There's also some things, particularly on macOS, that you're going to need to drop down into AppKit to do, which is possible thanks to NSViewRepresentable/UIViewRepresentable, but a bit frustrating is necessary.Personally speaking I'm still limiting usage of SwiftUI to views that are either simple or don't have much in the way of user interaction. It's decent at that, but for most other things I'm using plain old AppKit/UIKit. SwiftUI is still green compared to AppKit/UIKit's multi-decade legacy, so hopefully it will improve in the coming years. To give a quick example: in swiftui for ios, you can not change the spacing between list sections
(read more)
As the world becomes increasingly connected, the email marketing regulation landscape becomes more and more complex. Whether or not you operate directly in different countries, it's good practice as an email marketer to know which laws and regulations apply to your subscribers, wherever they are in the world. In recent years, keeping on top of new legislation has been challenging – most notably in Europe, with the introduction of GDPR (General Data Protection Regulation). The team at EmailOctopus have compiled this guide to make things easier. Our aim is to create a space where the email marketing community can keep each other up-to-date about regulations around the world, so it's easier for us all to be aware of new legislation, as and when it's implemented. At a glance For more detail about a country's legislation, click the country name. Country Legislation Content required Opt-out required Consent required Penalties Australia Spam Act 2003 Name, contact information Yes Implied consent if you have a previous business relationship. Otherwise, explicit Up to $1.8m AUD per day Belgium outre-Quiévrain law, GDPR Name, mailing address, clear identification of the sender Yes Explicit consent Up to €20m, or 4% annual global turnover – whichever is higher Brazil LGPD Name, contact information Yes Implicit consent via soft opt-in where an existing commercial or social interest can be demonstrated (effectively legitimate interest) 2 percent of the revenue from Brazil, up to R$50 million per infraction Canada CASL Name, mailing address, contact information Yes Implied consent if you have a previous business relationship. Otherwise, explicit Up to $10m CAD per violation China Regulations on Internet Service Name, email address Yes Explicit consent 10,000-30,000 yuan per email Denmark Danish Marketing Practices Act, GDPR Name, mailing address, clear identification of the sender Yes Explicit consent Up to €20m, or 4% annual global turnover – whichever is higher for GDPR violation; Danish government will impose an additional fine which is to be decided by the governing body Finland Electronic Communication Services Act, GDPR Name, mailing address, clear identification of the sender Yes Implied consent if you have a previous business relationship. Otherwise, explicit Up to €20m, or 4% annual global turnover – whichever is higher Germany Federal Data Protection Act, GDPR, Telemedia Act Name, mailing address, clear identification of the sender Yes Implied consent if you have a previous business relationship. Otherwise, explicit Up to €20m, or 4% annual global turnover – whichever is higher Hong Kong The Unsolicited Electronic Messages Ordinance Clear identification of the sender Yes Implied consent Up to $1,000,000 and imprisonment for up to 5 years on conviction on indictment Iceland GDPR Name, mailing address, clear identification of the sender Yes Explicit consent Up to €20m, or 4% annual global turnover – whichever is higher for GDPR violation India None at present None No Consent is not required None Ireland Irish Data Protection Act 2018, GDPR Name, mailing address, clear identification
(read more)
$10.00 This is our high performance green glow powder. Green is always be the brightest glow color because the Human eye is very sensitive to the color green. Our Europium UltraGlow® phosphorescent (glow-in-the-dark) powder is the brightest, longest lasting, non-toxic &... More Please Choose: Weight 1 ounce ( $10.00 ) (0.25lbs) 2 ounces ( $20.00 ) (0.35lbs) 4 ounces ( $40.00 ) (0.5lbs) 8 ounces ( $70.00 ) (1lbs) 16 ounce ( $130.00 ) (1.5lbs) 5 pounds ( $549.00 ) (6lbs) 25 pounds ( $2,350.00 ) (27lbs) 50 pounds ( $3,999.00 ) (57lbs)
(read more)
Smart News | February 1, 2023 So far, David Romero has digitally reconstructed over 20 of the famous architect’s unrealized projects
(read more)
Small embedded cores have little area to spare for security features and yet must often run code written in unsafe languages and, increasingly, are exposed to the hostile Internet. CHERIoT  (Capability Hardware Extension to RISC-V for Internet of Things) builds on top of CHERI and RISC-V to provide an ISA and software model that lets software depend on object-granularity spatial memory safety, deterministic use-after-free protection, and lightweight compartmentalization exposed directly to the C/C++ language model. This can run existing embedded software components on a clean-slate RTOS that scales up to large numbers of isolated (yet securely communicating) compartments, even on sys
(read more)
When starting a new project, evaluating the budget needed for cloud hosting can be a tricky question. On one side, you will hear horror stories of people waking up to an unexpected 100k$ bill fro
(read more)
Netflix wants to chop down your family tree: The enshittification cycle comes for your most private domain. Hey look at this: Delights to delectate. This day in history: 2008, 2013, 2018, 2022 Colophon: Recent publications, upcoming/recent appearances, current writing projects, current reading Netflix has unveiled the details of its new anti-password-sharing policy, detailing a suite of complex gymnastics that customers will be expected to undergo if their living arrangements trigger Netflix's automated enforcement mechanisms: https://thestreamable.com/news/confirmed-netflix-unveils-first-details-of-new-anti-password-sharing-measures If you'd like an essay-formatted version of this post to read or share, here's a link to it on pluralistic.net, my surveillance-free, ad-free, tracker-free blog: https://pluralistic.net/2023/02/02/nonbinary-families/#red-envelopes Netflix says that its new policy allows members of the same "household" to share an account. This policy comes with an assumption: that there is a commonly understood, universal meaning of "household," and that software can determine who is and is not a member of your household. This is a very old corporate delusion in the world of technology. In the early 2000s, I spent years trying to bring some balance to an effort at DVB, whose digital television standards are used in most of the world (but not the USA) when they rolled out CPCM, a DRM system that was supposed to limit video-sharing to a single household. Their term of art for this was the "authorized domain": a software-defined family unit whose borders were privately negotiated by corporate executives from media companies, broadcasters, tech and consumer electronics companies in closed-door sessions all around the world, with no public minutes or proceedings. https://onezero.medium.com/the-internet-heist-part-iii-8561f6d5a4dc These guys (they were nearly all guys) were proud of how much "flexibility" they'd built into their definition of "household." For example, if you owned a houseboat, or a luxury car with seatback displays, or a summer villa in another country, the Authorized Domain would be able to figure out how to get the video onto all those screens. But what about other kinds of families? I suggested that one of our test cases should be a family based in Manila: where the dad travels to remote provinces to do agricultural labor; the daughter is a nanny in California; and the son is doing construction work in the UAE. This suggestion was roundly rejected as an "edge case." Of course, this isn't an edge case. There are orders of magnitude more people whose family looks like this than there are people whose family owns a villa in another country. Owning a houseboat or a luxury car makes you an outlier. Having an itinerant agricultural breadwinner in your family does not. But everyone who is in the room when a cartel draws up a standard definition of what constitutes a household is almost certainly drawn from a pool that is more likely to have a summer villa than a child doing domestic work or construction labor half a world away. These weirdos, so dissimilar from the global majority, get to define t
(read more)
For the last couple of years, each quarter I’ve been posting a quick analysis of Amazon’s quarterly business results in a Twitter thread. I don’t use Twitter much any more, and Mastodon doesn’t make it easy to post threads, so the blog it is. Summary: Amazon’s retail business loses money (as usual) but the AWS and Advertising businesses are huge, throw off lots of cash, and continue to grow fast. They subsidize the money-losing retail operation in a way that seems deeply unfair to me. Source: Q4 2022 Earnings Release. Looking at Amazon as a whole, quarterly sa
(read more)
not-os is a small experimental OS I wrote for embeded situations, it is based heavily on NixOS, but compiles down to a kernel, initrd, and a 48mb squashfs there are also example iPXE config files, that will check the cryptographic signature over all images, to ensure only authorized files can run on the given hardware and I have Hydra setup and doing automatic builds of not-os against nixos-unstable, including testing that it can boot under qemu
(read more)
Note: Following blog post more or less applies to any dynamically typed programming language, e.g. Ruby. I am only sharing my experience and frustrations with Python, cos that's the language I use.I started learning to program with Python, which holds a special place in my heart. It’s the language which taught me how to think about programming, modelling a problem to code and communicate with the machine. I was hired at my current job (or the previous one) because of Python. I was a fanboy and evangelist. I spent a lot of time in Python communities, learning and helping others. When I started mentoring beginners to code, Python was my choice of language.I distinctly remember having the following conversation with a friend:Friend: C# makes life a lot easier with typesMe: I haven’t had the need. Are they needed?Friend: But how do you deal with functions that can take any type of argument?Me: I have unit tests and high test coverage. A small change will catch any changes. Also, you add documentation on functions explaining what they do and the type of arguments they expect. Easy peasy.Oh boy, how wrong I was. At that time, I had shipped code to production in Python, but there were few users. I did not have experience with other languages.When I joined my current startup (a team of 3 developers), I started learning Go. I had the responsibility of building a few services. I picked Python for a few because I was most comfortable with it, and I could ship fast. Django was better suited for some of the problems. Indeed, I could ship fast and build some services that are still in use.In a couple of months, I had stopped writing any new Python. Go was used for new services, and I started contributing them, including some that would be the core, crucial ones. This was many years back. I was still learning Python on the side, e.g. when async came; I upgraded one of my side projects to use it.We upgraded some internal APIs and libraries a few months ago, and a few Python services needed updates. I was eager to work with Python again, but my enthusiasm faded quickly.Guess Driven DevelopmentThe first issue I faced was understanding the code. It took a sweet amount of time to figure out the kind of objects, things certain functions were receiving and what they were doing with them. The code did have some unit tests, but the coverage was poor. So I had to guess, make changes and test the code at many places.I could not get hints in my IDE for a few modules. It became a habit to keep the source file open in another tab and refer every time for any new code I was writing. Without type (or type hints), I had no idea how to use a function. A language with type makes a lot of difference when refactoring; one glance at the signature, and I know what to do.After all the guessing game and refactoring, how do I ensure my changes work effectively? The only way to be sure is by running the code and verifying that every line is executed under all possible combinations.Years of coding in Go gave me this comfortable feeling: if it compiles, it works. (Rust takes it to the next level; if it compiles, you won’t have memory issues or data races.) The compilation gives q
(read more)
Last month I have been developing a Rust tool to create container images from Conda environments, without going through Docker. It was a wild trip down the rabbit hole of OCI images, so I thought I’d share part of the adventure here. Enjoy! But why? If you are used to building container images, you might be asking yourself why on earth someone would want to deviate from the well-trodden path of Dockerfiles. In fact, I was asking myself that question when I first talked to my client, the nice folks at prefix.dev. They are building tools for fast software package management and a package registry in the mamba and conda-forge ecosystem, so I expected they would have some advanced use case that required a creative solution (spoiler: they did). Assuming your use case is compelling enough to deal with the complexity of a custom solution, here are some benefits to crafting container images without Dockerfiles: You can create the image’s layers in parallel, whereas a Dockerfile creates them sequentially. You can use your own caching rules, treating each layer as a fully independent build artifact, whereas a Dockerfile assumes that layers depend on previous layers (and rebuilds them when previous layers have changed). You can do all processing in memory, without ever touching the file system, and without resorting to an external process. There are probably more factors to mention, but the ones above make clear that there are interesting performance benefits to be reaped. For a package registry, it means being able to generate a ready-to-use image in a few seconds, containing all specific packages a particular user needs. Where to start? Fly.io has a very interesting blog post titled Docker Without Docker. In the first sentence, they say: Even though most of our users deliver software to us as Docker containers, we don’t use Docker to run them. And they go on to describe how they transform the images they receive into something that can run on a Firecracker microVM. If they can decompose and manipulate existing images, why shouldn’t I be able to compose them from scratch? Docker has been around for almost 10 years now, since its initial release in March 2013, and in the meantime a bunch of standards have emerged to specify what a container image is, how a registry should behave, and more. This effort has been driven by the Open Container Initiative (OCI for short) and is one of the reasons why you can docker pull and docker push to any compliant artifact registry, instead of only the one at docker.io. When I started working on this project I knew Docker from the perspective of a casual user, but had never ventured to create images without a Dockerfile. From Fly.io’s blog I knew that container images are “just a stack of tarballs”, so that provided a bunch of goals to aim for: Inspect an existing container image, look at the different tarballs that compose it, get a feeling for how it is all tied together. Based on that knowledge, write the necessary code to generate a compliant image as a tar file. Figure out later how to push the image to a registry without going through the intermediate step of wrapping it as a tar file. Let us d
(read more)
The fact that Microsoft doesn't just whitelist their own domains speaks to their commitment to strict security measures and good engineering culture. Special cases aren't special enough to break the rules. On the other hand, `notify.trafficmanager.net.`, the domain name used for Edge push notifications through Azure Traffic Manager, currently points to `notify1.ontario.ca.` with a CNAME record. This resulted in an Edge push notification outage a couple weeks ago, but they never fully fixed it. Push notifications are working again because they use subdomains of `notify.trafficmanager.net`, but `notify.trafficmanager.net` itself is simultaneously used by one of their Azure customers--and they seemingly have no idea.In other words: `*.notify.trafficmanager.net` is special-cased, and this has caused problems. They can and do whitelist all sorts of things for special cases. Microsoft is good at what they go, but they are a pragmatic company.My guess here is that some junk folder routing is on client side, or the user flagged junky email from the same infrastructure as junk. Or, they've tweaked some settings to address the issues with spammers using Outlook infrastructure that bypasses spam controls. You'd think that they'd have a non-domain-based way to do it, like cryptographically signing their own damn emails with a key embedded in outlook or something. >speaks to their commitment to strict security measures and good engineering cultureDoes it really or does it just mean that nobody cared enough to do it for whatever reason? Mentioned before in another thread. Google workspace flagged an email from Google domains as spam. And it wasn't even a marketing email from them. It was a reminder that I had a .dev domain about to be renewed. I guess that's what happens when you're just too big. And I don't blame the Gmail team. Google has probably launched and killed a thousand products with a thousand domains so curating that whitelist is probably a hard job Must be a common phishing scam."Your domain is about to expire, enter your Google username and password to renew it!"If it was me, I'd pattern those emails to be exactly like the real ones. So then the real ones might get flagged by the spam filters too. You'd think they'd check who's sending them though (origin server)... Maybe all these new AI aren't that smart after all. I just checked and in my case the email was coming from [email protected] so you'd think that Gmail is smart enough to not flag as spam an email from google.com and yet... It would seem they actually do whitelist some of their own stuff - specifically those
(read more)
Main page A Quick Guide to Mutt Contents Basics Installing and configuring getmail Simple mutt configuration IMAP Sending mail Mail headers Documents and other attachments HTML mail, following URL's and sending mail from a browser Macros Simple filtering Reading mail Keeping addresses Replying to mailing lists Using mutt with an LDAP address book More details on multiple accounts A brief guide to colors in mutt Spell checking Mutt and GPG Stupid mutt tricks Odds and ends Newer (and some older) odds and ends Mutt is not that difficult to get up and running, however, sometimes finding the proper information can be a bit difficult. It is hoped that this will get you start
(read more)
Maxima is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of l
(read more)
EngineeringApplyBusiness Intelligence AnalystManila, PhilippinesEngineeringRemoteApplyData EngineerManila, PhilippinesEngineeringApplyData EngineerUkraineEngineeringApplyDon’t see what you’re looking for?USAEngineeringRemoteApplySenior Data AnalystManila, PhilippinesEngineeringRemoteGrowthApplyCommunications and Operations AnalystManila, PhilippinesGrowthApplyContent ResearcherManila, PhilippinesGrowthApplyContent WriterManila, PhilippinesGrowthMarketplaceApplyAssociate Account ExecutiveScottsdale, AZMarketplaceHybridApplyAssociate Project ManagerScottsdale, AZMarketplaceHybridApplyDon't see what you are looking for?Scottsdale, AZMarketplaceHybridApplySales ManagerScottsdale, AZMarketpla
(read more)
Simplifying AGL's existing Wayland-based graphical stack and avoiding the use of modules that aren't maintained upstream has lead to the creation of a new compositor based on libweston, bringing more
(read more)
This is the tale of what for me was a rather remarkable adventure.  It was assembled on the basis of my personal recollection and experience, emails, GPS logs and some official documents.  It represents solely the perspective and opinions of myself, in my more lucid moments.  It is in no way intended to represent the position of the Riverside Mountain Rescue Unit, nor any other agency mentioned.  Further, my usual writing style tends to be somewhat lighthearted and flippant, which would be somewhat at odds with the serious and tragic nature of the incident being reported.  I have attempted to remain sensitive to the underlying events, yet retain a certain level of casual narrative that some might find entertaining.  And if not entertaining, then at least informative. As part of due diligence I need to add an important note.  In the past I’ve kept certain locations regarding this incident fairly well cloaked for a variety of reasons,  explained as  part of the narrative.  Mainly, it’s a very difficult, even dangerous, area to get into, and there are a lot of armchair desert adventurers possibly tempted to try it.  However in the interest of completeness I’ve decided to include images showing the  GPS tracks of the various search efforts.  I’ve also refrained from my favorite trick of photo-reversing images of the site.  What you see it what it was.  At this point, there is nothing left at the site for souvenir hunters, so I see no need for maintaining its secrecy. Anyone reading of the difficulties encountered in this search should consider any visitation very carefully.  As a point of reference, if you’re not physically capable of doing a day hike to the top of Mount Whitney and back, and aren’t a skilled, off-trail hiker, you should stay out of this area.  My opinion, anyway. That’s a measure of how hard it is to get into the area on foot (and out, safely!).  At this point I know the location and surroundings probably better than anyone, and I’m not going back.  The area scares me just a bit. Introduction, July 23, 1996 The original search and interim years I get sucked in (It never seems cr
(read more)
[Translations: Belarusian, Chinese, Estonian, French, German, Italian, Japanese, Polish, Portuguese, Russian, Spanish, Turkish] The internet is a copy machine. At its most foundational level, it copies every action, every character, every thought we make while we ride upon it. In order to send a message from one corner of the internet to another, the protocols of communication demand that the whole message be copied along the way several times. IT companies make a lot of money selling equipment that facilitates this ceaseless copying. Every bit of data ever produced on any computer is copied somewhere. The digital economy is thus run on a river of copies. Unlike the mass-produced reproductions of the machine age, these copies are not just cheap, they are free. Our digital communication network has been engineered so that copies flow with as little friction as possible. Indeed, copies flow so freely we could think of the internet as a super-distribution system, where once a copy is introduced it will continue to flow through the network forever, much like electricity in a superconductive wire. We see evidence of this in real life. Once anything that can be copied is brought into contact with internet, it will be copied, and those copies never leave. Even a dog knows you can’t
(read more)
Gallery of Web Design History Halfproject 2002 Yahoo 1994 Space Jam 1996 Hotmail 2000 Coca-Cola 2000 K10k 2003 MySpace 2003 SpaceX 2002 Pizza Hut 1996 Apple 1998 Show more websites Timeline of Web Design Evolution Airbnb 2008–2021 Twitter 2006–2021 Steam 2002–2020 Pizza Hut 1996–2022 Facebook
(read more)
What is binary to text encoding?What a better place to start than Wikipedia's article on binary to text encoding:A binary-to-text encoding is encoding of data in plain text.[A bit recursive perhaps?]More precisely, it is an encoding of binary data in a sequence of printable characters.These encodings are necessary for transmission of data when the channel does not allow binary data (such as email or NNTP) or is not 8-bit clean.PGP documentation (RFC 4880) uses the term "ASCII armor" for binary-to-text encoding when referring to Base64.OK, I've split their introduction into separate phrases. Setting aside the first phrase which is somewhat recursive, the second one is the technical correct definition, emphasizing the need to transform arbitrary data (nowadays arbitrary byte sequences) into printable data (nowadays most likely ASCII character sequences).The other two sentences (mentioning "8-bit clean" or "PGP") are perhaps better suited for a section dedicated to the early computing history (in case of "8-bit cleanness") or the "good ideas that have failed to meet the market" history (in case of PGP)...As a small example, below are the first 440 bytes of MBR partitioned disks, which is actually binary machine executable code part of the early (legacy) boot stages, as provided by the SYSLINUX project.base64 < /usr/share/syslinux/mbr.bin M8D6jtiO0LwAfInmBleOwPv8vwAGuQAB86XqHwYAAFJStEG7qlUxyTD2+c0TchOB+1WqdQ3R6XMJ ZscGjQa0QusVWrQIzROD4T9RD7bGQPfhUlBmMcBmmehmAOg1AU1pc3Npbmcgb3BlcmF0aW5nIHN5 c3RlbS4NCmZgZjHSuwB8ZlJmUAZTagFqEInmZvc29HvA5AaI4YjFkvY2+HuIxgjhQbgBAooW+nvN E41kEGZhw+jE/76+fb++B7kgAPOlw2ZgieW7vge5BAAxwFNR9geAdANAid6DwxDi80h0W3k5WVuK RwQ8D3QGJH88BXUiZotHCGaLVhRmAdBmIdJ1A2aJwuis/3ID6Lb/ZotGHOig/4PDEOLMZmHD6HYA TXVsdGlwbGUgYWN0aXZlIHBhcnRpdGlvbnMuDQpmi0QIZgNGHGaJRAjoMP9yJ2aBPgB8WEZTQnUJ ZoPABOgc/3ITgT7+fVWqD4Xy/rz6e1pfB/r/5OgeAE9wZXJhdGluZyBzeXN0ZW0gbG9hZCBlcnJv ci4NCl6stA6KPmIEswfNEDwKdfHNGPTr/QAAAAAAAAAAAAAAAAAAAAA= Encoding schemes relevanceSetting computing history aside, some of the dinosaurs that still require them (like SMTP), and various esotericisms (like data: URI's), not many people use such encoding schemes.There are however still a few cases where
(read more)
Dunno if the macOS keychain counts. I think it would count, however I’ve read recently two articles by Matthew Garrett about the topic and it doesn’t seem encouraging: https://mjg59.dreamwidth.org/64968.html https://mjg59.dreamwidth.org/65462.html However I’m searching for something portable (at least in the UNIX / POSIX world). About the GnuPG situation, although I am an active (long time) user of GnuPG, and I’ve even hacked together a password manager (similar to pass) with GnuPG, I really hate the overall experience (engineering and UX)… I’ve looked forward to age, but it has its own warts (especially lack of agent, unencrypted identities and lack of signatures)…
(read more)
2023-02-04 - (2 min read) I recently realized that all the various programming philosophies are concerned with state, and can be boiled down into a simple statement about how to work with state. Object-Oriented - Modifying a lot of state at once is hard to get correct; encapsulate subsets of state into separate objects and allow limited manipulation of the encapsulated sub-state via methods. Functional - Modifying state is hard to get correct; keep it at the boundaries and keep logic pure so that it is easier to verify the logic is correct. Declarative - Modifying state is hard to get correct; use a language to describe how s
(read more)
   Everything about history and evolution of videogames! Site Search (use this search bar to find exact word on these pages) (you may need to refresh page to search) This is website about history of video games and video games "Firsts". What was first color game? First racing game? First banned game? First 3D Game? You will find all these game here! Plus -Retro reviews and photos from old magazines!. All games listed chronologically. You'll find on this site - original posters and cover arts, most interesting trivia for each game, rare original videos of gameplay and more (screenshots, secrets and deleted materials from these games, first teviews and previews). All innovative games from 1947 to our times! Video games of 1940's Video games of 1950's Video games of 1960's 1962 Spacewar!      (DEC PDP-1)                                                    First digital computer game 1967 Brown Box (dedicated console)                                        
(read more)
Open Source Society University Path to a free self-taught education in Computer Science! Summary Community Curriculum Code of conduct Team The OSSU curriculum is a complete education in computer science using online materials. It's not merely for career training or professional development. It's for those who want a proper, well-rounded grounding in concepts fundamental to all computing disciplines, and for those who have the discipline, will, and (most importantly!) good habits to obtain this education largely on their own, but with support from a worldwide community of fellow learners. It is designed according to the degree requirements of undergraduate computer science majors, minus general education (non-CS) requirements, as it is assumed most of the people following this curriculum are already educated outside the field of CS. The courses themselves are among the very best in the world, often coming from Harvard, Princeton, MIT, etc., but specifically chosen to meet the following criteria. Courses must: Be open for enrollment Run regularly (ideally in self-paced format, otherwise running multiple times per year) Be of generally high quality in teaching materials and pedagogical principles Match the curricular standards of the CS 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science When no course meets the above criteria, the coursework is supplemented with a book. When there are courses or books that don't fit into the curriculum but are otherwise of high quality, they belong in extras/courses or extras/readings. Organization. The curriculum is designed as follows: Intro CS: for students to tr
(read more)
When you’re in the business of selling software to people, you tend to get a few chances to migrate data from their legacy software to your shiny new system. Most recently for me that has involved public health data exported from legacy disease surveillance systems into PostgreSQL databases for use by the open source EpiTrax system and its companion EMSA. We have collected a few tips that may help you learn from our successes, as well as our mistakesparticularly educational experiences. Customer Management Your job is to satisfy your customers, and your customers want to know how the migration is progressing. Give them an answer, even if it’s just a generalization. This may be a burndown chart, a calculated percentage, a nifty graphic, or whatever, but something your project managers can show to their managers, to know more or less how far along things are. Your job is also to know your system; that’s not the customer’s job. They shouldn’t have to get their data into a specific format for you to make use of it. Be as flexible as possible in the data format and structure you’ll accept. In theory, so long as your customer can provide the legacy data in a machine-readable format, you should be able to use it. Let them focus on getting the data out of their legacy system — which is sometimes quite an effort in itself! Real data is almost always messy data, and your customer will probably want to take the opportunity to clean things up; ma
(read more)
Breaking news: OpenTTD 13.0 is now available! Depending on your perspective, we’re either two months early for our usual April 1st release, or a bit tardy for the Christmas 2022 release we intended. We think the wait has been worth it. This is one of the largest releases we’ve done in several years, with numerous features and improvements covering the user interface, gameplay features, and modding extensions for NewGRF and Game Script creators. Some of the highlights are: Variable interface scaling at whatever size you want (not just 2x and 4x), with optional chunky
(read more)
Present Past Subjects Projects Misc THE ANALYTICAL LANGUAGE OF JOHN WILKINS By Jorge Luis Borges Translated from the Spanish 'El idioma analítico de John Wilkins' by Lilia Graciela Vázquez; edited by Jan Frederik Solem with assistance from Bjørn Are Davidsen and Rolf Andersen. A translation by Ruth L. C. Simms can be found in Jorge Luis Borges, 'Other inquisitions 1937-1952' (University of Texas Press, 1993) I have noticed that the 14th edition of Encyclopedia Britannica does not include the arti
(read more)
2023-02-05CPUs running Intel’s Skylake-X microarchitecture have a curious bug that I haven’t seen mentioned anywhere: the AVX-512 compression instructions have a false dependency on their destination. In other words, the following two instructions have identical performance characteristics:vcompressps X{k}, Y vcompressps X{k}{z}, YWhereas we would expect the latter to depend only on k and Y, it also depends on X. The problem seems to have been fixed in Icelake. Surprisingly, while it affects all compression operations, it does not affect any of the expansion operations. Pre
(read more)
From Wikipedia, the free encyclopedia Ulugh Beg Observatory in 2001 The trench with the lower section of the meridian arc. In Ulugh Beg's time, these walls were lined with polished marble. The Ulugh Beg Observatory is an observatory in Samarkand, Uzbekistan, built in the 1420s by the Timurid astronomer Ulugh Beg. Islamic astronomers who worked at the observatory include Al-Kashi, Ali Qushji, and Ulugh Beg himself. The observatory was destroyed in 1449 and rediscovered in 1908. History[edit] Rise and decline[edit] Ulugh Beg, the son of Shāhrukh and grandson of sultan Teymūr, became the ruler of Samarkand in the 15th century AD. Ulugh Beg was very skilled in mathematics and astronomy. He taught many important astronomers; one example is the famous Ali Qushji. Many h
(read more)
Dulwich Picture Gallery is currently holding an exhibition of the works of Mikalojus Konstantinas Čiurlionis, the best known Lithuanian artist and composer. Over a hundred works are on loan from the M.K. Čiurlionis National Museum of Art in Kaunas where most of the artist’s work is held. The exhibition venue itself has historical links with Poland and Lithuania. In 1790 Stanisław August Poniatowski, King of Poland and Grand Duke of Lithuania, commissioned two art dealers to create a Royal Collection. By the time the task was completed, Poland had undergone three partitions and finally ceased to exist as a sovereign state. Stanisław August was forced to abdicate. As the British Museum’s trustees were considered to be “too arbitrary and aristocratic”, the collection was left
(read more)
February 5, 2023 at 10:13 PM I’m part of the MTV generation. If you can immediately picture the videos for Hey Mickey, The Safety Dance, You Might Think, Money For Nothing, and Take On Me, you might be too. I was transfixed from day one, not just by the bands and the music, but by the format. Some videos told a story (of varying levels of coherence). Others were more of a vibe, as the kids say these days. But always, the combination of sound and images, intertwined, synchronizing and diverging, pressed all my buttons. My affection for an equal partnership between music and video is reflected in many of the movies I love. Goodfellas, one of my all-time favorites, is arguably structured as a series of music videos separated by exposition. The best Star Wars movies are fam
(read more)
UPM is our internal standalone library to perform static analysis of SQL code and enhance SQL authoring.  UPM takes SQL code as input and represents it as a data structure called a semantic tree. Infrastructure teams at Meta leverage UPM to build SQL linters, catch user mistakes in SQL code, and perform data lineage analysis at scale. Executing SQL queries against our data warehouse is important to the workflows of many engineers and data scientists at Meta for analytics and monitoring use cases, either as part of recurring data pipelines or for ad-hoc data exploration.  While SQL is extremely powerful and very popular among our engineers, we’ve also faced some challenges over the years, namely:  A need for static analysis capabilities: In a growing number of use cases at Meta,
(read more)
02 Feb 2023 When I see the landscape of native GUI in 2022, I feel like something is missing. I don’t just mean Rust UI. My frustrations with UI frameworks started long before I’d even heard of Rust. The origin story: Qt and fear The Qt framework is a C++ toolkit for writing GUI apps. In 2019, I spent a year working on a Qt project for an energy company, a diagram editor meant to be used by electrical engineers. I was brought in as a consultant late in the project, to fix bugs and add small features before the product shipped. I had already worked on Qt projects before, but they were mostly amateur projects, toy examples and the like. This was the first GUI project of industrial scale that I worked on, and it was fascinating and/or infuriat
(read more)
STATEMENT OF GOVERNMENT INTEREST The invention described herein may be manufactured and used by or for the Government of the United States of America for governmental purposes without payment of any royalties thereon or therefor. BACKGROUND There are four known fundamental forces which control matter and, therefore, control energy. The four known forces are strong nuclear forces, weak nuclear forces, electromagnetic force, and gravitational force. In this hierarchy of forces, the electromagnetic force is perfectly positioned to be able to manipulate the other three. A stationary electric charge gives rise to an electric (electrostatic) field, while a moving charge generates both an electric and a magnetic field (hence the electromagnetic field). Additionally
(read more)
Abstract As the Web is becoming ubiquitous, interactive, and multimodal, technology needs to deal increasingly with human factors, including emotions. The specification of Emotion Markup Language 1.0 aims to strike a balance between practical applicability and scientific well-foundedness. The language is conceived as a "plug-in" language suitable for use in three different areas: (1) manual annotation of data; (2) automatic recognition of emotion-related states from user behavior; and (3) generation of emotion-related system behavior. Status of this document This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in
(read more)
It's a world of laughter a world of song it's a world where pointers are four bytes long There's only so much cache we must clean up our trash It's a smol world after all! It's a world of strings and arrays for you dictionaries and ints can be found here too Everything's quite compact there's nothing that we lack it's a smol, smol world! do { It's a smol world after all... It's a smol world after all... It's a smol world after all... It's a smol, smol world } while(!insane); What? smol world is an experimental memory manager and object model, which tries to optimize for small data size. It provides: A memory space called a “heap”, which internally uses 32-bit pointers A super fast “bump” or “arena” memory allocator Allocated blocks with only
(read more)
Three hundred years after the death of Gottfried Wilhelm Leibniz and seven hundred years after the death of Ramon Llull, Jonathan Gray looks at how their early visions of computation and the “combinatorial art” speak to our own age of data, algorithms, and artificial intelligence. PublishedNovember 10, 2016Scroll through the whole page to download all images before printing. Drawing of Leibniz's calculating machine, featured as a folding plate in Miscellanea Berolensia ad incrementum scientiarum (1710), the volume in which he first describes his invention — Source.Each epoch dreams the one to follow”, wrote the historian Jules Michelet. The passage was later used by the philosopher and cultural critic Walter Benjamin in relation to his unfinished magnum opus, The Arcades Project, w
(read more)
Tools for hosting and analysing a corpus of cuneiform texts Pinned Electronic Babylonian Literature API Python 9 2 Electronic Babylonian Literature Single Page Application TypeScript 7
(read more)
Ask any philosopher what scepticism is, and you will receive as many different answers as people you’ve asked. Some of them take it to be showing that we cannot have any knowledge – of, say, the external world – and some of them take it to be even more radical in showing that we cannot have any reasonable beliefs. In the interests of getting a handle on the varieties of scepticism, one can locate four different milestones of sceptical thought in the history of Western philosophy. These four milestones start with the least threatening of them, Pyrrhonian skepticism, and continue by Cartesian and Kantian scepticisms to the Wittgensteinian moment in which even our intention to act is put in question. To our modern minds, scepticism is normally associated with frustration and sceptical c
(read more)
Introduction Smalltalk has suffered because it lacked a testing culture. This column describes a simple testing strategy and a framework to support it. The testing strategy and framework are not intended to be complete solutions, but rather a starting point from which industrial strength tools and procedures can be constructed. The paper is divided into three sections: Philosophy - Describes the philosophy of writing and running tests embodied by the framework. Read this section for general background. Cookbook - A simple pattern system for writing your own tests. Framework - A literate program version of the testing framework. Read this for in-depth knowledge of how the framework operates. Example - An example of using the testing frame
(read more)
I discovered a documentary on Kanopy that aired in 1982 called Family Business, part of the  “Middletown” PBS series. It follows the struggles of Howie Snider who bought a Shakey’s Pizza Parlor franchise that noosed his whole family. Shakey’s is the first pizza franchise created in 1954 and at one time had over 500 restaurants, now only 58 remain in the United States. The struggles of the Snider family are embedded in Shakey’s staying afloat. Clearly, the documentary is dated but still reflective of the restaurant business today. Many families are still chasing the American Dream. All Howie wanted was a new 20-year mortgage to further extend his future which was from the start on shaky grounds. After 14 years of valiant effort, Howie finally closed the pizza franchise in 1989. Howie Snider passed away on October 30, 2016. If you ever plan to open a food franchise, please watch this. Family Business is still pertinent 40 years later.“Family Business,” produced and directed by Tom Cohen, is a leap forward for the film documentary if only because all one has to care about is people to appreciate its story of Howie Snider, his wife, Judy, and their eight great kids, who together try to keep a Shakey’s franchise in Muncie alive and thriving. It isn’t easy. Early in the film, Howie’s on the phone to Shakey’s corporate headquarters pleading for time to pay back the $10,000 he still owes the company, while his wife surrenders to sobs nearby.Howie Snyder is an archetype: a retired Marine colonel in his mid-40s, he is a prototypical American entrepreneur struggling to make his business go.Howie’s Shakey’s Pizza franchise in Muncie, Indiana employs hi
(read more)
Field Programmable Gate Arrays (FPGAs) are a form of programmable hardware that has become inexpensive and accessible recently. I recently purchased a Digilent Basys 3 FPGA development board for $200 based on a Xilinx Artix-7 FPGA. Xilinx makes their development software available free for non-commercial use on these lower end chips. If you’ve ever been interested in how chips are designed and developed, then FPGAs are a great way to get started. You program FPGAs using the same hardware design software that is used to design custom integrated circuit chips (ASICs). In this post, we’ll start to look at what an FPGA is and how it works. Anyone that has taken a basic logic course will have encountered truth tables for the basic logic operations. Below are the basic logic building blocks including their symbol and truth table. You can then build complicated logic circuits out of these building blocks. If you want to build an I/C, then you use a design pattern of the transistors for each logic gate. For instance a possible AND gate made out of transistors and resistors is below. To build a CPU, you need a few more elements than basic logic gates, namely memory and a way to synchronize everything to a clock, but this is a good starting point. The basic idea behind an FPGA is to provide an array of circuit elements that can execute any truth table, or lookup table in FPGA parlance. You program the FPGA by downloading all the truth tables to it and then execute them. A Xilinx Artix-7 FPGA contains thousands of configurable logic blocks (CLBs), each of which can be configured to execute a single 6-input lookup table (LUT) or two 5-input
(read more)
As a former U.S. Navy F/A-18 fighter pilot who witnessed unidentified anomalous phenomena (UAP) on a regular basis, let me be clear. The U.S. government, former presidents, members of Congress of both political parties and directors of national intelligence are trying to tell the American public the same uncomfortable truth I shared: Objects demonstrating extreme capabilities routinely fly over our military facilities and training ranges. We don’t know what they are, and we are unable to mitigate their presence. The Office of the Director of National Intelligence (ODNI) last week published its second ever report on UAP activity. While the unclassified version is brief, its findings are sobering. Over the past year, the government has collected hundreds of new reports of enigmatic objects from military pilots and sensor systems that cannot be identified and “represent a hazard to flight safety.” The report also preserves last year’s review of the 26-year reporting period that some UAP may represent advanced technology, noting “unusual flight characteristics or performance capabilities.” Mysteriously, no UAP reports have been confirmed to be foreign so far. However, just this past week, a Chinese surveillance balloon shut down air traffic across the United States. How are we supposed to make sense of hundreds of reports of UAP that violate restricted airspace uncontested and interfere with both civilian and military pilots?   Here is the hard truth. We don’t know. UAP are a national security problem, and we urgently need more data.  Why don’t we have more data? Stigma. I know the fear of stigma is a major problem because I was the first active-duty fighter pilot to come forward publicly about regular sightings of UAP, and it was not easy. There has been little support or incentive for aircrew to speak publicly on this topic. There was no upside to reporting hard-to-explain sightings within the chain of command, let alone doing so publicly. For pilots to feel comfortable, it will require a culture shift inside organizations and in society at large. I have seen for myself on radar and talked with the pilots who have experience
(read more)
The Market for Lemons For most of the past decade, I have spent a considerable fraction of my professional life consulting with teams building on the web. It is not going well. Not only are new services being built to a self-defeatingly low UX and performance standard, existing experiences are pervasively re-developed on unspeakably slow, JS-taxed stacks. At a business level, this is a disaster, raising the question: "why are new teams buying into stacks that have failed so often before?" In other words, "why is this market so inefficient?" George Akerlof's most famous paper introduced economists to the idea that information asymmetries distort markets and reduce the quality of goods because sellers with more information can pass off low-quality items as more valuable than informed buyers appraise them to be. (PDF, summary) Customers that can't assess the quality of products pay the wrong amount for them, creating a disincentive for high-quality products to emerge and working against their success when they do. For many years, this effect has dominated the frontend technology market. Partisans for slow, complex frameworks have successfully marketed lemons as the hot new thing, despite the pervasive failures in the
(read more)
On January 19, Apple and the Computer History Museum released the source code to the Lisa Office System 7/7 version 3.1, including both the complete Office System application suite and the Lisa operating system. (The main components not released were the Workshop environment and its tooling, including the Edit application and the Pascal, COBOL, BASIC, and C compilers and the assembler.) Curious people have started to dig into what’s needed to understand and build it, and I thought I’d share some of what I’ve learned over the past few decades as a Lisa owner and enthusiast. While Lisa appears to have an underlying procedural API similar to that of the Macintosh Toolbox, the Office System applications were primarily written in the Clascal language—an object-oriented dialect of Pascal designed by Apple with Niklaus Wirth—using the Lisa Application ToolKit so they could share as much code as possible between all of them. This framework is the forerunner of most modern frameworks, including MacApp and the NeXT frameworks, which in turn were huge influences on the Java and .NET frameworks. One of the interesting things about Clascal is that it doesn’t add much to the Pascal dialect Apple was using at the time: Pascal was originally designed by Wirth to be a teaching language and several constructs useful for systems programming were left out, but soon added back by people who saw Pascal as a nice, straightforward, compact language with simple semantics that’s straightforward to compile. While in the 1990s there was a bitter war fought between the Pascal and C communities for microcomputer development, practically speaking the popular Pascal dialects and C are almost entirely isomorphic; there’s almost nothing in C that’s not similarly simple to express in Pascal, and vice versa. So beyond standard Pascal, Apple Pascal had a concept of “units” for promoting code modularity: Instead of having to cram an entire program in one file, you could break it up into composable units that specify their “interface” separately from their “implementation.” Sound familiar? When creating a unit under this model, both the interface and the implementation
(read more)
Written by Solène, on 07 July 2021.Tags: #linux #oldcomputerchallenge For some time I wanted to start a personal challenge, after some thoughts I want to share it with you and offer you to join me in this journey. The point of the challenge is to replace your daily computer by a very old computer and share your feelings for the week. Here are the *rules* of the challenge, there are no prize to win but I'm convinced we will have feelings to share along the week and that it will change the way we interact with computers. 1 CPU maximum, whatever the model. This mean only 1 CPU|Core|Thread. Some bios allow to disable multi core. 512 MB of memory (if you have more it's not a big deal, if you want to reduce your ram create a tmpfs and put a big file in it) using USB dongles is allowed (storage, wifi, Bluetooth whatever) only for your personal computer, during work time use your usual stuff relying on services hosted remotely is allowed (VNC, file sharing, whatever help you) using a smartphone to replace your computer may work, please share if you move habits to your smartphone during the challenge if you absolutely need your regular computer for something really important please use it. The goal is to have fun but not make your week a nightmare. If you don't have an old computer, don't worry! You can still use your regularly computer and create a virtual machine with low specs, you would still be more comfortable with a good screen, disk access and a not too old CPU but you can participate. The challenge will take place from 10Th July morning until 17Th July morning. Because I want this event to be a nice moment to share with others, you can contact me so I can add your blog (including gopher/gemini space) to the future list below. You can also join #old-computer-challenge on libera.chat IRC server. prahou's blog, running a T42 with OpenBSD 6.9 i386 with hostname brouk Joe's blog about the challenge and why they need it Solene (this blog) running an iBook G4 with OpenBSD -current macppc with hostname jeefour (gopher link) matto's report using FreeBSD 13 on an Acer aspire one cel's blog using Void Linux
(read more)
Direct link with time for the lazy: https://www.youtube.com/watch?v=DVwpzJw1vwo&t=371sIt's a interesting and strange format that I also have never seen. Anyway, some films/videos have subtitles with a description of all sounds. From https://en.wikipedia.org/wiki/Closed_captioning#Terminology> In the United States and Canada, the terms subtitles and captions have different meanings. Subtitles assume the viewer can hear but cannot understand the language or accent, or the speech is not entirely clear, so they transcribe only dialogue and some on-screen text. Captions aim to describe to the deaf
(read more)
Expanding knowledge across partners and communities HOT enables communities, NGOs, international organizations, and government partners to use and contribute to OpenStreetMap for locally-relevant challenges through provision of training, equipment, knowledge exchange, and field projects.
(read more)
Home | About | Contact | Coaches | Reviews | Breakup Advice | How to Get Back With Your Ex | Relationship Advice | Relationship Counselor | Privacy | Terms | Blog | Online Dating Advice
(read more)
You don't have permission to access "http://www.festo.com/us/en/e/about-festo/research-and-development/bionic-learning-network/highlights-from-2006-to-2009/air-ray-id_33851/" on this server. Refer
(read more)
Checking if the site connection is secure ryancor.medium.com needs to review the security of your connection before proceeding.
(read more)
Checking if the site connection is secure compass.onlinelibrary.wiley.com needs to review the security of your connection before proceeding.
(read more)
The Earthquake Event Page application supports most recent browsers, view supported browsers. Or, try our Real-time Notifications, Feeds, and Web Services.
(read more)
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
(read more)
Something went wrong, but don’t fret — let’s give it another shot.
(read more)
What are you doing this week? Feel free to share! Keep in mind it’s OK to do nothing at all, too.
(read more)