#keep getting an error for a function i defined
Explore tagged Tumblr posts
Text
Tfw you get a bug in your code and it mysteriously fixes itself when all you did was delete and rewrite the exact same lines...
#ramblings#so yeah#i took a cs degree for college#and one of the assignments i had to do was write a few programs#keep getting an error for a function i defined#so i tried to resolve it by writing a line of code which basically tells the compiler that 'hey please disregard this its normal'#and then i got an error for that line of code i wrote which was supposed to fix that error#so i deleted it#and whaddya know#it runs perfectly fine now#wtf python
0 notes
Text
Surveillance pricing
THIS WEEKEND (June 7–9), I'm in AMHERST, NEW YORK to keynote the 25th Annual Media Ecology Association Convention and accept the Neil Postman Award for Career Achievement in Public Intellectual Activity.
Correction, 7 June 2024: The initial version of this article erroneously described Jeffrey Roper as the founder of ATPCO. He benefited from ATPCO, but did not co-found it. The initial version of this article called ATPCO "an illegal airline price-fixing service"; while ATPCO provides information that the airlines use to set prices, it does not set prices itself, and while the DOJ investigated the company, they did not pursue a judgment declaring the service to be illegal. I regret the error.
Noted anti-capitalist agitator Adam Smith had it right: "People of the same trade seldom meet together, even for merriment and diversion, but the conversation ends in a conspiracy against the public, or in some contrivance to raise prices."
Despite being a raving commie loon, Smith's observation was so undeniably true that regulators, policymakers, and economists couldn't help but acknowledge that it was true. The trustbusting era was defined by this idea: if we let the number of companies in a sector get too small, or if we let one or a few companies get too big, they'll eventually start to rig prices.
What's more, once an industry contracts corporate gigantism, it will become too big to jail, able to outspend and overpower the regulators charged with reining in its cheating. Anyone who believes Smith's self-evident maxim had to accept its conclusion: that companies had to be kept smaller than the state that regulated them. This wasn't about "punishing bigness" – it was the necessary precondition for a functioning market economy.
We kept companies small for the same reason that we limited the height of skyscrapers: not because we opposed height, or failed to appreciate the value of a really good penthouse view – rather, to keep the building from falling over and wrecking all the adjacent buildings and the lives of the people inside them.
Starting in the neoliberal era – Carter, then Reagan – we changed our tune. We liked big business. A business that got big was doing something right. It was perverse to shut down our best companies. Instead, we'd simply ban big companies from rigging prices. This was called the "consumer welfare" theory of antitrust. It was a total failure.
40 years later, nearly every industry is dominated by a handful of companies, and these companies price-gouge us with abandon. Worse, they use their gigantic ripoff winnings to fill war-chests that fund the corruption of democracy, capturing regulators so that they can rip us off even more, while ignoring labor, privacy and environmental law and ducking taxes.
It turns out that keeping gigantic, opaque, complex corporations honest is really hard. They have so many ways to shuffle money around that it's nearly impossible to figure out what they're doing. Digitalization makes things a million times worse, because computers allow businesses to alter their processes so they operate differently for every customer, and even for every interaction.
This is Dieselgate times a billion: VW rigged its cars to detect when they were undergoing emissions testing and switch to a less polluting, more compliant mode. But when they were on the open road, they spewed lethal quantities of toxic gas, killing people by the thousands. Computers don't make corporate leaders more evil, but they let evil corporate leaders execute far more complex and nefarious plans. Digitalization is a corporate moral hazard, making it just too easy and tempting to rig the game.
That's why Toyota, the largest car-maker in the world, just did Dieselgate again, more than a decade later. Digitalization is a temptation no giant company can resist:
https://www.bbc.com/news/articles/c1wwj1p2wdyo
For forty years, pro-monopoly cheerleaders insisted that we could allow companies to grow to unimaginable scale and still prevent cheating. They passed rules banning companies from explicitly forming agreements to rig prices. About ten seconds later, new middlemen popped up offering "information brokerages" that helped companies rig prices without talking to one another.
Take Agri Stats: the country's hyperconcentrated meatpacking industry pays Agri Stats to "consult on prices." They provide Agri Stats with a list of their prices, and then Agri Stats suggests changes based on its analysis. What does that analysis consist of? Comparing the company's prices to its competitors, who are also Agri Stats customers:
https://pluralistic.net/2023/10/04/dont-let-your-meat-loaf/#meaty-beaty-big-and-bouncy
In other words, Agri Stats finds the highest price for each product in the sector, then "advises" all the companies with lower prices to raise their prices to the "competitive" level, creating a one-way ratchet that sends the price of food higher and higher.
More and more sectors have an Agri Stats, and digitalization has made this price-gouging system faster, more efficient, and accessible to sectors with less concentration. Landlords, for example, have tapped into Realpage, a "data broker" that the same thing to your rent that Agri Stats does to meat prices. Realpage requires the landlords who sign up for its service to accept its "recommendations" on minimum rents, ensuring that prices only go up:
https://popular.info/p/feds-raid-corporate-landlord-escalating
Writing for The American Prospect, Luke Goldstein lays out the many ways in which these digital intermediaries have supercharged the business of price-rigging:
https://prospect.org/economy/2024-06-05-three-algorithms-in-a-room/
Goldstein identifies a kind of patient zero for this ripoff epidemic: Jeffrey Roper, a former Alaska Air exec who benefited from a service that helps airlines set prices. ATPCO was investigated by the DOJ in the 1990s, but the enforcers lost their nerve and settled with the company, which agreed to apply some ornamental fig-leafs to its collusion-machine. Even those cosmetic changes were seemingly a bridge too far Roper, who left the US.
But he came back to serve as Realpage's "principal scientist" – the architect of a nationwide scheme to make rental housing vastly more expensive. For Roper, the barrier to low rents was empathy: landlords felt stirrings of shame when they made shelter unaffordable to working people. Roper called these people "idiots" who sentimentality "costs the whole system."
Sticking a rent-gouging computer between landlords and the people whose lives they ruin is a classic "accountability sink," as described in Dan Davies' new book "The Unaccountability Machine: Why Big Systems Make Terrible Decisions – and How The World Lost its Mind":
https://profilebooks.com/work/the-unaccountability-machine/
It's a form of "empiricism washing": if computers are working in the abstract realm of pure numbers, they're just moving the objective facts of the quantitative realm into the squishy, imperfect qualitative world. Davies' interview on Trashfuture is excellent:
https://trashfuturepodcast.podbean.com/e/fire-sale-at-the-accountability-store-feat-dan-davies/
To rig prices, an industry has to solve three problems: the problem of coming to an agreement to fix prices (economists call this "the collective action problem"); the problem of coming up with a price; and the problem of actually changing prices from moment to moment. This is the ripoff triangle, and like a triangle, it has many stable configurations.
The more concentrated an industry is, the easier it is to decide to rig prices. But if the industry has the benefit of digitalization, it can swap the flexibility and speed of computers for the low collective action costs from concentration. For example, grocers that switch to e-ink shelf tags can make instantaneous price-changes, meaning that every price change is less consequential – if sales fall off after a price-hike, the company can lower them again at the press of a button. That means they can collude less explicitly but still raise prices:
https://pluralistic.net/2024/03/26/glitchbread/#electronic-shelf-tags
My name for this digital flexibility is "twiddling." Businesses with digital back-ends can alter their "business logic" from second to second, and present different prices, payouts, rankings and other key parts of the deal to every supplier or customer they interact with:
https://pluralistic.net/2023/02/19/twiddler/
Not only does twiddling make it easier to rip off suppliers, workers and customers, it also makes these crimes harder to detect. Twiddling made Dieselgate possible, and it also underpinned "Greyball," Uber's secret strategy of refusing to send cars to pick up transportation regulators who would then be able to see firsthand how many laws the company was violating:
https://www.nytimes.com/2017/03/03/technology/uber-greyball-program-evade-authorities.html
Twiddling is so easy that it has brought price-fixing to smaller companies and less concentrated sectors, though the biggest companies still commit crimes on a scale that put these bit-players to shame. In The Prospect, David Dayen investigates the "personalized pricing" ripoff that has turned every transaction into a potential crime-scene:
https://prospect.org/economy/2024-06-04-one-person-one-price/
"Personalized pricing" is the idea that everything you buy should be priced based on analysis of commercial surveillance data that predicts the maximum amount you are willing to pay.
Proponents of this idea – like Harvard's Pricing Lab with its "Billion Prices Project" – insist that this isn't a way to rip you off. Instead, it lets companies lower prices for people who have less ability to pay:
https://thebillionpricesproject.com/
This kind of weaponized credulity is totally on-brand for the pro-monopoly revolution. It's the same wishful thinking that led regulators to encourage monopolies while insisting that it would be possible to prevent "bad" monopolies from raising prices. And, as with monopolies, "personalized pricing" leads to an overall increase in prices. In econspeak, it is a "transfer of wealth from consumer to the seller."
"Personalized pricing" is one of those cuddly euphemisms that should make the hair on the back of your neck stand up. A more apt name for this practice is surveillance pricing, because the "personalization" depends on the vast underground empire of nonconsensual data-harvesting, a gnarly hairball of ad-tech companies, data-brokers, and digital devices with built-in surveillance, from smart speakers to cars:
https://pluralistic.net/2024/03/12/market-failure/#car-wars
Much of this surveillance would be impractical, because no one wants their car, printer, speaker, watch, phone, or insulin-pump to spy on them. The flexibility of digital computers means that users always have the technical ability to change how these gadgets work, so they no longer spy on their users. But an explosion of IP law has made this kind of modification illegal:
https://locusmag.com/2020/09/cory-doctorow-ip/
This is why apps are ground zero for surveillance pricing. The web is an open platform, and web-browsers are legal to modify. The majority of web users have installed ad-blockers that interfere with the surveillance that makes surveillance pricing possible:
https://doc.searls.com/2023/11/11/how-is-the-worlds-biggest-boycott-doing/
But apps are a closed platform, and reverse-engineering and modifying an app is a literal felony – several felonies, in fact. An app is just a web-page skinned with enough IP to make it a felony to modify it to protect your consumer, privacy or labor rights:
https://pluralistic.net/2024/05/07/treacherous-computing/#rewilding-the-internet
(Google is leading a charge to turn the web into the kind of enshittifier's paradise that apps represent, blocking the use of privacy plugins and proposing changes to browser architecture that would allow them to felonize modifying a browser without permission:)
https://pluralistic.net/2023/08/02/self-incrimination/#wei-bai-bai
Apps are a twiddler's playground. Not only can they "customize" every interaction you have with them, but they can block you (or researchers seeking to help you) from recording and analyzing the app's activities. Worse: digital transactions are intimate, contained to the palm of your hand. The grocer whose e-ink shelf-tags flicker and reprice their offerings every few seconds can be collectively observed by people who are in the same place and can start a conversation about, say, whether to come back that night a throw a brick through the store's window to express their displeasure. A digital transaction is a lonely thing, atomized and intrinsically shielded from a public response.
That shielding is hugely important. The public hates surveillance pricing. Time and again, through all of American history, there have been massive and consequential revolts against the idea that every price should be different for every buyer. The Interstate Commerce Commission was founded after Grangers rose up against the rail companies' use of "personalized pricing" to gouge farmers.
Companies know this, which is why surveillance pricing happens in secret. Over and over, every day, you are being gouged through surveillance pricing. The sellers you interact with won't tell you about it, so to root out this practice, we have to look at the B2B sales-pitches from the companies that sell twiddling tools.
One of these companies is Plexure, partly owned by McDonald's, which provides the surveillance-pricing back-ends for McD's, Ikea, 7-Eleven, White Castle and others – basically, any time a company gives you a hard-sell to order via its apps rather than its storefronts or its website, you should assume you're getting twiddled, hard.
These companies use the enshittification playbook to trap you into using their apps. First, they offer discounts to customers who order through their apps – then, once the customers are fully committed to shopping via app, they introduce surveillance pricing and start to jack up the prices.
For example, Plexure boasts that it can predict what day a given customer is getting paid on and use that information to raise prices on all the goods the customer shops for on that day, on the assumption that you're willing to pay more when you've got a healthy bank balance.
The surveillance pricing industry represents another reason for everything you use to spy on you – any data your "smart" TV or Nest thermostat or Ring doorbell can steal from you can be readily monetized – just sell it to a surveillance pricing company, which will use it to figure out how to charge you more for everything you buy, from rent to Happy Meals.
But the vast market for surveillance data is also a potential weakness for the industry. Put frankly: the commercial surveillance industry has a lot of enemies. The only thing it has going for it is that so many of these enemies don't know that what's they're really upset about is surveillance.
Some people are upset because they think Facebook made Grampy into a Qanon. Others, because they think Insta gave their kid anorexia. Some think Tiktok is brainwashing millennials into quoting Osama bin Laden. Some are upset because the cops use Google location data to round up Black Lives Matter protesters, or Jan 6 insurrectionists. Some are angry about deepfake porn. Some are angry because Black people are targeted with ads for overpriced loans or colleges:
https://www.theregister.com/2024/06/04/meta_ad_algorithm_discrimination/
And some people are angry because surveillance feeds surveillance pricing. The thing is, whatever else all these people are angry about, they're all angry about surveillance. Are you angry that ad-tech is stealing a 51% share of news revenue? You're actually angry about surveillance. Are you angry that "AI" is being used to automatically reject resumes on racial, age or gender grounds? You're actually angry about surveillance.
There's a very useful analogy here to the history of the ecology movement. As James Boyle has long said, before the term "ecology" came along, there were people who cared about a lot of issues that seemed unconnected. You care about owls, I care about the ozone layer. What's the connection between charismatic nocturnal avians and the gaseous composition of the upper atmosphere? The term ecology took a thousand issues and welded them together into one movement.
That's what's on the horizon for privacy. The US hasn't had a new federal consumer privacy law since 1988, when Congress acted to ban video-store clerks from telling the newspapers what VHS cassettes you were renting:
https://en.wikipedia.org/wiki/Video_Privacy_Protection_Act
We are desperately overdue for a new consumer privacy law, but every time this comes up, the pro-surveillance coalition defeats the effort. but as people who care about conspiratorialism, kids' mental health, spying by foreign adversaries, phishing and fraud, and surveillance pricing all come together, they will be an unbeatable coalition:
https://pluralistic.net/2023/12/06/privacy-first/#but-not-just-privacy
Meanwhile, the US government is actually starting to take on these ripoff artists. The FTC is working to shut down data-brokers:
https://pluralistic.net/2023/08/16/the-second-best-time-is-now/#the-point-of-a-system-is-what-it-does
The FBI is raiding landlords to build a case against Frontpage and other rent price-fixers:
https://popular.info/p/feds-raid-corporate-landlord-escalating
Agri Stats is facing a DoJ lawsuit:
https://www.nationalhogfarmer.com/market-news/agri-stats-loses-motions-to-transfer-dismiss-in-doj-antitrust-case
Not every federal agency has gotten the message, though. Trump's Fed Chairman, Jerome Powell – whom Biden kept on the job – has been hiking interest rates in a bid to reduce our purchasing power by making millions of Americans poorer and/or unemployed. He's doing this to fight inflation, on the theory that inflation is being cause by us being too well-off, and therefore trying to buy more goods than are for sale.
But of course, interest rates are inflationary: when interest rates go up, it gets more expensive to pay your credit card bills, lease your car, and pay a mortgage. And where we see the price of goods shooting up, there's abundant evidence that this is the result of greedflation – companies jacking up their prices and blaming inflation. Interest rate hawks say that greedflation is impossible: if one company raises its prices, its competitors will swoop in and steal their customers with lower prices.
Maybe they would do that – if they didn't have a toolbox full of algorithmic twiddling options and a deep trove of surveillance data that let them all raise prices together:
https://prospect.org/blogs-and-newsletters/tap/2024-06-05-time-for-fed-to-meet-ftc/
Someone needs to read some Adam Smith to Chairman Powell: "People of the same trade seldom meet together, even for merriment and diversion, but the conversation ends in a conspiracy against the public, or in some contrivance to raise prices."
If you'd like an essay-formatted version of this post to read or share, here's a link to it on pluralistic.net, my surveillance-free, ad-free, tracker-free blog:
https://pluralistic.net/2024/06/05/your-price-named/#privacy-first-again
Image: Cryteria (modified) https://commons.wikimedia.org/wiki/File:HAL9000.svg
CC BY 3.0 https://creativecommons.org/licenses/by/3.0/deed.en
#pluralistic#david dayen#the american prospect#surveillance advertising#commercial surveillance#predictive pricing#monopolism#monopolies#antitrust#unfair and deceptive method of competition#ftc act Section 5#ftca5#ripoffs#surveillance#twiddling#ip#apps#apps are shit#ziprecruiter#personalized pricing#price gouging#just and reasonable#interstate commerce act#one person one price#surveillance pricing#privacy first#billion prices project#ecommerce#ninetailed#cortado group
426 notes
·
View notes
Text
Solas fandom and "genAI"
I recently came back to Tumblr 99.9% because life is stressful and I'm autistic and special interesting about Solas, but I never could keep my mouth shut so... re: so-called "genAI" in fandom spaces:
I say so-called because it is neither truly generative nor intelligent, and it is not really artificial: it is created with the real stolen efforts of living people and real environmental exploitation
I have little interest in blaming everyday individuals (except CEOs, political leaders, billionaires, etc) for the harms of the most popular "genAI" tech, because it's a systemic problem
"genAI" is intentionally confusing and it's ok if people are genuinely ignorant, at first, of how it works or the harm
I also have loved ones who disagree with me
THAT SAID, I urge people to learn more about and consider the harms to society, other people, and one's own process of self-expression, learning, and creativity from the use of "genAI"
I can't control your behavior but I can tell you that your messiest, most "OOC," error-ridden rough draft, or your most wonky-proportioned stick figure fan art is infinitely more precious, valuable, and emotionally, culturally, and spiritually significant than an unintelligent plagiarism algorithm doing it for you, even if it gets less hits/kudos at first. don't give up hope: your own art means something. I encourage you to make fandom a heartfelt space of resistance!
it is important for communities to define boundaries of unacceptable behavior (i.e. use of non-gen AI spellcheck, Google Translate, "genAI" rewrite functions, character "chats," plot/outline "generation," full-blown "generated" pieces... IMO, I'm fine with the first, uneasy but ok with the second, and the rest I actively oppose)
in the absence of clear boundaries, transparency is key! please publicly and clearly disclose ANY use of "genAI" at ANY stage of the process for fan works, because concealment of this is disrespectful and hurtful. if you didn't know before, such is life. now you know.
avoid all bad faith arguments about shipping wars and witch hunts. you have nothing to fear from posts uncovering AI if you do not use undisclosed "genAI": the two works in question did. you have many things to fear from unchecked "genAI" use if you are a writer, artist, or someone who needs our planet to stay alive
the work @durgeapologist, @fangbanger3000, and others have done to raise awareness about "genAI" use in popular fan works is extremely valuable, difficult work, and does not need to be perfectly worded to be earnest, meaningful, and ultimately beneficial for fan communities
bonus point, sponsored by autism: Solas as a character draws on figures from Norse lore including Loki, god of many things including callouts and criticism of powerful systems; Odin, god of words, wisdom, poets, and uncontrollable creative inspiration; and Fenrir, wolfpup god of surviving trauma, seeking praise and social approval from the powerful only for it to result in pain, raging against the system, and freedom. IMO, if I want any character to rally people together for the sake of resisting billionaire tech companies when possible and celebrating old-fashioned creativity, it's Solas. it's in his story's DNA. whoever we want him to smooch.
#solas#ai critical#solasmance#solavellan#solrook#solas dragon age#fandom critical#fandom etiquette#the irony of course is that datv almost certainly used genAI and i have a major problem with that#but dragon age is ours now as the lovely sheryl chee said#resistAI#datv critical#fanfic#writing meta#discourse#dragon age#fandom discourse
65 notes
·
View notes
Text
I tried telling someone about this yesterday and they felt it was very bleak, but it doesn't feel that way to me:
I really like what final fantasy 7 has to say about failure! I read it as showing how much defining something as just a failure and assigning blame exclusively to the fail-er depends on removing it from the stream of causation and isolating it from context...
For instance:
1. Zack's failure to get him and Cloud to safety after escaping the Nibelheim lab. This is an easy one, because who looks at what he did and calls it a failure? It's obviously incredible that he made it that far AND was able to protect Cloud enough. But his goal was for both of them to make it, and he couldn't do it. I don't think he felt like he failed overall (thank goodness), but another person might have. Which, in context, and looking at the effects of the attempt, is ridiculous.
2. Cloud's failure to keep an independent sense of self after Zack died (after being tortured for years, after being impaled, after losing his mother, Tifa, and his hometown, all in succession). Maybe the not-that-rare attitude of blaming him for this is a fault of the OG script, which I think makes it sound like more of a reasoned choice than it is, whether through translation error or through Cloud being the only one to really talk about it after he realizes that's what happened (and blaming himself for it). Regardless, it is a failure, in the sense that Cloud definitely wouldn't want to forget Zack, never mind construct a false self from pieces of his memory, but he did. Looking at all the causes of this, and the effects (including both vulnerability to external control but also the ability to be present with Tifa when they met again, and to continue to function as the situation demanded), it just starts to feel too simplistic to view it as a failure only.
The story is full of people trying to protect each other and themselves and not being able to, or not being able to in the way or to the extent they wanted, like failing to:
- Keep the sector 7 plate from falling
- Keep the Black Materia from Sephiroth
- Save Dyne
- Save Aerith
- Save Zack
- Stop Sephiroth from calling Meteor
But if you look at each of those things in context, they both have many causes besides "I wasn't enough" and more effects than just "the loss I couldn't prevent." And in most if not all cases, making the attempt achieved other good things, like saving Marlene or giving Zack the chance to see that it wasn't all for nothing... Things that really matter a lot. Ultimately, saving the rest of the planet besides Midgar is another one of these... a good thing grown in the rubble of failure.
I just feel like, as someone well acquainted with failure, this game is saying it's worth trying and continuing to try after you fail, and that's not bleak to me at all.
#i guess if you dont feel like failure is a given it might seem kind of bleak lol#but its not for people who havent faced big disappointments (in themselves) i think#or at least this facet of it isn't#and i would disallow those people from having opinions about Cloud if I could#well or at least from sharing them where i can hear them lol#ff7#cloud strife#ffvii#final fantasy 7#ive been chewing on this idea for a month and im not sure it's new ideas to anyone at this point#but im satisfied#all of this is why Cid going to space felt like such a big deal to me!!#i feel like theres no way to include that in the remake now which is a little sad#but im not mad about it. the OG is enough 🚀❤️#cid going to space... cloud re-committing to saving the planet after waking up.... there's a few moments of triumph like that and they HIT
25 notes
·
View notes
Text
I'm not normally a victim of FOMO tactics, nor do I usually let being late to the party stop me from chatting about a piece of media but I'm genuinely sad I didn't get into Obey Me/Nightbringer earlier. It makes me want to write a million essays but the disposable and decentralized nature of gacha kind of makes it feel like you missed your chance to talk about it. I keep coming across years old, unrepliable comments that I want to jump on sooo bad but I can't because the moment is gone and most of these people have likely moved on to less overtly money-hungry games.
Which sucks! because one essay I want to write in particular is how this game is extremely skilled in arousing your desire to create, to actively engage with the characters and worldbuilding, to do fandom shit, and I find this enormously fascinating in itself. The story isn't good but to a certain extent, it's not supposed to be; it functions as an elaborate set of writing/art/rp prompts for its audience to expand on and tailor to their needs.
And I think Obey Me does this well! Amazingly well. I find discussion of narrative structure fascinating, the study of how we define writing as effective, good, or as failures, so I'm drawn to this story full of contradicting lore, one-note characters, and half-finished plots. The story isn't good but that hardly matters because it's not here to be a good story; it's here to throw you into imagination boot camp. It compels you to speculate what it could be, what this character could be, what a slightly different tone would look like, what other people think about it. It feels distinct from the average popular show fandoms where, to an extent, creators congregate simply because that's where the people are. Creating for your own sake is nice and all but validation is usually a stronger force. Usually.
I keep coming across old high effort researched posts about abrahamic religions and occultism from fans setting themselves up for inevitable disappointment. I keep coming across creators leaving notes on their work like "I haven't written a thing in ten years, but,". I keep losing it over heartfelt posts defending x and y canon story decisions with their whole chest, oblivious to the fact that they're misremembering their personal tweaks/headcanons as what happened in the game, like it's seriously so cute when they're so passionate and completely wrong.
I have no idea if fandom actually plays a role in the lucrativeness of a franchise (though as a personal anecdote, I 100% started Obey Me after a single piece of horny Mammon fanart crossed my dash), but it makes more sense to me now, less a projection of wishful/haterful thinking from those with strong opinions about Fandom. Maybe it really does matter.
---
Other essays I missed the boat on:
A Casino Right in Your Home: goddamn is the pre/sequel's gacha obscene
Satan: how to put a mid character into S-tier with one simple trick (make him insane)
Sorry Belphie defenders but you're imagining a better psycho than you were given
Solmare added a shiny new rhythm game but didn't fix the now four year old coloring error on Levi's hands lmfaooo the disrespect is crazy
Remember when you saw the Nightbringer trailer of them glaring in bdsm gear with freshly blackened wings, and you thought "ah, so this takes place right after they fought god and lost. After they went to war to protect their sister only for her to die anyway. After one brother in particular saves someone, but not her, the focal point of the war. They will finally take these to their logical, guilt despair rage pain and grudge filled ends." And you were correct until that very last sentence? lol
Remember when the Ruri-chan event gave you the option to tell Levi you're not cheating on him and then the rest of the event was just making out with his brothers? Then it ends with you kissing him in front of them? Bring that energy back!!!
#obey me#obey me nightbringer#niche effortposts#eh kinda. i spent time on it#anyway it's a game that makes you wanna write and draw things and all things considered I think that's pretty cool =)
30 notes
·
View notes
Text
Tracking who called your function in C#
I was making a logging class yesterday and wanted a way to keep track of where the function was being called from so I could trace errors to their source easily. Having to write in the class/function each time Log() is called is tedious for the user, so instead I used attributes
The Log function is defined as:
public static void Log(LogType logType, string logDescription, [CallerFilePath] string callerFilePath = "", [CallerMemberName] string source = "")
Because a default value has been set for callerFilePath and source, when the user calls the function they only need to set logType and logDescription. If a value isn't set by the user, then because of the attributes, C# is able to track where the function was called from.
[CallerFilePath] - is used to get the directory of the file the function was called from, this is relative to the position on your local device, not relative to the project. If you split all your classes into different files, this can be used to get the class name.
[CallerMemberName] - can directly get the function name for the function which called Log. This will be passed as a string, so it multiple classes share the same function names, it can be hard to trace which called the function.
[CallerFilePath] gives the entire directory of the file, in order to extract just the class name, I used the following:
int index = callerFilePath.LastIndexOf("\\") + 1;
callerFilePath = callerFilePath.Substring(index, callerFilePath.LastIndexOf(".") - index);
This gets the index of the last time \\ is used in the directory path string, and then it gets the last index of where . Was used (for the file name e.g. Logger.cs), and subtracts the index of the first letter we want of our substring to get the total string length we want.
When I add the string to the database using $"{callerFilePath}.{source}", it will populate the database like this:
4 notes
·
View notes
Text
Iterations - for loop
Iteration, aka repeating, is a solution for tasks that need to be done over and over again.
Instead of writing dozens of lines of code for the same purpose, we can simplify it and shorten it to just a couple of lines. This way the code is both easier to read for the other programmers (fellow people hehe) and faster to process for the computer.
Also, simpler code reduces errors rate.
Examples of iterations are loops.
Looping means repeating something until a particular condition is satisfied.
Python has 3 Basic Loops:
For Loop - used when we know number of iterations (repetitions) in advance.
While Loop - for situations where the number of iterations is unknown beforehand.
Nested Loop - using one looping statement inside another looping statement.
For loop is used to execute the same instruction over and over again, a specific number of times.
for i in range(5): print(“Hello!”) Output: Hello! Hello! Hello! Hello! Hello!
In the first line, we declared how many repetitions are needed. In the second line, we wrote what should be repeated a given number of times. In this case, we asked Python to print the string “Hello!” 5 times.
Basic structure of the for loop:
for i in range(5): print(“Hello!”)
for - a keyword that signals that “for loop” is starting.
i - internal variable name which is keeping the counter value. Stands for “iteration”. We can read the whole line as “for 5 iterations/repetitions, please do the following:” For every loop, the 'i' variable increases by 1 because it's the counter. 'i' doesn't have to be 'i', we can switch it to another letter or another word, that are python approved for this (for example, you can’t use name of defined function instead of 'i').
#Loop using "unicorn" as internal variable, instead of "i" for unicorn in range(10): print(unicorn) #still works!
in range() - represents the list of numbers we are looping through (number of time the iteration is running). Python starts the counter from 0. It means that range(5) - will give a sequence of 5 numbers: 0, 1, 2, 3, 4 range() function has 3 parameters(start, end, steps), default values for start is 0 and step is 1. When we write range(5), we only give one parameter, and the function still works, because Python reads it as range(0,5,1) and the sequence starts with 0, increases by 5 counts, with step between each number being 1, by default.
We can change the parameters: range(1,20,3) this would result in iterations that starts from 1, goes up by 3 steps with the upper limit of 20: 1, 4,7,10,13,16,19.
Example: #print every 2 numbers (evens): for i in range (2, 10, 2): print(x) output: 2 4 6 8 (!) output does not include 10 because 10 is the upper limit (result only includes number under 10)
: adding a colon sign in the end of the first line is mandatory, otherwise an error will occur. Finally in the next line, we start writing the instruction, that is supposed to be repeated. This part isn’t starting right away, it should be indented. Indentation is the blank gap at the beginning of lines. Normal indentation is 4 spaces/tab long. Python would recognize 2 spaces or 4 spaces as an indentation, but 4 spaces length is more agreed upon and is used more wildly.
tip: How to write an instruction to get output of a list that starts from 1 instead of 0, accompanied by a string:
for i in range(10): print(i+1, "I love you")
4 notes
·
View notes
Text
The reason I get excited at being able to implement even small functions in RenPy is because whenever I try to follow a cookbook or tutorial: = The information is outdated, and I don't realize this until I get errors trying to execute the code. Much of the documentation that exists is obsolete by now, and RenPy is always updating the syntax it will accept. So you can have code that works for version 7.1.1 if you "word" the code right, but not work for version 8.1.1 because the newer version changed how you express the function. = The tutorial-maker made a mistake or neglected to establish an important variable early on, and you only realize it 5 forum thread posts later when they're like "teehee disregard what I just said, this is the correct code" = The code is poorly-written. Nobody in this Chili's fucking indents their shit. Also y'all need to comment out code with TWO pound signs, not one.
= I keep getting syntax errors because it's like 3 AM and I don't realize I forgot a single quotation mark. = It turns out the function I need to manipulate is a piece of code in screens.rpy or gui.rpy, or both, or neither, or it needs to be defined in the script as well. Nobody tells you where to put init:, for example, everyone assumes you already know you put it in the script. And like I said, because RenPy changes what syntax it will accept with each version of the program, you need to place code in specific places in order for it to work. But some other stuff like changing the text, font, and size of the notify box but not the notification box without also changing all of your game's GUI can be tricky.
= After much banging of head against wall, you realize the way you're implementing something is contradictory and causes a crash because you're trying to make RenPy read something in the wrong order (putting cart before horse) or you're trying to make it read something you haven't defined, or which doesn't exist. The computer can only read variables you have defined. = Didn't indent. = Indented too much. = RenPy decides nah, it doesn't wanna run the code.
That being said, I am now unreasonably excited about finally being able to use object classes in Python. The problem I kept running into in OaS was that, for whatever reason, I couldn't get persistent variables to stick, meaning the flags for triggers that were not as complex as I may have liked. But object classes seem to work around that constraint just fine, and the best part is I don't have to define a million individual variables with easily-breakable if/else statements.
So now instead of the narrative being based on one binary choice while feigning the illusion of divergence in the others, I can craft a more complex narrative that actually takes your choices into account and assigns variables to them that will influence the ending you get or which routes you see.
Implementation is going to be a shit ton of work as usual, but I'm actually really excited to see how this will pan out.
#one of these days I should make a tutorial for basic set-up#it may save another poor soul much grief#renpy
4 notes
·
View notes
Text
What Is User-Centered Engineering in Medical Device Design?
User-centered engineering (UCE) means designing medical devices engineering with users in mind at every stage—right from brainstorming to production. Think of it like building a house: you wouldn’t skip the part where you ask the future homeowner what they want, right?
Why It Matters:
Better safety outcomes
Fewer user errors
Increased adoption and trust
Stronger compliance with regulations
Long-term cost savings
Key Factors That Impact Medical Device Design
So what exactly do you need to consider? Here are some critical elements:
Business Process Management (BPM)
Streamlines internal processes to improve design efficiency and innovation.
The Balancing Act: Tradeoffs in Design
Designing the “perfect” device is a lot like walking a tightrope. You’ve got to find the sweet spot between multiple competing demands.
Tradeoff 1: Functionality vs. Simplicity
Want to pack in more features? That might confuse users or increase the learning curve. But keep it too simple, and you might miss critical clinical needs. It’s all about understanding what users really need, not just what’s technically possible.
Tradeoff 2: Innovation vs. Regulation
New tech is exciting—but regulatory bodies need proven safety. So designers often walk a fine line between pushing innovation and staying compliant.
Tradeoff 3: Cost vs. Quality
You can build the most advanced device ever, but if it’s too expensive to produce or maintain, it won’t get far. Using BPM tools can help optimize both design and manufacturing processes for better ROI.
Challenges in User-Centered Design
Let’s be real—putting the user at the center sounds ideal, but it comes with its own set of hurdles:
Challenge 1: Gathering Real User Feedback
How do you test a surgical device? You can’t just hand it out like a new smartphone. Accessing real environments and getting honest feedback from clinicians is tough.
Challenge 2: Design Iteration Cycles
Revisions take time. Prototypes need to be built, tested, and refined—often multiple times. Efficient business process management can make these cycles smoother.
Challenge 3: Cross-Functional Collaboration
Engineers, clinicians, marketers, and manufacturers all need to be on the same page. It’s like conducting an orchestra—everyone needs to play in harmony.
Best Practices for Optimizing Medical Device Design
If you’re looking to level up your device design game, here’s a cheat sheet of what really works:
Start with Empathy – Interview users early and often.
Prototype Rapidly – Fail fast, learn faster.
Test in Real Scenarios – Lab simulations don’t always mimic real-world use.
Iterate Often – Use insights to refine usability and safety.
Implement BPM Tools – Streamline team workflows and improve communication.
Document Everything – For compliance, traceability, and future updates.
The Role of Business Process Management in Device Design
Here’s where Business Process Management steps into the spotlight. BPM helps engineering teams define, visualize, and automate complex workflows. When you're dealing with design reviews, risk assessments, regulatory documentation, and interdepartmental approvals—BPM is the glue that keeps everything together.
BPM Benefits:
Faster go-to-market
Fewer design errors
Better communication across teams
Easier compliance audits
Stronger traceability
Final Thoughts
At the end of the day, optimizing medical device design is all about keeping it human. It’s not just metal and microchips—it’s about building tools that heal, support, and empower people.
So, the next time you think about product features or cost constraints, remember to ask: Would I want to use this if I were the patient or caregiver?
That simple question could be your most powerful design tool yet.
0 notes
Text
Rambox Lifetime Deal Review: Save Big on Workspace Tools
Do you waste hours switching between Gmail, Slack, WhatsApp, and Trello? The Rambox Lifetime Deal promises a one‑time investment to centralize 700+ apps into a single, unified workspace no more switching windows, losing track of notifications, or wrestling with messy layouts. In this post, we’ll explore why this deal makes sense, how Rambox truly works, and whether it’s the right move for your productivity toolkit.
You Can Visit Our Official Website
What Is the Rambox Lifetime Deal?
A single investment in the Rambox Lifetime Deal delivers lifelong Pro Plan access, bypassing the standard $210 one‑time fee. through a limited‑time code on AppSumo, currently available for just $5 (saving over $200) AppSumo. Once redeemed within 60 days, you unlock:
All Pro Plan features
Unlimited app integrations
Cross‑device settings sync
Future Pro Plan updates
No subscriptions. No renewal fees. Just lifetime access.
Why Rambox Is Useful for Your Daily Work
In my own freelance projects, I spent almost an hour daily toggling between Gmail, Slack, Trello, and GitHub. Rambox solves that common pain point by bringing every service under one roof. According to user reviews on SoftwareAdvice, Rambox “centralizes all your apps, making it easy to organize and access frequently used applications in one place,” improving focus and reducing context‑switching fatigue Software Advice.
Key benefits:
Time savings: Fewer clicks between windows
Improved focus: Mute non‑critical notifications
Consistent setup: Same workspace on every device
Rambox Features You Should Know
Rambox blends essential tools into a clean dashboard. Here’s how it delivers on its promise:
App Integration (700+ Pre‑configured)
Instantly add popular services Gmail, WhatsApp, Facebook, Microsoft Teams, and more without manual URLs or extensions. If you need a niche tool, you can also add any custom web app. Rambox
Centralized Dashboard
A single sidebar lists your workspaces and apps side by side. Quickly jump to what matters, or search across all services with the quick‑search bar.
Notification Management
Use the Notification Center to mute sounds, pause alerts, or set work hours per workspace, so you only get notified when it counts.
Workspace Layouts
Choose from fullscreen or tile modes. Pre‑defined layouts let you arrange apps horizontally or vertically, tailoring your digital desk to tasks at hand.
Auto‑Hibernation & Performance
When apps aren’t in use, Rambox puts them to sleep to reclaim memory and keep everything running smoothly, even with many services open. With Rambox’s custom CSS and JavaScript injection, experienced users can personalize both the look and functionality of their apps.
Cross‑Device Sync
Your workspaces, app order, and settings follow you between Windows, macOS, and Linux installations, no manual reconfiguration required. Rambox
Who Can Benefit from Rambox Lifetime Deal
Freelancers juggling multiple client accounts
Developers managing code repos, chats, and documentation
Remote teams concert via Slack, Teams, Zoom, and Trello
Power users who want a clean, consolidated digital workspace
If you spend more time toggling apps than actually working, this lifetime deal pays for itself in hours saved.
Use Case: A Week Using Rambox to Boost Focus
Day 1: I set up two workspaces “Client A” and “Personal.” Each had Gmail, Slack, and Trello. Notification profiles were tailored: “Client A” blared only critical pings, while “Personal” stayed silent until evenings.
Day 3: I added a grammar‑checker extension to my marketing workspace, catching errors in real‑time without switching to a browser.
Day 5: During a heavy coding sprint, I hibernated non‑essential apps, freeing over 500 MB of RAM and keeping Rambox responsive.
Result: I reclaimed roughly 45 minutes per day by avoiding app‑switch fatigue. Tasks flowed more smoothly, and I hit deadlines earlier.
You Can Visit Our Official Website
Common Questions About the Rambox Lifetime Deal
Is the deal stackable? No. Each code is a single‑user license, non‑stackable.
How do I redeem my code? After purchase, follow the link in your AppSumo dashboard. Enter your code within 60 days.
Can I use it on multiple devices? The Pro Plan lets you run Rambox on up to three devices at once.
Are future updates included? All Pro Plan updates are covered—no hidden fees.
Why This Is the Best Time to Grab the Deal
Limited availability: Codes expire 60 days after purchase.
Huge savings: Save over 97% compared to standard lifetime price.
Future‑proof: Get every Pro enhancement, CSS/JS flexibility, and cross‑device sync without extra cost.
If you’ve been on the fence, now’s the moment to claim your code before the offer disappears.
Final Thoughts
If daily app‑switching is hurting your productivity, Rambox is more than a convenience, it's a game‑changer. The Rambox Lifetime Deal turns what could be hundreds of subscription dollars into a simple one‑time fee, backed by robust features, performance optimizations, and flexible layouts. For developers, freelancers, or any knowledge worker, this deal is a low‑risk, high‑reward investment in your workflow.
You Can Visit Our Official Website
0 notes
Text
Bathroom Installation Chelsea – A Complete Guide for a Stunning Upgrade
Introduction
A bathroom renovation is a great way to enhance the comfort and value of your home. Whether you’re upgrading a dated space or designing a modern retreat, professional bathroom installation in Chelsea ensures a flawless finish. Let’s dive into everything you need to know to create a stylish and functional bathroom.

1. Planning Your Bathroom Installation
Define your budget and timeline.
Consider the functionality of the space.
Work with a professional designer for optimal results.
2. Choosing the Right Materials
Tiles: Porcelain, ceramic, or natural stone
Fixtures: High-quality taps, sinks, and bathtubs
Fittings: Modern or traditional designs to match aesthetics
3. Hiring Professional Bathroom Fitters in Chelsea
Finding the right experts ensures a smooth installation. Look for:
Verified credentials and experience
Positive customer reviews
Clear pricing and contracts
Check out trusted bathroom fitters in Chelsea.
4. Understanding Plumbing Requirements
Assess existing pipes and drainage.
Upgrade outdated plumbing systems
Ensure proper water pressure for a relaxing experience.
5. Electrical Considerations
Install waterproof lighting fixtures
Position sockets strategically
Adhere to UK safety regulations.
6. Bathroom Layout and Space Optimisation
Use corner sinks and floating vanities for small spaces.
Incorporate built-in storage solutions.
Optimise natural lighting
7. Step-by-Step Bathroom Installation Process
Demolition—Remove old fixtures
Plumbing and Electrical Setup—Install new systems
Tiling and Flooring—Waterproofing and installation
Fixture and Fitting Installation—Bathtubs, showers, sinks
Final Touch-ups—Painting, sealing, and cleaning
8. Waterproofing and Ventilation
Apply waterproof membranes
Install proper ventilation systems.
Prevent mould and damp issues
9. Modern Bathroom Trends in Chelsea
Smart mirrors with LED lighting
Eco-friendly, water-saving fixtures
Minimalist and luxury spa-inspired designs
10. Common Challenges and How to Overcome Them
Budget overruns—Plan ahead and get multiple quotes.
Delays—Hire professionals with a solid track record.
Poor ventilation—Invest in high-quality extractor fans.
11. DIY vs. Professional Installation
DIYProfessionalCost-effective Higher initial cost but professional finish Time-consuming Faster completion Risk of errors Expert craftsmanship
12. Maintaining Your New Bathroom
Use non-abrasive cleaners.
Check for leaks regularly.
Keep grout clean and sealed.
13. Best Suppliers for Bathroom Materials in Chelsea
CP Hart—High-end bathroom designs
Bathstore—Affordable yet stylish fixtures
Victoria Plum—Great selection and pricing

Frequently Asked Questions (FAQs)
1. How long does a bathroom installation take?
It typically takes 2-3 weeks, depending on the complexity of the project.
2. What is the average cost of a bathroom installation in Chelsea?
Costs range from, depending on materials and labour.
3. Can I install underfloor heating in my bathroom?
Yes, electric or water-based underfloor heating is a great addition for comfort.
4. Do I need planning permission for a bathroom renovation?
Generally, no. However, listed buildings may require approval.
5. How can I make a small bathroom look bigger?
Use light colours, mirrors, and floating furniture to create an open feel.
6. What are the most durable bathroom flooring options?
Porcelain tiles, vinyl, and natural stone offer excellent durability and style.
Conclusion
A well-planned bathroom installation in Chelsea can transform your space into a luxurious retreat. Whether you hire professionals or take a DIY approach, following expert advice ensures a seamless renovation.
#Bathroom Fitters Chelsea#Bathroom Installation Chelsea#Bathroom Fitters Near Me#Bathroom Installer Chelsea
0 notes
Text
It’s 23 Jan 2025. I’m highly confused. Unsure which direction to take. Maybe this one, because it surfaces a lot and then hides: local control. I learned from Dr. Seuss that you can go crazy as long as you clean up before mom gets home, teaching me to be free in my play while also responsible, because I couldn’t do something I couldn’t clean up. That establishes a local context which acts as a local control.
Here’s my problem. That shifted to a discussion about how we can contrast berserkers or others who go wild in violence, and that became they’re of no use to us because animal spirits are animal spirits are animal spirits, and they take whatever physical form exists in that context. But doesn’t that include sharing a space with an animal, and thus generating affection instead of aggression? Yes, and that expresses the limit of that level, that physical expressions are mental expressions enacted, that the tObject does what it can as generated by the two internal perspectives, the outward facing and the inward facing.
These can be represented using stick figure people. Let’s start with an Extent, meaning a 1-0Segment composed of Ends so we can represent movement along an axis in the representational form we can visualize as Things in D3-4Space. That’s a lot to say a line. Start one at the other from 2 points on the Extent. They go through each other. You can imagine them reflecting or bouncing back and forth ideally so they always pass at the same spot. I’m imagining them as facing all the time in one direction, the outward one to the left or up and the inward matching the other ways. Each time they meet, in order for them to meet, they become more similar so the one moving up and to the left, which correlates to sK on a grid, is also moving down and to the right, with the only difference being they may otherwise be completely different. I know that took a turn at the end.
This maps the gsProcess. I’m not the same as you, and you’re not the same as me. There’s only one of me, and only one of you. That’s the ME! function. I mean this is the ME! function. If I translate that literally, it’s the factorial, so it covers the associative space, of the Ends Mechanism in the form where the Mechanism generates the End. That is entirely correct: that is the consequence of using K-notation which generates that series of Ends as gsProcess and thus we have described this function by which a Thing self-defines in relation to itself, meaning the tObject in which it resides, and with other Things.
Note how this connects to the natural world: a rock has potential attached to it, from the basic that it’s part of some landscape, that it has a history which can be determined in part by investigation into the rock and into its surroundings, and it has a slew of imaginary uses, some of which may become real. Those intangible structures actually exist in D4-3Space. They actually connect to the rock’s existence as a D3-4Object, meaning that it is constructed in D3-4Space out of all the gsProcess of all its constituent parts, and as gsProcess connects its existence to external contexts.
That was fun. That was a lot of fun.
I made coffee and listened to the torrent running through my head. Is any of that correct? The material about physicality keeps changing and it keeps forcing me into unexpected conclusions.
Maybe I can find a claw hold by thinking about minor error. Oh, back to local control. The idea is basic: you feel great killing all the buffalo and no larger voice interrupts to say no. Maybe not even after, but the context shifts so the environment in which that could have happened no longer exists and the current context describes your act as hateful, ignorant, and wrong. It’s like that vileness from Auschwitz who talked about how they murdered children for the greater good. Local control can be quite powerful.
A minor error to me is that I wanted to save time making coffee later by taking out the needed things earlier. I opened the fridge, took out the milk and water pitcher, which I use so it keeps getting refreshed, then realized that was the wrong order, put them back, and took out the coffee maker and the milk frother. Wrong order. Took extra steps. Local control corrected the ordering.
I’m not sure how to describe an error which involves committing violence because you wrongfully feel compelled, either by something external or by something internal, like you hate because is both. I see attempts to injure or to maybe cause an injury but not one serious enough for people to look at you and say you caused that but enough so people notice you can do that. I see recklessness to the point of willfulness, which is the difference between a yellow card and a red card.
That was interesting to me in part because in law school I considered doing an essay to try to get on law review. There were 3 topics and I was interested in willfulness. But the material was technical and I couldn’t force myself into writing that way. I’ve had it in mind since, every now and then coming to an example of what constitutes willful versus something lesser or versus shades of intention. The concept now makes sense as an example of local control of gsProcess.
Say you drive a truck into a crowd. That can be intentional murder, as we’ve seen with terrorists. Or it can be willful, as in you are driving too fast and lose control because in large part something happens which either causes you to overreact or not react quickly enough. I could immediately see that wanton can become with the instrumentality of a truck making it that much more obvious. In other words, a string of Ends generated across levels of local control. That isolates the idea of ‘what were you thinking’ so it can be evaluated both subjectively, like did the person think the speed limit was higher and so on, and objectively, even to the point where subjective belief doesn’t count. Like only a moron would think that was a good idea.
I had trouble continuing at this point. The amount of effort it takes to focus on this material with the required clarity is hard to describe. I rub the cat. I get a drink. I fuss over something. Or I listen to the ringing in my ears and to the furnace blower.
I used to write poetry to slow myself down to the speed of manual typing on an old Underwood with long key travel so they tangle easily. I had a portable Olivetti with short strokes that sounded like light machine gun fire in a movie when I was rolling, a constant tap-tap-tap with changing accents making a rhythm to my thoughts. Variations over quarter and eighth notes.
I’m having trouble posting this and I want to understand why. I want to get into the ME! That function describes the co-existence in maximal and minimal states, meaning 1-0Segmented, of the 2 perspectives inherent to existence as a D3-4Object, as a Thing. I’m using both so I remember to think in D-structure and SBE terms. Remember, SBE becomes fCM, so stating SBE is meant to include fCM. I try to keep the 2:1 straight. And that mention connects Bricks to Triangular, so you can see existence is sorta the wall which sits Between the 3rd End which was and the 3rd which will be, which is the fD projection in Triangular. Different views of the same subject means they come out of the Boundary and that is why I believe we came up with the label Methods, which would now be gsMethods, meaning methods by which we perceive and render, by which we take in and put out according to these steps. Each method comes out of the potential for methods, which then exist as gs so there can then be fits across scales and in the intermediate forms.
To clarify the question always lurking: these are the skeletal frames, the sticks, on which the End values Attach.
Alright, I can’t not say this. That exactly matches the visions I had of talking to the Sticks about the management of D4-3 existences which had become contaminated by destructive urges seeping in from below but which appeared to be coming in from above, meaning they were being accepted into the D4-3 as though they were proper guidance, despite that guidance being bluntly wrong to the point of causing destruction, to the point where we have to intervene and cut them off from the continuing flow lest the rot spread.
I remember tons of conversations about how that would work. That’s why I’m here with you. I figure out this side in conjunction with you figuring out your side, the 2:1 then extends so it’s 2:1 in HG so it looks like (2:1//1:2) and that connects the 1:2 to make the fD form of (1:2//2:1). And on, so a statement across me and you would look like: (2:1//1:2) as Start, (1:2//2:1) as Between, and (2:1//1:2) as End. Shift and the other phrase is obvious.
Right, that Attaches to the idea earlier, lost in the mental torrent, that I need to be more accepting of the reality of the visions because they exactly match the math and thus are true metaphors. We were are imbued with this Mission. We were sent here to do this. The we in both cases refers to the ME!, meaning it refers to shaping of, the continuous generation of the iObject of the Things involved.
We exist as Things at the level of 2. Didn’t we hit that idea yesterday, that the gsProcess of root2, of irrationality, generates the 0Space in which regular squares occur? And that specifically embodies the 2:1 concept and Bricks. We’ve talked about this fairly often, I think.
We are constructed in pairs because that is how SBE works. As the many theorems say, there’s a Between. An intermediate value. Where does Between come from? It’s made in D-structure as a consequence of the need to translate between and among levels, like removing a little hat makes D6 into D5, so take off a pair of them and you get D4 relative to the removed pairing.
One nice thing is that this is a Stick structure, meaning it exists with Ends waiting for values. You know what that means, right? This morning when you were waking up you kept hearing about the functioning of a judging algorithm and then how condemnation would work, and it was based on that sentence about Sticks and Ends. The Sticks are set to carry what can be carried and they wall off the carrier of bad by enacting all the good which did not occur until, and this is crucial, they eliminate the traces of the good done by the condemned so there are no Attachments. This extends across relationships.
I was, to be honest, unsure I could reach this level of clarity about this. I can see myself having the conversations with the Sticks. They told me exactly what they carried and thus whether there were characteristics of use to the continuing growth, meaning variation as opposed to a simple value substitution into a (D4-3//3-4).
The next question is then whether the metaphoric representations I saw and heard were true too, and I guess I have to accept those because everything else works mathematically when I accept this material as true. That’s terrifying.
I really need a break.
0 notes
Text
Angular for Kids: Start Your Coding Adventure
by Abdelfattah Ragab
Introduction
Welcome to the book “Angular for Kids: Start your Coding Adventure”.
This book is your introduction to the world of Angular. It's your first step towards developing websites and mobile applications. With Angular, you can turn your ideas into reality. Learning should be fun, so you will feel like you are reading a story.
By the end of this book, you will have a good understanding of Angular. You will have taken the first steps in your modern web programming adventure.
Have fun programming!
Move forward
When you start a new topic, you should explore it broadly and focus on moving forward without getting lost in the details. I also recommend that you gather information on the same topic from different sources.
Take breaks from time to time, look for short answers to questions, and use different sources to get different perspectives. Don´t worry if you still don't understand after many attempts, just keep going because you will come across it again later.
What is Angular?
Angular is a platform for the development of web applications. It is maintained by Google and is designed to help developers create robust applications.
What are web applications?
A web application is a type of application software that is accessed via a web browser. It is delivered over the World Wide Web and requires an active Internet connection to function.
Constituents of a Web Application
A web application consists of two parts that work together to provide functionality and a seamless user experience.
There is a client-side part of the application that runs in the user’s browser. It processes user interactions, dynamically updates the user interface and communicates with the server to retrieve or send data.
The other part is the server side. It performs operations such as data retrieval or manipulation and sends responses back to the client.
Angular belongs to the first part. It is a client-side framework.
We use Angular to create the user interface and to communicate with the server.
HTML, CSS and JavaScript
Engineers like to separate topics to have more control over each one. The web page you visit is made up of three technologies that together make up the final result we see when we open a web page online; HTML, CSS and JavaScript.
HTML defines the content of the page. It determines what should be in the header, main content, footer, etc.
The second technology is CSS. It is responsible for the styling of the page. It determines the font size, the color and so on.
The last technology is JavaScript. It allows you to interact with the page to trigger events, execute logic and so on.
When you create an Angular component, three files are created for all these technologies. One for the HTML, one for the CSS and one for the TypeScript (similar to JavaScript).
A fourth file is created for testing, but this is optional and is not needed in most cases.
What is TypeScript?
TypeScript is a programming language developed by Microsoft to help developers detect errors during development rather than at runtime.
Before your application is sent to the browser, Angular converts everything to JavaScript. Browsers do not understand Typescript, they only understand JavaScript.
Install Angular
The installation of Angular consists of only two steps:
First, NodeJS must be installed. Search online for nodeJS, download it and install it.
Secondly, open the terminal and run the command npm install -g @angular/cli
What is NodeJS?
Node.js is a JavaScript runtime environment that allows developers to execute JavaScript code outside of a web browser. It comes with NPM, a package manager that makes it easy for developers to share and reuse code.
If a developer creates a package that I need to use in my application, I just write the name and npm installs it for me. I can use it immediately without having to develop it from scratch. This of course speeds up the development process.
What is terminal?
A terminal is a text-based interface that allows users to interact with the operating system by entering commands.
It can take many forms, but ultimately it is a text-based interface through which you can execute commands.
Windows has many terminals that you can use. There is “Windows PowerShell“, “Command Prompt” and you can also install “Git Bash”.
Mac and Linux also have the “Terminal” application.
Angular Version
To ensure that the installation was successful, you can check the current node version. Open the terminal and execute the command node -v. The version of NodeJS installed should be displayed.
Also check the installed version of npm. Execute the command npm -v
This is the version of npm.
The last version to check is the version of Angular.
Execute the command ng version
Visual Studio Code
Visual Studio Code (VS Code) is a free code editor developed by Microsoft for creating modern web applications.
Search online for Visual Studio Code, download and install it.
First Angular Application
To create a new Angular application, open the terminal and run the command ng new followed by your project name. For example:
ng new first-app
You will be asked for the stylesheet format and whether you want to activate SSR. Simply press the Enter key.
The project will be created in the current folder. In Windows, you can type “cmd” in the address bar and press Enter to open the terminal in the current folder. If you now execute the command ng new first-app, a new Angular application is created in the currently open folder.
Available on https://shop.tredition.com and https://www.amazon.com

0 notes
Text
Preparing the Master File
We will be going from the easiest to the most complex of the automations.
Create a new workbook and include copies of each of the roster files in separate sheets. I named the tabs after the payors to make them easier to identify. You will also need a tab with the export from your credentialing software (if you have it) or a standardized Excel sheet containing the information on your providers. I labelled the tab with the export data “Provider Raw”, but you can name these however you like. Any time I reference Provider Raw, it will refer to the credentialing software export tab.
Open the tab containing your exported software data, highlight the entire roster, and format it as a table. I named this table “Providers” to make things easy for myself. When you need to update this, paste the new export as Values.
Why do we format this as a table? This is so that we have finite ranges that will automatically expand when new data is added for XLOOKUP to reference later on. With finite ranges, your workbook will run much faster.
Why do we paste as Values? This way, we don't accidentally include formulas that may refer to cells or functions that could be broken during the copy/paste action.
Our credentialing software does not include all the information the rosters request, so I made an additional sheet named “Provider Data” where I can input that information. This is also where all the XLOOKUP functions to come will populate. I also made an additional sheet where the data for each practice can be kept centrally called “Practice Data”; this sheet should also be a table.
Coming back to “Provider Data”, we’ll start with 2 columns. The first I’ve labelled “Field” and the second “Value”. Under Field, start adding the fields you will need to add to each roster, such as Name, Practice Name, NPI, TIN, etc. As you do so, Name the corresponding field in the Value column something easy to remember, such as NAME, CAQH, OFFICE_PHONE, etc., using the Define Name option in the Formulas menu in Excel. We can keep adding to this as we need to. In my file, there are currently 73 rows in this.
Why are we using Names? This will make it a lot easier to link back to this information when we get to the rosters. Instead of trying to remember the individual cells like B2, B3, etc., we can shortcut them with NAME, CAQH, etc.
Why are we even doing “Provider Data” as an intermediate instead of pulling directly from the exported data itself? This way each XLOOKUP function only needs to run once instead of every time for each instance. This will make the workbook run faster.
Hopping over to “Practice Data”, we’ll make another table (I called mine “Practice”). Each practice should have its own row, with columns with the information needed like Name, TIN, Physical Address, Suite, etc. You can add additional columns as needed and the table should automatically expand unless you’ve turned that setting off. Assign a name to a column that would uniquely identify the practice. I chose the Name column, so the reference to it would be “=Practice[Name]” and I named it “P_Name”.
I repeated this step in the Individual NPI column of the export data table, calling it “All_NPI”.
Returning to “Provider Data”, I assigned Data Validation to the Practice value, where it populates a dropdown list that pulls from “=P_Name”, and did the same thing with the Individual NPI value, but with it referencing “=All_NPI”.
Why do we do this? XLOOKUP works best when there is an exact match and this will force us to input an exact match either by selecting from the dropdown (like I do for Practice Name) or by pasting what we’d like to input (like I do for NPI). If there is not exact match, there will be an error and you will not be able to proceed until you work it out.
Now we start adding all the XLOOKUP functions we’ll need. Reference either the Practice Name or NPI to return the information you need from either the export data or the Practice Information tables. For example, to pull up the last name of a provider, the formula I’ve used is “=XLOOKUP(NPI,All_NPI,Providers[Last Name])”.
If neither table will have the information you’ll need, you’ll need to input that data manually. For example, my credentialing software does not have a field for Supervising Physician, so I’ll need to input that manually every time. I recommend highlighting any fields that do not use the XLOOKUP functions a color such as yellow so you’ll remember to update them when loading a new provider. If you like, you can also filter that section by color so that the auto-populating fields are hidden from sight and you can go straight from highlighted cell to highlighted cell.
Sometimes these fields are a Yes/No question, such as if the provider is a hospitalist or not. For those, use “=TRUE” or “=FALSE” for yes and no, respectively. I’ll use this example further down, so I’ll name this field “Hospitalist”.
Why do we use =TRUE and =FALSE? It makes functions easier down the line, and I’ll explain more further down.
Finally, it is advised to make a tab where you'll list your payors, which I've named "Payor Summary". In my file, I have columns with the payor names, their method of submission (form, roster, web portal, etc.), the relevant address to either a URL or the file location where their separate template file is, and a column where these links are made clickable. Later on, we'll also include buttons we can click to run our automation scripts as well.
Why do we have separate columns for the address and the links? This way, our automation scripts can reference these cells as well. When those addresses change for any reason (the payor changes their portal URL, releases a new template, etc.), you only need to update the address to update all related functions.
To make the clickable links, we'll use the HYPERLINK function. If the payor names are in column A and the addressed in column C, the formula would be "=HYPERLINK(C2,A2)", and you can copy and paste that formula down the entire column to repeat it for all the payors. When you click the cell containing the hyperlink, it will open the URL or file referenced. To improve readability, you can hide the addresses column and unhide it whenever you need to update it.
At this point you should have:
One Excel file with several tabs containing your rosters, credentialing software export, a payor summary, and a tab where all the XLOOKUP functions live
At least 2 tables in this file
Many named fields to reference back to for the next step
0 notes
Text
Streamline Your Website with Seamless API Integration
Integrating third-party APIs into WordPress is one of the smartest ways to enhance the functionality of your website. It allows you to connect with external platforms and services, creating a seamless user experience that goes beyond what traditional plugins and themes offer. As someone who has tackled API integration projects before, I can say it’s a transformative step for any website.
In this article, I’ll walk you through the essentials of integrating APIs into your WordPress site, share actionable steps, and highlight why this approach is beneficial. I’ll also touch on how WordPress development services USA can support these efforts if you’re looking for professional help.
Why API Integration Matters
APIs, or Application Programming Interfaces, enable different software applications to communicate with one another. When you integrate an API, you’re essentially unlocking new capabilities for your website by pulling in external data or features.
Here’s why API integration is a game-changer:
Improved Functionality: APIs make it possible to incorporate real-time data feeds, third-party services, and tools into your site.
Enhanced Efficiency: Tasks like user management, analytics, and payment processing can be automated, saving time and reducing errors.
Scalable Features: You don’t need to reinvent the wheel. Instead, you can tap into existing services to expand your site’s functionality.
If you’re thinking about upgrading your site to handle complex tasks, consider custom web development USA as a way to build a tailored solution.
Steps to Integrate Third-Party APIs
If you’re ready to get started, here’s a straightforward guide to integrating APIs into your WordPress website:
1. Define Your Goals
Start by identifying what you want the API to achieve. For instance, are you looking to enable online payments, display weather updates, or pull in social media feeds?
2. Research the API
Before diving in, ensure the API meets your requirements. Review its documentation to understand how it works, what data it provides, and the technical details for implementation.
3. Obtain API Credentials
Most APIs require authentication. You’ll need to register with the provider to obtain credentials like an API key or access token.
4. Choose Your Integration Method
There are two main approaches:
Manual Coding: For developers with coding expertise, you can write custom functions and use WordPress hooks to integrate the API directly.
Plugins: If coding isn’t your forte, plugins like WPGetAPI or REST API Client simplify the process.
For complex setups, you might want to hire web developers USA who can manage the manual coding process efficiently.
5. Test the Integration
Once the API is set up, test it thoroughly to ensure it’s working as expected. Check for errors, verify the data display, and ensure it integrates seamlessly with your WordPress site.
6. Monitor and Update
APIs are dynamic, meaning updates to the API or your website can impact their functionality. Regular monitoring and maintenance are key to avoiding disruptions.
Real-Life Applications of APIs in WordPress
API integrations can bring a wealth of features to your WordPress site. Here are some popular use cases:
Payment Gateways: APIs from Stripe, PayPal, or Square make it easy to process online transactions securely.
Social Media Feeds: Display Instagram, Facebook, or Twitter updates directly on your site to keep content fresh and engaging.
Analytics: Services like Google Analytics provide insights into user behavior, helping you optimize your site for better performance.
Email Marketing: Connect to tools like Mailchimp or Constant Contact to manage email campaigns without leaving your WordPress dashboard.
Each of these integrations can elevate your website’s performance, and leveraging WordPress development services USA ensures they’re done right.
Key Considerations
API integration is exciting, but there are some important factors to keep in mind:
Security: Ensure all data passing through the API is validated and sanitized. Store API keys securely to prevent unauthorized access.
Performance: Large or frequent API requests can slow down your site. Implement caching or optimize calls to maintain speed.
Compliance: If your API involves handling user data, ensure compliance with regulations like GDPR or CCPA.
For tailored solutions that address these concerns, consider reaching out to professionals who specialize in custom web development USA.
My Take on API Integration
As someone who has worked with multiple APIs over the years, I can confidently say that their value is unmatched. They’re not just about adding flashy features to your site but also about creating a streamlined, user-friendly experience.
Whether you’re integrating a payment system, building a dynamic dashboard, or automating processes, APIs can make it happen. The key is to approach the integration with a clear plan and the right tools.
If you’re feeling stuck or need assistance, it’s worth exploring professional services. When you hire web developers USA, you gain access to experts who can navigate the complexities of API integration, ensuring everything runs smoothly.
Final Thoughts
API integration in WordPress isn’t just a technical add-on—it’s a strategic move that can elevate your website’s performance and capabilities. With the right approach and tools, you can create a site that’s both powerful and user-friendly.
For anyone looking to go beyond standard plugins and themes, investing in professional WordPress development services USA is a step in the right direction. From custom coding to plugin configuration, having a skilled team on your side makes all the difference.
In the end, APIs are your gateway to innovation. Use them wisely, and watch your WordPress site transform into a platform that stands out in today’s competitive digital landscape.
#hire developers#wordpress development#web development#WordPress development services USA#custom WordPress website design#hire WordPress developers USA#Custom web development USA
0 notes
Text
Slowly chipping away at the css and javascript for the guestbook. I'm editing it from ayano's comment widget, but my knowledge of javascript is still a little minimal so this is very much a trial and error process!
The main thing is that the actual process of leaving a comment and having it show up definitely works, which is good! It seems like there's an issue with a new neocities policy blocking the widget on new accounts unless you're a supporter, but luckily my account was made before that went into effect, so it still works for me.
Things I've done:
Put the widget into 2 columns and aligned everything with the pages of the book. (I'll have to edit the image a bit because the spine isn't quite straight.) Added "break-inside: avoid" to the comments and the form so they don't get split up between columns.
Changed all measurements (font size, width, etc.) from pixels to relative units like % and cqw, so that everything scales when the window resizes, stays where it's supposed to be, and doesn't go off the page.
Put the pagination buttons where I want them.
Changed the flex properties of the input fields in the form so they align a bit better.
Started playing with the css a bit to figure out what I want everything to look like. I haven't decided what I want the buttons to look like yet, and everything else is subject to change, too.
Thing I want to (try to) do: (after the cut!)
Add first/last page buttons in addition to the next/previous buttons. Done!
Try to make pagination more realistic to an actual guestbook. Currently, the first page is on the left and successive pages are on the right, but in a real book, it's the opposite - previous pages are on the left. This shouldn't be too hard, but I also want to reverse the order of pages itself, so that instead of page 1 being the current page and the oldest page changing depending on the total amount of changes, the oldest page will always be page 1 and the current page will be however many pages there are. Again, so it's more like a real book. :) This should also make it easier to find comments - if you know your comment is on page 16, it will always be on page 16. (Unless a lot of replies are added to a previous comment that pushes it forward.) Done! After adding first/last page buttons, this was easy - all I had to do was put a line that "clicks" the last page button to put the guestbook on the most recent page when it loads.
Make it so the form to leave a comment only appears on the current/most recent page, to leave more room to show comments on older pages. Because of the way the site has to scale due to fixed collage backgrounds, I think I generally have to keep the font size pretty big so it's as readable as possible on smaller devices. So, I'll only be able to show a few comments on each page, and if I have to show the form on every page as well, it'll be even fewer. Done!
Show page numbers, but according to each column/"page" of the guestbook image, rather than what the code considers a page (both columns). This shouldn't be too hard - I just need to add some equation like, right column/page = the actual page number x 2, and the left column/page is that minus 1. Done!
For some reason it's creating a duplicate pagination when you post a new comment - fix this somehow. I'm guessing it's because the pagination is created in the displayComments function, which probably runs again to refresh after you post a comment or reply. Maybe if I take the pagination out of there and put it in its own thing, it'll fix this. Done! Rather than making it its own function and then figuring out where/when to call it, I just added a condition to the existing function's if statement that makes sure pagination doesn't already exist before creating it.
See if there's a way to make the max comments per page just however many can fit rather than having to specify an amount. This would mess up the count defining the page number variable which would mess up all the pagination, though, since it seems to be based on the total number of comments divided by the max comments per page. After many frustrated days, done! This was a little beyond my skill level so it took a lot of trial and error, but it seems to be working now! Let's just hope adding individual reply boxes won't mess things up too much...
Add a reply box that appears right under the comment you're applying to, instead of using the main comment form, so you can still leave replies even if the comment form doesn't appear on old pages. (I'll try to find a way so this doesn't mess things up entirely, because I want to keep reply functionality available if possible, even if it would be easier to have replies just not be a thing. I might add collapsed replies back in or maybe just have replies scroll if it becomes a problem.)
Somehow add a functionality where replies from me will have slightly different css than regular comments so they're easy to tell apart. Not sure how this could be accomplished as it might require editing the google form, but I'll look into it??
Maybe add some kind of font selector to the form or otherwise have fonts randomize between a few different options, so it looks more like a real guestbook with varied handwriting across entries.
0 notes