- Last 7 days
-
redecentralize.org redecentralize.org
Tags
Annotators
URL
-
-
mailinabox.email mailinabox.email
-
Mass electronic surveillance by governments revealed over the last several years has spurred a new movement to re-decentralize the web, a movement to empower individuals to be their own service providers again.
-
-
web-highlights.com web-highlights.com
-
[[web-highlights⁰]]是一款功能上可以替代 #hypothesis⁰ 的工具,颜值更高,有些功能貌似更好使。但在稍稍试用后,我发现了它有的一些问题,决定目前不采用: 1. 网络问题:访问其主页以及划线标注云备份网络不太通 2. 付费高:要使用导出 #html⁰ 和 #markdown⁰ 等功能需付费 3. 对图片的支持不够:和[[Hypothesis⁰]]一样,不能把图片划线
Tags
Annotators
URL
-
-
dl.acm.org dl.acm.org
-
A big problem with what's in this paper is that its logical paths reflect the déformation professionnelle of its author and the technologists' milieu.
Links are Works Cited entries. Works Cited entries don't "break"; the works at the other end don't "change".
-
- Sep 2023
-
tomcritchlow.com tomcritchlow.com
-
I was browsing someone’s site yesterday, hosted on Wordpress, yay! Except it was throwing plugin error messages. Wordpress is still too hard to maintain. Wordpress is not the answer.
-
-
medium.com medium.com
-
siderea.dreamwidth.org siderea.dreamwidth.org
-
There is one particular type of document in which the correct handling of the ordinal numbers of lists is paramount. A document type in which the ordinal numbers of the lists cannot be arbitrarily assigned by computer, dynamically, and in which the ordinal numbers of the lists are some of the most important content in the document.I'm referring of course to law.HTML, famously, was developed to represent scientific research papers, particularly physics papers. It should come as no surprise that it imagines documents to have things like headings and titles, but fails to imagine documents to have things like numbered clauses, the ordinal numbers of which were assigned by, for example, an act of the Congress of the United States of America.Of course this is not specific to any one body of law - pretty much all law is structured as nested ordered lists where the ordinal numbers are assigned by government body.It is just as true for every state in the Union, every country, every province, every municipality, every geopolitical subdivision in the world.HTML, from the first version right up to the present version, is fundamentally inimical to being used for marking up and serving legal codes as web pages. It can be done, of course - but you have to fight the HTML every step of the way. You have no access to any semantic markup for the task, because the only semantic markup for ordered lists is OL, which treats the ordinal numbers of ordered lists as presentation not content.
Tags
Annotators
URL
-
-
thescimus.com thescimus.com
-
To build HIPAA compliant software, developers need to be aware of and comply with several key requirements outlined in the HIPAA Privacy Rule and Security Rule. These requirements are designed to ensure the confidentiality, integrity, and availability of protected health information (PHI) and to prevent unauthorized access, use, or disclosure of PHI.
Building software compliant with HIPAA standards necessitates a deep understanding of its Privacy and Security Rules to safeguard protected health information effectively.
-
-
thescimus.com thescimus.com
-
We will try to add two tests for response code in order to know that our request was successful. Another test we will add for response time < 2 sec in order to understand how fast request was processed by server. If it will be executed slower then for 2 seconds, our test will fail. In this case I use 2 seconds just for example it might be greater or lower number, but 7 seconds is usually a maximum time for request execution. So in order to add tests, go to “Tests” in request section of application and add this few lines : tests["Status code is 200"] = responseCode.code === 200; tests["Response time is less than 200ms"] = responseTime < 2000; When this is done hit on Send button again and execute your first test.
Good case -- importance of adding tests to validate response codes and times, ensuring optimal server performance and response.
-
-
thescimus.com thescimus.com
-
Configuring PyCharm: Open PyCharm with ‘Pytest Web Framework’ Press Ctrl+Alt+S > Project Click ‘Project Interpreter’ Select Python 3.6 Click ‘OK’ Go to write over 100500 automated tests!!!
This section provides a step-by-step guide on setting up PyCharm for automated testing using the 'Pytest Web Framework'.
-
-
thescimus.com thescimus.com
-
There are many reasons why you might want to migrate from one stack to another. Maybe you’re looking for a more robust solution, or perhaps you’re trying to simplify your development process. Whatever the reason, it’s important to know that it is possible to migrate from one stack to another.
Migration between tech stacks can be driven by various motivations, including the need for enhanced capabilities or a desire for a more streamlined development workflow.
-
-
thescimus.com thescimus.com
-
It also simplifies Magento order management, providing a centralized dashboard for handling customer orders and inquiries. Efficient order management can lead to improved customer satisfaction and increased sales. For more insights, check out this Magento Commerce Resources page.
Magento's order management system offers a unified platform, making it easier for businesses to manage customer interactions and orders, enhancing operational efficiency.
-
-
thescimus.com thescimus.com
-
Developers use tools like Postman for API test automation to create WMS system integration technologies that help you increase efficiency by automating manual processes. The WMS connects all of your warehouse locations so that you can easily access information about your inventory, orders, and shipments from any computer.
Leveraging tools such as Postman, developers can automate API tests, leading to the creation of efficient Warehouse Management System (WMS) integrations that streamline operations.
-
-
thescimus.com thescimus.com
-
Additionally, they are at the forefront of sharing valid product ideas with their team since they have an expert understanding of coding best practices as well as mobile and web programming services.
Developers play a pivotal role in product ideation due to their deep knowledge of coding standards and expertise in both mobile and web development.
-
-
thescimus.com thescimus.com
-
Time Required to Code: Every project comes with a deadline, and the time set out by your client to get the work done is a crucial part of your decision. If you have a tight deadline, you might be better off with the fastest front-end framework you can find. One that would work well with your team’s capabilities to ensure great results in the shortest time possible.
The efficiency of a front-end framework can significantly impact project timelines. Choosing a framework that aligns with the project's deadline and the team's proficiency can ensure timely delivery.
-
-
thescimus.com thescimus.com
-
So now we have a file that you need to open in JMeter UI, configure number of threads that you want to execute and you are good to go.
After converting the Postman test into a JMeter format, users can easily adjust the concurrency settings by configuring the number of threads in the JMeter UI, offering flexibility in load testing scenarios.
-
-
thescimus.com thescimus.com
-
Let’s add a test that will validate that number of results on a page is lower then total number of results.
This code snippet in Postman ensures that the number of displayed results on a single page is always less than the total count of results, ensuring pagination is functioning correctly.
-
- Aug 2023
-
en.wikipedia.org en.wikipedia.org
-
In computing, the robustness principle is a design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others". It is often reworded as: "be conservative in what you send, be liberal in what you accept". The principle is also known as Postel's law, after Jon Postel, who used the wording in an early specification of TCP.
https://en.wikipedia.org/wiki/Robustness_principle
Robustness principle: be conservative in what you do, be liberal in what you accept from others.
-
-
en.wikipedia.org en.wikipedia.org
-
-
meatballwiki.org meatballwiki.org
-
http://meatballwiki.org/wiki/InterWiki
InterWiki is the idea of having one unified Wiki system distributed across many servers.
-
-
news.ycombinator.com news.ycombinator.com
-
We really f'ed up the web didn't we?
-
I think I get what you're saying but I have some difficulty moving past the fact that you're claiming it doesn't need to be a website because it would be sufficient if it was a bunch of hosted markup documents that link to each other.
-
-
github.com github.com
-
For lost googlers:
-
-
erinkissane.com erinkissane.com
-
One of the things I loved most about Twitter was the way it could throw things in front of me that I never would have even thought to go look for on my own.
I'm afraid this is one of those sentiments that should absolutely be tossed in the because of lack of user control category
-
Constantly being told I was somewhat dim because I didn’t understand how to do things or what the unwritten rules were.
This, I particularly hate and hope desperately I did not contribute to.
-
which I pulled out of the API as a JSON file by tweaking a bash script a nice stranger wrote up on the spot when I asked about JSON export
This I would very much like to learn more details about... I've been unable to find comprehensive documentation of Bluesky's API thus far.
-
-
neugierig.org neugierig.org
-
(This paragraph replaced a more complex one based on a helpful comment from stellalo on HN!)
-
- Jul 2023
-
docdrop.org docdrop.org
-
we compiled all the species that we try and get a handle on and we then tried to 00:05:06 relate those species list to Manhattan Island through a new kind of science that we call muir webs and that kind of data it turns out that you can visualize and understand as a network
- for: progress trap, species map, indra's net
Tags
Annotators
URL
-
-
welikia.org welikia.org
-
Muir Web
- for Indra's Net of Jewels, progress trap
- definition
- Muir Web
- A diagram that shows all the relationships between species of a particular ecological habitat
- Muir Web
-
-
Local file Local file
-
However, in many ofthese courses, the Web itself is treat-ed as a specific instantiation of moregeneral principals. In other cases, theWeb is treated primarily as a dynamiccontent mechanism that supports thesocial interactions among multiplebrowser users. Whether in CS studiesor in information-school courses, theWeb is often studied exclusively as thedelivery vehicle for content, technicalor social, rather than as an object ofstudy in its own right.
I'd argue that this is a good thing. I think the tech industry's navelgazing does perhaps some of the worst harm wrt the problems articulated earlier.
-
- Jun 2023
-
lensmag.xyz lensmag.xyz
-
The soft power of Google Doc publishing
See also:
Google Docs is one of the best ways to make content to put on the Web.
Tags
Annotators
URL
-
-
Local file Local file
-
Lost history ± the web is designed for society,but crucially it neglects one key area: its history.Information on the web is today's information.Yesterday's information is deleted or overwrit-ten
It's my contention that this is a matter of people misusing the URL (and the Web, generally); Web pages should not be expected to "update" any more than you expect the pages of a book or magazine or a journal article to be self-updating.
We have taken the original vision of the Web -- an elaborately cross-referenced information space whose references can be mechanically dereferenced -- and rather than treating the material as imbued with a more convenient digital access method and keeping in place the well-understood practices surrounding printed copies, we compromised the entire project by treating it as a sui generis medium. This was a huge mistake.
This can be solved by re-centering our conception of what URLs really are: citations. The resources on the other sides of a list of citations should not change. To the extent that anything ever does appear to change, it happens in the form of new editions. When new editions come out, nobody goes around snapping up the old copies and replacing it for no charge with the most recent one while holding the older copies hostage for a price (or completely inaccessible no matter the price).
-
-
Local file Local file
-
A resource can map to the empty set, which allowsreferences to be made to a concept before any realization ofthat concept exist
This is a very useful but underutilized property. It allows you to e.g. announce in advance that a resource will exist at some point in the future, and thereby effectively receive "updates" to the linking document without requiring changes to the document itself.
-
how dowe ensure that its introduction does not adversely impact, oreven destroy, the architectural properties that have enabledthe Web to succeed?
Another good jumping off point for why document mutability should be considered harmful. https://hypothes.is/a/N_gPAAmQEe6kvXNEm10s7w
-
-
static.googleusercontent.com static.googleusercontent.com
-
where theraw source could be directly modified and potentially read. Thiswas not widely implemented, and was subsequently removed. Thiseffectively limits WebDAV remote authoring to situations wherethere is a nearly direct correspondence
I'll go further and say that, wrt the original goals of the Web—and the principles we should continue to strive for today, despite widespread practice otherwise—Modification (should be) Considered Harmful.
Git has the right idea. Hypermedia collections should also be append-only (not different resources masquerading under the same name).
-
-
garrickvanburen.com garrickvanburen.com
-
https://garrickvanburen.com/yes-all-software-should-have-a-philosophy-txt-file/
Makes me want all projects included a Philosophy.txt file along with the README.txt and License.txt. It’s far more useful and people-oriented than humans.txt
-
- May 2023
-
redbean.dev redbean.devredbean1
-
your private version of the Internet
The Web, you mean.
-
-
spatialwebfoundation.org spatialwebfoundation.org
-
spatialwebfoundation.org spatialwebfoundation.org
-
web.archive.org web.archive.org
-
If you doubt my claim that internet is broad but not deep, try this experiment. Pick any firm with a presence on the web. Measure the depth of the web at that point by simply counting the bytes in their web. Contrast this measurement with a back of the envelope estimate of the depth of information in the real firm. Include the information in their products, manuals, file cabinets, address books, notepads, databases, and in each employee's head.
-
-
shaneosullivan.wordpress.com shaneosullivan.wordpress.com
-
share-on-mastodon.social share-on-mastodon.social
-
https://share-on-mastodon.social/
A really neat customizable "Share on Mastodon" button for your pages or posts.
-
-
synth.ameo.dev synth.ameo.dev
-
-
ugmonk.com ugmonk.comUgmonk1
-
Developed in a Kickstarter, ugmonk.com is where Jeff Sheldon now sells his Analog productivity system and refills as well as other related lifestyle brand products.
-
-
erinkissane.com erinkissane.com
-
Mastodon fans know that the network absolutely cannot compete on user friendliness and basic social functionality
friendliness definitely needs to be explicitly defined here.
Have you seen the goddamned art? lol
-
Incidentally, when a straightforwardly “I’m a Nazi” Nazi showed up in the beta, people used the report function, and the Bluesky team labeled the account and banned it from the Bluesky app and restricted promotion of the account of the person who invited him. This changed exactly none of the tenor of the Nazi conversation on Mastodon, but it happened.
Now just imagine the equivalent on the scale of an entire server and you've got the story of Mastodon's incredibly centralized, swift expulsion of Gab's influence. Here's The Verge's version for the moment.
-
-
www.napkin.one www.napkin.one
-
Circling back around to this after a mention by Tim Bushell at Dan Allosso's Book Club this morning. Nicole van der Hoeven has been using it for a while now and has several videos.
Though called Napkin, which conjures the idea of (wastebook) notes scribbled on a napkin, is a card-based UI which has both manual and AI generated tags in a constellation-like UI. It allows creating "stacks" of notes which are savable and archivable in an outline-esque form (though the outline doesn't appear collapsible) as a means of composition.
It's got a lot of web clipper tooling for saving and some dovetails for bringing in material from Readwise, but doesn't have great data export (JSON, CSV) at the moment. (Not great here means that one probably needs to do some reasonably heavy lifting to do the back and forth with other tools and may require programming skills.)
At present, it looks like just another tool in the space but could be richer with better data dovetailing with other services.
-
-
datatracker.ietf.org datatracker.ietf.org
-
dl.acm.org dl.acm.org
-
The Web does not yet meet its design goal as being a pool of knowledge that is as easy to update as to read. That level of immediacy of knowledge sharing waits for easy-to-use hypertext editors to be generally available on most platforms. Most information has in fact passed through publishers or system managers of one sort or another.
-
-
maggieappleton.com maggieappleton.com
-
The question I want everyone to leave with is which of these possible futures would you like to make happen? Or not make happen?
- Passing the reverse Turing test
- Higher standards, higher floors and ceilings
- Human centipede epistemology (ugh what an image)
- Meatspace premium
- Decentralised human authentication
- The filtered web
Intuitively I think 1, 4, and 6 already de facto exist in the pre-generative AI web, and will get more important. Tech bros will go all in on 5, and I do see a role for it (e.g. to vouch that a certain agent acts on my behalf). I can see the floor raising of 2, and the ceiling raising too, but only if it is a temporary effect to a next 'stable' point (or it will be a race we'll loose), grow sideways not only up). Future 3 is def happening in essence, but it will make the web useless so there's a hard stop to this scenario, at high societal cost. Human K as such isn't dependent on the web or a single medium, and if it all turns to ashes, other pathways will come up (which may again be exposed to the same effect though)
-
-
daringfireball.net daringfireball.net
-
Just type in a username and password and off you go.
-
-
infomesh.net infomesh.net
-
almost all beginners to RDF go through a sort of "identity crisis" phase, where they confuse people with their names, and documents with their titles. For example, it is common to see statements such as:- <http://example.org/> dc:creator "Bob" . However, Bob is just a literal string, so how can a literal string write a document?
This could be trivially solved by extending the syntax to include some notation that has the semantics of a well-defined reference but the ergonomics of a quoted string. So if the notation used the sigil
~
(for example), then~"Bob"
could denote an implicitly defined entity that is, through some type-/class-specific mechanism associated with the string "Bob".
-
- Apr 2023
-
atproto.com atproto.com
-
they require the original server to provide a redirect and cannot migrate the user's previous data.
This is... an extremely strange conclusion to come to regarding Social Web account migration, to say the least.
Taking Mastodon as the handy example...
The only reason to use the (extremely competent, bizarrely fast) process of redirection is that one... would like to have the "required" redirect on the original server. If a user intends to move to a different Mastodon instance and does not want to leave a redirect, that step is just... removed from the process.
Tags
Annotators
URL
-
-
www.techdirt.com www.techdirt.com
-
So, services like Calckey, for example, are building out some more user friendly features.
Calckey is a very near fork of Misskey if I'm not mistaken.
-
-
www.w3schools.com www.w3schools.com
-
W3.CSS Intro (Kitchen Sink)
-
-
www.w3schools.com www.w3schools.com
-
Responsive Image Gallery How to use CSS media queries to create a responsive image gallery that will look good on desktops, tablets and smart phones.
-
-
www.w3schools.com www.w3schools.com
Tags
Annotators
URL
-
-
www.w3schools.com www.w3schools.com
-
fonts.google.com fonts.google.com
-
-
vuejs.org vuejs.org
Tags
Annotators
URL
-
-
tailwindui.com tailwindui.com
Tags
Annotators
URL
-
-
tailwindui.com tailwindui.com
Tags
Annotators
URL
-
-
material.angular.io material.angular.io
Tags
Annotators
URL
-
-
vercel.com vercel.com
Tags
Annotators
URL
-
-
www.w3schools.com www.w3schools.com
-
reactstrap.github.io reactstrap.github.io
Tags
Annotators
URL
-
-
themes.getbootstrap.com themes.getbootstrap.com
Tags
Annotators
URL
-
-
Local file Local file
-
These systems provide quite powerful tools for automaticreasoning, but encoding many kinds of knowledge using their rigid formal representations requiressignificant- -and often completely infeasible-amounts of effort.
-
-
philip.greenspun.com philip.greenspun.com
-
There are a few obvious objections to this mechanism. The most serious objection is that duplicate information must be maintained consistently in two places. For example, if the conference organizers decide to change the abstracts deadline from 10 August to 15 August, they'll have to make that change both in the META element in the HEAD and in some human-readable area of the BODY.
Microdata addresses this.
-
-
mlc.ai mlc.ai
-
-
chromium.googlesource.com chromium.googlesource.com
-
www.chromium.org www.chromium.org
-
holzer.online holzer.online
-
Would I want to keep URLs of such draft/work-in-progress files stable, shall they be first-class citizens of the site, should they be indexed, how would I indicate freshness/state etc.?
-
-
project-mage.org project-mage.org
-
And then, of course, browsers are themselves being likened to operating systems. Walled gardens, with no efficiency to speak of, with very little freedom, with too much leverage from the browser vendors. A perfect exploitation machine for keeping you within itself, all while it will do anything to harvest information about your activities, so it can show you some ads as soon as it can. An operating system alright. Yeah, just relax and no harm will come to you.
Tags
Annotators
URL
-
-
project-mage.org project-mage.org
-
Moreover, browsers are not the right way to be using web anyway. See my thought on this in the Data-Supplied Web article.
-
he only advantage of building something in a web browser is that you can view websites right in them. If your task is not to display a webpage, or build a website, if CSS+HTML is not the limit of your imagination, then there's no reason to be building complex shit in the web browser! I can see hitching a web browser ride as a ubiquitous cross-platform graphical backend (over WebGL) if you are willing to deal with all the overhead and impact on speed. But with the libraries like SDL and Skia (which browsers use), that seems kind of pointless.
Tags
Annotators
URL
-
-
manuelmoreale.com manuelmoreale.com
-
something so ephemeral as a URL
Well, they're not supposed to be ephemeral. They're supposed to be as durable as the title of whatever book you're talking about.
-
-
blog.twitter.com blog.twitter.com
-
Real Graph is a model which predicts the likelihood of engagement between two users. The higher the Real Graph score between you and the author of the Tweet, the more of their tweets we'll include.
...who thought this was a good idea??
-
I realized after fully digesting this document that it effectively outlines a mechanism of anti-discovery.
-
-
www.chromium.org www.chromium.org
Tags
Annotators
URL
-
- Mar 2023
-
www.softphd.com www.softphd.com
-
le regroupement des principaux acteurs du Web — et plus largement la concentration des producteurs des programmes (comme Google dont la moindre panne suffit à altérer une grande partie du fonctionnement des réseaux823) — fait courir le risque d’un Web à péages, où toute expérience serait anticipée et calculée
Grand problème de la centralisation des programmes et des instances productrices de programmes: uniformisation des usages, comportements, et des programmes récursivement; dépendance à des structures tierces (aux intérêts commerciaux souvent conflictuels avec les besoins des usagers).
Tags
Annotators
URL
-
-
stackoverflow.com stackoverflow.com
-
Problem details for HTTP APIs HTTP status codes are sometimes not sufficient to convey enough information about an error to be helpful. The RFC 7807 defines simple JSON and XML document formats to inform the client about a problem in a HTTP API. It's a great start point for reporting errors in your API. It also defines the application/problem+json and application/problem+xml media types.
-
-
Tags
Annotators
URL
-
-
www.uottawa.ca www.uottawa.ca
-
ALIR - un manuel interactif pour l'algèbre linéaire produit avec PreTeXt (présentation en français) Lien vers la RELnorth_eastlien externe fabriqueREL (2022-23)
-
-
-
Streaming across worker threads
```js import { ReadableStream } from 'node:stream/web'; import { Worker } from 'node:worker_threads';
const readable = new ReadableStream(getSomeSource());
const worker = new Worker('/path/to/worker.js', { workerData: readable, transferList: [readable], }); ```
```js const { workerData: stream } = require('worker_threads');
const reader = stream.getReader(); reader.read().then(console.log); ```
Tags
Annotators
URL
-
-
news.ycombinator.com news.ycombinator.com
-
The common perception of the Web as a sui generis medium is also harmful. Conceptually, the most applicable relevant standard for Web content are just the classic standards of written works, generally. But because it's embodied in a computer people end up applying the standards of have in mind for e.g. apps.
You check out a book from the library. You read it and have a conversation about it. Your conversation partner later asks you to tell them the name of the book, so you do. Then they go to the library and try to check it out, but the book they find under that name has completely different content from what you read.
Tags
Annotators
URL
-
- Feb 2023
-
tantek.com tantek.com
-
pjenlinea3.poder-judicial.go.cr pjenlinea3.poder-judicial.go.cr
-
debían estarprotagonizados por extranjeros y tratar de cosas con las que no podía identificarme. Puesbien, la situación cambió cuando descubrí los libros africanos.No había muchos disponibles, y no eran tan fáciles de encontrar como los extranjeros.Pero gracias a escritores como Chinua Achebe y Camara Laye, mi percepción de laliteratura cambió. Comprendí que en la literatura también podía existir gente como yo,chicas con la piel de color chocolate cuyo pelo rizado no caía en colas de caballo.Empecé a escribir sobre asuntos que reconocía.5
texto pdf
Tags
Annotators
URL
-
-
www.appsloveworld.com www.appsloveworld.com
-
As mentioned in comment by @Tyler Rick Capybara in these days have methods[ ancestor(selector) and sibling(selector)
-
-
mtlynch.io mtlynch.io
-
My Fifth Year as a Bootstrapped Founder
My Fifth Year as a Bootstrapped Founder February 10, 2023 12-minute read annual review • tinypilot Five years ago, I quit my job as a developer at Google to create my own bootstrapped software company.
For the first few years, all of my businesses flopped. None of them earned more than a few hundred dollars per month in revenue, and they all had negative profits.
Halfway through my third year, I created a device called TinyPilot. It allows users to control their computers remotely without installing any software. The product quickly caught on, and it’s been my main focus ever since.
In 2022, TinyPilot generated $812k in revenue, a 76% increase from 2021.
In this post, I’ll share what I’ve learned about being a bootstrapped founder from my fifth year at it.
Previous updates My First Year as a Solo Developer My Second Year as a Solo Developer My Third Year as a Solo Developer My Fourth Year as a Bootstrapped Founder Highlights from the year TinyPilot grew annual revenue to $812k Income/Expense 2021 2022 Change Sales $459,529 $807,459 +$347,930 (+76%) Credit card rewards $2,241 $4,327 +$2,086 (+93%) Raw materials -$224,046 -$333,656 +$109,610 (+49%) Payroll -$142,744 -$206,187 +$63,443 (+44%) Electrical engineering consulting -$28,662 -$124,643 +$95,981 (+335%) Advertising -$3,873 -$51,764 +$47,891 (+1,237%) Web design / branding -$15,931 -$30,215 +$14,284 (+90%) Postage -$24,227 -$30,779 +$6,552 (+27%) Cloud services -$5,553 -$7,865 +$2,312 (+42%) Office space -$4,400 -$6,600 +$2,200 (+50%) Equipment -$2,083 -$5,915 +$3,832 (+184%) Everything else -$4,902 -$8,183 +$3,281 (+67%) Net profit $5,349 $5,979 +$630 (+12%) While it sounds impressive to grow revenue by $350k, it’s a little less exciting that I’m only walking away with $6k in profit. I don’t pay myself a salary, so $6k is the full amount I earned from the business in 2022. Still, I’m excited about these numbers and what they mean for 2023.
One of the major cost increases was electrical engineering. Throughout 2021, TinyPilot’s electrical engineering vendor was struggling to keep up with TinyPilot’s growth. In late 2021, I switched to a new vendor that fits our needs better, but they cost three times as much.
The ongoing chip shortage forced us into frequent redesigns, which bloated costs in engineering hours and raw materials. We were often in a race to redesign a circuit board before we ran out of our existing version, so we repeatedly paid a premium to expedite the process.
We finally escaped the redesign treadmill in September. I’m hopeful that our fourth quarter results will reflect the coming year. Our profit was $28.6k for the quarter, so if we average $9.5k per month in 2023, I’ll be happy.
TinyPilot got a new website When I launched TinyPilot in 2020, I told myself the website and logo were just placeholders. Then, things took off so quickly that I never had time to replace them.
In 2022, I finally hired a design agency to create a new logo and redesign the website.
Screenshot of old landing page Screenshot of new landing page Before and after the TinyPilot website redesign
I wrote previously about how frustrating and expensive it was working with the design agency, but I’m pleased with the result. My old website looked like a hobby project, and the new design looks like a real company. I suspect that at least a portion of my increased sales resulted from the new design.
The TinyPilot team grew from six people to seven At the end of 2021, the TinyPilot team was:
Me, the sole founder Three part-time software developers Two part-time local staff who handle assembling devices and fulfilling orders One of whom also handled customer service By the end of 2022, we had added two support engineers and adjusted responsibilities, so the team is now:
Me, the sole founder Two part-time software developers Two part-time local staff who handle assembling devices and fulfilling orders Both now work on customer service Two part-time support engineers Adding the support engineers felt like finding the missing piece of the puzzle. Before they joined, I was the only person handling technical support, and it occupied about 20% of my time. Now, I spend less than 5% of my time on support requests, and customers receive faster support.
The support engineers also do things I didn’t have time for, like investigating complex bugs, writing documentation, and improving our diagnostic tools.
Growing the team stretched my skills as a manager. In 2021, TinyPilot’s workflows were fairly simple. Almost everyone did their work as a single-person unit. The results either went directly to me or to a customer. When employees needed to coordinate with each other, it was always among teammates of the same role.
Integrating support engineers meant figuring out how different teams work together. How do support requests work when they require cooperation between fulfillment staff and support engineers? What’s the feedback loop between the support engineers and the dev team?
PicoShare became my fastest-growing project One of my pet peeves in the last few years is how difficult it is to share a single file with cloud storage providers like Google Drive or Dropbox. They won’t give you a direct link to your file — just a link to their web interface, where they pressure your recipient to sign up for an account. If you upload a video to Google Drive, they make you wait 15+ minutes while they re-encode it, even if it was already optimized to play in the browser.
As an alternative to the existing cloud storage options, I made a minimalist file-sharing app called PicoShare. You just upload a file, and it gives you a direct link that you can share. Easy! No re-encoding, no prompts to sign up for anything.
Animated demo of uploading a video file to PicoShare and streaming it in another browser window Demo of PicoShare There are a few open-source tools that offer similar functionality, but PicoShare is unique in not requiring a database server. That means you can run it in a single Docker container, whereas other solutions require more complicated orchestration.
PicoShare became the fastest-growing open-source project I ever published. It received 600 Github stars within two weeks of its release. As of this writing, PicoShare has over 100k installs.
Lessons learned Don’t become anyone’s smallest client I made many mistakes throughout the whole TinyPilot website redesign fiasco, but the core problem was that the design agency was a fundamental mismatch for TinyPilot.
The agency’s other clients had 5-20x TinyPilot’s budget. At first, I thought that was such a gift — this fancy agency with expensive clients was betting on a little company like mine.
The reality was that TinyPilot was the agency’s lowest priority. They managed the project poorly, which drove up costs, bloated scope, and stretched out timelines.
Now, when I work with new vendors, I ask them how my company compares to their other clients. If I’m an outlier in any important dimension like size, revenue, or industry, I look elsewhere.
Run at 50% capacity Wouldn’t it be wonderful if your business’ capacity perfectly matched your customers’ needs? Your employees would fulfill every order and satisfy every support request while working exactly 40 hours per week. They’d never feel overworked nor underworked, and there’d be no idle time.
In practice, that would be a terrible system. Running at 100% utilization would mean you have no margin for error. Ordinary occurences like a bump in sales or an employee taking a vacation would immediately overwhelm you.
I aim for everyone at TinyPilot to run at around 50% capacity. That is, a balance of 50% reactive work and 50% proactive work. For some roles, the balance isn’t quite 50/50, but it’s a good rule of thumb.
The technical support team is the clearest example of a 50/50 split: they spend half of their time responding to support requests and the other half finding ways to save users from needing support. The proactive tasks include fixing bugs in the product, writing documentation, and improving our diagnostic tools.
Every TinyPilot team comprises two people. When one person is unavailable, the other can suspend their proactive work and handle time-sensitive tasks without feeling overwhelmed. If we get a rush of orders because a popular YouTube channel mentions us, we have spare capacity to absorb it.
Team Reactive tasks Proactive tasks Founder Team management Vendor management Reviewing work Filling gaps in responsibilities Marketing Sales Re-evaluating strategy Hiring and training Support engineers Answering technical support questions Writing documentation Writing tutorials Investigating difficult bugs Software developers Fixing urgent bugs Releasing new features Improving dev experience Creating automated tests Fixing non-urgent bugs Fulfillment staff Assembling devices Fulfilling orders Customer service Creating support playbooks Assisting in marketing Ansible and git are not software distribution tools When I started working on TinyPilot, I didn’t know how to distribute Linux software.
To publish the prototype of TinyPilot, I used the tools I knew: bash scripts, Ansible, and git. The bash script bootstrapped an Ansible environment and executed an Ansible playbook. Ansible installed dependencies, made necessary changes to the operating system, and cloned the TinyPilot git repository.
The installation process was okay, not great. It was slow but reliable and didn’t require the user to configure anything manually.
Two years later, TinyPilot’s update process was a mess. It still relied on the same shaky foundations from the prototype, except now there was a complex web of interdependencies. Ansible roles depended on Git repositories, which depended on other Ansible roles, which depended on parameters in a bunch of YAML files. Minor changes swallowed weeks of development time.
All this because I never bothered to learn standard Linux packaging tools.
This year, the TinyPilot team learned to use Debian packages. It was far less painful than I’d feared. I thought we’d have to deploy all sorts of package servers and key servers, but it turns out we didn’t need any of that. The process was relatively easy once we found the right guides.
Debian packages have accelerated our development. The tooling catches expensive mistakes earlier, and we can deploy pre-release versions to our test devices easily, whereas our previous installation system made that process prohibitively complex.
Grading last year’s goals Last year, I set three high-level goals that I wanted to achieve during the year. Here’s how I did against those goals:
Grow TinyPilot to $1M in annual revenue Result: Grew TinyPilot’s revenue by 76% to $812k Grade: B I always knew that $1M was an aggressive goal. We fell short, but I’m still impressed at how close we came.
Manage TinyPilot on 20 hours per week Result: I spent more time managing TinyPilot in 2022 than in 2021. Grade: D I was hoping to automate and delegate away enough of my job to reduce my management time to 20 hours per week, but it didn’t happen. Between growing sales, spinning up the support engineering team, and putting out fires due to the chip shortage, my management time increased.
Ship TinyPilot Voyager 3 Result: We never even completed the design phase Grade: F TinyPilot has always used the Raspberry Pi 4B as the core hardware. There’s a wonderful ecosystem around the Pi 4B, but the hardware is relatively expensive and difficult to integrate with custom chips.
My plan for 2022 was to create a custom circuit board for the slimmer, less expensive Raspberry Pi Compute Module 4. That could cut our manufacturing costs by up to 60% and simplify our hardware design.
Instead, all of our hardware engineering time went to chasing down manufacturing issues and supply shortages, so we made no progress on a new product.
Goals for year six Manage TinyPilot on 20 hours per week I failed miserably at reducing my hours last year, but it’s now my top priority. I’m hopeful about my chances this year. A lot of my 2022 work laid the groundwork to remove me from the critical path in 2023.
Earn $100k in profit For TinyPilot’s first two and a half years, I focused on growth. I pay the same in hardware and software engineering costs whether I’m selling 20 devices per month or 2,000, so I needed to reach a certain scale to make the business viable.
For most of 2023, TinyPilot’s production will be constrained by supply. It was disappointing to find out I’d have no chance at growing sales, but the silver lining is that I can slow down and focus on profit rather than growth.
TinyPilot has always roughly broken even, but I think I can reach $100k in profit this year if I avoid further hardware redesigns. Without the hardware redesigns in 2022, I would have saved around $100k on engineering and $20k on materials. If I keep sales steady and run leaner on the hardware side, 2023 should be a profitable year.
Close the TinyPilot office I’ve leased an office for TinyPilot since early 2021. We use it for assembling devices, fulfilling orders, and storing inventory.
Having our own local office has helped us adapt quickly to changes in our hardware and processes, but it’s a lot of extra overhead. This year, I hope to transition assembly to China, where all of our parts originate. I’m also in the process of moving our fulfillment to a third-party logistics warehouse.
Eliminating the TinyPilot office would spare us the work of maintaining a physical space, managing inventory, and tracking in-person shifts. Outsourcing manufacturing and fulfillment will also give the team more flexibility in time and location.
Do I still love it? Every year, when I write these blog posts, I ask myself whether I still love what I’m doing.
2022 was a hard year — certainly my hardest since going off on my own. I wasn’t miserable, but I can’t say I loved it.
The global chip shortage meant we could never manufacture a batch of products the same way twice. There was always some missing component or manufacturing issue, so we were constantly racing to fix issues and adapt our processes before we ran out of stock. We got through it, and there were only a handful of days that I had to mark any product as sold out, but it was stressful.
That said, there were certainly many things to appreciate about the year. I had a relatively small amount of time for writing and software development, but I’m proud of what I produced. Expanding the TinyPilot organization and figuring out how teams work together grew my skills as a manager. It’s been gratifying to see the team grow in their roles and expand their skills as the company evolves.
I still prefer working for myself to having an employer. I still feel grateful for the freedom to have my own company. And I still want to do it forever.
-
- Jan 2023
-
Tags
Annotators
URL
-
-
documentation.mailgun.com documentation.mailgun.com
-
Mailgun is primarily a developer’s tool so the best way use Mailgun is through our APIs.
developers first API first
-
-
optimize.google.com optimize.google.com
-
www.inspectlet.com www.inspectlet.comHome1
-
I've used this briefly before, but it's also something Scott Scheper swears by.
alternative: https://optimize.google.com/
Tags
Annotators
URL
-
-
www.humanitiesblast.com www.humanitiesblast.com
-
the most significant Web 2.0 creation to harness a massaudience and engage a mass audience in knowledge production and dissemination isWikipedia
Wikipedia really is an excellent example of why and how Web 2.0 was so impactful to online society. Unlike Web 1.0, where content consumers were mostly limited to read-only, Web 2.0 allowed content consumers to produce their own consumable content for the first time.
Tags
Annotators
URL
-
-
www.w3.org www.w3.org
-
Example 2 HTTP/1.1 200 OK Content-Type: application/ld+json; profile="http://www.w3.org/ns/anno.jsonld" Link: <http://www.w3.org/ns/ldp#Resource>; rel="type" ETag: "_87e52ce126126" Allow: PUT,GET,OPTIONS,HEAD,DELETE,PATCH Vary: Accept Content-Length: 287 { "@context": "http://www.w3.org/ns/anno.jsonld", "id": "http://example.org/annotations/anno1", "type": "Annotation", "created": "2015-01-31T12:03:45Z", "body": { "type": "TextualBody", "value": "I like this page!" }, "target": "http://www.example.com/index.html" }
-
-
500ish.com 500ish.com
-
Mastodon Brought a Protocol to a Product Fight
-
- Dec 2022
-
arstechnica.com arstechnica.com
-
-
Tom MacWright, a software developer in Brooklyn, has firsthand experience with the pitfalls of ActivityPub. As an experiment, he tried to turn his photo blog into an actor that could be followed by users via their Mastodon accounts. It worked in the end—and you can search for @photos@macwright.com from your Mastodon instance to follow his photography—but it wasn't easy.
Example of how ActivityPub standards don't work in practice, in part because Mastodon is an 800 pound gorilla which actively flauts or adds their own "standards".
-
"Queer people built the Fediverse," she said, adding that four of the five authors of the ActivityPub standard identify as queer. As a result, protections against undesired interaction are built into ActivityPub and the various front ends. Systems for blocking entire instances with a culture of trolling can save users the exhausting process of blocking one troll at a time. If a post includes a “summary” field, Mastodon uses that summary as a content warning.
-
-
www.robinsloan.com www.robinsloan.com
-
Spend some time with Arc, the new browser from The Browser Company of New York.
First I've heard of this.
Tags
Annotators
URL
-
-
blog.nparashuram.com blog.nparashuram.com
-
TL;DR; A custom renderer for ReactJS that uses Web Workers to run the expensive Virtual DOM diffing calculations
-
-
blog.nparashuram.com blog.nparashuram.com
-
Tl;Dr; ReactJS is faster when Virtual DOM reconciliations are done on a Web Worker thread.
-
-
atproto.com atproto.com
-
zhuanlan.zhihu.com zhuanlan.zhihu.com