492 Matching Annotations
  1. Mar 2021
    1. Before a bug can be fixed, it has to be understood and reproduced. For every issue, a maintainer gets, they have to decipher what was supposed to happen and then spend minutes or hours piecing together their reproduction. Usually, they can’t get it right, so they have to ask for clarification. This back-and-forth process takes lots of energy and wastes everyone’s time. Instead, it’s better to provide an example app from the beginning. At the end of the day, would you rather maintainers spend their time making example apps or fixing issues?
  2. Feb 2021
    1. The activity gem is an extraction from Trailblazer 2.0, where we only had operations. Operations expose a linear flow which goes into one direction, only. While this was a massive improvement over messily nested code, we soon decided it’s cool being able to model non-linear flows. This is why activities are the major concept since Trailblazer 2.1.
    1. While Trailblazer offers you abstraction layers for all aspects of Ruby On Rails, it does not missionize you. Wherever you want, you may fall back to the "Rails Way" with fat models, monolithic controllers, global helpers, etc. This is not a bad thing, but allows you to step-wise introduce Trailblazer's encapsulation in your app without having to rewrite it.
    1. Yes, Trailblazer is adding new abstractions and concepts and they are different to the 90s-Ruby, but now, at the latest, it becomes obvious how this improves the developing process. We’re no longer talking in two-dimensional method stack traces or byebug hoops, the language and conception is changing to the actual higher level code flow, to activities sitting in activities structured into smaller step units.
    1. Fifth, is the idea of the ledger of things. We're already seeing applications of this new Internet of devices and things. Soon though, most transactions will happen between devices and not between people. Consider the smart home, homeowners are adding smart devices such as thermostats and solar panels. Soon potentially, trillions of devices will be connected to the Internet. Doing everything from driving us around to keeping our house lit to managing our affairs and managing our health information. These devices need to be resistant to hacking. They need to be able to communicate value such as money or assets like electricity, peer-to-peer. Consider electricity, if you imagine that your neighbor's home is generating energy from a solar panel and you've got a device that needs to buy that electricity, then those two devices need away to be able to contract, bargain, and execute a payment peer-to-peer. It's not going to happen through the Visa network. It can only happen on the blockchain.

      ledger of things

    1. The reason Reform does updating attributes and validation in the same step is because I wanna reduce public methods. This is to save users from having to remember state.

      I see what he means, but what would you call this (tag)? "have to remember state"? maybe "have to remember" is close enough

      Or maybe order is important / do things in the right order is all we need to describe the problem/need.

    1. As of today, you can Wishlist OpenTTD on SteamE. Historically, OpenTTD always had a single home from where we distributed the game. We used to be hosted on SourceForge (you know you are old, if you remember that being a thing :D), and slowly moved towards our own self-created distribution methods. These days, we mostly distribute our game via our website. But times are changing, and so is our hair. Over the last few months, we have silently been working to become a bit more visible in the world. Don’t worry, not for reasons you might think: OpenTTD has as many active users as it had in 2007. But more because we no longer think it is the right approach to only distribute via our own website. This became painfully apparent when we noticed other people post OpenTTD on some stores. They are not always updated with new releases, sometimes even slacking behind a few years. And maybe more important to us: we can not guarantee that the uploaded version is unmodified and is the version as we intended. So, instead of fighting it, why not turn around and join them! Why not release our own, verified, builds on those stores! And this is exactly what we have been working on lately. And when I say “we”, a bit ironic to me, I mean the two developers that are around longest (myself and orudge) ;) A while back orudge added OpenTTD to the Microsoft Store. And today, I am happy to announce we will be on SteamE too! Well, we are on Steam, but we haven’t released anything there yet (sorry that I got your hopes up, just to squash them right after :( ). This is partially because of how Steam works, but also because we know we can bring a better experience for Steam with our upcoming release. That brings me to the most exciting news: if everything goes as planned, we will release OpenTTD 1.11 on Steam on the first of April, 2021! And that is not even an April fools’ joke! You can already Wishlist OpenTTD today .. and till we release on Steam, you can find our game via our website ;)
    1. As of today, you can Wishlist OpenTTD on SteamE. Historically, OpenTTD always had a single home from where we distributed the game. We used to be hosted on SourceForge (you know you are old, if you remember that being a thing :D), and slowly moved towards our own self-created distribution methods. These days, we mostly distribute our game via our website. But times are changing, and so is our hair. Over the last few months, we have silently been working to become a bit more visible in the world. Don’t worry, not for reasons you might think: OpenTTD has as many active users as it had in 2007. But more because we no longer think it is the right approach to only distribute via our own website.
    1. Unlike naming children, coding involves naming things on a daily basis. When you write code, naming things isn’t just hard, it’s a relentless demand for creativity. Fortunately, programmers are creative people.
    1. The non-determinism is why cache invalidation — and that other hard problem, naming things — are uniquely and intractably hard problems in computer science. Computers can perfectly solve deterministic problems. But they can’t predict when to invalidate a cache because, ultimately, we, the humans who design and build computational processes, can’t agree on when a cache needs to be invalidated.
  3. Jan 2021
  4. Dec 2020
    1. Please follow these steps before attempting to return a Pump or Sprayer: Download the Pump & Sprayer Return Form (PDF) Refer to page 2 to verify that your product SKU or item number is listed – if not, it can be returned to a store Complete the form and email to pumps_sprayers@harborfreight.com All required fields must be filled in or we may be unable to fulfill your request
  5. Nov 2020
    1. Traditional online funnels — more often than not — require you to have a separate:Content management system (ex. WordPress, Joomla)Web host (ex. SiteGround, Bluehost)Page builder (ex. Elementor, Beaver)Email autoresponder (ex. MailChimp, Aweber, GetResponse)Order formShopping cartWeb analyticsOther marketing tools
    1. When you email me, please include a minimal bash script that demonstrates the problem in the body of the email (not as an attachment). Also very clearly state what the desired output or effect should be, and what error or failure you are getting instead. You are much more likely to get a response if your script isn't some giant monster with obtuse identifiers that I would have to spend all afternoon parsing.
    1. In July 2010, Microsoft let go Jimmy Schementi, one of two remaining members of the IronRuby core team, and stopped funding the project.[19][20] In October 2010 Microsoft announced the Iron projects (IronRuby and IronPython) were being changed to "external" projects and enabling "community members to make contributions without Microsoft's involvement or sponsorship by a Microsoft employee".
    1. This is Sass based, and therefore doesn't require Svelte components

      Just because we could make Svelte wrapper components for each Material typography [thing], doesn't mean we should.

      Compare:

      • material-ui [react] did make wrapper components for typography.

        • But why did they? Is there a technical reason why they couldn't just do what svelte-material-ui did (as in, something technical that Svelte empowers/allows?), or did they just not consider it?
      • svelte-material-ui did not.

        • And they were probably wise to not do so. Just reuse the existing work from the Material team so that there's less work for you to keep in sync and less chance of divergence.
    1. If your Svelte components contain <style> tags, by default the compiler will add JavaScript that injects those styles into the page when the component is rendered. That's not ideal, because it adds weight to your JavaScript, prevents styles from being fetched in parallel with your code, and can even cause CSP violations. A better option is to extract the CSS into a separate file. Using the emitCss option as shown below would cause a virtual CSS file to be emitted for each Svelte component. The resulting file is then imported by the component, thus following the standard Webpack compilation flow.
  6. Oct 2020
    1. Yeah I see what you're saying. In my case, I had a group of classes that relied on each other but they were all part of one conceptual "module" so I made a new file that imports and exposes all of them. In that new file I put the imports in the right order and made sure no code accesses the classes except through the new interface.
    1. Doing so also means adding empty import statements to guarantee correct order of evaluation of modules (in ES modules, evaluation order is determined statically by the order of import declarations, whereas in CommonJS – and environments that simulate CommonJS by shipping a module loader, i.e. Browserify and Webpack – evaluation order is determined at runtime by the order in which require statements are encountered).

      Here: dynamic loading (libraries/functions) meaning: at run time

    2. Specifically, since Root, Rule and AtRule all extend Container, it's essential that Container is evaluated (and therefore, in the context of a Rollup bundle, included) first. In order to do this, input.js (which is the 'gateway' to all the PostCSS stuff) must import root.js, root.js must import rule.js before it imports container.js, and rule.js must import at-rule.js before it imports container.js. Having those imports ensures that container.js doesn't then try to place Root, Rule or AtRule ahead of itself in the bundle.
    1. Note how we have to duplicate the code between these two lifecycle methods in class. This is because in many cases we want to perform the same side effect regardless of whether the component just mounted, or if it has been updated. Conceptually, we want it to happen after every render — but React class components don’t have a method like this. We could extract a separate method but we would still have to call it in two places.
  7. Sep 2020
    1. let:hovering={active}

      It seems like it should be the other way around:

      let:active={hovering}
      

      to make it look like a regular let assignment.

      It's only when you consider what/how let:hovering on its own means/works that it makes a bit more sense that it is the way it is. When it's on its own, it's a little clearer that it's saying to "make use of" an available slot prop having the given name. (Very much like bind, where the LHS is also the name of the prop we're getting the data from.) Obviously we have to identify which prop we're wanting to use/pull data from, so that seems like the most essential/main/only thing the name could be referring to. (Of course, as a shortcut (in this shorthand version), and for consistency, it also names the local variable with the same name, but it wouldn't have to.)

      Another even simpler way to remember / look at it:

      1. Everything on the left hand of an prop/attribute [arg] corresponds to something in the component/element that you're passing the [arg] to. Usually it's a prop that you're passing in, but in this case (and in the case of bind:) it's more like a prop that you're pulling out of that component, and attaching to. Either way, the name on the LHS always corresponds to an export let inside that named component.
      2. Everything on the right side corresponds to a name/variable in the local scope. Usually it passes the value of that variable, but in the case of a let: or bind: it actually "passes the variable by reference" (not the value) and associates that local variable with the LHS (the "remote" side).

      Another example is bind: You're actually binding the RHS to the value of the exported prop named on the LHS, but when you read it (until you get used to it?) it can look like it's saying bind a variable named LHS to the prop on the RHS.

    1. It gets worse when you're working on a team. No-one dares touch styles authored by someone else, because it's often unclear what they're doing, what markup they apply to, and what disasters will unfold if you remove them. The consequence of all this is the append-only stylesheet. There's no way of knowing which code can safely be removed, so it's common to undo some existing style with another, more specific style — even on relatively small projects.
  8. Aug 2020
    1. The idea of having to learn something new is good, and I agree with that, but how often should you do that? Looking at the world of JavaScript, a new idea, blog post, library, framework, and whatnot pops up very often. Things become trending, and people quickly try to adopt that. I’m not saying you should not adopt new things and consider different approaches to a solution, not at all! I am trying to propose the idea of doing that less often.
    1. you could imagine my extreme disappointment after i came back after a year and a half to find that the entire exploration map was about 80% smaller, every different island was within clear view of your starting island completely decimating any sense of adventure or exploration you could have had.Almost all materials could be collected and all items built within four and a half hours. Islands are literally numbered one to five to display they're level of danger.not only that but you were practically spoon fed each advancement in the game, it feels like it was taken from a greatly ambitious open world, exploration survival game that would take months to finish and achieve everything in. To now being an arcade style iphone app game catered to ten year olds that would foolishly enter their parents card details in order to buy 10,000 roblox coins.
    1. I have over 689 hours into this game and would like to talk about the changes made to the Exploration. In my opinion the Exploration which made this game amazing now stinks!. You know longer need a ship to hit the islands. The exploration has pretty much been removed. One of the things that made this game so amazing was grinding to make your ship and heading out to Explore and find the other islands. Now all the islands are really close to the spawn point, there are not that many and well they stink. There is no reason or need to make a ship because you can easily reach all the island with a raft.
  9. Jul 2020
    1. The meta charset information must also be the first child of the <head> tag. The reason this tag must be first is to avoid re-interpreting content that was added before the meta charset tag.

      But what if another tag also specified that it had to be the first child "because ..."? Maybe that hasn't happened yet, but it could and then you'd have to decide which one truly was more important to put first? (Hopefully/probably it wouldn't even matter that much.)

  10. Jun 2020
    1. For the longest time, whenever I read the news, I’ve often felt the depressing sensation of lacking the background I need to understand the stories that seem truly important. Day after day would bring front pages with headlines trumpeting new developments out of city hall, and day after day I’d fruitlessly comb through the stories for an explanation of their relevance, history or import. Nut grafs seemed to provide only enough information for me to realize the story was out of my depth.
    1. Links can sidestep this debate by seamlessly offering context and depth. The journalist can break a complex story into a non-linear narrative, with links to important sub-stories and background. Readers who are already familiar with certain material, or simply not interested, can skip lightly over the story. Readers who want more can dive deeper at any point. That ability can open up new modes of storytelling unavailable in a linear, start-to-finish medium.

      storytelling: digital, not digitised

    1. I regularly get people coming to me and asking me to write a book. I always pass because I can’t imagine writing in a format that has an end. I can’t imagine writing in a format that doesn’t provide instant feedback. I can’t imagine writing in a format that requires a structure. I can’t imagine writing in a format that isn’t a stream of consciousness. I can’t imagine thinking about what I am going to write more than ten minutes before writing it. I can’t imagine killing trees to carry my words. So I will continue to write a blog. It’s the perfect format for me. AVC is way more than a book. It is a living breathing thing that sustains me and that is me.
  11. May 2020
    1. Right click on the /wp-content/plugins folder and rename it plugins.old. This will deactivate all of the plugins. In most cases, this will also lock the WordPress admin area as well.  You will still be able to perform these steps from within the File Manager.Reactivate the plugins folder by following the above instructions and renaming the folder plugins. This will allow you to reactivate each plugin individually to isolate the offending plugin and resolve the 500 Internal Server Error.  This should also allow access to the WordPress Dashboard again. From the WordPress Dashboard: Reactivate each plugin (one at a time) and refresh the website to see if the issue has been resolved.
    1. they’re a new media form, with different possibilities from either essays or code, and with striking opportunities to go much further

      we run with what we have

      that author of Cognitive Productivity, created some tagging systems "confined" by his tool at hand

      people using twitter threads to branch out thoughts e.g. visa, and https://twitter.com/PeterorjustP/status/1139267256263872518

      people got hooked on roam because it allows "graph thinking", linking concepts (#roamcult)

      people enjoy andy's evergreen notes because it stacks like a paper, intuitive

      people enjoy sketchnotes and sketch summaries for talks, books because it's not as linear, easy to absorb

      people absorb tutorial and demos in videos better than text (at least I do) -- effective. e.g. knovigator, worldbrain, roam...

      youtube / instructional vids / media helps internalisation of tacit knowledge more (that basketball whiz kid who got the footwork down from studying on youtube)

      people enjoying figma because the UX is the best so far. miro as well.

  12. www.kickstarter.com www.kickstarter.com
  13. Apr 2020
    1. Markdown provides shorthand for the most common features of HTML. One of its best features is that you can always fallback to the full syntax for HTML. This includes doing things that aren't included in markdown. Personally, I like that markdown is concise and includes very little fluff. It makes it easier to learn the whole set of shorthand. This is particularly important if you expect someone else to read your code later.

      One of its best features is that you can always [fall back[ to the full syntax for HTML.

      See rebuttal below.

    1. It's typically a lot easier for software engineers to pull data out of a service that they use than it is for regular users. If APIs are available, we engineers can cobble together a program to pull our data out. Without APIs, we can even whip up a screen scraper to get a copy of the data. Unfortunately, for most users this is not an option, and they're often left wondering if they can get their data out at all.
  14. Mar 2020
    1. I discuss the flaws of this in regards to spreadsheets in Spreadsheets Are Sabotaging Your Business. In brief, when people inevitably started using the more complex formulas available, they unknowingly broke the fundamental design concept of paper spreadsheets: that humans can understand what’s happening between the cells.
    1. Don't be discouraged when you get feedback about a method that isn't all sunshine and roses. Facets has been around long enough now that it needs to maintain a certain degree of quality control, and that means serious discernment about what goes into the library. That includes having in depth discussions the merits of methods, even about the best name for a method --even if the functionality has been accepted the name may not.

      about: merits

    1. Q. Why does Rubinius not support frozen and tainted? A. Rubinius has better features; frozen and tainted are considered harmful. To elaborate... Both frozen and tainted depend on strewing checks throughout the source code. As a classic weak-link system, only one of those checks needs to be misplaced for the guarantees offered by either to fail. Since the number of checks is high, and as new code is written new checks need to be considered, the features inherently constitute unbounded complexity and unbounded risk.
  15. Feb 2020
    1. Write things down We document everything: in the handbook, in meeting notes, in issues. We do that because "the faintest pencil is better than the sharpest memory." It is far more efficient to read a document at your convenience than to have to ask and explain. Having something in version control also lets everyone contribute suggestions to improve it.
  16. Jan 2020