Hey, that’s is an imaginary complication of our example - please don’t do this with every condition you have in your app.
- Mar 2021
-
trailblazer.to trailblazer.to
-
- Feb 2021
-
trailblazer.to trailblazer.to
-
In combination with [Track()], the :magnetic_to option allows for a neat way to spawn custom tracks outside of the conventional Railway or FastTrack schema.
Instead of
magnetic_to:, I propose wrapping the steps that are on a separate track in something like...DefTrack do :paypal do step :charge_paypal endor
paypal_track = RailwayTrack do :paypal do step :charge_paypal endso we can reference it from outputs, like we can with tracks created with
Pathhelper. -
For branching out a separate path in an activity, use the Path() macro. It’s a convenient, simple way to declare alternative routes
Seems like this would be a very common need: once you switch to a custom failure track, you want it to stay on that track until the end!!!
The problem is that in a Railway, everything automatically has 2 outputs. But we really only need one (which is exactly what Path gives us). And you end up fighting the defaults when there are the automatic 2 outputs, because you have to remember to explicitly/verbosely redirect all of those outputs or they may end up going somewhere you don't want them to go.
The default behavior of everything going to the next defined step is not helpful for doing that, and in fact is quite frustrating because you don't want unrelated steps to accidentally end up on one of the tasks in your custom failure track.
And you can't use
failfor custom-track steps becase that breaksmagnetic_tofor some reason.I was finding myself very in need of something like this, and was about to write my own DSL, but then I discovered this. I still think it needs a better DSL than this, but at least they provided a way to do this. Much needed.
For this example, I might write something like this:
step :decide_type, Output(Activity::Left, :credit_card) => Track(:with_credit_card) # Create the track, which would automatically create an implicit End with the same id. Track(:with_credit_card) do step :authorize step :charge endI guess that's not much different than theirs. Main improvement is it avoids ugly need to specify end_id/end_task.
But that wouldn't actually be enough either in this example, because you would actually want to have a failure track there and a path doesn't have one ... so it sounds like Subprocess and a new self-contained ProcessCreditCard Railway would be the best solution for this particular example... Subprocess is the ultimate in flexibility and gives us all the flexibility we need)
But what if you had a path that you needed to direct to from 2 different tasks' outputs?
Example: I came up with this, but it takes a lot of effort to keep my custom path/track hidden/"isolated" and prevent other tasks from automatically/implicitly going into those steps:
class Example::ValidationErrorTrack < Trailblazer::Activity::Railway step :validate_model, Output(:failure) => Track(:validation_error) step :save, Output(:failure) => Track(:validation_error) # Can't use fail here or the magnetic_to won't work and Track(:validation_error) won't work step :log_validation_error, magnetic_to: :validation_error, Output(:success) => End(:validation_error), Output(:failure) => End(:validation_error) endputs Trailblazer::Developer.render o Reloading... #<Start/:default> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<End/:success> #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Left} => #<End/:validation_error> {Trailblazer::Activity::Right} => #<End/:validation_error> #<End/:success> #<End/:validation_error> #<End/:failure>Now attempt to do it with Path... Does the Path() have an ID we can reference? Or maybe we just keep a reference to the object and use it directly in 2 different places?
class Example::ValidationErrorTrack::VPathHelper1 < Trailblazer::Activity::Railway validation_error_path = Path(end_id: "End.validation_error", end_task: End(:validation_error)) do step :log_validation_error end step :validate_model, Output(:failure) => validation_error_path step :save, Output(:failure) => validation_error_path endo=Example::ValidationErrorTrack::VPathHelper1; puts Trailblazer::Developer.render o Reloading... #<Start/:default> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<End/:validation_error> #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<End/:success> #<End/:success> #<End/:validation_error> #<End/:failure>It's just too bad that:
- there's not a Railway helper in case you want multiple outputs, though we could probably create one pretty easily using Path as our template
- we can't "inline" a separate Railway acitivity (Subprocess "nests" it rather than "inlines")
-
step :direct_debit
I don't think we would/should really want to make this the "success" (Right) path and :credit_card be the "failure" (Left) track.
Maybe it's okay to repurpose Left and Right for something other than failure/success ... but only if we can actually change the default semantic of those signals/outputs. Is that possible? Maybe there's a way to override or delete the default outputs?
Tags
- useful
- DSL
- can we do even better?
- verbose / noisy / too much boilerplate
- example: in order to keep example concise/focused, may not implement all best practices (illustrates one thing only)
- trailblazer-activity
- concise
- tip
- semantics
- I have a question about this
- example: not how you would actually do it (does something wrong/bad/nonideal illustrating but we should overlook it because that's not the one thing the example is trying to illustrate/show us)
- powerful
- feels wrong
- flexibility
- helper functions
Annotators
URL
-
-
cherrycreekschools.instructure.com cherrycreekschools.instructure.com
-
I find it crazy that the school lost 100 students weekly.
Tags
Annotators
URL
-
-
trailblazer.to trailblazer.to
-
Also, the more I use Trailblazer in projects or even in Trailblazer itself, I feel how needed those new abstractions are.
-
-
github.com github.com
-
account.first_name = first_name if first_name.present? account.last_name = last_name if last_name.present?
I guess this is needed so we don't reset to nil (erasing value in database) when they haven't even provided a new value as input.
But surely there's a cleaner way...
-
-
-
It makes me happy to see people actually think about things and not just accept a shitty API.
Tags
- actually consider / think about how it _should_ (ideally) be
- "makes me happy when ..."
- can we do even better?
- less than ideal / not optimal
- doing something without knowing why/how it works
- intentional/well-considered decisions
- don't settle for/accept something that's not as good as it can be
- describe the ideal hypothetical solution
Annotators
URL
-
-
github.com github.com
-
This branch is 22 commits ahead, 207 commits behind newsapps:master.
-
-
-
I'd like to know specifically what you were aiming to achieve with this Gem as opposed to simply using https://github.com/apotonick/reform? I am happy to help contribute, but equally if there is a gem out there that already does the job well, I'd like to know why we shouldn't just use that.
-
-
www.youtube.com www.youtube.com
-
considering PopOS is trying to tackle Ubuntu they really need their dual-boot setup to be a lot less tedious
-
if PopOS! really wants to be what Ubuntu was 10 years ago they need to step up and make dual booting easier.
-
- Nov 2020
-
acorwin.com acorwin.com
-
The answer should be: you write a language that compiles to Go’s IR.
-
-
geoexamples.com geoexamples.com
-
After some attempts mapping with Svelte, I missed using canvas instead of SVG
-
-
timdeschryver.dev timdeschryver.dev
-
In the past, I tried to create some proof of concepts with svelte, but I usually ended up missing some of the features that RxJS provides. Now that I know that they complement each other well, I will grab this combination more often
-
-
github.com github.com
-
This nested if blocks seems a bit untidy and confusing to me but I've also failed to come up with a clearer way.
Tags
Annotators
URL
-
-
-
I encounter this problem in all of my Svelte projects- feels like I'm missing something. Fighting it with absolute positioning usually forces me to re-write a lot of CSS multiple times. Is there is a better way to solve this that I've overlooked?
-
-
github.com github.com
-
This is very annoying and I think there must be a better solution.
-
- Oct 2020
-
hyfen.net hyfen.net
-
He highlights the Memex’s killer feature of associative linking and how trails of links have never been implemented in the way the Memex envisioned: It is associative indexing though, that is the essential feature of the memex, “the process of tying two items together is the important thing.” Bush describes a hypertext like mechanism at this point, but most interesting from my perspective is his emphasis on a trail as a fundamental unit — something we largely seem to have lost today. […] Documents and links we have aplenty. But where are our trails?
-
-
stackoverflow.com stackoverflow.com
-
If you have a better/simpler/"more official" solution, I'd still love to see it!
The "official" solution is to use submitErrors (see Erik's answer).
-
-
english.stackexchange.com english.stackexchange.com
-
In the software industry we use "dependency" to refer to the relationship between two objects. We say "looking for dependents" for relationships to dependent things and "looking for dependencies" for relationships to prerequisite things, so it gets that connotation, but the literal meaning is the relationship itself, not the object. Finding a better word is exactly the point of the question
-
-
dylanvann.com dylanvann.com
-
Svelte should make something like useEffect part of the framework so that this could work better and be less verbose.
-
I do like the direction Svelte is heading but I think this is one area that could be improved.
-
-
github.com github.com
-
I'm suggesting there should be a way to write lifecycle related code that also responds to changing props, like how useEffect works. I think how React handles this could be a good source of inspiration.
-
I think it just needs a few changes, possibly non-breaking additions, to be as powerful as hooks, when it comes to abstracting lifecycle related logic, and making it easy to keep effects in sync with props.
-
I'm not sure I understand the problem, everything you are describing is already possible.
-
If Svelte came up with some kind of hooks like API maybe it could solve both these issues at once.
Tags
- excellent writing
- can we do even better?
- investing time to really understand something
- use as inspiration
- too quick to dismiss
- learning by studying/emulating/copying others who do it well
- learning from others
- inspiration
- Dylan Vann
- copying/doing the same as how another project/library did it
- copying ideas from another project
- issues: discuss more before closing
- feature proposal
- issues: not taking the time to really understand the issue before closing
Annotators
URL
-
-
dylanvann.com dylanvann.com
-
I’d still be interested in Svelte making things easier so I’ve opened a feature request for Reactive statement cleanup functions.
-
Disclaimer: I’m new to Svelte so this isn’t so much a recommendation as it is a “I guess this is a way to do it 🤷♂️”
Tags
- I _guess_ this is how we do it (uncertainty; wish I knew the recommended/best way but for now I just need a way that works)
- take the extra time/effort to open an issue (in the appropriate project)
- can we do even better?
- cross-linking so readers can get the full context / see the outcome/resolution
- "I am not an expert"
- funny
- don't just complain; help improve/fix things
- cross-linking to issue
- humbleness
- community (for a project or product)
Annotators
URL
-
-
-
People constantly suggest that I should have just worked with a different library instead of writing another one.
-
It was clear no one was interested in what I was working towards.
-
Very few were interested in furthering the platform in the places they just took for granted.
-
Do we need another JS UI Library?
Tags
- common/shared goal
- can we do even better?
- difficult/hard
- UI framework
- having a clear vision in mind / goal you're working towards even if no one else seems to understand/be interested
- not: one of their goals
- reinventing the wheel / not invented here
- taken for granted
- build your own ideas
- do we really need another _?
Annotators
URL
-
- Sep 2020
-
stackoverflow.com stackoverflow.com
-
do I really have to do something like that in order to have my local modules working? it's quite impracticable to explain it to a team! there's nothing a little bit more straightforward?
-
-
github.com github.com
-
DX: start sapper project; configure eslint; eslint say that svelt should be dep; update package.json; build fails with crypt error; try to figure what the hell; google it; come here (if you have luck); revert package.json; add ignore error to eslint; Maybe we should offer better solution for this.
-
-
github.com github.com
-
This is a framework and it comes with certain opinions about how things should be done, this isn't unique to Svelte. And before we can decide whether or not we will allow certain behaviour or encourage it with better ergonomics, we have to have a conversation about whether or not we should be doing things that way. You can't separate the can from the should in an opinionated framework. We want to make building UIs simpler, for sure, but also safer we don't want to add ease of use at the expense of component encapsulation, there has to be a balance
-
-
-
Nic Fildes in London and Javier Espinoza in Brussels April 8 2020 Jump to comments section Print this page Be the first to know about every new Coronavirus story Get instant email alerts When the World Health Organization launched a 2007 initiative to eliminate malaria on Zanzibar, it turned to an unusual source to track the spread of the disease between the island and mainland Africa: mobile phones sold by Tanzania’s telecoms groups including Vodafone, the UK mobile operator.Working together with researchers at Southampton university, Vodafone began compiling sets of location data from mobile phones in the areas where cases of the disease had been recorded. Mapping how populations move between locations has proved invaluable in tracking and responding to epidemics. The Zanzibar project has been replicated by academics across the continent to monitor other deadly diseases, including Ebola in west Africa.“Diseases don’t respect national borders,” says Andy Tatem, an epidemiologist at Southampton who has worked with Vodafone in Africa. “Understanding how diseases and pathogens flow through populations using mobile phone data is vital.”
the best way to track the spread of the pandemic is to use heatmaps built on data of multiple phones which, if overlaid with medical data, can predict how the virus will spread and determine whether government measures are working.
-
-
github.com github.com
-
But what we should ask is "can we do better than the others".
-
-
github.com github.com
-
But this is a case where it feels like we're papering over a deficiency in our language, and is the sort of thing detractors might well point to and say 'ha! see?'.
-
-
-
Customers care more about the value our application adds to their lives than the programming language or framework the application is built with. Visible Technical Debt such as bugs and missing features and poor performance takes precedence over Hidden Technical Debt such as poor test code coverage, modularity or removing dead code
-
- Aug 2020
-
meta.stackexchange.com meta.stackexchange.com
-
If we've gone more than a year without this being a problem in the slightest, I don't see how the next year would be any different.
-
- Jul 2020
-
lwn.net lwn.net
-
"that text has been removed from the official version on the Apache site." This itself is also not good. If you post "official" records but then quietly edit them over time, I have no choice but to assume bad faith in all the records I'm shown by you. Why should I believe anything Apache board members claim was "minuted" but which in fact it turns out they might have just edited into their records days, weeks or years later? One of the things I particularly watch for in modern news media (where no physical artefact captures whatever "mistakes" are published as once happened with newspapers) is whether when they inevitably correct a mistake they _acknowledge_ that or they instead just silently change things.
-
- May 2020
-
support.gitlab.com support.gitlab.com
-
Requested Dormant Username Enter the username you would like to request, without the preceding URL (e.g., "User" instead of "gitlab.com/User")
Problem Type: Dormant Username Requests
-
-
about.gitlab.com about.gitlab.com
-
The GitLab.com support team does offer support for: Account specific issues (unable to log in, GDPR, etc.) Broken features/states for specific users or repositories Issues with GitLab.com availability
-
Out of Scope The following details what is outside of the scope of support for self-managed instances with a license.
-
-
-
For general questions, use cases, or anything else that does not fit into one of the above cases, please post in the GitLab Forum or on a third-party help site.
-
- Jan 2020
-
write.as write.as
-
to remember how to best fall down;
Remember how our children learned to walk? Yeah, they didn't learn how to walk, they learned how to fall down.

-
-
-
We tend to treat our knowledge as personal property to be protected and defended. It is an ornament that allows us to rise in the pecking order.
-
- Oct 2019
-
writeout.nwp.org writeout.nwp.org
-
students can explore critically the ways their own communities have been colonized or exploited
And/or the ways the community has worked to solve problems. Did the city build a bridge to connect communities? Add a school? a hospital? Public utilities? There are lots of "we" things to consider.
-
Reading the world always precedes reading the word,
Today, the issue is "reading MY world always precedes reading the word".... It's "our" world.
-
- Apr 2019
-
cran.r-project.org cran.r-project.org
-
Directed Acyclic Graph (DAG) with nodes representingrandom variables
-
- Oct 2018
-
www.youtube.com www.youtube.com
Tags
Annotators
URL
-
-
www.youtube.com www.youtube.com
Tags
Annotators
URL
-
- Sep 2018
-
hapgood.us hapgood.us
-
I’m going to assume most people in the room here have read Vannevar Bush’s 1945 essay As We May Think. If you haven’t read it yet, you need to.
I seem to run across references to this every couple of months. Interestingly it is never in relation to information theory or Claude Shannon references which I somehow what I most closely relate it to.
-
- Jul 2018
-
inst-fs-iad-prod.inscloudgate.net inst-fs-iad-prod.inscloudgate.net
-
The UbD framework promotes not only acquisition, but also the student’s ability to know why the knowl-edge and skills are important, and how to apply or transfer them in meaningful, professional, and socially important ways
This is the main reason why I am so interested in learning more about the UbD framework and templates. It really delves into WHY we teach what we're teaching. Is it because of standards or real world application? How can my students use this information in other areas?
-
-
mozilla.github.io mozilla.github.io
-
Combined with 21C leadership Skills (i.e. critical thinking, collaboration, problem solving, creativity, communication), these digital-age skills help us live and work in today’s world
Often, I think these leadership skills are more beneficial than the 3 Rs when it comes to real-world application for students. It is more effective to mold students to be compassionate and empowered as we give them the skills and tools needed to make social, political, and environmental changes in the world. It's not always what we teach, but how we teach it.
-
- May 2018
-
blackboard.gwu.edu blackboard.gwu.edu
-
The better a designer understands his or her audience and the unique needs of that particular audience, the more efficiently and effectively he or she will be able to develop, design, implement, and evaluate instructional materials in a rapid format.
-
- Mar 2018
-
inside.tru.ca inside.tru.ca
-
Las aplicaciones aumentan el acceso a la justicia
-
- Jan 2018
-
app.safetyculture.io app.safetyculture.io
-
There are no audits matching your search
There are no audits matching your search for Dispensary There are no audits matching your search for Cannabis There are no audits matching your search for Marijuana There are no audits matching your search for nutraceutical
-
- Nov 2017
-
wrapping.marthaburtis.net wrapping.marthaburtis.net
-
Finding Our Metaphors
The visual metaphor is quite intriguing. For some weird reason, it reminds me of La Jetée.
-
- Sep 2017
-
www.mnemotext.com www.mnemotext.com
-
It is up to me, not the state, what beliefs I adopt, what opinions I voice, or what religion I practice.
Except not really. Social institutions like school, religion, saluting the flag, etc. socialize us into acceptable thought/behavior. We are free, to an extent, to rebel against these socializations, but rarely without backlash from friends, family, community, etc. See also: Red Scare
-
- Aug 2017
-
hypothes.is hypothes.is
-
The Web We Need to Give Students
The title itself is expressive towards the fact that the educational system has been trying to come up with many ways to help students manage their understanding of the web in general.
some 170 bills proposed so far ...
Its no surprise tha tthe schools can share data with companies and researchers for their own benefits. Some of these actions are violations of privacy laws.
arguments that restrictions on data might hinder research or the development of learning analytics or data-driven educational software.
Unbelievable! The fact that there is actually a problem with the fact that students or anyone wants their privacy, but abusing companies and businesses can't handle invading others privacies is shocking. It seems to be a threat to have some privacy.
Is it crazy that this reminds me of how the government wants to control the human minds?
All the proof is there with telephone records, where the NSA breaches computers and cellphones of the public in order to see who they communicate with.
Countries like Ethiopia; the government controls what the people view on their TV screens. They have complete control of the internet and everything is vetted. Privacy laws has passed! Regardless, no one is safe. For example: Hackers have had access to celebrity iCloud accounts, and exposed everything.
The Domain of One’s Own initiative
Does it really protect our identities?
Tumblr?
Virginia Woolf in 1929 famously demanded in A Room of One’s Own — the necessity of a personal place to write.
Great analogy! Comparing how sometimes people need to be in a room all on their own in order to clear their minds and focus on their thoughts on paper to also how they express themselves in the web is a good analogy.
... the Domains initiative provides students and faculty with their own Web domain.
So, the schools are promising complete privacy?
...the domain and all its content are the student’s to take with them.
Sounds good!
Cyberinfrastructure
To be able to be oneself is great. Most people feel as if their best selves are expressed online rather than real life face-to-face interactions.
Tumblr is a great example. Each page is unique to ones own self. That is what Tumblr sells, your own domain.
Digital Portfolio
Everyone is different. Sounds exciting to see what my domain would look like.
High school...
Kids under 13 already have iPhones, iPads, tablets and laptops. They are very aware to the technology world at a very young age. This domain would most likely help them control what they showcase online, before they grow older. Leaving a trail of good data would benefit them in the future.
Digital citizenship:
It teaches students and instructors how to use technology the right way.
What is appropriate, and what is not appropriate?
Seldom incluse students' input...
Students already developed rich social lives.
Google doc= easy access to share ones work.
Leaving data trails behind.
Understanding options on changes made?
Being educated on what your privacy options are on the internet is a good way of protecting your work.
Student own their own domain- learning portfolio can travel with them.
If the students started using this new domain earlier in their lives, there should be less problems in schools coming up with positive research when it comes to the growth of the students on their data usages.
School district IT is not the right steward for student work: the student is.
So to my understanding, if the student is in the school, one has to remember to move around the files saved in the domain. The school is not responsible for any data lost, because the student is responsible for all their work.
Much better position to control their work...
If all of this is true and valid, it should not be a big deal then for the student to post what ever they want on their domain. No matter how extreme, and excessive it seems, if that is how they view themselves, their domain would be as unique as their personalities.
-
- Jul 2017
-
opentextbc.ca opentextbc.ca
-
Because it is so important to be seen as competent and productive members of society, people naturally attempt to present themselves to others in a positive light. We attempt to convince others that we are good and worthy people by appearing attractive, strong, intelligent, and likable and by saying positive things to others (Jones & Pittman, 1982; Schlenker, 2003). The tendency to present a positive self-image to others, with the goal of increasing our social status, is known as self-presentation, and it is a basic and natural part of everyday life.
A short film captures how social interactions influence our complex relationships between self-presentation, self-esteem and self concept in a unique way.
-
- Jun 2017
-
dmiller54.github.io dmiller54.github.io
-
these Truths to be self-evident:
these Truths to be self-evident: Thomas Jefferson probably read ~ https://books.google.com/books?id=1HqwC5QfjrUC&dq=truths%20to%20be%20self%20evident&pg=PA1000#v=onepage&q=truths%20to%20be%20self%20evident&f=false
-
- Feb 2017
-
clalliance.org clalliance.org
-
s, and characters from the fictional story world, in ways that powerfully resonate with fans of the series. Participants are mobilized as “Dumbledore’s Army of the real world” in campaigns such as Not In Harry’s Name which pressures Warner Brothers into using Fair Trade chocolate for its Harry Potter Chocolates.
Fair trade chocolate is a topic that i recently learned about after a long discussion with my sister. It essentially is a Standerd that certifies that the chocolate is not made from plantations that make children and work under unfair conditions and wages.Its amazing how they were able to stand up to cooperates to a issue that most people are not even aware of, Great Work
-
- Jan 2017
-
marginalsyllab.us marginalsyllab.us
-
There is little order of one sort where things are in process of construction; there is a certain disorder in any busy workshop; there is not silence; persons are not engaged in maintaining certain fixed physical postures; their arms are not folded; they are not holding their books thus and so. They are doing a variety of things, and there is the confusion, the bustle, that results from activity. But out of occupation, out of doing things that are to produce results, and out of doing these in a social and coöperative way, there is born a discipline of its own kind and type.
This is what my classroom looks like everyday, all day long. Students are in my art classes to produce, problem solve, learn from mistakes, learn from one another. They are actively engaged, the room gets messy. If an admin were to walk in, I'd hope they'd take a moment to observe and realize that what they are seeing is learning! Luckily I do have great admins so they do.
-
- Sep 2016
-
www.jcgmo.com www.jcgmo.com
-
Added photos Should I remove the quote?
-
- Jul 2016
-
journals-openedition-org.accesdistant.sorbonne-universite.fr journals-openedition-org.accesdistant.sorbonne-universite.fr
-
suspensifs des flux
un dispositif herméneutique (stiegler) reviendrait donc à laisser des espaces de suspension, réflexion, de doute, dans le dispositif : annotation, blanc, silence
-
- Jun 2016
-
www.linuxjournal.com www.linuxjournal.com
-
he wrote "The Web We Have to Save"
on hyperlink crisis, the web we want,
-
- Oct 2015
-
hypothes.is hypothes.is
-
Show
The NSA is still spying on you—so why did Americans stop caring?
Tags
Annotators
URL
-