1,479 Matching Annotations
  1. Jun 2023
    1. In the layered architecture pattern, each layer fulfills a specific responsibility and role within the application. Some focus on user interface logic, while others handle the execution of business rules. These layers complement each other's unique purposes, but they aren't explicitly reliant on one another to perform their own tasks.
    1. The major use case of Reflect is to provide default forwarding behavior in Proxy handler traps. A trap is used to intercept an operation on an object — it provides a custom implementation for an object internal method. The Reflect API is used to invoke the corresponding internal method. For example, the code below creates a proxy p with a deleteProperty trap that intercepts the [[Delete]] internal method. Reflect.deleteProperty() is used to invoke the default [[Delete]] behavior on targetObject directly.
    1. 10% more or less of academic libraries in the US use an open source system after all that time. And about either 17 or 14, I'd have the number in front of me for and to public libraries are using an open source I L S

      Percentage of open source ILS in academic and public libraries

    1. This analysis will result in the form of a new knowledge-based multilingual terminological resource which is designed in order to meet the FAIR principles for Open Science and will serve, in the future, as a prototype for the development of a new software for the simplified rewriting of international legal texts relating to human rights.

      software to rewrite international legal texts relating to human rights, a well written prompt and a few examples, including the FAIR principles will let openAI's chatGPT do it effectively.

  2. May 2023
    1. 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.
    1. 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.

    1. In a better world, I would have built this in a day, using some kind of modern, flexible HyperCard for iOS. In our actual world, I built it in about a week, and roughly half of that time was spent wrestling with different flavors of code-signing and identity provi­sioning and I don’t even know what. I waved some incense and threw some stones and the gods of Xcode allowed me to pass. Our actual world isn’t totally broken. I do not take for granted, not for one millisecond, the open source compo­nents and sample code that made this project possible. In the 21st century, as long as you’re operating within the bounds of the state of the art, program­ming can feel delight­fully Lego-like. All you have to do is rake your fingers through the bin.

      It's a good remainder of not taking Free Libre Open Source Software (FLOSS) as granted, as a commons we don't need to fight for in an increasing world of extractivism, expropriation and platform surveillance capitalism against the commons. So even with all the indirection and friction behind software building, delivery and modification, having FLOSS should not given for granted.

      On another note, there is already an intermediate place between hypercard and FLOSS, with pretty agile development/prototyping cycles in things like Pharo/GT. It's for the desktop, not yet into iPhone, but with betas in progress to the more more open Android ecosystem and with possibilities to run on on with PharoJS

  3. Apr 2023
    1. reinventing Google Sidewiki or similar systems in which replies exist outside of the network itself.

      I'm ashamed/bewildered to confess that I have zero recollection of Google Sidewiki... Given the medium in which I'm typing this right now - and a whole bunch of other anecdotes from my online life - I think I would have been very engaged with such a thing.

      What a Wiki page though! Thank you. Bless. Through it, I discovered the Google Toolbar Help YouTube Channel.

    1. Google allowed third parties to build their own Wave services (be it private or commercial) because it wanted the Wave protocol to replace the e-mail protocol.[2][16][17] Initially, Google was the only Wave service provider, but it was hoped that other service providers would launch their own Wave services, possibly designing their own unique web-based clients as is common with many email service providers.
    1. Twitter is a neat illustration of the problem with benevolent dictatorships: they work well, but fail badly. Because they are property — not protocols — they can change hands, and overnight, you get a new, malevolent dictator who wants to retool the system for extraction, rather than collaboration.

      Benevolent dictatorships: work well; fail badly

      Twitter is the example listed here. But I wonder about benevolent dictatorships in open source. One example: does Linus have a sound succession plan for Linux? (Can such a succession plan even be tested and adjusted?)

  4. Mar 2023
    1. this intellectual background can also lead to arrogance. People who excel at software design become convinced that they have a unique ability to understand any kind of system at all, from first principles, without prior training, thanks to their superior powers of analysis. Success in the artificially constructed world of software design promotes a dangerous confidence.

      Risk of thinking software design experience is generally transferable

    1. Techmango is a leading provider of custom software development services. We have a team of experienced and skilled software developers who can create custom software solutions that meet the specific needs of your business. We have a proven track record of delivering high-quality custom software development projects on time and within budget. With over years of experience in the industry, Techmango will work closely with you to provide innovative software solutions that revolve around your specific business needs.

  5. Feb 2023

    Tags

    Annotators

    1. I’m edging towards a new book, which is pretty formless at the moment, so I need a better solution for keeping my writing ‘chunks’ organised. I started playing around with a new piece of database software called Obsidian after recording an episode about it for the On The Reg podcast with my co-host Dr Jason Downs. Obsidian makes your notes more useful by ‘linking your thinking’. Basically, any word in an Obsidian note can become a link to another note, so, over time, your notes become like your own personal wikipedia. Obsidian also makes a cool visualisation of all the links between your notes, so you can surf through them, visually. Pages are represented as nodes; pages which have a lot of incoming links become bigger in the visual graph, literally showing you where an idea is ‘growing’:

      I'm not sold on Obsidian. I think TiddlyWiki has equivalent (and more) features (albeit requiring plugins for graphing), a more robust architecture, and a more open license.

      Horses for courses I guess, but depending on Obsidian's evolution, I suspect other writers might end up looking for alternatives.

  6. Jan 2023
    1. Software should be a malleable medium, where anyone can edit their tools to better fit their personal needs. The laws of physics aren’t relevant here; all we need is to find ways to architect systems in such a way that they can be tweaked at runtime, and give everyone the tools to do so.

      It's clear that gklitt is referring to the ability of extensions to augment the browser, but: * it's not clear that he has applied the same thought process to the extension itself (which is also software, after all) * the conception of in-browser content as software tooling is likely a large reason why the perspective he endorses here is not more widespread—that content is fundamentally a copy of a particular work, in the parlance of US copyright law (which isn't terribly domain-appropriate here so much as its terminology is useful)

    1. Deploy engines as separate app instances and have them only communicate over network boundaries. This is something we’re starting to do more.

      Before moving to this microservice approach, it's important to consider whether the benefits are worth the extra overhead. Jumping to microservices prematurely is something I've seen happen more than once in my career, and it often leads to a lot of rework.

  7. Dec 2022
    1. It feels weird to say this in 2020, when the idea was presented as fait accompli in 1997, but an enabling open source software movement would operate more like a bazaar than a cathedral. There wouldn’t be an “upstream”, there would be different people who all had the version of the software that worked best for them. It would be easy to evaluate, compare, combine and modify versions, so that the version you end up with is the one that works best for you, too.
    1. I assume that the goal of synchronizing timestamps is so that the primary record and its Version can be correlated by future reporting queries. I've always thought this is an odd feature, given that said correlation can be more reliably and performantly achieved by use of the foreign key (item_id). So, I'd like to suggest that we add an option to disable this feature. For the new option's name, I'll suggest synchronize_version_creation_timestamp. It would be true by default. has_paper_trail(synchronize_version_creation_timestamp: false) I'm open to disabling this feature by default, in a future major release, after a reasonable deprecation period.
    1. In today's fiercely competitive environment, creating software or an application that satisfies specific business requirements is essential for survival. The process of conceptualizing, designing, constructing, and deploying software for a particular person or person or group of people within an organization or as a third-party arrangement is referred to as custom software development services.

    2. In accordance with this, the shift to the digital sphere for conducting business has made custom software development more than just a luxury. Customers receive a special experience from it that gives them an advantage over rival businesses. It also aids in identifying the customer's pain points so that needs can be better met and aids in forecasting future demands.

  8. Nov 2022
    1. Mark: Yeah. And I actually think the Agile revolution in software development is software development catching up to the fact that it’s a writer-ly art. Writers don’t know where they’re going or how they’re going to express it when they start out. Neither, it turns out, does software developers. They can pretend by writing it the first time in a spec language and then coding it and then, checking the specification, then finding out that they’ve written the wrong thing and writing a new specification. That was when I was getting started, the right way to write software.

      Agile software development is akin to the design of the writing process.

    1. Amiga had "AREXX ports" which meant you could script desktop software together in ways not possible even today, on any OS.It's not enough that there must exist technically, a possibility. The app vendors much themselves go to the trouble of adding such "scriptability" into their apps.Instead everything is very slick, but very siloed and nowadays tied to a cloud offering, which is great, but it's more often than not locked to that vendor

      .

    1. git_workspace/ ├── .vscode │ └── settings.json # global settings, my preferred ones ├── my-personal-projects/ │ └── project1/ │ └── .git/ └── company-projects/ ├── .vscode │ └── settings.json # local settings, overrides some of my personal ones ├── project2/ │ └── .git/ └── project3/ └── .git/
    1. Page for how to contribute to the Hypothes.is Project.<br /> - Code on GitHub - main repository: h - new feature ideas and current bugs: product-backlog - Chat in - Slack: anyone who wants to talk to contributors & community members, hang out, discuss project, get questions answered - Public forum: Less technical place for users to ask questions & discuss needs - Documentation - Using the Hypothesis API: enables you to create applications and services which read or write data from the Hypothesis service - Developing Hypothesis: set up development environment and contribute to Hypothes.is - Roadmap - High level view of features the dev team is evaluating, planning, & building

    2. One big feature that the Hypothes.is Notebook affords is indexing on replies (which currently aren't displayed on the Activity Page). I confirmed this on 2022-11-07 with one of Hypothes.is's support admins in their Slack channel.

      Sadly, this won't help my personal use case since I'm using the obsidian-hypothesis-plugin which seems to only pull highlights, annotations, and page notes from the Activity Page

      Consequently, I'll probably have to build something myself which will be somewhat painful but a good learning experience

    1. I realize that having the same FE/BE on all platforms is the fabled cross-platform panacea. But I’ve yet to see this work well in practice for any app of significant complexity. Quite a few major development teams that were early adopters of ideas like this have since abandoned that approach e.g. AirBnB with React Native, or DropBox with their custom C++ core. As it turns out, while you do write less platform-specific code, you still have to deal with platform-specific bugs and performance issues (not too dissimilar from Qt, just the with additional headaches of mobile platforms). So creating one “universal” code base ends up being almost as much work as working with each platform’s native technologies.

      (Test) Glutimate's argument against moving away from Qt for Anki development.

    1. I've been told since the first day I started working at the Division of Hospital Medicine at @UCSF that my work doesn't bring in $ to cover my salary. It's a narrative of manufactured scarcity, a common tactic in capitalism. The CEO is making $1.85 million plus bonuses.

      — Rupa Marya, MD (@DrRupaMarya) November 4, 2022
      <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

      A Hospitalist’s economic value is in what we *save* the system in terms of quality-driven care and patient throughput (DC/unit time), not in how much we bring in through profees. Because of how the system is structured, you’ll only see our value when we aren’t there.

      — Rupa Marya, MD (@DrRupaMarya) November 4, 2022
      <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

      This sounds a lot like hospitalists fall under David Graeber's thesis in Bullshit Jobs that the more necessary and useful you are the less you're likely to get paid and be valued.


      I suspect the ability to track an employees' direct level of productivity also fits into this thesis. One can track the productivity of an Amazon warehouse worker or driver, but it's much more difficult to track the CEOs direct productivity.

    1. Rust lets us explicitly state our desires to the compiler

      This is the key. It follows that the same results, then, could be seen if we devised a way to communicate the same desires to the machine when we're dealing with JS. (My preferred thought experiment: imagine a docs/ directory in the repo where these sorts of things are documented for the benefit of other programmers—alongside any other rationale that you would naturally hope to communicate as well—and that the computer itself were made to be able to read and act upon the very same documentation to guide its behavior.) See http://cr.yp.to/qhasm/literature.html

  9. Oct 2022
    1. @route @twalpole as a community I think we're super grateful for your work on a CDP alternative to chromedriver/selenium, poltergeist etc. I do think collaboration could be very valuable though, although it would likely mean abandoning one of the projects and teaming up on the other, you both obviously have very deep knowledge of CDP and therefore would get a load more done than any of us "end users" trying to wade in there. The status for us on our Rails project is that Apparition fails with a ton of errors, they all seem related to handling timing events (accept_prompt doesn't work, opening new windows seems problematic etc etc etc) whereas Cuprite only rails with a cookie gem we're using (easy fixed) and doesn't support drag_to yet. So to me Cuprite seems more complete, but I don't know much about the internals.
    2. As a history mark, when back then I asked Thomas if he started to work on CDP, he said yes but never finished it, so I started this project from scratch which by now feels completed. After releasing it I only yesterday realized that he open-sourced his project and keeps working on it. I think it just feels hard to throw everything you have written to trash, but I wasn't proposed at the beginning to work together on common project and this is the reason Cuprite had began. Though since this project is completed I see no sense to work on something else especially for me, the only difference would be in Ruby implementation which is boring as you can do things in a different manner and CDP has issues too so the difference could be only how we workaround them.
    3. Haven't really looked through your code, so not sure what the difference is - I would guess not too much. I told you about my version when we were discussing the issues you were having on cuprite -- It was 70+ percent done so I released it and finished up most of the rest. I guess one difference is that you appear to be aiming at bleeding edge Chromium, whereas I'm more focused on things working on Chrome release since I think that's more important for people to test with (no customer is going to be running Chromium alpha).
    1. @1:10:20

      With HTML you have, broadly speaking, an experience and you have content and CSS and a browser and a server and it all comes together at a particular moment in time, and the end user sitting at a desktop or holding their phone they get to see something. That includes dynamic content, or an ad was served, or whatever it is—it's an experience. PDF on the otherhand is a record. It persists, and I can share it with you. I can deliver it to you [...]

      NB: I agree with the distinction being made here, but I disagree that the former description is inherent to HTML. It's not inherent to anything, really, so much as it is emergent—the result of people acting as if they're dealing in live systems when they shouldn't.

    1. Breitenbach, H. P. “The Card Index for Teachers.” The School Review 20, no. 4 (1912): 271–72.


      Apparently in 1912, the card index was little known to teachers... this isn't the sort of use case I was expecting here...

      The general gist of this short note is an encouraging one to suggest that instead of traditional grade books, which are still used heavily in 2022, teachers should use rolodex like cards for keeping attendance and notes on a student's progress.

      Presumably this never caught on. While some elementary teachers still use older paper gradebooks, many others have transferred to digital LMS platforms.

  10. Sep 2022
    1. CTO services

      CTO services, or CTOaaS, stands for part-time tech and business advisory of the Chief Technology Officer to assist Small and Medium-sized Enterprises (SMEs).

      The core benefit of a startup fractional CTO compared to an in-house CTO is the price effectiveness of such a service as a company only pays for the services needed.

  11. Aug 2022
    1. when you start with something simple but special purpose, it inevitably accretes features that attempt to increase its generality, as users run into its limitations. But the result of this evolutionary process is usually a complicated mess compared to what could be achieved by designing for generality up-front, in a more holistic way.

      I think this is true, but it's often difficult to design generality upfront. A nice approach is making sure that you are able to back into it and modify after the fact.

      We should be trying to make our technologies have more "two-door" decisions.

    1. The lack of CPU power in those days also meant there was deep skepticism about the performance of interpreters in general, and in the user interface in particular. Mention "interpreted language" and what sprung to mind was BASIC or UCSD Pascal, neither regarded as fast.

      still widely held today

    1. Import notes on your iPhone, iPad, or iPod touch You can import Evernote Export files (.enex files) to Notes on your iPhone, iPad, or iPod touch. Each .enex file can include one or many notes. When you import an .enex file, each note from Evernote will be converted to a new note in Notes. Before you import to your Notes app, send yourself the .enex file via email or save it to iCloud Drive from your computer. Use Mail Open Mail and tap the email with the file that you want to import to Notes. Touch and hold the file, tap Share, then tap Notes. After your file downloads, you get a confirmation message. Tap Import Notes. Use the Files app Open the Files app and go to the file that you want to import to Notes. Touch and hold the file, tap Share, then tap Notes. After your file downloads, you get a confirmation message. Tap Import Notes. When you open the Notes app and select your iCloud notes, a new folder appears called Imported Notes. If you're not using Notes with iCloud, the new folder appears in the On My Device notes.

      Stumbling across obscure/obscured shit like this in these operating systems used to be legitimately fun but uh... Well, it's been a while.

      It works ridiculously well though! As in, the import process can handle far too many notes far too quickly for the device's actual ability to index them lol.

    1. Well I would like to express my huge concern regarding the withdrawal of support for the SMB 1.0 network protocol in Windows 11, and future versions of the Microsoft OS, as there are many, many users who need to make use of this communication protocol, especially users households, since there are hundreds of thousands of products that use the embedded Linux operating system on devices that still use the SMB 1.0 protocol, and many devices, such as media players and NAS, that have been discontinued and companies no longer update their firmware.
    1. The more I think about it, the less I think there is a meaningful definition of the one true run time. I have put significant effort into making sure that runtimes are consistent but, however we do this, it makes our experiments less realistic. With rare exceptions (perhaps some safety critical systems) our algorithms will not be used in highly controlled situations, moderated to reduce variability between runs or to maximise speed of this particular process. Algorithms will be run as part of a larger system, in a computer sometimes with many other processes and sometimes with few and, because of the way that computing has developed, sometimes in raw silicon and sometimes in virtual machines. So the more I think about it, the more I think that what matters is the distribution of run times. For this, your experiment on your hardware is important, but so are future recomputations on a wide variety of VMs running on a variety of different hardware.

      The truth of this has consequences not just for the metaissue of recomputation, but the entire raison d'etre of doing performance studies to begin with.

    1. 5 ERP system examples (who benefits from ERP?)

      The term EnterpriseResourcePlanning (ERP) system refers to a large number of integrated softwaresuites used by companies to manage day-to-day operations and business workflows, including datamanagement, inventory control, accounting, CRM, and projectmanagement. Thus, in order to remain an effective contender in an era of digital commerce, ERP_systems are an important part of the business information technology infrastructure.

  12. Jul 2022
    1. People only really contribute when they get something out of it. When someone is first beginning to contribute, they especially need to see some kind of payback, some kind of positive reinforcement, right away. For example, if someone were running a web browser, then stopped, added a simple new command to the source, recompiled, and had that same web browser plus their addition, they would be motivated to do this again, and possibly to tackle even larger projects.
    1. List management TweetDeck allows you to manage your Lists easily in one centralized place for all your accounts. You can create Lists in TweetDeck filtered by by your interests or by particular accounts. Any List that you have set up or followed previously can also be added as separate columns in TweetDeck.   To create a List on TweetDeck: From the navigation bar, click on the plus icon  to select Add column, then click on Lists  .Click the Create List button.Select the Twitter account you would like to create the List for.Name the List and give it a description then select if you would like the List to be publicly visible or not (other people can follow your public Lists).Click Save.Add suggested accounts or search for users to add members to your List, then click Done.   To edit a List on TweetDeck: Click on Lists  from the plus icon  in the navigation bar.Select the List you would like to edit.Click Edit.Add or remove List members or click Edit Details to change the List name, description, or account. You can also click Delete List.When you're finished making changes, click Done.     To designate a List to a column: Click on the plus icon  to select Add column.Click on the Lists option from the menu.Select which List you would like to make into a column.Click Add Column.   To use a particular List in search: Add a search column, then click the filter icon  to open the column filter options.Click the  icon to open the User filter. Select By members of List and type the account name followed by the List name. You can only search across your own Lists, or others’ public Lists.

      While you still can, I'd highly encourage you to use TweetDeck's "Export" List function to save plain text lists of the @ names in your... Lists.

    1. The major benefit of foreign keys is that they guarantee referential integrity. For example, say you have customers in one table that may refer to a number of invoices in another. Without foreign keys, you could delete a customer, but forget to remove its invoices, thereby leaving a bunch of orphaned invoices that reference an customer that’s gone.

      Note that GH doesn't use FK (at least back in 2016) https://github.com/github/gh-ost/issues/331#issuecomment-266027731 due to: * MySQL doesn't support it on partitioned tables * Performance impact. * FKs don't work well with online schema migrations

      From Postgres has foreign keys to be fully compatible with partitioned tables since 12. But still it's not that commonly used for larger DBs.

    2. If an operator ever queries the database directly they’re even more likely to forget deleted_at because normally the ORM does the work for them.

      This happens relatively often, especially for 1) engineers that run SQL queries directly against the DB for analysis or triaging production issues, and 2) data scientists that do not use the same programming language as the enginners

    1. Photo editing must separate from the crowd and express your personality.The problem, however, is that there are several high-quality picture editors to pick from.

      Lightroom, Luminar AI, and ON1 Photo RAW were mentioned in the list. These are RAW editors used before Photoshop. The shot is then brought into Photoshop (or another editor) for local modifications. Lightroom and Photoshop are used. Thanks!

  13. www.bookstackapp.com www.bookstackapp.com
    1. StarPterano I very vaguely remember happening upon StarPterano in my very first moments on Mastodon, so finding it still published on the App Store – buried as it was – brought me a particular sort of joy. If I’m not mistaken, it holds a special personal accolade as the only iOS app which has caused me to involuntarily shriek. This might sound like an insult, but it is actually the peak of my praise. I believe my knowledge of iOS development safely allows me to suppose that StarPterano was built with complete disregard for any established UI element libraries. That is, the familiar toggles and buttons developers rely on to standardize the iOS experience were cast aside entirely in favor of handbuilt, translucent buttons of a sort of neon quality which call menus and text entry fields no less alien to the platform. The most astonishing bit, though, is that it works. On my 12 Pro Max, it’s exceptionally smooth, in fact. I would imagine those real iOS developers among you should find StarPterano’s GitHub Repository particularly interesting, considering. In the interest of preservation, I have forked it as well, and fully intend to dive in to its code, one of these days. The audio player embedded above cites a three-second .mp3 file in the repository which perhaps once accounted for the “Sounds” toggle still found in the Settings menu of StarPterano’s current build. I couldn’t get the app to reproduce it, which is actually what set me on the hunt that led to the repo.

      I shall always love you, StarPterano. NEVER DIE.

    1. Another key idea here is to separate meaning from tactics. E.g. the meaning of sorting is much simpler and more compact than the dozens of most useful sorting algorithms, each one of which uses different strategies and tactics to achieve the same goal. If the “meanings” of a program could be given in a way that the system could run them as programs, then a very large part of the difficulties of program design would be solved in a very compact fashion. The resulting “meaning code” would constitute a debuggable, runnable specification that allows practical testing. If we can then annotate the meanings with optimizations and keep them separate, then we have also created a much more controllable practical system.

      See also http://cr.yp.to/qhasm/literature.html

    1. @18:52:

      I wanna also dig a little more into the kind of... dynamism, ease-of-making-changes thing, because I think there's actually two ways to look at the ease of making changes when you solve a problem with software. One way is to make software sufficiency sophisticated so that you can swap any arbitrary part out and you can keep making changes. The other is to make the software so simple that it's easy to rewrite and you can just rewrite it when the constraints change.

    1. They help us do everything from controlling traffic lights to managing power grids. This is why embedded systems architecture is so important – without it, we wouldn’t have any technology at all.

      Have you ever heard about embedded software designing?

      This involves designing multiple layers according to the device - Application layer, Middle layer, and Software layer

      Here's the practical and technical guide to understand the components that make up an embedded systems architecture.

    1. Point of sale software is someting that’s integral to modern retail. Learn how to build POS software of your own and make your business more efficient and convenient to both your staff and customers.

      Point of sale software is someting that’s integral to modern retail. Learn how to build POS software of your own and make your business more efficient and convenient to both your staff and customers.

    1. Free as in ...? Points out that freedoms afforded by foss software to the average computer user are effectively the same as proprietary software, because it's too difficult to even find the source and build it, let alone make any changes. Advocates the foss developers should not think only about the things that users are not legally prevented from doing, but about what things they are realistically empowered and supported in doing.

      Previously: Open Source Is Not Enough and Free software is not enough: on practical user freedom.

      See also: "Even GNU's philosophy has a few puzzle pieces missing from the box."

    1. I recently started building a website that lives at wesleyac.com, and one of the things that made me procrastinate for years on putting it up was not being sure if I was ready to commit to it. I solved that conundrum with a page outlining my thoughts on its stability and permanence:

      It's worth introspecting on why any given person might hesitate to feel that they can commit. This is almost always comes down to "maintainability"—websites are, like many computer-based endeavors, thought of as projects that have to be maintained. This is a failure of the native Web formats to appreciably make inroads as a viable alternative to traditional document formats like PDF and Word's .doc/.docx (or even the ODF black sheep). Many people involved with Web tech have difficulty themselves conceptualizing Web documents in these terms, which is unfortunate.

      If you can be confident that you can, today, bang out something in LibreOffice, optionally export to PDF, and then dump the result at a stable URL, then you should feel similarly confident about HTML. Too many people have mental guardrails preventing them from grappling with the relevant tech in this way.

    1. Debugging is the process of finding and removing errors (bugs) from a software program. Bugs occur in programs when a line of code or a statement conflicts with other elements of the code. We also call errors or defects in hardware bugs.

      Debugging and debugging software

      Debugging is the process of finding and removing errors (bugs) from a software program. Bugs occur in programs when a line of code or a statement conflicts with other elements of the code. We also call errors or defects in hardware bugs.

  14. Jun 2022
    1. The absence of Quick Note on the iPhone is a strange, glaring omission that’s baffling to me. I do research on every device, including the iPhone. In fact, I’d argue that the iPhone is the most important place to include Quick Note. That’s because, despite the ample screen of my iPhone 12 Pro Max, it’s still not the best place to read, making saving items for later with Quick Note more valuable there. However, my iPhone is still where I run across links and other material I want to save daily. I’d love to be able to drop links and blockquotes into Quick Note from my iPhone, so I could revisit the material later from the more comfortable reading environment of my iPad or Mac. Not having Quick Note on the iPhone is a significant blow to the feature’s utility.

      Considering how I've been publicly speaking and behaving (melodramatically, that is) - as someone who has returned to using my iPhone as my primary working device - this sort of oversight is precisely what I expected, actually, What I did not expect of Apple was to respond as early as the next numeric release to this omission.

      Running this very first build of iOS 16, I can indeed that Apple has thought of at least one original context for Quick Note creation, but obviously, it's quite hard to say at this point.

      Anywho/how, here's what it looks like at the moment.

      Quick Note implemented on iPhone as of iOS 16's very first available dev beta

  15. May 2022
    1. Any software developer will recognize it, The Eureka Moment. This is when you suddenly see how to solve a particular problem. We have them in all shapes and sizes and at the strangest moments. How does that work in SCRUM and DevOps teams?

      The Eureka Moment in Agile Teams

      Any software developer will recognize it, The Eureka Moment. This is when you suddenly see how to solve a particular problem. We have them in all shapes and sizes and at the strangest moments. How does that work in SCRUM and DevOps teams?

    1. ```xml

      <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://usefulinc.com/ns/doap#' xmlns:xmpp='https://linkmauve.fr/ns/xmpp-doap#' xmlns:schema='https://schema.org'> <Project> <name>poezio</name>

      <created>2010-01-10</created>
      
      <shortdesc xml:lang='en'>Free console XMPP client</shortdesc>
      <shortdesc xml:lang='fr'>Client XMPP libre en console</shortdesc>
      
      <description xml:lang='en'>Free and modern console XMPP client written in Python with the ncurses library</description>
      <description xml:lang='fr'>Client console XMPP libre et moderne, écrit en Python avec la bibliothèque ncurses</description>
      
      <homepage rdf:resource='https://poez.io/'/>
      <schema:documentation rdf:resource='https://doc.poez.io/'/>
      <download-page rdf:resource='https://poez.io/#download'/>
      <bug-database rdf:resource='https://lab.louiz.org/poezio/poezio/-/issues'/>
      <developer-forum rdf:resource='xmpp:poezio@muc.poez.io?join'/>
      <support-forum rdf:resource='xmpp:poezio@muc.poez.io?join'/>
      
      <license rdf:resource='https://git.poez.io/poezio/plain/COPYING'/>
      
      <language>en</language>
      
      <schema:logo rdf:resource='https://poez.io/img/logo.svg'/>
      <schema:screenshot rdf:resource='https://poez.io/img/screenshot.png'/>
      
      <programming-language>Python</programming-language>
      
      <os>Linux</os>
      
      <category rdf:resource='https://linkmauve.fr/ns/xmpp-doap#category-client'/>
      
      <repository>
        <GitRepository>
          <browse rdf:resource='https://lab.louiz.org/poezio/poezio'/>
          <location rdf:resource='https://lab.louiz.org/poezio/poezio.git'/>
        </GitRepository>
      </repository>
      
      <implements rdf:resource='https://xmpp.org/rfcs/rfc6120.html'/>
      <implements rdf:resource='https://xmpp.org/rfcs/rfc6121.html'/>
      <implements rdf:resource='https://xmpp.org/rfcs/rfc6122.html'/>
      <implements rdf:resource='https://xmpp.org/rfcs/rfc7590.html'/>
      
      <implements>
        <xmpp:SupportedXep>
          <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0030.html'/>
          <xmpp:status>complete</xmpp:status>
          <xmpp:version>2.5rc3</xmpp:version>
          <xmpp:since>0.5</xmpp:since>
          <xmpp:note xml:lang='en'>The 'disco' plugin can be loaded to make manual queries.</xmpp:note>
          <xmpp:note xml:lang='fr'>Le plugin 'disco' peut être chargé pour faire des requêtes manuellement.</xmpp:note>
        </xmpp:SupportedXep>
      </implements>
      <!-- And a lot more! -->
      
      <release>
        <Version>
          <revision>0.13.1</revision>
          <created>2020-05-31</created>
          <file-release rdf:resource='https://lab.louiz.org/poezio/poezio/-/archive/v0.13.1/poezio-v0.13.1.tar.gz'/>
        </Version>
      </release>
      

      </Project> </rdf:RDF> ```

    1. Building and sharing an app should be as easy as creating and sharing a video.

      This is where I think Glitch goes wrong. Why such a focus on apps (and esp. pushing the same practices and overcomplicated architecture as people on GitHub trying to emulate the trendiest devops shovelware)?

      "Web" is a red herring here. Make the Web more accessible for app creation, sure, but what about making it more accessible (and therefore simpler) for sharing simple stuff (like documents comprising the written word), too? Glitch doesn't do well at this at all. It feels less like a place for the uninitiated and more like a place for the cool kids who are already slinging/pushing Modern Best Practices hang out—not unlike societal elites who feign to tether themself to the mast of helping the downtrodden but really use the whole charade as machine for converting attention into prestige and personal wealth. Their prices, for example, reflect that. Where's the "give us, like 20 bucks a year and we'll give you better alternative to emailing Microsoft Office documents around (that isn't Google Sheets)" plan?

    2. as if the only option we had to eat was factory-farmed fast food, and we didn’t have any way to make home-cooked meals

      See also An app can be a home-cooked meal along with this comment containing RMS's remarks with his code-as-recipe metaphor in the HN thread about Sloan's post:

      some of you may not ever write computer programs, but perhaps you cook. And if you cook, unless you're really great, you probably use recipes. And, if you use recipes, you've probably had the experience of getting a copy of a recipe from a friend who's sharing it. And you've probably also had the experience — unless you're a total neophyte — of changing a recipe. You know, it says certain things, but you don't have to do exactly that. You can leave out some ingredients. Add some mushrooms, 'cause you like mushrooms. Put in less salt because your doctor said you should cut down on salt — whatever. You can even make bigger changes according to your skill. And if you've made changes in a recipe, and you cook it for your friends, and they like it, one of your friends might say, “Hey, could I have the recipe?” And then, what do you do? You could write down your modified version of the recipe and make a copy for your friend. These are the natural things to do with functionally useful recipes of any kind.

      Now a recipe is a lot like a computer program. A computer program's a lot like a recipe: a series of steps to be carried out to get some result that you want. So it's just as natural to do those same things with computer programs — hand a copy to your friend. Make changes in it because the job it was written to do isn't exactly what you want. It did a great job for somebody else, but your job is a different job. And after you've changed it, that's likely to be useful for other people. Maybe they have a job to do that's like the job you do. So they ask, “Hey, can I have a copy?” Of course, if you're a nice person, you're going to give a copy. That's the way to be a decent person.

    1. I'd have to set up the WP instance and maintain it.

      (NB: this is in response to the question Why not just use wordpress + wysiwyg editor similar to *docs, and you're done?.)

      This is a good of an explanation as any for local-first software.

      A natural response (to potatolicious's comment) is, "Well, somebody has to maintain these no-code Web apps, too, right? If there's someone in the loop maintaining something, the question still stands; wouldn't it make more sense for that something to be e.g. a WordPress instance?"

      Answer: yeah, the no-code Web app model isn't so great, either. If service maintenance is a problem, it should be identified as such and work done to eliminate it. What that would look like is that the sort of useful work that those Web apps are capable of doing should be captured in a document that you can copy to your local machine and make full use of the processes and procedures that it describes in perpetuity, regardless of whether someone is able to continue propping up a third-party service.

    1. I learned the techniques programmers use to tame complexity: things like factoring, levels of abstraction, and separation of concerns.

      with one foot in the design world and one foot in the programming world, I wondered if we could apply these software development principles to the way we designed and managed the product.

    Tags

    Annotators

    1. However when you look UNDERNEATH these cloud services, you get a KERNEL and a SHELL. That is the "timeless API" I'm writing to.

      It's not nearly as timeless as a person might have themselves believe, though. (That's the "predilection" for certain technologies and doing things in a certain way creeping in and exerting its influence over what should otherwise be clear and sober unbiased thought.)

      There's basically one timeless API, and that means written procedures capable of being carried out by a human if/when everything else inevitably fails. The best format that we have for conveying the content comprising those procedures are the formats native to the Web browser—esp. HTML. Really. Nothing else even comes close. (NB: pixel-perfect reproduction à la PDF is out of scope, and PDF makes a bunch of tradeoffs to try to achieve that kind of fidelity which turns out to make it unsuitable/unacceptable in a way that HTML is not, if you're being honest with your criteria, which is something that most people who advocate for PDF's benefits are not—usually having deceived even themselves.)

      Given that Web browsers also expose a programming environment, the next logical step involves making sure these procedures are written to exploit that environment as a means of automation—for doing the drudge work in the here and now (i.e., in the meantime, when things haven't yet fallen apart).

    1. The events list is created with JS, yes. But that's the only thing on the whole site (~25 pages) that works that way.Here's another site I maintain this way where the events list is plain HTML: https://www.kingfisherband.com

      There's an unnecessary dichotomy here between uses JS and page is served as HTML. There's a middle ground, where the JS can do the same thing that it does now, but it only does so at edit time—in the post author's own browser, but not in others'. Once the post author is ready to publish an update, the client-side generated content is captured as plain HTML, and then they upload that. It still "uses JS", but crucially it doesn't require the visitor to have their browser do it (and for it to be repeated N times, once per page visit)...

    1. At one level this is true, but at another level how long is the life of the information that you're putting into your wiki now, and how sure are you that something this could never happen to your wiki software over that lifetime?

      I dunno. Was the wiki software in question MediaWiki?

      I always thought it was weird when people would set up a wiki and'd go for something that wasn't MediaWiki (even though I have my own quibbles with it). MediaWiki was always the clear winner to me, even in 2012 without the benefit of another 10 years of hindsight.

  16. Apr 2022
    1. I was already aware that images cannot be inserted in the DOM like you would any normal image. If you write <img src="https://my-pod.com/recipes/ramen.jpg">, this will probably fail to render the image. That happens because the image will be private, and the POD can't return its contents without proper authentication.
    1. except its codebase is completely incomprehensible to anyone except the original maintainer. Or maybe no one can seem to get it to build, not for lack of trying but just due to sheer esotericism. It meets the definition of free software, but how useful is it to the user if it doesn't already do what they want it to, and they have no way to make it do so?

      Kartik made a similar remark in an older version of his mission page:

      Open source would more fully deliver on its promise; are the sources truly open if they take too long to grok, so nobody makes the effort?

      https://web.archive.org/web/20140903010656/http://akkartik.name/about