#and for the other i just. had two documents. one for the html and one for the css. no comment.
Explore tagged Tumblr posts
autism-corner · 2 years ago
Text
after 4 years of having compsci in highschool i finally fucking understand how to intergrade CSS with HTML jesus.
0 notes
gwydionmisha · 1 month ago
Text
Illegal take over of Library of Congress, Patents and Trademarks, and Consumer Protection Round Up, Published 5/15/25
They want to censor huge amounts of things. It's all illegal as it's literally the library of Congress, not of the Executive Branch. U.S. Congress needs it for things like research. It stores government documents, historical documents, etc., and not just ordinary books.
If you can't see why an autocrat wants to get rid of all this, may I suggest rereading 1984.
They fought back against the illegal mass firings:
The goal is to allow companies to avoid expensive recalls for dangerous products.
If you can't safely contact them in person, here are some other options for contacting your Congress Critters:
Five Calls to your critters: https://5calls.org/
Here is one that will send your reps a fax: https://resist.bot/
Snail Mail Campaigns: https://conuly.dreamwidth.org/3622760.html
7 notes · View notes
wings-of-ink · 1 year ago
Note
I also want to start and IF, im already a writer on wattpad and I want to expand my horizons but I have absolutely no clue about coding and stuff
Is it difficult to code?
That is awesome and wonderful! I highly encourage you to take the plunge and try it out. I would not say coding is difficult, but it's not exactly easy either. You're literally learning a new language depending on how deep into it you go. For me, the way I did it was to learn, say, basic phrases ("Where is your bathroom," or "I'd like a glass of water") and grammar for this language. I'm not fluent, but I'm getting by. You don't have to have it mastered before you start.
For a long-winded breakdown, see below!
I knew absolutely zero code when I started this out. I just knew I wanted to do it so badly. There are good resources online to help you as well, especially questions on forums because we are not the only newbies in this with questions. I find the Twine cookbook thing to be a bit of a nightmare to understand, lol. I am more a type of person that needs to see something in action or do something to truly get it. I cannot just read something and understand it at all.
Two things I did that helped me a lot was to start a Twine project and enter all the code I learned into it and I also started a story to test it all out. I made notes to myself in these to remind me of what they do and how they work as well. I still have those and use them when I learn new things or if I find a new macro that I want to use.
If the Twine documents don't work for you, do a simple internet search for what you need. I started to learn the Harlowe code first, and I honestly found that more difficult than Sugarcube. As a side note, when I started this, I didn't even know that there were multiple languages that Twine could use! When you find a guide or a forum post that is useful, save it! Copy/Paste it or bookmark it. Put the code in Twine and test it right away. You'll find that it all starts making more sense to see it in action.
I can't tell you how many times I've Googled "Twine Sugarcube *insert code issue or desired outcome.*"
I also recommend finding a free coding class just to familiarize yourself with the basic function of html. I did one on codeacademy.com. There's also youtube videos out there from people who really know what they're doing.
It's not all sunshine and rainbows, so go into it knowing you are going to have really aggravating moments. I had times where I was trying so hard to understand this stuff that ended in a few tears of frustration. I'm a person who believes they can learn to do anything, but it takes pushing through those frustrating moments to get there. Our brains sometimes literally try to get us to quit stuff when it gets hard - we are wired to take the easy way out and when it's not easy, the brain is like - THIS IS PAIN. But I feel that if you push against that anyway, you'll get over that wall and things will start falling into place.
Sorry for rambling and I hope this helps you in some way, Anon! ^_^
I could go on, but for your sake, I'll stop there lol. If you have any other questions, please feel free to drop them in!
27 notes · View notes
lieutenantselnia · 2 months ago
Text
By the way, because I just found myself using this again - if you want to backup your blog, I really recommend using tumblr-utils as described in this document! I originally wanted to reblog the post where I first found this, but it was somewhere further down a reblog chain and apparently the op either disabled reblogs or deleted it, since it didn't work. So I'm just sharing the link to the document (written by user @/magz) here:
It's genuinely so useful, I've used to use Tumblr's own export feature but once a blog reaches a certain size this just takes super long (mine took literal days until it was ready to download), whereas here it was just a couple minutes, plus the folder as a whole is much smaller too. And if you set it up correctly (with incremental saves, which is also explained in the document) you don't need to download the entire thing every time!
Personally I did run into two smaller issues, one being that the download of embedded Youtube videos didn't work for me (despite running pip install youtube-dl). Maybe it's just a me issue that I missed something on the install, otherwise I could imagine that maybe there's some compatibility problem between the current versions of tumblr-utils and the youtube downloader.
The other, very minor issue (which isn't even an issue per se, more like a preference) is that there is no css styling applied on my backup, when I open the html file, so it looks like a really old website like straight from the 90s😅 I was mainly a bit confused about whether I had an error or it was supposed to be like that, because a screenshot in magz' document showed that their page apparently has some styling applied to it. I still need to look more into the documentation (btw, here is also the documentation on github directly, though I think the most important features are included in the document anyway), but as it looks you can add your own styling by either adding an override.css file to change some of the existing styles, or add your own entirely by adding a custom.css file. It would be super handy if there was also a way to easily pull your current styling from your blog to copy-paste it in there, but I haven't researched yet if such a feature exists (if you know anything I'd be happy about additions!).
But one of the best features for me was that it also allows you to export your likes. I'm sure I'm not the only one who sometimes runs into this problem that you like something, but maybe feel too embarrassed to reblog it, or may not want to do so for another reason (e.g. it's something nsfw, but you generally never share nsfw content on your own blog). [Btw I still encourage you to reblog posts when you can, as it will usually make the op happy :D But I absolutely understand why you won't sometimes.] Problem is that when the original poster deletes it at some point, it will be gone and you'll have no way of getting it back. However with tumblr-utils you can export your likes the same as your own blog. Mind you that it will have the same name as your blog, but will only contain your likes and not your own posts, so the way I did it was inside of my tumblr_backup folder, I made a likes folder and then just downloaded it into there, like this:
Tumblr media
(For downloading my own blog, I did basically the same except one folder level above and without the --likes flag.)
I just wanted to point out this feature specifically because I actually completely missed it when I first started using this method of backing up my blog. I looked into the document again today because I wasn't entirely sure about the whole process anymore and suddenly spotted that likes flag and was like "👀👀 this has been here the entire time and I didn't use it yet??!" One thing to be noted is that your likes will have to be public for the download, otherwise it won't work, however you can of course just set them to public for the time it takes you to download them (which in my case was a couple minutes for about 4000 posts) and then make them private again, and all should be fine.
All credit goes of course to the developer(s) behind tumblr-utils and to magz for writing this instruction document, but I think that maybe this post helps at least some of my own mutuals who might not know of this amazing tool yet!
4 notes · View notes
irlmaeda · 9 months ago
Note
Hiya! I found your blog through your neocities website! I was wondering if there’s any tips or things you read/watched that help you make your site. (Im heavily considering making one of my own neocities site it just seems fun)
hihi welcome !! i have quite a few pieces of advice, but the tldr is you should come up with an idea for what you want to make beforehand, and look up how to do each piece! your knowledge will start to fill in along the way :]
(this is probably gonna be long as hell so under the cut is all of the fun stuff /silly)
the way i personally started off was by sketching out what i wanted my site to look like! if you know what you want before you begin, you'll know where to look to figure out what you need to do. html+ css are extremely easy languages to read/write once you know what to look for!
Tumblr media
^ this was the original sketch for my site, where i planned out everything i wanted to include. it's a bit different from what actually ended up on the site, but that's alright! it's just about having an outline to work from. i think of it like outlining before you write, it feels like such a pain in the ass because u just wanna start working NOW but u will thank yourself later for taking the time to plan.
once you know what you want to make, start looking for tutorials and resources to make it easier! the grid for my homepage and some of my other subpages was made using a css grid generator, since its one of the more confusing bits of css. you can make grids without it, but its a very easy way to make a more asymmetrical design if ur using the generator!
thats linked here, it gives you some css to put in your head or css sheet, and then the html for the different boxes to slap in your main document. it can be easier to understand what itll look like if you give each one a border while you work, even if its just temporary!
when looking for information about css and html, w3schools is your best friend. its a pretty comprehensive database of every little piece of html + css you could ever need, with examples you can play with yourself to understand what each variable does! it's been a lifesaver for me, ive watched basically zero video tutorials because everything on there is explained so well and you can find basically Anything.
they even have code snippets for things that take more than one or two lines of code, which you can use and adapt yourself! (the tooltips on the official art + my art sections on the hinata shrine were adapted from a tutorial on there!)
in general, having a plan and working from there will make ur life so much easier. the pages that ive sketched out beforehand or ive had a very clear vision for have been WAYY easier to code than the ones i tried to come up with on the fly, and ive been much happier with how they've turned out as well. though i do also have some smaller, rapidfire tips as well that ill go thru now!!
— inline css (the style="" tag) seems so so useful but really should only be used when you're resizing images like buttons. when u keep all of your css in the head or in a seperate document, its way easier to debug and read later. i cleaned up my homepage recently by removing all of the inline css and looking at the code stresses me out WAY less because i can actually read it LOLOL ... plus cutting the css out and putting it in its own document made me realize that id accidentally wrote some really weird code in some places
— this is very much 'do as i say, not as i do,' but use an external editor (like visual studio code) instead of editing live on neocities! you can set up a live preview, and generally wont be pushing out 100 updates every single time you change or add something. i tend to code directly on neocities but its a bad habit and i want to break it eventually v_v
— if you really like an effect someone else has on their site, you can peek using inspect element i promise the coding police won't get you !! dont steal code line for line, but you can figure out what theyre doing and put your own spin on it. things like border images can be really cool, and i only figured out about them because i looked at what someone else was doing and figured out how to adapt it for my own site! check linkbooks and credit sections as well, a lot of people will include links to any effect they didnt make themself or got help with. (including me! the credits section of the linkbook has a ton of little things i got from other places, including a really neat little music player, the rss feed for my status cafe, and the wobbly text on the homepage!)
— most stuff in html and css basically just... says what it does in the tag. so looking stuff up for it is extremely easy! if you've used carrd before you honestly probably already know more abt html than u'd think just intuitively. when ur adjusting the margins or padding in carrd, you're adjusting the margin: and padding: properties in the css of the website it's outputting!
this is getting way too long but!! my best advice is to just get started. you'll never be able to learn without trying, and it genuinely is so fun to have something that's truly your own!
(if u have any specific questions im happy to answer anytime as well! i love talking abt neocities, its a super fun hobby and way easier to pick up than u would think!)
6 notes · View notes
eccentric-nucleus · 7 months ago
Text
anyway wrt 'other projects i am thinking of working on' here is a kind of enormous worldbuilding document about Setting Stuff
sorry for some of the formatting; the tumblr editor seems to be literally incapable of handling paragraphs inside of lists, whether that be in markdown or in actual html; you have to go to rich-text and then manually fiddle with stuff. this is also the only way to add a readmore now, i think?? god why is the tumblr editor so bad. i should just post this on my dreamwidth tbh
so it's a desert planet overall, inspired in some mix of... dark sun's athas, kenshi, morrowind, trigun, gears of war, westerns generally, etc. there's a big crater at one pole (at least one pole) that's a water ocean; it's called the sea of fog b/c the actual ocean is hidden beneath hundreds of meters of local cloud cover. there's an equatorial acid sea & the overall landmass is more-or-less divided into northern and southern halves. there's probably an isthmus somewhere that connects the two but it's kind of out of the scope of my current worldbuilding.
mostly my current worldbuilding has focused on one specific region that i'll say is 'roughly the size of russia'. the 'great desert' (tho as you can tell from the planet description, it's mostly desert all over). loosely: bounded at the north when the desert turns into steppe and corn fiefdoms start to dominate around the polar ocean; bounded at the south by the acid sea; bounded at the west by a huge mountain range; bounded at the east by... less discrete geographical features, but eventually there's perpetual sandstorms and huge unstable fissures that are difficult to pass.
(yopa, in the new hive, is in some variant of this setting. as you might recall, they're down south a few days travel from the acid sea. that's the southern border of the world map! arguably i should have had 'acid rain' as a weather type instead of 'sandstorms', but w/e there's plenty of other things i'd tweak now if i could. weird how i say going north leads to a lowland instead of a highland. that would be below sea level!!)
also there's likely gonna be some level of procgen integration for any game i make with this setting, & so i'm not really 100% on whether this is gonna be a template to build off of, in terms of 'these are the kinds of organizations and cultures you'll see emerge' vs. a specific idea in a specific world. it depends on how good i get at world history simulation, really.
a few notes on the various peoples that inhabit the great desert:
the corn kingdoms of the north. on rolling prairie/steppe with occasional rocky obstructions erupting through. very scattered trees, w/ more cultivated around villages. corn (or a corn-like grain, you know how it is with fantasy worldbuilding) is their staple crop, and pretty much every little village has their own heirloom variety. corn patterning is a highly political subject. every time some new attempted-ruler tries to unify the disparate fiefs and villages the big visible symbol of that is them growing their preferred kind of corn. food tithes only desiring the proper kind of grain or demanding more if it's 'unsuitable varieties', that kind of thing. one of the major strains is a bitter, rich cyan color that needs heavy nixtamalization to be particularly edible & only grows well in the regions immediately ringing the sea of fog; outside it grows pale and reedy from nutrient deficiency. meanwhile another one is a sweeter, mealier red variety that grows well in southern desert soils. i have a whole document on corn varieties and the political implications of growing each one. this is very much inspired by like... japan pre-unification, warring clans kinda situation. they probably have a higher % urbanization than most of the other peoples on this list b/c they actually do food importing i wrote a bunch of stuff on them and only later realized that even if the planet overall is hotter & so they're only just approaching temperate regions at the poles, they're still at the poles so presumably they have like 18 hour nights at winter or w/e. i don't know how that's gonna work out as a farming society. i might have to do some math about axial inclination and revise this section some. occupation-wise: lots of farmers. lots of lawless roving bandits from released conscripts after one clan or another had a military offensive collapse. that kind of thing.
the nomadic tribes of the great desert. there are a bunch of them (12? 13?) but i only came up with names of some of them major tribes. each tribe has a specific variety of weird mask that they wear as face coverings b/c of cultural beliefs about not showing yr face to those outside yr immediate family. the ash tribe wear masks of pitted volcanic rock that are just like, weird rocks. the masks are like a 'public face' in the same style as having a public name vs. a private name, & they consider everybody else to be weird uncivilized faceless demons each clan is made up of several smaller tribes, & they loosely confederate with each other as needed. the clan names get translated into other languages as things like "ash" or "vulture" or "fire-eater", but in their own language there's a chunk more nuance that's not really translated well. each one is associated with a loose constellation of concepts & there's probably some kinda inflectional state that refers to ones own subtribe or family lineage within the larger clan that tends to get removed in translation. anyway they travel along routes in the desert between various oases & are generally considered to be bandits or evil spirits by many of the other peoples who try to inhabit the great desert. there's a lot of king of dragon pass style "it's just friendly social behavior to sometimes raid a nearby camp and steal their goats" activities going on. sure, you don't want to murder the people you're raiding but sometimes they get a cracked head and that's just the cost of having sociable relations. this is how they figure out their relative ordering of power among themselves, but this behavior is not well regarded by the settled villages that get raided. they're just evil bandits who steal their stuff. occupation-wise, i have these put down as producing an awful lot of witches. witches, poets, warriors/raiders, artists. presumably also animal caretakers and scouts/foragers/rangers, too
very far south, along the edges of the acid sea, there are stilt-villages of fisherfolk who catch the weird things that live in the acid shoals. they build from some kinda tree-like acid vegetation and they have to cover everything they build in thick layers of resin pitch to make it acidproof. lots of waxed leather raincapes. pretty much everybody has pitted acid scars all over regardless. there are probably some villages out on islands in the acid sea that are totally disconnected from everywhere else save for like, shingle-bottomed resin boat travel over the acid sea. these are the only peoples who might plausibly have traveled to the other continent. if we're assuming the world used to be more watery & then the oceans sublimated away leaving behind mostly acid, these people would be living on what was formerly the abyssal plain. but maybe that's not what happened!
there's some striped canyons somewhere with big cities carved into the walls & bridges made between them. not a lot of notes on these people aside from lots of artists and bards
there are also the big mesa-temples. big mesa. hollow it out! temple complex at the top. big warren cave-city. they worship families of great beasts they consider to be divine messengers. brulvundojn is from here! it's not great. they're very eugenics-y in their attempts to breed humans into a great beast lineage. generally it doesn't take. when i was rereading the ancient nanowrimo novel that brulvundojn is actually from, i was like "oh noktigo is great" so i guess in this continuity he would be one of the rare true chimeras to come out of the breeding program, & his response was to immediately get the fuck out of there. i'm not sure if brulvundojn is 'from there' in the sense of being some offshoot of a royal lineage, or if he's from there more broadly as in he was once a peer to one of the lineages that got fixated on breeding themselves out into the world & he got out before anybody started worshipping him. the thing with the great beasts is that they are less, like, physical animals that are big and weird, and more like a physical embedding of a physical rule or structure. well, 'the new hive' is an extremely low-fantasy take on things so nobody in that really has magical powers. but in general. brulvundojn embodies the principle that those who trespass boundaries are doomed to death for their violation of the natural order & he doesn't really like being that very much. usually when a great beast breeds w/ a human you just get like, a human with some claws. whatever. sometimes you get another great beast, who is less a separate individual and more a different facet of the great beast's concept. a true chimera who has some of the conceptual nature is very rare. they're also very dangerous b/c great beasts are kind of circumscribed in their capacity for free action by the strictures of their concept, & chimera don't have that. they just have spooky powers and the capacity to do whatever they want with them. anyway some of the older lineages of great beasts are no longer living in a mesa-temple with their families so much as they are unweaving the conceptual boundaries of reality and reweaving it into something more aligned with their conceptual judgment. you can think of it as a pocket dimension if you like. or like the oblivion dimensions in the elder scrolls.
the walled oasis cities! they're also in the middle of the great desert, maybe a little on the northwestern-ish expanse. these are the most dark sun aspect of the setting really. ancient mages, maybe responsible for the ruin of the world, decide to set up a civilization to serve them. the big capital city-states all have the mage's domain (big tower, w/e) at the center, & the entire industry exists essentially to serve them. over time they've allowed lesser mage families to spring up (they need somebody to do the weak magic, after all) and those sometimes establish smaller cities with their own mage towers at the center. most of the original mages have retired from public position as official dictatorial mage-emperor for life, b/c they're perfectly capable of keeping the society tuned to their needs without also having to do any of the actual work of running it. meanwhile, all the citizens in the cities are like "wow we sure are lucky to be born in the only true, free society!!" while they are busy having their labor exploited and having their unions crushed by mage-knights and dying young of poverty and sickness. i feel like it's a little too on-the-nose tbh. architecturally they're very persian-influenced oh yeah so a few centuries ago a mage constructed some helper workers in the form of chesspiece/chaturaji golems. pawns to do simple menial labors, and then rooks/boats for building, knights for scouting, elephants/bishops for simple magic and the management of other golems, and then finally royals to create new golem pieces. then the royal pieces killed him because he was the last remaining inefficiency in the perfect automated world he had built for himself. that's how the cautionary fable goes, at least; maybe their true motives were different. anyway now there's a whole subspecies of chesspiece golems & i have a big gay romance outlined between a black knight & his childhood friend. they lived in some outlying mage-compound that ended up collapsing & most of the servants escaped and became outlaws. theyre gay fantasy cowboys.
there was at one point an empire of the frozen phoenix, though its lands have receded extensively & its former lands are mostly a few handful of former-peasant tribes picking out a rough existence in the ruins of former cities. only a handful of their cities remain, with more splintering off into rebellion each day. in the remixed version of 'the new hive' the defecting soldiers will probably come from here, which is maybe a problem b/c in my docs i only really have about one line about them, like: 'phoenix empire: former empire, decayed/decaying.'
one of the eastern borders is a land of unstable ground where fissures that ooze blood and rotting meat break open. sometimes acid springs seep fumes down into raw meat and send up charred fumes. there are small, scattered villages of rot-fishers, who live on the edge of the more stable fissures and fish up chunks of meat. they're pale and red-eyed and frequently have bizarre bloated deformities. a lot of people consider them to be harbingers of plague and pestilence. sometimes instead of growing old they metamorph into sinewy flesh monsters with intense psychic powers. i'm sure it's fine.
another one of the eastern borders is a land of perpetual sandstorm, kept going by spells from an order of witches, to hide away their lands from outsiders. how mysterious. wonder what they're up to.
there are moon-rabbits who say they came from the black moon. they live in warrens in the hulls of ancient machines that are strewn across the wasteland, and almost never leave. they're very nervous and conflict-averse. they have a prophecy about the end of the world they've read in the movements of the planets. there's a splinter race of jackalopes who are bigger and much more likely to travel outside. also, they have horns. occupations: engineers, glassblowers, astronomers, artificers.
the northern foothills of the western mountains are sparsely covered with vegetation and sometimes broken up into karst mesas, and clinging to the tops of some of them are the remnants of old forests. they're inhabited by remnants of some druidic order, mostly goatmen and humans, and they mostly stay to themselves and aggressively attack any outsiders
the western mountains proper are the eastern edge of some vast and sprawling orc / ogre empire. there are small outposts on the mountains themselves, and vast machine-cities on the far foothills over the main mountain ridge. the springs on the western side of the range seep black oil instead of water, & there's a sea of ichorous oil even further west, beyond the mountains
there's some cenote-cities along the mountains too, probably in the southwest expanse as it peters out for the descent down to the plains of the acid sea. natural cenotes of lightly brackish, highly mineral water have been expanded and cultivated into tiered cenote-cities, mostly inhabited by reptile-people. maybe a bridge to the underground. like the underground with the gheist in it?? we'll see how things shake out
these get shorter and shorter as i go further b/c i want to be closer to the end of this post. i haven't even touched on whatever astau is. anyway.
broadly speaking this is a world where the vast majority of it is rocky, dusty inhospitable wasteland, with scarce outposts of habitable land. travel between the regions is uncommon, though it does happen, and large-scale travel, like with an army, is pretty much unheard of due to the lack of supplies. it all comes back to logistics.
anyway this is the setting/project that a lot of the things i've been talking about over the past few, uh, years have been about? or at least circling around. guess why i was trying to work out medieval crop yields in the first place. i want some numbers here for population and arable land!!
4 notes · View notes
kineticallyanywhere · 2 years ago
Note
Hey hi friend, I read mind over matter recently and I really liked it. I was planning on doing my own fic eventually. I've done color formatting with HTML before, but I wasn't ever really great at it. I was wondering if you had some kind of workflow set up to make that easier since you changed color so often in that fic.
Love your work by the way!
hello! thank you so much for reading, I'm real proud of that one!
in case you've never done colored text on ao3 before, here's a link to where I've talked before about how I put all that together that might give you more insights than whatever I'm about to say and thank you for your patience with my reply, I wanted to track that down for you first
it's been... several years? terrifying. anyway it's been several years since I wrapped up MoM. the major things I remember are (1) making the name for each color in the css code something easy to spell and remember. though I probably did more copy-pasting the code one color at a time than I did just typing it out. either way, not needing a resource document of code names was a time-saver. (2) having two windows side-by-side, one with the ao3 draft and one with the google docs draft I'd originally written in. so I didn't have to click tabs open and closed all the time, I could just bounce my eyes back and forth across the screen to check for matches/inaccuracies. (3) uh.... obsession. and a beta reader at least 75% obsessed as you are, if not more. motivation is important. I spent literal hours just doing the color-coding. sometimes while a friend did his own writing, sometimes while just sitting around with youtube in the background. don't back down from your dreams, but also don't give yourself so much work that you burn out on your dreams before you finish them.
I hope all this helps??? I love inspiring other people to do crazy things with their own stuff so I hope your own crazy color text goes well!
6 notes · View notes
gattsuru · 10 months ago
Text
Weird thing is it seems bizarrely incompetent.
The owners of the .ai TLD (Anguilla) are notorious for pulling domains back (without refund) for wide varieties of content
the owner(s) of the domain name bought it through NameCheap or a reseller buying through NameCheap (which is... better for small personal sites, if that).
But they don't have much on the DNS: no cname, no MX (meaning they can't receive e-mails), no DKIM or SPF (meaning they can't send to almost anyone).
The weird location problems are cloudflare being cloudflare; you get the 'best' Cloudflare cache, rather than the originating server. Normally the solution is to check DNS histories, but they've been using Cloudflare since at least May.
It's running NGINX (yay!), but an ancient version (1.18, which was outdated in late 2020) on Ubuntu (fuckers). Probably just a side effect of running Ubuntu LTS on a server, but this is why you don't do that on a serious machine.
The password prompt being funky is just because they used rather the wrong input 'type' HTML tag. That only effects rendering on the client, so don't use that to trust whether a site is doing something naughty with your info. (And don't trust this site with any of your passwords used elsewhere.)
Browsers not treating it as a normal sign in could be downstream of that, or because of the way it handles two different pages for e-mail and password. There's ways to fix the latter, but I'd have no idea where to start with this jank.
They have SSL set up (probably for to get boosted in search), but it's using Google Trust Services, which you shouldn't:
Tumblr media
the code looks like what I'd expect a self-taught first-year web dev student to put together, and not even in a 'they used an LLM's output directly' sorta way. It's not generic, it's just weird. Inline script tags near the end of the html document, but still in the body tags? What?
the images are in jpg format (does save bandwidth, but pretty harsh impact on image quality for these types of image. Maybe done to removes a lot of model information that AIGen tools put into the PNG Chunk info, but you can do that with a imagemagick script)
B/c of the that, I can't say the model for sure, but maybe a finetune for StableDiffusion 1.x? That'd be iffy choices in May: by now Flux.1 absolutely shreds these things, in particular often eliminating many of the 'AI telltales'.
It's got no online presence beyond bots. Even AIgen discords I'm in don't seem aware of it, it has no social media presence under its real name, so on.
The theft methodology is bizarre. Using img2img as a way to avoid getting caught by artists for something even aiGen proponents see as art theft has long been a concern and possibility, but like... this is pretty clearly lifted from this tumblr user -- there's absolutely no way that those tag combinations happened by accident. But process-wise, did they try to throw one image into CLIP interrogator, run a different image and resulting prompt through img2img at a low denoising ratio, and then just slap it up directly? That's slower, more readily detected, and gonna look worse than just running from a raw prompt, or the CLIP prompt itself! And here it's obviously worse than the source images or a new prompt.
((The resolutions for images are also odd, especially if they had to use image upscaling to make it work. That clone above is 1200x1200, for example, where the original image is 1000x1000. Low denoising ratios can sometimes let you get away with weird stuff, but that looks more like someone who either doesn't know what they're doing or set up a script with some weird assumptions.
Giving the site a normal prompt 'required' a 'sign-in' for the 18+ (hah), but produced a 896x1152 image, which is... not what any direct model usage or upscaling does as a default. The prompted image did not show up on the front page.
On the other hand 'login' is preserved... kinda, as a single cookie with a 'k' and 'uuid' value, with an expiry date of one year. Weird way of doing that, and not even in a security-problem sense. Passwords are checked, even though it doesn't give an error if you put in a wrong password -- which means they're being stored on the server, and I absooooolutely would not trust the dev to have implemented proper salting and hashing of those passwords.
They're probably using a style LoRA and/or preprompt on text prompts. An intentionally bad prompt didn't get a garbage output of the sort I'd expect from SD1.x or SDXL. Which is at least something, but means they're gonna hit token limits pretty early.
Normally, I'd say e-mail harvester scam, but the lack of confirmation e-mail (or way to send a confirmation email) means that whoever's running it is going to get a lot of e-mails that don't exist. Scamming people for password reuse is a little more plausible and would explain the lack of e-mail confirmation (low friction!), especially given the lack of other sign-in options, but the lack of other social media presence is weird.
Might just be some tech novice that thinks he or she has an idea they could eventually monetize, and no ethics on the way to get there -- it does notably say "beta" in a few spots. But then the social media spam and overt tag and image theft makes even less sense: even if they could come up with a model to sell imagegens (or ads to sell...), users wouldn't get anything like these outputs they're promoting.
It's Time To Investigate SevenArt.ai
sevenart.ai is a website that uses ai to generate images.
Except, that's not all it can do.
It can also overlay ai filters onto images to create the illusion that the algorithm created these images.
And its primary image source is Tumblr.
It scrapes through the site for recent images that are at least 10 days old and has some notes attached to it, as well as copying the tags to make the unsuspecting user think that the post was from a genuine user.
No image is safe. Art, photography, screenshots, you name it.
Initially I thought that these are bots that just repost images from their site as well as bastardizations of pictures across tumblr, until a user by the name of @nataliedecorsair discovered that these "bots" can also block users and restrict replies.
Not only that, but these bots do not procreate and multiply like most bots do. Or at least, they have.
The following are the list of bots that have been found on this very site. Brace yourself. It's gonna be a long one:
@giannaaziz1998blog
@kennedyvietor1978blog
@nikb0mh6bl
@z4uu8shm37
@xguniedhmn
@katherinrubino1958blog
@3neonnightlifenostalgiablog
@cyberneticcreations58blog
@neomasteinbrink1971blog
@etharetherford1958blog
@punxajfqz1
@camicranfill1967blog
@1stellarluminousechoblog
@whwsd1wrof
@bnlvi0rsmj
@steampunkstarshipsafari90blog
@surrealistictechtales17blog
@2steampunksavvysiren37blog
@krispycrowntree
@voucwjryey
@luciaaleem1961blog
@qcmpdwv9ts
@2mplexltw6
@sz1uwxthzi
@laurenesmock1972blog
@rosalinetritsch1992blog
@chereesteinkirchner1950blog
@malindamadaras1996blog
@1cyberneticdreamscapehubblog
@neomasteinbrink1971blog
@neonfuturecityblog
@olindagunner1986blog
@neonnomadnirvanablog
@digitalcyborgquestblog
@freespiritfusionblog
@piacarriveau1990blog
@3technoartisticvisionsblog
@wanderlustwineblissblog
@oyqjfwb9nz
@maryannamarkus1983blog
@lashelldowhower2000blog
@ovibigrqrw
@3neonnightlifenostalgiablog
@ywldujyr6b
@giannaaziz1998blog
@yudacquel1961blog
@neotechcreationsblog
@wildernesswonderquest87blog
@cybertroncosmicflow93blog
@emeldaplessner1996blog
@neuralnetworkgallery78blog
@dunstanrohrich1957blog
@juanitazunino1965blog
@natoshaereaux1970blog
@aienhancedaestheticsblog
@techtrendytreks48blog
@cgvlrktikf
@digitaldimensiondioramablog
@pixelpaintedpanorama91blog
@futuristiccowboyshark
@digitaldreamscapevisionsblog
@janishoppin1950blog
The oldest ones have been created in March, started scraping in June/July, and later additions to the family have been created in July.
So, I have come to the conclusion that these accounts might be run by a combination of bot and human. Cyborg, if you will.
But it still doesn't answer my main question:
Who is running the whole operation?
The site itself gave us zero answers to work with.
Tumblr media
No copyright, no link to the engine where the site is being used on, except for the sign in thingy (which I did.)
Tumblr media
I gave the site a fake email and a shitty password.
Tumblr media Tumblr media
Turns out it doesn't function like most sites that ask for an email and password.
Didn't check the burner email, the password isn't fully dotted and available for the whole world to see, and, and this is the important thing...
My browser didn't detect that this was an email and password thingy.
Tumblr media
And there was no log off feature.
This could mean two things.
Either we have a site that doesn't have a functioning email and password database, or that we have a bunch of gullible people throwing their email and password in for people to potentially steal.
I can't confirm or deny these facts, because, again, the site has little to work with.
The code? Generic as all hell.
Tumblr media
Tried searching for more information about this site, like the server it's on, or who owned the site, or something. ANYTHING.
Multiple sites pulled me in different directions. One site said it originates in Iceland. Others say its in California or Canada.
Luckily, the server it used was the same. Its powered by Cloudflare.
Unfortunately, I have no idea what to do with any of this information.
If you have any further information about this site, let me know.
Until there is a clear answer, we need to keep doing what we are doing.
Spread the word and report about these cretins.
If they want attention, then they are gonna get the worst attention.
12K notes · View notes
jcmarchi · 11 months ago
Text
CSS Stuff I’m Excited After the Last CSSWG Meeting
New Post has been published on https://thedigitalinsider.com/css-stuff-im-excited-after-the-last-csswg-meeting/
CSS Stuff I’m Excited After the Last CSSWG Meeting
From June 11–13, the CSS Working Group (CSSWG) held its second face-to-face meeting of the year in Coruña, Spain, with a long agenda of new features and improvements coming to language. If 2023 brought us incredible advances like out-of-the-box nesting, container and style queries, or the has: selector, then 2024 is going to be even more packed with even more ground-breaking additions. Whether a new feature like inline conditionals is just starting or long-term projects are wrapping up, 2024 is already filled with exciting developments — and we’re still in July!
I wanted to share what I think are some of the most interesting and significant features coming to CSS that were examined in the meeting. However, I don’t want you to take the following as an exact recap of the discussions. Instead, I want to bring up the broader topics coming to CSS that had a spotlight at the last meeting. In reality, the features examined have been cooking up for even years and the discussions are geared towards specific cases and new enhancements, rather than defining a whole specification; a work that would be impossible in one meeting.
You can see the exact issues discussed on the CSSWG meeting agenda.
Feature 1: What if we get if()?
Since CSS custom properties gained reliable support around 2016, there have been many attempts to apply certain styles depending on a custom property value without, of course, appealing to JavaScript. One of the earliest workarounds for conditional styles was posted by Roman Komarov back in 2016 in “Conditions for CSS Variables”. From there, many other hacks have been documented for making conditional declarations in CSS (including this extremely clever one by Ana Tudor here on CSS-Tricks). In fact, you can find a full list that discusses and compares those workarounds by CSSWG member Lea Verou in her recent article, “Inline conditionals in CSS, now?”.
What’s for sure is that the community has craved a conditional way to apply styles using custom properties. Nowadays, we have a specification for Style Queries that’s capable of the task, but they come with limitations not related to browser support. The biggest of those limitations? We can’t directly style the container that’s queried, so we need some sort of wrapper element around that wrapper in HTML.
<div class="news-container" style="--variant: info"> <p>Here is some good <strong>news</strong></p> </div>
…in addition to writing the style query:
.news-container container-name: news-container; @container news-container style(--variant: info) p color: blue; border: 1px solid blue;
What if() might look like
On the CSSWG side, there have been discussions about adding an if() function as far back as 2018. It was June 13 of this year — yes, six years later — that the CSSWG resolved to begin working on if() for CSS. As good as it may look, don’t expect to see if() in a browser in at least two years! (That’s Lea’s unofficial estimate.) We’ll likely need to wait even longer for enough browser support to begin using it reliably in production. The spec draft is only barely getting started and many things have to pass a test first. For context, the CSS variables working draft began in 2012 and only received wide browser support in 2016.
Syntax-wise, if() is probably going to borrow the ternary operator from JavaScript and other programming languages, structured like this:
if(a ? b : c)
…where a is the custom property we are checking and b are c are the possible conditional return values. To check for styles, an inline style(--my-property: value) would be used.
.forecast background-color: if(style(--weather: clouds) ? var(--clouds-color): var(--default-color));
Even if ? isn’t used in CSS and : has a different meaning everywhere else, I think this syntax is the one most people are familiar with, not to mention it also allows seamless conditional chaining.
.forecast background-color: if( style(--weather: clouds) ? var(--clouds-color): style(--weather: sunny) ? var(--sunny-color); style( --weather: rain) ? var(--rain-color): var(--default-color) );
Future if() improvements
Although these probably won’t make it in the initial release, it’s interesting to see how if() might change between now and sometime further in the future:
Support for other inline conditionals. We are supposed to check for custom properties using the style() query, but we may as well check for media features with an inline media() query or if a user agent supports a specific property with an inline support().
.my-element width: if(media(width > 1200px) ? var(--size-l): var(--size-m));
Using conditional inside other CSS functions. In future drafts, we may use ternaries inside other functions without having to wrap them around if(), e.g. just as we can make calculations without calc() if we are inside a clamp() or round() function.
Feature 2: Cross-document view transitions
Last year, the View Transition API gave us the power to create seamless transitions when navigating between web pages and states. No components or frameworks, no animation libraries — just vanilla HTML and CSS with a light sprinkle of JavaScript. The first implementation of View Transitions was baked into browsers a while back, but it was based on an experimental function defined by Chrome and was limited to transitions between two states (single-page view transitions) without support for transitioning between different pages (i.e., multi-page view transitions), which is what most of us developers are clamoring for. The possibilities for mimicking the behavior of native apps are exciting!
That’s why the CSS View Transitions Module Level 2 is so amazing and why it’s my favorite of all the CSS additions we’re covering in this article. Yes, the feature brings out-of-the-box seamless transitions between pages, but the real deal is it removes the need for a framework to achieve it. Instead of using a library — say React + some routing library — we can backtrack into plain CSS and JavaScript.
Of course, there are levels of complexity where the View Transition API may fall short, but it’s great for countless cases where we just want page transitions without the performance cost of dropping in a framework.
Opting into view transitions
View transitions are triggered when we navigate between two pages from the same-origin. In this context, navigation might be clicking a link, submitting a form, or going back and forth with browser buttons. By contrast, something like using a search bar between same-origin pages won’t trigger a page transition.
Both pages — the one we’re navigating away from and the one we’re navigating to — need to opt into the transition using the @view-transition at-rule and setting the navigation property to auto
@view-transition navigation: auto;
When both pages opt into a transition, the browser takes a “snapshot” of both pages and smoothly fades the “before” page into the “after” page.
Transitioning between “snapshots”
In that video, you can see how the old page fades into the new page, and it works thanks to an entire tree of new pseudo-elements that persist through the transition and use CSS animations to produce the effect. The browser will group snapshots of elements with a unique view-transition-name property that sets a unique identifier on the transition that we can reference, and which is captured in the ::view-transition pseudo-element holding all of the transitions on the page.
You can think of ::view-transition as the :root element for all page transitions, grouping all of the parts of a view transition on the same default animation.
::view-transition ├─ ::view-transition-group(name) │ └─ ::view-transition-image-pair(name) │ ├─ ::view-transition-old(name) │ └─ ::view-transition-new(name) ├─ ::view-transition-group(name) │ └─ ::view-transition-image-pair(name) │ ├─ ::view-transition-old(name) │ └─ ::view-transition-new(name) └─ /* and so one... */
Notice that each transition lives in a ::view-transition-group that holds a ::view-transition-image-pair that, in turn, consists of the “old” and “new” page snapshots. We can have as many groups in there as we want, and they all contain an image pair with both snapshots.
Quick example: let’s use the ::view-transition “root” as a parameter to select all of the transitions on the page and create a sliding animation between the old and new snapshots.
@keyframes slide-from-right from transform: translateX(100vw); @keyframes slide-to-left to transform: translateX(-100vw); ::view-transition-old(root) animation: 300ms ease-in both slide-to-left; ::view-transition-new(root) animation: 300ms ease-out both slide-from-right;
If we navigate between pages, the entire old page slides out to the left while the entire new page slides in from the right. But we may want to prevent some elements on the page from participating in the transition, where they persist between pages while everything else moves from the “old” snapshot to the “new” one.
That’s where the view-transition-name property is key because we can take snapshots of certain elements and put them in their own ::view-transition-group apart from everything else so that it is treated individually.
nav view-transition-name: navigation; /* ::view-transition ├─ ::view-transition-group(navigation) │ └─ ::view-transition-image-pair(navigation) │ ├─ ::view-transition-old(navigation) │ └─ ::view-transition-new(navigation) └─ other groups... */
You can find a live demo of it on GitHub. Just note that browser support is limited to Chromium browsers (i.e., Chrome, Edge, Opera) at the time I’m writing this.
There are many things we can look forward to with cross-document view transitions. For example, If we have several elements with a different view-transition-name, we could give them a shared view-transition-class to style their animations in one place — or even customize the view transitions further with JavaScript to check from which URL the page is transitioning and animate accordingly.
Feature 3: Anchor Positioning
Positioning an element relative to another element in CSS seems like one of those no-brainer, straightforward things, but in reality requires mingling with inset properties (top, bottom, left, right) based on a series of magic numbers to get things just right. For example, getting a little tooltip that pops in at the left of an element when hovered might look something like this in HTML:
<p class="text"> Hover for a surprise <span class="tooltip">Surprise! I'm a tooltip</span> </p>
…and in CSS with current approaches:
.text position: relative; .tooltip position: absolute; display: none; /* vertical center */ top: 50%; transform: translateY(-50%); /* move to the left */ right: 100%; margin-right: 15px; */ .text:hover .tooltip display: block;
Having to change the element’s positioning and inset values isn’t the end of the world, but it sure feels like there should be an easier way. Besides, the tooltip in that last example is extremely fragile; if the screen is too small or our element is too far to the left, then the tooltip will hide or overflow beyond the edge of the screen.
CSS Anchor Positioning is yet another new feature that was discussed in the CSSWG meetings and it promises to make this sort of thing much, much easier.
Creating an anchor
The basic idea is that we establish two elements:
one that acts as an anchor, and
one that is a “target” anchored to that element.
This way, we have a more declarative way to associate one element and position it relative to the anchored element.
To begin we need to create our anchor element using a new anchor-name property.
Changing our markup a little:
<p> <span class="anchor">Hover for a surprise</span> <span class="tooltip">Surprise! I'm a tooltip</span> </p>
We give it a unique dashed-indent as its value (just like a custom property):
.anchor anchor-name: --tooltip;
Then we relate the .tooltip to the .anchor using the position-anchor property with either fixed or absolute positioning.
.toolip position: fixed; position-anchor: --tooltip;
The .tooltip is currently positioned on top of the .anchor, but we ought to move it somewhere else to prevent that. The easiest way to move the .tooltip is using a new inset-area property. Let’s imagine that the .anchor is placed in the middle of a 3×3 grid and we can position the tooltip inside the grid by assigning it a row and column.
The inset-area property takes two values for the .tooltip‘s in a specific row and column on the grid. It counts with physical values, like left, right, top and bottom, as well logical values depending on the user’s writing mode, like start and end, in addition to a center shared value. It also accepts values referencing x- and y-coordinates, like x-start and y-end. All these value types are ways of representing a space on the 3×3 grid.
For example, if we want the .tooltip to be positioned relative to the top-right edge of the anchor, we can set the inset-area property like this:
.toolip /* physical values */ inset-area: top right; /* logical values */ inset-area: start end; /* mix-n-match values! */ inset-area: top end;
Lastly, if we want our tooltip to span across two regions of the grid, we can use a span- prefix. For example, span-top will place the .tooltip in the grid’s top and center regions. If instead we want to span across an entire direction, we can use the span-all value.
One of the problems with our anchor-less example is that the tooltip can overflow outside the screen. We can solve this using another new property, this time called position-try-options, in combination with a new inset-area() function.
(Yes, there is inset-area the property and inset-area() the function. That’s one we’ll have to commit to memory!)
The position-try-options property accepts a comma-separated list of fallback positions for the .tooltip when it overflows outside the screen. We can provide a list of inset-area() functions, each holding the same values that the inset-area property would. Now, each time the tooltip goes out off-screen, the next declared position is “tried”, and if that position causes an overflow, the next declared position is tried, and so on.
.toolip inset-area: top left; position-try-options: inset-area(top), inset-area(top right);
This is a pretty wild concept that will take some time to grok. CSSWG member Miriam Suzanne sat down to discuss and tinker with anchor positioning with James Stuckey Weber in a video that’s well worth watching.
youtube
Geoff Graham took notes on the video if you’re looking for a TL;DW.
There are still many aspects to anchor positioning we aren’t covering here for brevity, notably the new anchor() function and @try-position at-rule. The anchor() function returns the computed position of the edge of an anchor, which provides more control over a tooltip’s inset properties. The @try-position at-rule is for defining custom positions to set on the position-try-options property.
My hunch is that using inset-area will be plenty robust for the vast majority of use cases.
The CSSWG is a collective effort
Earlier I said that this article wouldn’t be an exact retelling of the discussions that took place at the CSSWG meetings, but rather a broad representation of new specs coming to CSS that, due to their novelty, were bound to come up in those meetings. There are even some features that we simply hadn’t the time to review in this roundup that are still subject to debate (cough, masonry).
One thing is for sure: specs aren’t made in some vacuum over one or two meetings; it takes the joined effort of tens of amazing authors, developers, and user agents to bring to life what we use every day in our CSS work — not to mention the things we will use in the future.
I also had the opportunity to talk with some amazing developers from the CSSWG, and I found it interesting what their biggest takeaways were from the meetings. You might expect if() is at the top of their lists since that’s what is buzzing in socials. But CSSWG member Emilio Cobos told me, for example, that the letter-spacing property is essentially flawed and there isn’t a simple solution for fixing it that’s copasetic with how letter-spacing is currently defined by CSS and used in browsers. That includes the fact that converting normal properties into shorthand properties can be dangerous to a codebase.
Every tiny detail we might think of as trivial is carefully analyzed for the sake of the web and for the love of it. And, like I mentioned earlier, this stuff is not happening in a closed vacuum. If you’re at all interested in the future of CSS — whether that simply keeping up with it or getting actively involved — then consider any of the following resources.
0 notes
awiola · 1 year ago
Text
[A joke of a] normal update, spring XXIV
Tl;dr - no progress, regress only and not even the system kind.
A bit early this time but these two weeks or so won't really make much of a difference so yeah.
Checking stuff I wrote about before... I failed the 100 days of art challenge. But I did draw the Father daki, even if at the last moment. Still no comms open but it's barely july so. Maye. We'll see.
Current game stuff
Eeeh... Idk where to start so... Impostor Syndrome hasn't really seen much progress. I wasn't joking in that tl;dr. Reason being about the same as usual + the fact I was actually busy and properly afk irl. Shocking.
I mean, pretty sure I did basically no dev for around three months already if you don't count that one day I did some programming on Enmity but it's going extremely slowly cause it's basically all committing to a very bad decision. If someone ever tells you that having a window of space that's not even rectangular in your textbox is a good idea, don't believe them and kick them away while you're at it. I knew it was a mistake from the very beginning and I'm sticking to it. At least adding transitions, drawing all the missing art etc later would be pretty fast compared. I do have lotsa materials to compile and documents to make irl but I think I'll be done by the end of july or so so the game would most likely be finished before Spooktober. I think. Maybe.
Soon after the winter update, I was told two of the games I was working on were suspended indefinitely/cancelled and thanks to the whole team for your hard work. I talked about one of them here [with Doibats] and the other one I'm pretty sure I never mentioned. I wanted to join another team, then, but life was like 'NO >:C' so I had to leave soon after orz Good thing I wasn't anyone important.
I think for now I'll just focus on finishing my other games or correcting stuff from the "24 >:C" list since a lot of that is minor enough I could do it in a day or two and just couldn't've bothered before. If I work on anything, you'd probably just see it suddenly appear on my ich profile with more info during the next update.
.
.
.
Oh, right. If anyone was curious about that otome I did basically no work on and wasn't even a part of the team but hey, promo is promo, right, it's Chromatic Agape. They made some cool design decisions so wait a bit till the end of otojam [based on what I saw about their progress, it seems highly likely they'll finish on time] and bask in its full glory. By playing. Or check out the demo now.
Pariiish noootiiiceees
So, Insect [adjacent] jam is still happening this year, just later. I don't know when, I'll make a separate post. Tentacle jam, though? Probably not. I mean, arthropods can have tentacles [I think??? Idk], too, so you can add them anyway but yeah. I want to be able to join my own jam. And there's also the fact I totally failed with making mushroom game and it's just waiting there and staring at me menacingly cause it's hidden from the public eye... So wait for the jam annoucement post. This year.
---
All that html hates me, I tell you.
Over.
0 notes
dawnfelagund · 2 years ago
Text
How to Block AI Bots from Scraping Your Website
The Silmarillion Writers' Guild just recently opened its draft AI policy for comment, and one thing people wanted was for us, if possible, to block AI bots from scraping the SWG website. Twelve hours ago, I had no idea if it was possible! But I spent a few hours today researching the subject, and the SWG site is now much more locked down against AI bots than it was this time yesterday.
I know I am not the only person with a website or blog or portfolio online that doesn't want their content being used to train AI. So I thought I'd put together what I learned today in hopes that it might help others.
First, two important points:
I am not an IT professional. I am a middle-school humanities teacher with degrees in psychology, teaching, and humanities. I'm self-taught where building and maintaining websites is concerned. In other words, I'm not an expert but simply passing on what I learned during my research today.
On that note, I can't help with troubleshooting on your own site or project. I wouldn't even have been able to do everything here on my own for the SWG, but thankfully my co-admin Russandol has much more tech knowledge than me and picked up where I got lost.
Step 1: Block AI Bots Using Robots.txt
If you don't even know what this is, start here:
About /robots.txt
How to write and submit a robots.txt file
If you know how to find (or create) the robots.txt file for your website, you're going to add the following lines of code to the file. (Source: DataDome, How ChatGPT & OpenAI Might Use Your Content, Now & in the Future)
User-agent: CCBot Disallow: /
AND
User-agent: ChatGPT-User Disallow: /
Step Two: Add HTTPS Headers/Meta Tags
Unfortunately, not all bots respond to robots.txt. Img2dataset is one that recently gained some notoriety when a site owner posted in its issue queue after the bot brought his site down, asking that the bot be opt-in or at least respect robots.txt. He received a rather rude reply from the img2dataset developer. It's covered in Vice's An AI Scraping Tool Is Overwhelming Websites with Traffic.
Img2dataset requires a header tag to keep it away. (Not surprisingly, this is often a more complicated task than updating a robots.txt file. I don't think that's accidental. This is where I got stuck today in working on my Drupal site.) The header tags are "noai" and "noimageai." These function like the more familiar "noindex" and "nofollow" meta tags. When Russa and I were researching this today, we did not find a lot of information on "noai" or "noimageai," so I suspect they are very new. We used the procedure for adding "noindex" or "nofollow" and swapped in "noai" and "noimageai," and it worked for us.
Header meta tags are the same strategy DeviantArt is using to allow artists to opt out of AI scraping; artist Aimee Cozza has more in What Is DeviantArt's New "noai" and "noimageai" Meta Tag and How to Install It. Aimee's blog also has directions for how to use this strategy on WordPress, SquareSpace, Weebly, and Wix sites.
In my research today, I discovered that some webhosts provide tools for adding this code to your header through a form on the site. Check your host's knowledge base to see if you have that option.
You can also use .htaccess or add the tag directly into the HTML in the <head> section. .htaccess makes sense if you want to use the "noai" and "noimageai" tag across your entire site. The HTML solution makes sense if you want to exclude AI crawlers from specific pages.
Here are some resources on how to do this for "noindex" and "nofollow"; just swap in "noai" and "noimageai":
HubSpot, Using Noindex, Nofollow HTML Metatags: How to Tell Google Not to Index a Page in Search (very comprehensive and covers both the .htaccess and HTML solutions)
Google Search Documentation, Block Search Indexing with noindex (both .htaccess and HTML)
AngryStudio, Add noindex and nofollow to Whole Website Using htaccess
Perficient, How to Implement a NoIndex Tag (HTML)
Finally, all of this is contingent on web scrapers following the rules and etiquette of the web. As we know, many do not. Sprinkled amid the many articles I read today on blocking AI scrapers were articles on how to override blocks when scraping the web.
This will also, I suspect, be something of a game of whack-a-mole. As the img2dataset case illustrates, the previous etiquette around robots.txt was ignored in favor of a more complicated opt-out, one that many site owners either won't be aware of or won't have time/skill to implement. I would not be surprised, as the "noai" and "noimageai" tags gain traction, to see bots demanding that site owners jump through a new, different, higher, and possibly fiery hoop in order to protect the content on their sites from AI scraping. These folks serve to make a lot of money off this, which doesn't inspire me with confidence that withholding our work from their grubby hands will be an endeavor that they make easy for us.
69 notes · View notes
moonlight-fox · 2 months ago
Text
Varies wildly. But. For some (short) things it's stream of consciousness 'write it all down in a single go'. For others I'll have a single document and then sort of be doing...
Prose prose prose prose prose
<in the next couple of paragraphs this happens>
<And then this>
Prose prose prose prose prose prose prose
<and then this>
Prose prose prose prose prose
Which might be beat by beat or act by act depending on how I'm feeling beat by beat plans on what happens next that when I'm up for doing some writing on that work I can replace.
Though I'm currently transitioning from working in notepad to working in scrivener so my workflow is currently up in the air. To make that second approach work in scrivinr my current work flow is a manuscript for the short piece with individual files for each <bulleted what happens next> and then have a notes file that I've got on the right panel and be doing my writing in the left panel, with the <plan> over in the little window where you can make a quick note about the section to remind you what's in it in the corkboard view.
Meanwhile for the 3 year project with weekly updates I'd be writing the individual chapters in the stream of consciousness 'write it all down in a single go' and have a libre office spreadsheet with notes to myself on my plan, and which chapters I'd written and which I hadn't written and when each was going up online, with an estimation for how much of the stuff I hadn't finished but had started I'd written (So, "Yeah this is about halfway done, I'll slap a 50% into that sheet) and conditional formatting so when written it went green, when not started it was red, and anything in between was yellow, and a little section of the spreadsheet off to one corner for 'chapters I've written but haven't figured out where I'm going to place them' and sometimes I'd outline plot beats I needed to happen to know how many chapters related to the current arc and figure out what order things needed to go if that involved following multiple characters and what a natural pace for that - Seperate notepad file, obviously - with the most complicated arc from a narrative planning stage (arc 2) needing me to break out a flowchart once I'd figured out what all the story beats that needed chapters of their own (and possibly even had written them all) to figure out the correct order for them, and then filling out the stuff in between with side-content, world building, subplots that sometimes became heavily relevant for an arc and othertimes remained as subplots. Much less planning for those until I was wrapping up and had to think carefully about the use of the chapters I had remaining because...
...Well, obviously when I saw an opportunity to end a pokemon fanfic on Chapter 151 I did it, so which characters needed subplots wrapping up and how many chapters I had spare to do remaining one and dones or a Halloween two parter were limited.
...If I still had access to some I might have even broken out some project management software because it was basically just a dependency graph I was making.
And then in the final editing pass I'd add in the HTML for formatting before copying it into the relevant pages for my NeoCities page.
While for the epilogue I had about 20 different notepad files where I wrote each character's epilogue at various time stamps, and then made a spreadsheet to figure out what who was in which so I didn't miss anything while copying all of that into a master document, and then juggled the order of each person in each time zone until it felt like it flowed. That was fun to write and then left me with a narrative jigsaw after doing editing passes on each individually before stitching them together and then more editing passes when I was happy with the order.
...I'm not sure if I'd use scrivener for something I wanted to publish as HTML or not...
Like, maybe, and then copy paste into notepad before doing the HTML on it?
hello writers.
14K notes · View notes
recurring-polynya · 2 years ago
Text
Writing/Art Update 5/30/2023
I feel like I worked really hard last week, and yet I don't actually have much to show for it. I guess a lot of it is little stuff that piled up. I mean, I very much do still have a bit pile of dumb little tasks to do, but it's smaller than it was last week. I feel like I've had to do a lot of driving and socializing lately, too, which not only take up time, but wipes me out both before and after.
If you like extra features, I did finish up my go places addenda post last week. I have a lot of ao3 comments to reply to, but aside from that, I guess I'm pretty much done with that one. It gave me a lot of grief while I was writing it, but in the end, I think I'm pretty happy with how it turned out, and I have some good feelings about the end stages of sitting with it.
Onward and upward!! Sorry if this is old hat to my regular followers, but just to get everyone up to date, the new project is Ductwork, the next part of Heart is a Muscle. The preview summary I slapped on the end of What We Do with Our Hearts reads "Renji tries to not make it a big deal when he gets his long-damaged kidou ducts fixed; Rukia is having none of it. Byakuya would like to be removed from this narrative and yet can't seem to manage it."
I started it about a year ago, immediately finishing Hearts, and knocked out about 7700 words of it at the time. I'm kinda gun-shy, because last summer I really really wanted to finish a little in love and I tried and failed (tried and died, basically), a thing that has not been made better by the fact that people have started sending sad little messages like "i hope you finish this someday..." That being said, I am trying to be more realistic about my capabilities, especially because I have a lot more Mom-duties in the summertime. My goal is to make 20,000 words of progress before I fizzle out this time. I mean, if I do finish it, that would be great! I'm not gonna stop dead if I hit 20k. I do hope to participate in the Bleach Returns event this July, but whether that consists of a small break or a big break, I don't know. We'll see.
So, I already have a significant chunk of the first act done, but I'm having trouble moving forward, because I don't have a great idea of how the second act is gonna go. For now, it's two acts, it's evolving, and I'm letting it. I'm trying to let myself exist in creative mode and have some fun with that. In that vein, I just went ahead and let myself write The Big Scene, the scene that is the entire reason I am writing this fanfic. I wrote 3500 words on it this week. It's not done yet, but I am having fun. I've also been having little bursts of inspiration for scenes that follow and other things I want to do, so overall, I am in a good place. It's nice. This is good.
The overall document length at the moment is 12,617, which means I've done about 5k words since I started working on it, which is a quarter of the way there! That's distinctly Not Bad!!
In other news, I've been increasingly dissatisfied with Google Docs, so I am experimenting with writing this one in Microsoft Word. I don't deal with change well, so for now, I hate it, but I'm figuring out ways to make it more the way I like, and at least it doesn't constantly reload back to the top of the page. I will keep you updated. It's not like I can't just cut and paste it back into the other program, which I would end up doing anyway, because GDocs works pretty well for beta-reading and the AO3 auto-html script is handy.
11 notes · View notes
femenaces · 4 years ago
Text
how to pack your blog into a suitcase
As of late, staff seems to have become more active in bringing down the ban hammer on feminist blogs. Because of this, it can be a good idea to have a way to preserve your content and make re-making easier. This is the “suitcase” method I’ve come up with. Important: this is a preemptive strategy, so it needs to be done prior to termination, not after.
Step one: Create a new tumblr account 
By this I mean log out, and “sign up” with a new email. For the settings on this new main blog, set it to be hidden from search results (which is the most private setting available for a main blog, as you can’t make a main blog private)
Step two: Add a private secondary blog to your new account
Secondary blogs are the only blogs that can be made private, so add one to your new account. Make it hidden from search results like the main blog, and select “password protect this blog” under settings on desktop to make it private. This will be your suitcase blog where you collect all your most important content from your feminist blog.
Step three: Find and collect your best original posts
Go to https://jetblackcode.com/TumblrOriginalPostFinder and enter you blog name to find all your original posts. To make the job faster and less cluttered, I also filter it by a certain note threshold (say, 15) and only collect the ones that were bangers. Personally, since I’ve had my blog for 5 years and my posting style and ideas have changed a lot over time, I like to reblog the posts to my suitcase chronologically by starting at the bottom of the original post list on jetblackcode and adding a “(insert year) START” tag to the first post I collect from each new year.
Step four: Find and collect your favorite posts / reference posts
To make this easier on myself, I’ve taken to tagging posts “fav” and “ref” right away when I reblog them if I think I’ll want to collect them in my suitcase blog later. That way, when it’s time to update my suitcase blog, I can just go through my feminist blog and collect all posts under those tags. 
Step five: Save your blog theme
To do this, open the HTML editor of your feminist blog and copy+paste everything there into a plain text document (like notepad on windows) and save it to your computer. If you have extra added pages on your blog, copy their content too.
Step six: Update your suitcase occasionally 
Every so often, repeat steps 3 and 4 to collect any new posts you want to save. I do this every couple of months.
____________________
These steps will give you a hidden suitcase full of your best and favorite posts. My suitcase contains 150 posts total, condensed from my 5 years of blogging. Hopefully, you’ll never have to make use of your suitcase. But if you do, it’s easy (although repetitive) to fill your remade blog with your old content. Simply un-private your suitcase, scroll to the bottom (if you’ve organized chronologically) and start reblogging everything to your new blog. 
IMPORTANT: Always keep your suitcase account separate and private so that it is invisible & standalone, don’t use the account for any other blogs. This way, it is not at risk of termination and is a permanent database.
186 notes · View notes
henfox · 4 years ago
Text
KYLOSOLO’S/KRYLORENS’ STEP BY STEP BASIC GIFFING TUTORIAL, inc. ALL RESOURCES:
this is part one out of two not don’t worry, part two is just me filming the process, i just had to put it onto a separate tumblr post since i can’t place it in this one.  PART TWO HERE: [x]
Tumblr media
i’ve been giffing for about over six years and it’s only very recently that i feel i’ve got a grasp on a pretty good method, for me at least. if you’re reading this you probably have prior knowledge already but this tutorial is also going to go over the basics as if you know nothing. → this is just how i do everything and my ordering process, there are way better gif-makers out there but i know how finicky the process can be so i wanted to give out all my tricks! it might seem like a lot but it becomes second nature easily. (let me know of any broken links and or questions.) just to note i use windows not mac.
SORRY FOR SPELLING AND GRAMMAR ISSUES, i really pushed myself and i struggle with articulation. 
things you will need/learn: (it’s all free!)  →the ones in bold are essential.  —adobe photoshop; i use cc2020 which you can get here: [x] —mpv; (a frame captures, i’ve used pretty much every type over the years, even ps’ inbuilt one but this is my favourite & this tutorial on how to use/dl it is the best) [x] —***at least 1080p footage; if you don’t have any you can still use this frames folder to follow along with me :) [x]*** —4k video downloader [x] —a megasync account [x]
actions: —@kylos tumblr sharpening; (these are just my favourites you can use any you find/make really but this makes your gifs look even more hq) [x] —@kylos twitter sharpening: [x] —@rory-amy tumblr/twitter save; (i just use the save action out of this pack and it’s a LIFESAVER) [x] —if you’re not sure how to put these into your ps i’ll show you how later on in this tutorial. 
how to learn colouring + how to add subtitles correctly + how to make hq twitter gifs: —all later on in this tutorial with links to my own resources and might have my twitter watermark by mistake. 
*what this tutorial isn’t including: —how to t*rrent. —how to upscale footage. —how to make multiple gifs/gifset are crop them the same way/move frames over to a new document; (i’m just focusing on how to make one simple gif) —how to use gradient/html text for captions but here’s a great tutorial on it. [x]
i just want to give a big shout out to @kylos because all her tips are just amazing and top-tier!!!
‧͙⁺˚*・༓☾ ☽༓・*˚⁺‧͙  ok now onto the good stuff!  ‧͙⁺˚*・༓☾ ☽༓・*˚⁺‧͙
★ how to load in and sort out your layers: [1/2] ★ —once you’ve dl the frames or gotten your own you’ll need to load them into ps like this;
Tumblr media
when load layers pops up, you can select individual files (for a more complicated set this is good) but i prefer to just use the folder option. now select your captures folder from wherever you saved it. depending on how many frames/how hq they are will effect how long the loading time is. it can really vary.  —ONE THING YOU SHOULD NEVER DO: is take EVERY OTHER FRAME when making your gifs this destroys the flow of them and is an older method to gifs that isn’t needed. 
Tumblr media
—if your ps is brand new you’re going to have to add some stuff, which i’ll show you how to do. — first go to window and select TIMELINE and ACTIONS. then move your ADJUSTMENTS bar up and close the tab it came from since you won’t need those. (if you ever do, just click workspace and then RESET ESSENTIALS) and next you’re going to click on your timeline bar, then CREATE FRAME ANIMATION. — *your screen should now look like this:*
Tumblr media
—then on your timeline bar at the right top corner there’s three little lines, click that. then select MAKE FRAMES FROM LAYERS and after SELECT ALL FRAMES and next REVERSE ALL FRAMES. (depending on the ps you use your frames might be like mine and need to be reversed, just click the play icon on your timeline to make sure). —i always play through the gif before doing anything and i noticed the gif frames are a bit long for my taste so i’m going to press my shift key and then select up to frame ten by right clicking (they should now be highlighted) and click the trashcan icon on the TIMELINE bar to delete them. you can trim your gifs at the end doing this if the mb is too high and your gif doesn’t load when uploading. currently tumblr is up to 10mb and twitter is around past 15mb.  —after deleting your frames you then need to SELECT ALL FRAMES again and then CONVERT TO TIMELINE.
★ how to crop your gifs: ★ ***here is when i like to do it: (4th icon on the bar on your left)*** —however, you can do this before or after, just as long as it isn’t after making it a SMART OBJECT or sharpening.  —there should now be a new a bar on top of your gif and next to RATIO is where you should put your dimensions in (as in width:height) 
Tumblr media
—there are tumblr dimensions but i find you can be more lax with them, i like to change it up a lot but for now i make square gifs around 450px x 450px and rectangular ones around 500px x 340px but it’s up to you. if you’re really struggling and see a set with a size you want to use yourself you can study the size of it by inspecting its elements on desktop, and rounding up. but i would recommending doing it yourself. making your own style is the fun of it!!! —for twitter the best size is 600px x 600px. this is a square, sometimes frames can’t just fit neatly into this shape/sizing so find what’s best or copy my tumblr dimensions if you’re struggling. 
***note: when cropping your gif you can get weird transparent lines around it. → to get rid of those when cropping your gif, you have to: crop inwards a bit, (or as much as you want) and move the cropping square/shape a bit into the middle. 
now, make sure you go to IMAGE on top bar select and put in your gif dimensions.***
‧͙⁺˚*・༓☾ ☽༓・*˚⁺‧͙  
★ back to your layers: [2/2] ★ —now go to your LAYERS bar and select every frame with an eye icon next to it, right click and select on top of them and select CONVERT TO SMART OBJECT. this should leave all the frames you have deleted earlier and those have no eye icon, you can select those akin to how you did it on your TIMELINE bar, just use the trashcan icon on your LAYERS bar or just select DELETE LAYERS when right clicking. 
★ how to insert and use actions: ★ —to do this you need to locate your actions folder. so, go to your adobe photoshop file, right click on the ps icon and then click ‘FILE LOCATION’ then search in it for ACTIONS. next if your action(s) are downloaded go open another file explorer tab:
Tumblr media
then drag and drop it like this:  —if it says administer permission is needed click yes.
Tumblr media
—once you’ve done this head back into ps to use the ACTIONS, first to sharpen, then to save: —you’re going to click the arrow icon on the sidebar on the left side to your LAYERS and then the three lines as shown here: 
Tumblr media
—you’ll see where it says SELECT HERE, do that and then click the arrow icon below it and just click continue if you get the make layers error, this won’t affect anything. (sometimes gifs can glitch at this stage but just undo or you may need to restart your gif.)  —ok now your gif is sharpened! if you think it’s too much you can add gaussian blur from the FILTERS bar at the top but i just prefer to lower the opacity by double clicking the bars next to the word SMART SHARPENED which has now appeared x2.  —for me gif colouring at this stage is hard because playing the gif in this mode blurs it and i like having the individual layers so this is where the action pack (save) comes in handy! *it also saves you from having to open your gif at the end and adjusting to 0.07 sec bug to 0.05 gif speed the action auto does it to 0.05 for you (which i’ll explain next.) just select the action the exact way you did sharpening. just scroll down to where it says save.  —now your ps should look like this (this is a good point to save, but i’m the worst and do it after i colour usually.)
Tumblr media
adjust the gif speed by double clicking the numbers if you want to change it from 0.05 speed but even if your gif is short making it anything more slower or even faster can mess up your flow. the best range imo is around 0.04-0.06, although i usually never stray from 0.05. i also like to put do not dispose on all the frames (which you again can do by shift clicking or the three lines on your timeline to get select them all and then any frame right clicking to do that should work for both things.)
★ how to colour (basic not colourful): ★ —now this is the best part for me, however it’s the most tricky and vague in a way. one psd (your saved photoshop document that contains your colouring and usually the gif too) might not work for the next gif even if it’s the same film or ‘footage’ and getting your own style can take a long, long time. you can use other peoples psds but i find making your own is the most rewarding. but! i have studied those psds given out and incorporated them into my own style over time.   —*so, what i have decided to do is just that. i have made a base psd for this gif for you to study. but i really recommend looking at other tutorials to teach you how to do that. i’m just gonna get you started, which i hope no one minds. i did try and make it less my very blue-toned grunge style and more ‘normal’. [x] —note 1: select all of the adjustment layers on the side and then to put them into a multi-set just select DUPLICATE LAYERS and put them onto your document/next gif. be smarter than me and don’t name randomly or keyboard smash your psds, sorting out your psds makes life so much easier trust me and you can reuse them!!! (i keep ALL of mine in folders in my documents and then they are sub-dived).  —note 2: i like to go more extreme and lessen the vibrancy/saturation and then constantly edit and mess with the opacity rather than being subtle, there’s so many ways to do this. so again, it’s just messing around. however, even if you all your frames selected sometimes this can bug out and mess up one of the frames. so, keep watch on that and either undo or just duplicate the new version of your adjustment layer and delete the bugged one. 
*if you do want me to make a how to on my colouring that goes more in-depth/colourful please let me know.
★ how to add perfectly in the middle subtitles: ★ —here i’m going to give you my subtitles with its settings preset, but edit it to your own liking! [x] —if you’re loading it in, different sizes/factors effect your subtitle placement and your text can looks random like this: 
Tumblr media
so what you’re going to do this: drag it into the place you want and then make sure your text bar looks like this: 
Tumblr media
—since this is also an adjustment layer you can get the same bug of it being fixed on one frame only and then the rest are how it used to be. so, just duplicate it into a new file like this: 
Tumblr media
—and after duplicating it back onto your main gif and get rid of the old one.it should be good. (again, this is just my own learned solution) —this is also applicable to twitter watermarking which i’ll mention later on. 
now that you’ve done all of that and hopefully saved your gif it’s time to export it!
Tumblr media
the save settings i use:
Tumblr media
★ how to make hq twitter gifs: ★  —read this tutorial, already linked above but: [x]  —if you’ve read everything above then making a hq twitter gif won’t be a hard adjustment, you just need to change and add a few things. —first: make sure it’s 600px x 600px (you can change this but to get the best result) —second: use the twitter sharpening action!!! you can adjust this, but twitter can really repress the quality if you use just the tumblr one, or your preferred method. although some footage needs you to lower the sharpening or else it can look like a lot, but don’t be afraid it’s an easy fix! —if you’re adding subtitles make them a bigger than you would for tumblr just make sure it doesn’t go through the bottom left side of your gif. —before posting, make sure you have watermarked it! which you can only do on the top left/right corner and bottom right or else it’ll get covered up! you can also place in somewhere else if you’d like it’s up to you. —the video of me making a gif will be one for twitter so if you’re unsure about anything from this or the entire tutorial hopefully it clears that up. :) 
it should look something like this, just in your style!:
Tumblr media
✨✨✨ now that should be everything!!! if you have made it this far, thank you for bareing with me and let me know if there’s anything confusing!!! this took a very long time of planning and making so if it helped, interact with this post? <3 ✨✨✨
125 notes · View notes
superlinguo · 4 years ago
Text
The linguistics of hyperlinks
Hyperlinks are a ubiquitous feature of the internet, but unlike other elements of internet language use, there hasn’t been a lot of published work that considers the linguistics of hyperlinks. Or really any work as far as I can tell (but please correct me if I’m wrong!). Hyperlinks anchor to written text, and interact with it in ways that are interesting both syntactically and semantically.
From time to time I’ve talked about the linguistics of hyperlinks on this blog, twitter and even Lingthusiasm. I’ve always planned to write a research article about it, but it has never quite fit with my other work. I am hoping that writing a blog post will at least allow me to get the main ideas out of my head rather than continuing to languish at the bottom of my research list.
[update! I’m delighted to report that in 2011 Michael Yoshitaka Erlewine presented a conference paper “The Constituency of Hyperlinks in a Hypertext Corpus“ at a conference and the slides are available on his website]
Hyperlinks and the structure of the World Wide Web
A hyperlink allows the user to move to a different document, or location within the same document. The concept arose in computer science in the mid-20th century, and Tim Berners-Lee used the idea while designing the World Wide Web in the late 1980s. On the World Wide Web, website are built on Hypertext Markup Language (HTML), and you move between them using the Hypertext Transfer Protocol (HTTP). That is to say, links between pages on the WWW are fundamental to how we built out the human-navigable plane built on the infrastructure of the internet.
There are, broadly, two ways to present a hyperlink in a text. Inline links are where the text of the hyperlink is fully visible, such as www.superlinguo.com. Hypertext links are where the link is embedded within a string of anchor text, so if I were to mention that this blog is Superlinguo, I can link to the blog homepage in the running text. This is where a lot of the linguistic fun happens.
I have never learnt to be proficient at HTML, but like anybody who enjoyed customising MySpace or LiveJournal pages back in the day, or still spends their time making websites (like this one you’re currently reading on tumblr dot com), I can recognise the code for a hyperlink:
<a href="superlinguo.com">Superlinguo</a>
Above, you have the opening of the tag, the reference to the hyperlink, and then the anchor text that the hyperlink will be attached to, and the closing tag. The end result is: Superlinguo. (Actually, just to make it fun Tumblr have a fun extra layer of hyperlink they generate, like many social media platforms - a reminder of how many layers there are to the online experience these days) There are slightly different ways hyperlinks work on sites like Wikipedia, but it’s a fundamentally similar mechanic. Most of us will deploy a zillion hyperlinks without ever looking at the underlying code, thanks to richtext editing interfaces that provide a little button to click. Thank you clever internet people for making it so easy for us to write and link to things on the internet.
Hyperlinks as part of our online linguistic competence
So, as long as you’ve been on the internet, you’ve had to deal with hyperlinks, and if you do any blogging, website building or other projects on the internet you have been building documents with hyperlinks for many years, possibly about as long as you’ve been literate.
I’m going to discuss the linguistic features of hyperlinks by looking at their evidential function, the pragmatics of hyperlink use, and the syntactic relationship between hypertext links and the anchor text. 
The evidential properties of hyperlinks
When you read a news article, or a blog or Wikipedia article, it’s likely that there will be many hyperlinks in that text, and you’ll never click on a single one of them. Those links are there as supporting evidence for the argument the writer is making. When I linked to Tim Berners-Lee’s Wikipedia bio above, you probably didn’t click, it just gave more weight to my argument about TBL developing the WWW.
Evidentials indicate source of evidence for claims made by the author. In spoken English we do this by overtly saying “Wikipedia says...” or “I read that...”. In written academic English we can use standard citation formats for sources of information. Standard citation formats usually privileged sources within the academic tradition, while a hyperlink can just as easily link to a tweet or a cat photo as an academic journal article.
In other languages there are features of the grammar that mark the source of information. When source of information is part of the grammar, this is known as evidentiality. I wrote my PhD thesis about evidentiality in Lamjung Yolmo. In this language, and many Tibetan languages, there are different forms of the verb ‘to be’ depending on whether you know the information you’re talking about from your own long-held experience, or because you saw or heard it happen, or because someone told you about it. Evidentiality occurs in around a quarter of the world’s languages.
Hyperlinks act as an evidential that covers a broad range of evidence that can be summed up as “I know this from evidence over at this other location”. It might be information someone else wrote down, or said in a video, or presented as a song, or even information that the person making the link wrote somewhere else (just as I linked to my PhD thesis above). Not only are hyperlinks technically not part of the grammar, but they also don’t fit neatly into the semantic categories of known evidential systems.
There is one particular similarity between evidentials and hyperlinks I find intriguing, and that is their function as deictics. ‘Deictic’ is the fancy linguist word for ‘pointing’. There are deictic hand gestures we use to send people in the right direction, but there are also words that have a deictic function. ‘Me’ and ‘you’ don’t mean any particular person out of context, in the context they’re used in they point to specific people in that interaction. Same with many other words, ‘tomorrow’ right now points to a different date than the 'tomorrow’ in a week’s time. Ferdinand de Haan (2001) has written at length about how evidentials are deictic because they point to the source of the information. Using a reported speech evidential ‘points to’ another person who said the information originally, and using a ‘direct visual evidential’ points to the event that occurred. Hyperlinks do this kind of pointing in a very literal way. If the reader wants they can be sent directly to the information that is being pointed to by the hyperlink. The evidential function of hyperlinks provides some off-center support for de Haan’s approach to evidentiality.
Of course, that ability to click and be sent to the original source is one final way in which hyperlinks fundamentally differ from grammatical evidentials. Your audience can verify your claim. If you say you know something because someone told you, it’s often not within your audience’s ability to verify this claim. This ability to verify has interesting implications for the pragmatics of hyperlinks.
The pragmatics of hyperlinks
In work on evidentiality, particularly reported speech evidentials, there’s a lot of discussion of how including your source of information allows you some distance from the claims made. I particularly appreciate Lev Michael’s (2012) more nuanced approach that reported speech can also be used to claim the authority of the original speaker too, and that context plays a role (I used this as the basis of my approach to reported speech evidentiality in Gawne 2015).
It would be interesting to see what kind of stance-taking towards the original content does emerge from hyperlink use, and I wonder if it differs between, say, science bloggers (based more on an academic model of building your argument on citations to existing work) and gossip bloggers (creating plausible deniability in the face of potential defamation lawsuits).
Just as with evidentiality, the co-operative principle allows people to assume that the speaker is using the strongest form of evidence available to them. That means there is an assumption that a hyperlink will go through to a relevant, high-quality source document. Flouting this is at the heart of the activity of rickrolling - making people think they are following a trust-worthy link, but taking them to the the music video for Rick Astley’s song "Never Gonna Give You Up".
Hyperlinks with anchor text are literally hypertext within the mechanisms of the code, but they also act as a hypertext in that they add to the meaning of the text with what they have scope over. We can see this at it’s maximally-bizarre in this post I wrote in 2016 when the automatic posting service for the Twitter account of an Australian magazine stopped including the links for a few days. Posts like these, without hyperlinks, just come across as creepy:
Tumblr media
did a meteor hit Queensland last night? [text in tweet screencap above]
Baby born without eyes
Iconic ice block of our youth GONE
The hyperlink, and the knowledge there is additional supporting information for the claims made, add an important element to the pragmatic stance-taking in online discourse. The effect of this pragmatic function can be affected in hypertext linking by the relationship between the hyperlink and the anchor text.
The syntax of hyperlinks
As you know because you’ve spent the last two decades reading websites, hyperlinks can be embedded in a string of text. The relationship between the anchor text and the hyperlink is the last thing I want to discuss, not because it’s the least interesting, but because I think it’s the topic that needs the most quantification and a systematic approach (and I’m hoping that writing this post kills any urge I have to do that work).
I often spend an additional moment pondering which string of text I’ll affix a hyperlink to. I also have strong intuitions sometimes that someone has not given a hyperlink it’s appropriate scope. Usually for basic nouns it’s pretty straightforward, but linking within a very phrase, or when you’re pointing people towards another thing to read in the running text, it becomes more of an art form.
The choice of whether to include a hyperlink or not is an initial choice that ties back to the pragmatic weight of the syntactic choice. Then there’s some variation, choosing to add a hyperlink over a very long scope can draw emphasis to a large chunk of text. Or if you want to indicate a multiplicity of sources, see for example the final sentence of this paragraph in a Wired column from Gretchen McCulloch, where each word in the final sentence is its own hyperlink to a different location to indicate there are many sources to support her argument:
Tumblr media
[text: Four is the magic number in part because of cognitive limitations—our brains have a hard time mentalizing, or keeping track of everyone's mental states, above four participants. But in video calls, the technology prevents us from splitting, so we're forced to mentalize too high. The result? That much-lamented Zoom fatigue.]
Hyperlinks might even be influencing the way we write English online. Emily Bender shared the following couple of tweets with a screenshot of some text from a university email.
Reading some documentation about mask policy at my campus (for the unlikely eventuality that I'll go there in person at some point...) and I was struck by how awkward (maybe ungrammatical) the sentence with the underlined phrase is here. >>
Tumblr media
[Relevant text, hyperlink indicated by square bracket: WHEN ARE CLOTH FACE COVERINGS NEEDED? Face coverings are [required at the UW] to be worn indoors when other people are present; this includes common areas, such as hallways, stairways, restrooms and elevators.]
So now I'm wondering: was that odd order produced so that "required at the UW" would be a substring that could be hyperlinked to the UW's mask policy? And if so, is the practice of hyperlinking putting subtle pressure on languages & slowly changing word order possibilities?
Here the sentence appears to be presented so that the author could have a clear string of relevant anchor text for a hyperlink.
This makes me wonder if hyperlinks can be used as a way to investigate people’s intuitions about constituency. Do hyperlinks scope over anchor text in a way that replicates what we know from other constituency tests? I feel like I have complicated feelings about the inclusion of the determiner at the start of a noun phrase and whether it fits into the scope of the hyperlink or not.
Update (Feb 24 2021): in 2011 Michael Yoshitaka Erlewine gave a presentation answering my question about constituency! You can find the slides for the the talk on Mitcho’s website. He performed a corpus analysis of 375,000 hyperlinks on MetaFilter, and found that many hyperlinks conform to English constituency. Those that didn’t showed similarities that indicated there was something about argument structure or pragmatics that was clearly influencing people’s hyperlinking choices.
A million things I’ll never get around to
So, it turned out I did have a lot of thoughts about hyperlinks. Many of them are only evidenced by my intuitions. I don’t know if I’ll ever get the opportunity to dig deeper on this. It’s also worth being explicit about the fact that everything I’ve discussed above is framed entirely around my English-centric experience of the World Wide Web, and I’m sure there a whole lot of interesting topics about the use of hyperlinks in other languages I haven’t even begun to consider. I have such an affection for the mechanics of hyperlinking, the way it was an exercise in trust as the web grew, and how it’s an exercise in trust every time we click.
References
de Haan, Ferdinand. 2001. The Cognitive Basis of Visual Evidentials. In Alan Cienki, Barbara J. Luka and Smith, Michael B. (eds.), Conceptual and Discourse Factors in Linguistic Structure, 91-106. Stanford: CSLI Publications.
Gawne, Lauren. (2015). The reported speech evidential particle in Lamjung Yolmo. Linguistics of the Tibeto-Burman Area, 38(2), 292–318. 
Michael, Lev. (2012). Nanti self-quotation: Implications for the pragmatics of reported speech and evidentiality. Pragmatics and Society, 3(2), 321-357.
Cite this blog post
All original content on Superlinguo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. If this post has inspired you to think and write about hyperlinks, please let me know! You can also cite this blog post:
Gawne, Lauren. 2021. The linguistics of hyperlinks. Superlinguo. <Link> Accessed DATE.
A stable URL for this page can be found at The Internet Archive.
609 notes · View notes