text:
SCRIPTING NEWS
It's even worse than it appears..
© copyright 1994-2023 Dave Winer.
Last update: Tuesday January 31, 2023; 9:30 PM EST.
You know those obnoxious sites that pop up dialogs when they think you're about to leave, asking you to subscribe to their email newsletter? Well that won't do for Scripting News readers who are a discerning lot, very loyal, but that wouldn't last long if I did rude stuff like that. So here I am at the bottom of the page quietly encouraging you to sign up for the nightly email. It's got everything from the previous day on Scripting, plus the contents of the linkblog and who knows what else we'll get in there. People really love it. I wish I had done it sooner. And every email has an unsub link so if you want to get out, you can, easily -- no questions asked, and no follow-ups. Go ahead and do it, you won't be sorry! :-)
davew@mastodon.social
To journalists (and others) who are trying to figure out how podcasting was born, I suggest listening to the podcasts in Morning Coffee Notes starting at 6/11/2004. Work your way up the list. Those were amazing days, lots of firsts and imho lots of fun. I kept the archive because I hoped at some point someone would want to know how it happened. Maybe grad students will do a thesis on this stuff? This is a new medium being born. I tried to keep good records. Also recommend looking at Scripting News archives for 2004 as well. #
2001 was also a big year in podcasting. The first program to download podcasts was MUOTD, in January 2001, in conjunction with the Grateful Dead experiment.#
It's HTTPS week for FeedLand#
I have a group of testers working with me on getting the open source release of FeedLand ready to go. And this is the week we're working on HTTPS support. One of my friends thanked me for doing this work, and I thought my response deserved to be public, so here it is.#
Supporting HTTPS in FeedLand was the plan all along. The rule is if you're giving your identity to a service, you gotta have HTTPS. My commitment is to the web. I think HTTPS is shitty technology, I'm sure Google if they tried harder, or asked me, could have come up with more of a win-win. But it is what it is. They're a shit company, but HTTPS is not Google. I know that. Some people can't seem to get that I get that. Not everything is a political cause. I think they're accustomed to Republican politics where they'll burn the world down to assert their will. I'm genuinely in this for the good of everyone, not just me. And -- I don't blame HTTPS for Google. #
My profile on Twitter is something I think every technologist should agree with, like the doctors take.#
I work for the betterment of the network we all share. I'm not trying to get rich or famous, just fix the stuff that's broken. I hope you are doing that too.#
It's okay to want to be rich or famous, btw -- I like having money, and if you succeed at being famous I want to warn you there's a downside to it, but more power to you. #
Diego Rivera#
Portrait of the Knight Family, 1946.#
Still listening to You Don't Have To Cry. Maybe the best song ever.#
To anyone who cares about ActivityPub, Peter Zingg provides a great roadmap for what's needed to get serious adoption.#
My work address once was 117 Easy Street, not in Anytown, USA.#
A stunning realization#
Having done it with FeedLand, I was starting to think about how to wean Drummer off Twitter identity, and had a stunning realization -- it may not be necessary, since (I believe, haven't tested yet) it might be possible to host Drummer from a FeedLand instance. #
I would actually have to do it to be sure there aren't any roadblocks I haven't foreseen. But they're both running the same server software, daveappserver, and once you've established an identity in FeedLand I don't see why it can't be used with Drummer. #
Ken Smith was tripping out on the synergies between Drummer and FeedLand. This, if it works, would blow the doors off that. They would be storing their data in the same place. You would be able to open your FeedLand bookmarks menu in Drummer, to start. #
I figured something else out. I was wondering what would happen if Twitter broke their identity with developers like me as they did with the clients, how would we transition Drummer then? I don't want people to have to start over. I could ask them to do what I asked FeedLand users to do, is make a connection between their Twitter identity and an email address, as a backup. But this would have to be done before any outage. Something most people probably wouldn't do. #
Then I realized we would be able to do what we do now when we want to associate an email address with a domain, ask the user to post something to their Twitter account, some magic string. When we see it in their timeline, voila, we know they are who they say they are and we can move the files to the new server. So we can relax. Users shouldn't have to lose data if Twitter pulls the plug.#
One more thing, when Twitter was blowing up, I was getting harassed by idiots (no other word for it sorry) who didn't understand that you can't unwind a connection just by snapping your fingers. Identity is baked into an app at a deep level. And, when it already has users, and has gone through a ship cycle, you can't just flip a switch or everything you worked so hard for would just fall apart. It would be like, for example, making the NYC subway system run on a different track gauge. Sure you could do it, but it might take a few weeks. 😄#
Only on Twitter#
There are still some things you can only learn on Twitter.#
Poll: Would you get rid of Google or the web?#
BTW, all who think Musk/Twitter is the big problem, you're falling for a smokescreen. A much bigger problem is the brain of Google. It's the nightmare of science fiction. We have no clue what it wants. It has unfathomably immense and unchallenged power. #
Today's song: You don't have to cry. I can't tell you how much I love this song. And it turns out this was the first CSN song. It was first sung in Joni Mitchell's Laurel Canyon living room, or Cass Elliot's kitchen, or John Sebastian's house. Crosby and Stills were tripping out on their harmonies. Cass brought Graham Nash with her to meet them. After hearing the song twice, he joined the harmony. Imagine the discovery that this kind of music was possible, and that it was coming from you! BTW, the song was written by Stills about Judy Collins. #
ChatGPT is a godsend to people with aging minds who sometimes can't find the right word. It's in there, in my brain, but I can't quite get at it. It's amazing how it nailed this question. Bravo! #
I like HTTPS, but...#
I won't be forced to use it, I won't give in to blackmail.#
However, FeedLand will support HTTPS. I am working on that now.#
That's why I'm in such a foul mood. I feel completely manipulated by a big company I despise.#
It's as if the biggest music label also owned all the players and refused access to music written by individuals and independent publishers with some made-up bullshit about "security." You have to pay them their tribute or be shut out. I choose being shut out. #
If your browser requires HTTPS, you won't be able to read my blog. #
Also, to lawyers -- if this isn't antitrust, I don't know what is. #
The day is coming. Get ready for it. I am ready. I am doing nothing. 😄#
I like Masto, but...#
I like Mastodon, and like Twitter. I've been on Twitter since 2006, and on Masto since 2017, but didn't start using it until late last year. I think Mastodon is an improvement over Twitter, but the limits I list below matter more than all the improvements.#
Optional titles.#
No linking.#
No styles.#
Posts are limited to 500 chars.#
No enclosures.#
Yes I know some instances don't have these limits, but what matters is the LCD. What can be exchanged with all Masto systems, and the list above applies to the vast majority of instances. #
Think about it this way. This is a simple post, expressing a simple idea. Yet neither Mastodon or Twitter can transmit this message. When we really get out of this bottleneck we'll be able to send messages like this one, and we'll wonder why we put up these limits for so long. #
Also, I've heard all the arguments. At one point 140 chars was the limit that mattered, if we went over that then it wouldn't be any good. Then we went over it, and communication got better. I don't want to argue about this. Just want to point out that we're still waiting to be set free from the limits imposed by Twitter 17 years ago. #
RSS is a good thing. It represents something precious, developers working together, just a little, and only for a brief period. We should recognize it for the lucky gift that it is, and do things to help it. #
RSS is a thing like roadways and paths of rivers, they change very slowly. Think about qwerty keyboards. That's what we're talking about here. Agreements between products to interop. RSS is just like the gauge of rails, or always driving on one side of the street. A convention that makes progress possible. #
Also, we have to stop anthropomorphizing tech. Formats and protocols aren't alive. #
I was raised in the aftermath of the Holocaust by survivors. In that sense my whole life is International Holocaust Remembrance Day. #
I'm not using the term antisemitism any longer. Instead calling it "Jew Hate." If you hate Jews, that's what I'm going to say you do. #
The open source release of FeedLand is on the way. 🚀#
Today's song: "Did you know we're riding on the Marrakesh Express? Did you know we're riding on the Marrakesh Express? They're taking me to Marrakesh." #
Democrats are campaigning as part of governing! This works.#
I did a top level demo of FeedLand for a friend all in one Mastodon post. Having 500 chars to work with makes a big difference. #
On 4/13/2005 I did a singing podcast. The music was on an educational site for kids. Why should they have all the fun.#
Just when I thought I'd seen all the good bingeable shows, I started watching Feel Good on Netflix, and wow, it's such a great story, so emotionally involving. Not going to spoil anything, but if you need a good love story, this is it. Gave it the highest rating on Bingeworthy. #
Last night's Knicks game was a real milestone. At the end with the Knicks defending, they stopped the best team in the NBA, without Mitchell Robinson. In previous seasons the Knicks would always lose these games. At the end we'd say well it was a good effort, knowing that's bullshit, it's pathetic. To win one of those games, with such competence, for the second time in two games, both times against the best in the league, wow. Maybe it's time to change how I think about this team. I'll let you know. 🏀#
Just heard an excellent analogy. Defaulting on the debt would be as destructive to the US as Brexit was to the UK. Only I think it would be a lot clearer to the world how we've lost our minds, and also the US is bigger than the UK, economically, so we have further to fall. #
Embedding Mastodon?#
I was wondering if it's possible to embed a Mastodon post in a web page. Turns out that it is. Screen shot. #
Since David Crosby died I've been listening to all the CSNY and Byrds hits. These few days have been an explosion of the past. Forgotten love, long-gone friends, wounds all fresh again. Good? Not known at this time.#
If you're going to tell the story of the growth of podcasting, you can't leave out Morning Coffee Notes. Podcasting was a mission that two people were on, myself and Adam Curry, mostly working in harmony, to find ways to get people to adopt this idea. We kept throwing ideas out there, and it wasn't until MCN in the summer of 2004 that other people got the idea that they could do it. That was the breakthrough. You didn't need a big studio and money to produce good audio programming. That's what MCN did. It was as crucial to the growth of podcasting as Serial or The Daily were many years later. You can't write a truthful history of this without including this series. Luckily the archive is pretty good! 😄 #
There's a 20-minute podcast linked to from this piece about how podcasting came to be. If you're going to write about this stuff, please listen to it. #
On 4/13/2005 I did a singing podcast. #
There's a lot to be said for no paywalls and no intrusive ads. Transmits a message. No fuss no muss. Sending out a link to them won't cause trouble for anyone. Over time that builds a brand. We should give out awards for that. #1 is Axios for sure.#
Nothing is more galling than people who never cared what you thought of them claiming credit for your accomplishments. Soon we'll all be dead and it won't matter. But in the meantime it means people aren't interested in my new work. So there is a cost.#
Would someone please make a ChatGPT product that can be pointed at specific websites, and allow intelligent queries against the contents. I'd love to explore the site I've been writing for 28.5 years, scripting.com. Let me know. It's worth $ to me.#
Who owns the web?#
I asked ChatGPT who owns the web. This is what it said.#
The World Wide Web is not owned by any single person or organization. It is a decentralized system of interconnected documents and other resources, linked by hyperlinks and URLs. The Web is maintained and developed by a community of individuals, companies, and organizations, who contribute to its growth and evolution. The core technology of the Web, including the HTTP and HTML standards, is developed and maintained by the World Wide Web Consortium (W3C). However, the web is also regulated by different countries with different laws and regulations, but no one owns the Web.#
Google acts like the web's owner#
From a heated discussion on Mastodon.#
Google has been acting like the owner of the web for years. #
This is being covered up by the tech industry, but it is a fact and a public issue of the utmost importance. #
The web belongs to no one. #
Period.#
Why the US is so rich#
Judging from the news, no one has figured out how to explain what defaulting on our debt means in human terms.#
To do it, you'd have to explain why the United States is richer than any other country in the world.#
It's not because we're smarter, or make better products, or have more natural resources. It's because the dollar is the reserve currency of the world. It's the safest place to store value. That means when we create a new dollar someone accept it as repayment of a loan. That's how our wealth is created and sustained. #
In other words, people are happy to be paid in dollars. They want to be paid in dollars. They like dollars because they remain valuable, because they trust the United States to repay the loan because the US never has and never will default. That's the assumption. #
We got a good thing! We should want to keep it! (I don't often use exclams on this blog, btw.)#
If we don't pay back our loans, the safety thing blows up. It'll be gone. Then when we print a dollar to pay back a loan, they'll say no thanks, give us Euros. It's actually pretty simple. If you understand the rules of football, driving or poker you can definitely understand this. #
People ought to learn what it means to be a reserve currency. And how it makes the US much richer.#
It means we can piss away huge amounts of money on the military, and let the super-rich get off with paying no taxes. That's where the difference goes. It's why we can still live in a Western way, with big cars and mortgages, and have the hugest miltary and fuel the growth of the super-rich all around the world all at the same time. It's not because we're a great country, it's because everyone thinks the dollar is safe. #
I don't the military is going to suffer much when our unfair economic advantage is blown up by a default, I think the poor will. I think health care and education will disappear. I think the rivers and air will be polluted. We'll be sicker and more ignorant. Everything will work much worse. More shortages so prices will go up. #
To understand this all you have to understand is what a reserve currency is. Please news people, explain that. Help the people understand how this works. #
Thanks.#
I realized today in a Mastodon thread that my source code is my zettelkasten. I take copious notes in my outliner, but I don't worry about gardening them, it's the code I focus on. And because I write code in an outliner, I can create notes that are tucked away at the top of each function, for some long-lived functions, the notes at the top are basically a blog. Yet it in no way interferes with the readability of the code. I've been doing it this way for 20+ years, so it's a pretty smooth process. And I'm sharing all this publicly, in my GitHub repos, most of which have a source.opml file that contains the outline with the source code for the whole project. Here's an example. Read the comment at the top of the OPML file. #
I finished bingeing His Dark Materials. Utterly tedious. 99 percent speeches by people saying nothing and the music rising and sounding ominious as if something very profound was happening. The last episode was good for about 15 minutes then it got tedious too. Somehow I was snookered into watching one of those superhero shows that are so popular now. It's all special effects. I'm sure they're impressive, and they made a big deal about how important stories are, too bad the show didn't have much of a fecking story. I give it a rating of 💩 and I'm rating myself a fool for sitting through it all the way to the end. Oy boy what a mess.#
We've started testing the open source release of the FeedLand server. Looking for people with experience running a WordPress server, or equivalent. It should be that level of complexity. I want to smooth out the experience, before releasing it publicly. If you're interested, please send me an email. Include your GitHub username.#
It's not about HTTPS#
I posted a link to a Salvador Dali work of art that Twitter thought might be bad so they blocked it. #
Someday Google will do the same for a blog post like that because they own the web the same way Twitter owns tweets.#
Then we will see that the question in 2023 wasn't whether HTTPS is good or not, rather it's whether it's good if Google owns the web. #
Clearly what will drive the microblogging market outside Twitter is Mastodon not ActivityPub. Here's a short thread that explains. #
If you think losing the Twitter clients was a big deal, wait until they start screwing with the archive. #
New version of davemail package. Since this is part of FeedLand it means that we can send confirmation emails via SMTP, not just SES.#
Braintrust query: Something weird is going on with NPM and how package.json files work. Suppose I have a package called package1 which is required by a package called package2, which in turn is required by package3 which is required by an app called helloworld, which only requires package3. I know that's complicated to say but it's really simple. Okay, so I make a change to package1, and go to the directory that contains helloworld and npm update it. You'd think that we'd get the new version of package1 but we don't. The only way to get it to update that I've discovered is to make a change to package3, publish it, and then npm update. But nothing changed in package3, why should I have to rebuild it just to get the change reflected in the app. I have a feeling that this is because NPM modifies the package.json that NPM passes up the chain of require's? I swear this used to work, and what a pain in the ass if this is the only way to get changes deep in the stack reflected at the top. A place to comment.#
Why ChatGPT is a good thing#
We should be pleased that CNET is putting themselves out of business of being an authority on commodity info. That business isn't viable today much as being a travel agent isn't. #
Lots of what doctors do will be automated by ChatGPT too, and that's a good thing! They can give us more personal care. Their recommendations are also commodity, and rightly so. And I'm absolutely sure that the new way will save lives and make human bodies work better and live longer. #
The fuckups of medicine pile up. By the time you're my age it's happened so many times it's a wonder I'm still alive. (That said medicine saved my life twice, so there's that too.)#
Worrying about side-effects like CNETs demo, is like people worrying about typesetters losing their jobs when desktop publishing came around. This is evolution and imho it's a good thing. #
Uncle Arno's zettelkasten#
There's this idea called zettelkasten that's been going around in the outlining world. It's like a "second brain" another term they use. #
The thought is that if you get all the info and ideas out of your brain and onto a computer something magical will happen, you will attain a sort of super-humanity. #
I'm not sure why but I hate the term zettelkasten, but I love to say it. It sounds like something goofy and idiotic at the same time. It's not an English word. I do not like it. #
But then I decided to look it up. I found that one of the early pioneers of zettelkasten was my ancestor, Arno Schmidt, a fantastic but fringe German writer of the mid-20th century. He was my maternal grandmother's brother, my great-uncle. #
In his case zettelkasten made sense because:#
He was German and zettelkasten is a German word so it isn't icky or pretentious.#
He had a legitimate use for one, he was writing a complex novel with lots of characters and plots. And this was before personal computers, in the 1940s and 1950s, so he did it with index cards. #
Around the time Uncle Arno died in 1979, I started working on my first outliner, which is the ideal tool for creating and managing a zettelkasten on a personal computer. #
I've attached a picture of Arno with his zettelkasten.#
I went to ChatGPT and entered "Simple instructions about how to send email from a Node.js app?" What came back was absolutely perfect, none of the confusing crap and business models you see in online instructions in Google. I see why Google is worried. ;-)#
The tech industry and Google#
I was chatting with a leader of tech, a person who has made huge money on the open web. I don't want to say this person's name because my goal isn't to shame them, rather to provide a rebuttal in public where it won't just go into the trash -- I hope -- where there might actually be some listening. #
If Google owned the web when my friend's company was starting up, it's likely Google wouldn't have permitted their product to launch because they were competing with a Google product. But the web was an open platform, no one controlled who could deploy a web app, so my friend had a chance. But Google is now taking that power for itself and there's very little resistance. Right now Google and a number of other organizations are taking ownership of the web, but it's mostly Google. #
As I've written before, Google's first change to the web, now that they apparently feel they own it, will mean losing a lot of the archive of the web because it won't be possible to update those sites to comply with Google's rules for what constitutes a legal website. But the web is a fantastic archive medium. And losing the archives, that's not something a big company should be allowed to decide. It would be like saying Exxon could decide if beaches should be protected from oil spills. We'd never let them take that power, they would be stopped, they have been stopped. But there's Google, doing it in the Age of the Web, saying we own this and if you don't like we'll just shut you down. You know, like Apple and iPhone apps. #
We have to put up with this on corporate platforms, there's no choice -- but the web doesn't belong to them. And my friend, who really is someone I like on a personal level, is going along with it. We are opponents in this, and I hope he comes around and realizes that not only do we need the archives, we need the web to be an open playground for innovation. And having tasted this power once, you have to know Google isn't finished, it'll happen again, and again. #
And of course Google could just create something new and market it as being "more secure" and leave the open web alone. You gotta wonder why they didn't just do that. #
PS: I asked Chatgpt who owns the web. It's not Google. #
There's no comparison between Twitter and Mastodon for idea distribution. I routinely get hundreds of RTs on Masto. The Twitter system thinks the same ideas are worthless. I'm guessing virtually no one sees my tweets. For an idea why that is, see the next item. #
Twitter made a change so that you have to click a link to see the recent posts from people you follow. Hard to remember to do that, and you end up seeing a lot of disgusting crap. The stuff an algorithm chose for you, including posts from people you blocked. But you can work around this. If you have a bookmark for accessing Twitter, change it to this. Now you'll only see items from people you follow. None of the bullshit their algorithm chose "for you" which is really "for their advertisers" or "for whoever." #
There's much more to feeds than reading them! 😄#
I unfollow people who use "white male" as code for "evil asshole." Say what you have to say without the bullshit. #
I hate when people explain in detail something they thought I needed to know because I said something that reminded them of it. #
Trump was a free man...#
I wrote this on Jan 22, 2017, two days after Trump was inaugurated.#
Trump was a free man until he took the oath. #
But once he assumed the office, and until he leaves, he belongs to us, the American people. I'm sure this is a new feeling for him. But we all must submit to something. The president submits to the people. #
I can't imagine what hell it must be behind the closed door that leads to the press room. The ranting and screaming, the tears and the "there there's" from his staff, the promises to get even. #
But he will keep bumping up against the reality that now, we own his ass, even the ones who thought his campaign was crazy and dangerous. The people who voted for him thinking it left the rest of us powerless are in for a surprise too. The other politicians you elected care about what we think, because they need us to keep their jobs. The election is over, now they're worried about the next election. And like it or not, they need us. #
Harry Truman famously called the White House the "crown-jewel of the federal penal system." #
I don't know how Trump will come to terms with this. We have an idea of what a president does, says, how he or she reacts to events. We just had eight years with a guy who never lost his cool over anything. The new president sees a report on TV saying he lost the MLK bust in the Oval Office and he loses it? He has a long way to go before he is our president. He may hold the office but he hasn't embraced it yet.#
I moved the FeedLand roadmap to its own place. #
Arguing with people is usually not productive and it wears you out.#
David Frum: "I'm doing an experiment. On my computer, I am checking the latest tweets by people I follow. On my phone, I'm checking whether their most recent tweets are showing up in the 'Following' column. I'm just getting started, but even in the first dozen cases, Twitter failed."#
Twitter should have been an operating system. #
I just had ChatGPT write some docs for me -- how to set up Node.js and Amazon SES.#
The best feature of Mastodon is that you can edit your posts.#
Another problem with people getting upset when something they depend on on the internet goes away, for whatever reason, is that it's all going to go away, probably sooner than you expect. If you want things to be long-lived, then we need to make some major changes. And no one, absolutely no one, is working on making a long-lived net. #
RSS-spect#
I was hoping that people would see RSS as a key to decentralization, but it's hard to draw the picture because people have the wrong idea about RSS.#
I had a similar problem explaining why a Pub-sub company should support RSS without thinking of it as a "third party opportunity."#
Pub-sub could use a "really simple" interface. You could send any kind of message with RSS, and the knowledge of how to find the new stuff in a feed is totally established in developer-land.#
And that's what the Pub-sub people wanted. Ideas for new simple APIs. They look down on RSS as beneath them. I've seen "serious" devs do that over and over and it's a mistake. Simple is better, not trivial. Microsoft, for example, had something "much better" than RSS coming in the late 90s. Eventually they did get on board with RSS, to their credit.#
Sometimes the answer is so obvious you can't even see it. #
Sometime next week we'll start testing the open source release of the FeedLand server. Looking for people with experience running a WordPress server, or equivalent. It should be that level of complexity. I want to smooth out the experience, before releasing it publicly. If you're interested in participating, please send me an email. #
The Twitter API still works. If that changes I'll let you know. Yes, they shut down the clients, but the people who make the clients should have known that was coming. It happened before. Every corporate platform vendor will defend their cash flow. If you bet otherwise, you're probably going to lose. If you don't like it, develop for an open platform or stay out of the platform vendor's path.#
Why aren't we marching over the Dobbs decision?#
Having trouble focusing on work today I posted a load of bullshit to Mastodon. #
I went to Davos in January 2000, just once, with a white badge (access to everything). Not as a journalist. I was a representative of the web, which was the hot thing at the time. Not sure what other people were doing but I was a celebrity and enjoyed all the attention. #
After Davos, I went to Amsterdam, to write and enjoy the local herb. Back then it was the only place in the west where you could buy and consume the weed openly and semi-legally. Scroll to the end of the February archive page for pictures from Davos and Amsterdam, as well as a few pieces with closing thoughts about my experience at Davos. This is one of the advantages of blogging and keeping relatively decent archives. You get to relive experiences like this.#
The only question I was asked was How To Make Money on the Internet. The Davos Man was skeptical. I did pretty well, in hindsight. 😄 #
Today's song: Wooden Ships.#
NYT: David Crosby dies. #nopaywall#
So much made up bullshit about Twitter's API. I've never seen anything like it. Some of them actually think of themselves as journalists.#
I'm watching His Dark Materials on HBO. About to reach the end of the first season. So far -- so-so. Not sure if I want to finish. #
I just got a 16TB disk. Remarkable. #
I let a domain, nodestorage.io, lapse. That's why we're seeing problems on scripting.com. One of the files we include is from api.nodestorage.io. I renewed the domain, so the outage should hopefully clear soon.#
We're following WordPress's lead in releasing FeedLand's server as an open source project using GPL2. #
We (Adam Curry and myself) approached the Zune people at Microsoft in 2004 to ask to work with us to make a perfect podcast listening and recording device. Basically the PC of podcasting. I wanted to work with them, lived in Seattle at the time, was only working on podcasting at the time. Still to this day such a product does not exist. #
Twitter's developer program#
I've seen recent editorials about Twitter's developer program. #
It wasn't great. The first time I ever spoke with a person from Twitter who worked with developers was in spring 2022.#
I have been developing for the platform since 2006.#
Most of what they developed for developers wasn't what we needed. It was what they thought of based on not having much contact with actual devs.#
What we needed more than anything was a way to be validated by the platform and promoted to users. #
See also: evangelism.#
1994: "Apple should stop looking inward for the answer. Do your software shopping in the developer world. You get there sooner and it costs less."#
Users never heard about our products and struggled with limits in Twitter that our products overcame. #
Eventually I realized there was no point pouring effort into the platform because users would never hear about it.#
Twitter except at the very beginning had almost zero entrepreneurialism in its dna.#
Evan Williams et al did a great job of promoting it at first via SXSW. They had some kind of exclusive marketing deal with them. And then momentum carried the service, not innovation or creativity. #
Then, with no where to go, Elon Musk bailed them out. #
PS: I was a very small shareholder and was bought out by Musk. I didn't want to sell. I wanted Twitter to get with it. #
My apps still work with the Twitter API. I don't think any developer should try to make hay out of the pain of another developer. I wouldn't do that to you, even if I had questions about the foundation of your product. You see this in sports, no one puts down a competitive team just because one of their star players is injured. For good reason -- it can happen to you too and you don't want to see people do that to you. Remember this isn't just about Twitter, it's about developers too.#
Kevin Williams: "Every time Dave Chappelle comes up, Black folks cape for him, and it's weird. Learning when to let people go when they have done harm to a community, even if it isn't the Black community, is a muscle that has to be trained. Hell, folks haven't let R. Kelly go."#
I am pleased to report that news.scripting.com works again.#
I work for the betterment of the network we all share. I'm not trying to get rich or famous, just fix the stuff that's broken. I hope you are doing that too. Keep on truckin.#
When Twitter shuts down client apps everyone says Twitter is bad. But Google deliberately breaks their browser and blames my blog, people don't seem to care, probably because it sounds like Google is being benevolent when they're actually engaging in a huge act of piracy. #
Twitter is getting better folks. You may not like "hard core" but we used to call that "management by shipping" at Living Videotext (my first company). What mattered was delivering features to users. Everything else, bullshit.#
Following up on my GMail problem, a suggestion that I delete all Google-related cookies turned out to be the cure. I once again have access to GMail from my main desktop computer. #
On owning a Tesla#
I have a Tesla Model Y.#
I will no doubt get a new EV in the next couple of years.#
As I bought a new PC every year or so when they were new. #
But I wouldn't miss driving a Tesla now. #
It's like what Harry said to Sally -- #
"When you realize you want to spend the rest of your life with somebody, you want the rest of your life to start as soon as possible."#
That's how I feel about EVs. It's like driving an amusement park ride every time I go out. I deserve this.#
One timeline for each user. Lots of choice, but one timeline. And there has to be a basic agreement on what goes in that timeline. What are the elements of a message. A way to define more types, without going to a standards body, which always crush the individual in favor of the bigco's. Something minimal, orderly, easy to document, lots of example code. Once I get finished with the new FeedLand release, I want to work on this. #
The WordPress user interface must be seen as a platform, a command line, and much higher level writing tools built to run on it. It should be possible to never see the UI of WordPress except for configuration and global settings, much the way you have System Preferences on a Mac. This is why blogging software has languished. The software we use for blogging must fit into the One Timeline paradigm, above.#
When I think of obvious missing tech products, I can't do most of them, because as soon as the idea gained traction as a product it would be taken over by a big company, partly because users prefer that. So a lot of gaps never get filled. That's the lesson from twitter shutting down the clients again. It isn't just twitter, you as an independent developer, can't step into any platform vendor's territory, they will eventually take away your business.#
If Google succeeds at burying the open web, we'll create a new open easy to write for web that Google doesn't own. In my piece about this I suggest we should just use the web since it already does what we will ultimately need. There will be too much creativity locked up behind Google's blackmailing, and it has an easy way to escape, we just need to create a new open web. TBL showed us how to do it, we'll just do it again.#
Debuggers and internal docs#
Developers who don't use debuggers limit the complexity of code they can create.#
If you don't document the inner working of your software you will break things unnecessarily, if you're the one who's working on it.#
If someone else is working on it, they'll beg to be allowed to rewrite your code so they can understand what's going on.#
Gmail shut me down#
Last night while I writing some stuff Gmail said it detected that my computer was sending some kinds of unspecified messages, and they were concerned about it, so they logged me off. I could still check my email on my other systems. I tried to go through the "prove this is you" process, but when it said it had sent a message to my phone, no message arrived. When I got to that place on other systems, the message did arrive on my phone. #
I reviewed my account on Google, everything looks fine. The phone I have hooked it up to is an Android. I have a backup email address connected to my account. #
I changed my password, and re-logged-in on my various other systems, everything worked, but not on my desktop. The problem is -- no confirming message ever appears on my phone, or anywhere else I can read my Google chat messages. #
Their help system is unhelpful, they keep telling me things I already know and have tried. I can live without accessing Gmail from my desktop because oddly while Gmail won't work with Chrome, it works fine with Safari. But there are often links in my emails and when I click on them the pages open in Safari. So this is very disruptive to my workflow. I'd rather still use Chrome on my desktop because everything is set up to work there. #
If you have any ideas please post a note here. Thanks!#
Near the end of the day, still can't get GMail to open on my desktop. I've had it try to send me a security message to my Android phone, without luck. I've quit ever app, removed every extension to Chrome, still no luck. #
A new this.how doc: Rule 1 means no breakage.#
My local network is incredibly slow at Mac-to-Mac file transfers. #
This debt limit bullshit happens only when a Democrat is president.#
One of the pioneers of an idea called zettelkasten was Arno Schmidt, who also happens to be my great uncle. Quite independently, just before he died, I started working on software that makes it work without the index cards, on a personal computer.#
I want an AI to read my web archive and create an auto-zettle for me. It seems Google should already have this. I bet they do. #
Bingeing report. I watched Band of Brothers all the way through. It's good, but I had forgotten how bloody it is. Since I was in that mode, I watched All Quiet on the Western Front on Netflix. Same idea, with 2020's production, a different war, and from the other side. I think the next thing will be They Shall Not Grow Old on HBO. I think an AI could have plotted this path for me. #
FeedLand roadmap#
There's a lot of new stuff here and I don't go into great detail. There is a link to a place to comment or ask questions at the end. #
FeedLand is a feed management system for individuals and groups. So far it's only been offered as a free service on the web. This roadmap explains how that will change.#
The next version will by default not use Twitter for identity. When you sign up you'll specify both a name and an email address. Both must be unique. An email confirms. Click the link and you're sent back with the credentials your browser needs to access your account. The usual dance. #
I do not plan to transition feedland.org to work this way. Recall that we haven't been accepting new members since December 12. Everyone who uses it has a Twitter identity and it's working, and I don't want to screw with that. As long as Twitter is willing to let us use their identity service, we'll keep using it on this server. #
Here's the big news: The new FeedLand server software will be available as open source, so anyone will be able to run a FeedLand instance. It's a Node.js application. Uses MySQL. You may want to hook up an S3 bucket for special features like RSS feeds for Likes. At first email sending will be via Amazon SES, the method I currently use. It will be possible to plug in new drivers to use other email services. #
The open source model is WordPress which uses GPLv2. I want to make it as easy to set up a FeedLand instance as it is to start a new WordPress server. #
People can set up commercial services to host FeedLand for individuals and groups. Every instance is set up to do that. #
It's efficient software. I'm spending about $25 a month to host feedland.org for almost 1000 users. #
The client, which runs in the browser, will not be open source. I don't want to spawn a bunch of incompatible forks. I want FeedLand and its API to be solid. By maintaining control of the client, which btw need not be the only client, I can help be sure that we're starting a developer community with some basic rules about interop. If you want to run FeedLand it has to behave like FeedLand. I've been down this road and watched others go down this road. I think this is the right way to start. #
Typical use-cases: A university department maintaining a FeedLand server to gather new writing from other departments at other universities on topics of interest. Workgroups at companies. It would make a lot of sense for a news org to offer a FeedLand service to readers and their internal news writing staff. #
I don't have dates for any of this. But at this point the path is pretty certain, so I felt it was time to say where FeedLand is going. #
On Friday I posted an earlier version of this roadmap on the FeedLand support repo. I'm sure there will be other changes to this document as we go forward. #
If you have comments or suggestions, you can post them as comments to Friday's post. Comments must conform to our guidelines. #
Today's song: Something So Right. #
I don't use WordPress very much, but recently I had a chance to try out the block editor and my reaction was that I can't imagine writing this way. If you're a writer who uses WordPress, do you use the block editor, if so what do you think of it?#
I have the 2015 MacBook Pro running now. It took a lot of iterating to get the right version of the OS running on the machine and to then restore a Time Machine backup on the machine without having one or more extra accounts on the machine. One thing I will never understand is why Macs are so slow at transferring stuff over a local wifi network. All the advice on the net says you need to use faster wifi, but my wifi is very fast. Here are speed test results communicating with a server in NYC, about 100 miles away. Why is it so much faster to communicate with that server than it is to communicate with a laptop that's in the same building? #
I've started listening to Keith Olbermann's podcast again. It's worth another listen because he's explaining why news is like it is, from the point of view of someone who was an insider for years. #
When I first started using Mastodon late last year, like so many others I had questions about what it is, how it works, what is ActivityPub, does it have an API, where is this going, will the BigCo's try to take it over, stuff like that. In the past when new markets appeared, like the personal computer, desktop publishing, the web -- there were always publications that grew up along with the platform, because there's such demand to know about the latest developments. I contacted my friend Jeff Jarvis, who teaches journalism at CUNY to ask if there was interest in one of their students forming a news site to gather news of the Mastodon world. He liked the idea and now they've taken the next step. They're offering a full scholarship to their "100-day, online certificate program that helps creators establish their own enterprises to serve specific communities/markets." Apply by Feb 3 here. #
Defaulting, explained simply#
Anyone who can understand the rules of baseball or football, who can play poker or Monopoly, can understand the rules of defaulting.#
If the US were to default the same thing would happen to the US that happens to a person if they fail to make a payment on a loan. #
Foreclosure, the lender seizes assets to cover the default. #
Your credit rating goes down and cost of borrowing goes up. #
Today, before default, the US defines what money is. If we create a dollar that's worth a dollar. No other country has this power.#
The world lets us do this for them because a dollar is considered the safest way to store value. That's why the US dollar is the world's dominant reserve currency. #
However if we default, there goes the safety. It's gone, and that kind of trust, built over hundreds of years, once lost will never come back.#
Then we really will be as poor as the oligarchs want us to think we are.#
So, why are the oligarchs who own all our sources of news, willing to let a default actually happen? I think it's a good chance it's due to inbreeding, narcissism, stupidity, selfishness and resentment. They don't believe they will suffer personally if the US turns into an economic basket case. Maybe they won't. For sure, that's all they care about. #
I keep waiting for a news article that doesn't gloss over the real impact of defaulting. If news were run like journalism this would be the horserace of the millenium. A story with a billion angles. We'd all tune in every night to hear how bad it'll be. But they clearly aren't interested in that. They're interested in keeping their jobs. That probably also explains why we're not responding to the climate crisis or the pandemic. #
As many people noticed, the nightly emails didn't go out last night at midnight. The theory they had was that it had something to do with the reported outage at Twitter. Only tangentially. The cause was a linkblog item without a link. The mail-sending software had never encountered such a thing before, and it turns out there was an assumption that all linkblog entries would always have links. So the software lost its mind and went boom. Easy to find, the error message and stack crawl were the last thing in the log. Adding a protection against such a situation was also easy. This is how software gets mature. Sooner or later every weird case shows up and hopefully it will be patched well and documented, so next time it happens the email goes out as it's supposed to. This is all part of the "It's even worse than it appears" philosophy of Scripting News. And, how was this related tangentially to the outage at Twitter? Well that's what the stupid linkblog entry was about. As Maude used to say "God'll get you for that Walter." In this case Walter is me and god is the Software God. #
2000: "Programmers pray to the Software God, Our Lord Murphy, the one who makes sure that anything that can go wrong, does."#
Iconfactory: "Last night at about 7:30pm PST, Twitterrific customers started reporting problems accessing Twitter via the iOS app."#
An RSS OS#
What if you built an operating system around RSS?#
FeedLand is going down this path. #
Feeds are so easy to work with in FeedLand, I want to build all the features with RSS now.#
BTW -- I am not leaving outliners and OPML behind. #
There's a small feature tucked away in the Source namespace that allows an RSS item to be an outline. #
A global network of outlines moving at the speed of RSS.#
Medium gets Mastoicized#
It was smart for Medium to embrace Mastodon.#
It gets people talking about Medium again.#
What comes next? Setting up a Masto-instance is easy. #
Will Substack, who stole Medium's thunder, be next to embrace Mastoicism?#
Maybe Mastodon will become WordPress? Just support Markdown and get rid of the character limit and Masto is almost there. #
I spend a lot of time every day using Mastodon and use WordPress only when i'm testing for compatibility with WordPress. Mastodon is much closer to what I think a centralized blogging host should be.#
I keep wondering how this will evolve. #
Meanwhile I'm working every day on FeedLand. Quietly. 😄#
One thing is for sure -- ActivityPub is complicated.#
It would be a very hard job I imagine to make Medium an ActivityPub node. #
I'm not sure ActivityPub gets you all that much, btw.#
I'm still betting heavy on RSS, just enough syndication.#
Just some random end-of-day thoughts.#
Let RSS be RSS#
TL;DR: RSS is how we move documents around the web. That it works so poorly is because the big social media companies want it that way. We need products and services with big installed bases to serve as counterweights and help pull RSS out of corp-tech control.#
How I got there...#
Yesterday I wrote something provocative about WordPress. #
HiMY SYeD read it, and commented, on Mastodon: #
What Mastodon is to ActivityPub...#
WordPress is to RSS.#
My first response was:#
Interesting analogy.#
Something to think about.#
After pondering a bit...#
There are other products that could claim ownership of RSS -- like Google Reader, which still controls the market almost 10 years after its demise.#
And Twitter, by not supporting RSS is also a big definer of RSS, in a negative way.#
I think we'll be on solid ground once RSS defines itself and the products get out of the way.#
And I think that's the key point#
RSS has never had a chance to be itself. #
Right from the start, all kinds of people and companies sought to own it. No one succeeded at that, but each of them diluted it, added confusion, took some of its power away and gave back nothing in return. Very typical approach of tech to open tech they didn't create. #
Until we can get RSS leading, as itself, and not being carved up and controlled, we won't really have a good way of moving documents around the web, which is what RSS is for, btw, imho. #
All the usual disclaimers apply.#
PS: I hope people at WordPress read this. Right now they're in the best position to help RSS if they're inclined to do so. There aren't many companies I would credit with possibly wanting to do that. Slack was one, and Automattic is another. I still have to write the howto doc for what it would take for that to happen, subject to discussion of course. #
My new old Mac laptop#
I got my 2015 MacBook Pro. Two problems to start.#
It came with Mojave installed. I got this machine because the software I want to use specifically does not run on Mojave. I didn't realize this until after I had copied a huge number of files to the machine via Time Machine backup. I will have to do this again.#
Today they're selling the same $600 machine on Amazon for $389. I wish I had an idea what the price range was. I could have waited a few days. I thought $600 was a good deal, but it's a ripoff.#
Anyway, so I thought this morning I'll just copy a High Sierra installer to the hard drive and run it, but Mojave won't run it. The app is there, but it's grayed out. Who knows why. Presumably it won't run on this machine. #
Next up I went into Recovery mode to install the OS that's in ROM, it was El Capitan. As the machine is rebooting after install it freezes with a totally cryptic error message. Here's a photo. #
A not very encouraging error message from my new MacBook.#
After restarting, the message is gone. I found I couldn't restore from a Time Machine backup because it comes from a machine more advanced than El Capitan. So I then did the minimum to get the machine to boot up, went into the System Preferences app, turned on file sharing and copied an install app for High Sierra. It's running it now. #
Update: After a lot more bullshit work, I think I'm pretty close to having the laptop working the way I need it to. If so, I will be able to travel and still keep up with my development projects. #
Jeff Beck Group: I Ain't Superstitious. #
WordPress is in the way. I've avoided saying this because I like Matt, but at some point, it being in the way has to win out. And since when do I not say something because I like the person who made it. It's in the way. I would like to see it move out of the way. I will write a piece soon explaining how they could, and should, do that. #
Today I got the FSD beta for my Model Y, and of course I tried it out, very carefully. And I can validate that it did try to do the worst thing at the worst possible moment. Luckily I have always been a nervous passenger and I wasn't about to trust a bot this much. I intervened at the first sign of trouble.#
Even though I have far fewer followers on Masto, I get much more engagement there than on Twitter. Has it been productive? Hmmm, not sure about that. But I have hope that it will result in collaboration.#
2015: "In order for the open web to flourish again, there have to be tools and services that are open that are more useful than the ones we use in the silos."#
I watched two movies up for Oscars, and found little to recommend either. The Banshees movie is supposed to be a comedy of sorts but it was so painful to watch, not much room for laughter. And I guess I didn't really watch the Fableman movie, walked out after the opening scene. Spielberg's movies have declined into self-obsession. He thinks we're so freaking stupid and he's so freaking wonderful. Come on man do another Jaws. Now that was a movie. One thing I got from Banshees is that the Irish say fecking and I wonder if it means what I think it means. Anyway, I'm looking for something great to watch, and have fallen back to re-watching Band of Brothers. It's been so long since I last watched it that it seems pretty fresh. I long for that kind of story-telling, but they don't seem to make shows like that these days.#
James Corbett: Fecking is used a bit like frack in Battlestar Galactica, with a more limited range of application. And isn't really used in real life the way it is in movie versions of Ireland.#
Can't get Still Crazy After All These Years out of my mind. Such a sad song. Written by Simon when he was 34, but it seems written from the perspective of a person my own age. Best line: "Longing my life away."#
I still love my Tesla#
I bought my Tesla before people got all crabby about it. #
And no just because you don't like Elon Musk I'm not going to walk away from a $70K purchase of a product that I absolutely adore. #
Every time I drive my car I feel like it's a huge privilege to drive it. #
I know of no other product that makes me feel that way.#
And yes I think Musk is an asshole too and a danger to our civilization.#
But then I actually warned you all that someone like Musk could buy Twitter, and you didn't listen.#
How you know you're gaslighting#
You're gaslighting when you tell another person how they feel about something. #
If I see myself doing that, I hit the brakes hard, and go for a walk and think about it. And over time I've trained myself not to believe I know how other people are feeling. #
Esp people who I only know from reading their emails or blog posts.#
A sad truth#
A sad truth for all the holier-than-thous is that we all use products made by evil companies all the fecking time.#
I bet you bought something made by Exxon in the last week. #
They might have created a name of a company that makes you think you're not buying from an evil corp, but that's just marketing. #
If you think you're fighting back against The Man by giving grief to a fellow human being, hmm, no.#
Please have a nice day. 😄 #
2018: I have a new motto -- if the world is going to end, I might as well have some nice headphones.#
I'd like to have a personal social net that's coffee house size. Play a few tunes, have a couple of drinks, tell a few stories, and come back tomorrow and the night after that. There's a bouncer at the door so if you come in all nasty and shit, we kick your ass out.#
The thing that makes a movie great is suspension of disbelief. If you get into the story, the movie is good. If you are still in the story the next day, it's great.#
I can't get too worked up over the bomb throwers running committees in Congress, considering we had a bomb thrower in the White House for four years, this seems relatively easy. #
His mom must be proud#
asshole. noun, vulgar. a stupid, mean, or contemptible person. #
FeedLand: Change in how "Add a few feeds" works. #
Same way I want news to be unbundled, I dont care which service a show or series is on. I pay a lot for the services I subscribe to, but there are still shows I want to see that I can't and some services I pay for that I almost never watch shows on.#
Programming is rough when you were prepared to work on hooking up the sound system in the penthouse on the 173rd floor, and instead you have to work in the basement where the boiler is spewing all kinds of crap, but you're not clear if it was always doing this and you're just seeing it now because now you're listening. #
In my first job out of college I was in a similar situation and I thought to myself they shouldn't put programmers in offices on the 39th floor of the Empire State Building with windows that open. I found that thought both disturbing and comforting. I guess I figured out the problem, because I'm still here 47 years later. 💥 #
Developers: If you ever want to know how FeedLand parses a feed, you can do it with the Feeder app. Here's a link that shows you what FeedLand gets when it reads the Laughing Squid feed. #
Re yesterday's braintrust query, I may be getting closer to understanding where the ER_CON_COUNT_ERROR errors are coming from. #
Likes considered harmful?#
On Micro.blog there's a debate about whether Likes are harmful. #
Some of my observations from the thread, all in favor of Likes. #
The Like button on various systems is a way of acknowledging that you saw something and thought it was noteworthy. Since micro.blog doesn't have a Like button, what's the proper way of saying that? #
As a person who writes posts that get zero response here (and not on other systems) I wish people had a less-committed way of saying they saw something I wrote. That would be a little bit of feedback where currently I get none.#
If I see something on Micro.blog that I would Like on another system, I don't comment, I just do nothing, not because I'm bashful or overly quiet, rather because this is a language, and a comment has different meaning from a Like. #
In real life there's all kinds of non-verbal communication. you can nod your head, smile. We've come up with a similar language online, I don't think there's any more meaning in this. We're being human. Not a huge surprise.#
Here's a parallel. My TV doesn't have a brightness control. It's an expensive screen, and I imagine that the designers of the system figured "we have a computer in this that knows how to automatically adjust brightness based on room light." But it doesn't work properly, I don't know what the problem is, but there are times the TV is useless because you just can't see what's on the screen, because the lack of a brightness control. Maybe if TVs never had brightness controls I wouldn't miss it, but they do in my mind, require one. Same thing here. Like is something that's part of the language of social media. To try to deny that at this stage is kind of pointless imho.#
I've been in this position myself in the past, trying to buck a larger trend, and the pressure really does get you to support the common way, the sooner you do it, the sooner the pain goes away. #
BTW, "considered harmful" is borrowed from a famous letter by Edsger Dijkstra entitled "goto statement considered harmful."#
We have Likes in FeedLand.#
When you Like something in FeedLand it is added to two feeds:#
A Like feed for all FeedLand users.#
A Like feed for the person who did the Like.#
This is where my personal Likes feed is. #
And the feed for all users of my FeedLand. #
I bought a 2015 Mac laptop, used, for $600 via Amazon. I need it because I use Frontier as an integral part of my development process, all my build scripts run in Frontier, and while they could be converted to JavaScript, they'd be more complicated and it's a lot of work, and it's worth spending $600 to save all that work. Someday I want to do it because I'd like to use Drummer and its built-in scripting language for the same purpose. I learned a lot about why people choose older Macs. It reminds me of pre-CBS Fender guitars, which still sell at a premium, even though Fender sold to CBS in 1965. Maybe Macs peaked? Anyway -- I should get the "new" computer next week, and I'll let you know how it goes. BTW, my main desktop, the one I'm writing this post on, is a 2017 iMac Pro. I love the machine. I hope it works forever.#
Braintrust query: I've got a problem with an app that uses the MySql package in Node running on a Mac. I'm getting a ER_CON_COUNT_ERROR pretty close to startup. I'm taking the message at face value but it's hard for me to believe it's true that my app is making too many connections because I just doubled the max connections from 100 to 200 and still got the error on the very first query it tried to make. The problem goes away when I reboot the machine, but only for a little while, eventually it starts doing this again. This is in an app that has been running without these kinds of errors for months. I haven't tried running the app yet on another machine, but I'm beginning to think this is a not-resolvable issue. I thought I'd pass it by the SQL gurus that read this blog on how to debug this.#
Ads on Twitter#
The ads on Twitter are better.#
Already today I've considered buying something an ad was selling.#
I saw an HBO ad for a movie I just watched and loved, it reminded me that I loved it. Excellent brand advertising.#
And one taught me something I won't forget.#
2008: Perfectly targeted advertising is just information.#
A MetaWeblog API ==> ActivityPub gateway in Node.js would be just the thing. #
Winning Time#
I really like Winning Time: The Rise of the Lakers Dynasty. #
Almost finished with the ten episodes of Season 1 on HBO Max. #
I like it for a bunch of reasons. #
I like John C. Reilly who plays Jerry Buss the new owner of the Lakers when the season starts. He also btw is really good at audiobooks. I'd listen to any book he narrates. He's Mr Affability. And perfectly cast for the role of Buss. #
I like the style, it's a little weird at first, but it's clever, and they break the fourth wall a few times, to good effect. #
I like that the style reminds me of one of my favorite movies, Any Given Sunday, also a sports movie.#
I like sports movies/shows. And I especially like basketball. It's my favorite sport.#
I like the story how Pat Reilly became the coach of the Lakers and led them to dynasty. #
I like how Kareem became friends with Magic. #
I like that the guy who played Spencer Haywood is the same actor who played Avon Barksdale in The Wire. #
I like that Sally Field plays Jerry Buss's mother! She's awesome as always.#
I like all the actors and roles. That's unusual. With such a huge cast you'd think there would be one impossible to watch character, but no, they're all interesting. #
I like that they will have lots of potential seasons, next up Phil Jackson and how he became the next dynastic coach of the Lakers. And don't forget Kobe and Shaq who probably won't show up until Season 3 or 4. #
I gave it the highest rating on Bingeworthy. It didn't get great reviews. When I finish it, I'll read some of them to see what I missed. ;-)#
The New York Times#
TRUMP INCITES MOB, 1/7/2021.#
We still need a simple user-facing storage system that apps can be given access to via OAuth. All the hard stuff like assigning a domain is done via the user interface. Cost per month about what Dropbox costs.#
Tantek is right. Read every word in this piece. The only thing I'd change is calling this "IndieWeb" -- which is imho redundant. It's like saying "WetRain." Everything he says that applies to "Indie" applies to the web as a whole. Otherwise, right on.#
2017: "We're worse than stuck. Twitter hasn't moved in a decade. Google owned then abandoned RSS readers. Facebook smothered linking."#
Today we remember the January 6, 2021 attack on the US Capitol, as part of an attempt to overthrow the government of the United States. #
Soviet Union#
Make Way for Corn, 1955.#


Neat to see someone from up north on the boards (I'm sure there are more, though). I am from the UP, which is RIGHT by you.
oh cool where in the up? is it the city im thinking of?
I live in Shawano but I have family in Crivitz and visit often. I am a crafter and I would love to participate.
I know this thread is way old and my reply might go unread, but I'm right across the river from you (ya know, that city that kicks your butts at the M&M game every year =P).


text:
Eurosceptycyzm brytyjski – uwarunkowana historycznie, społecznie i gospodarczo decyzja Wielkiej Brytanii o nieprzystąpieniu do unii walutowej.

Traktat z Maastricht (umowa międzynarodowa parafowana 10 grudnia 1991 r., podpisana 7 lutego 1992 r. w Maastricht w Holandii) określił kryteria konwergencji (wskaźniki ekonomiczne) które należy spełnić aby zostać zakwalifikowanym do unii walutowej:
 dług publiczny nie powinien być większy niż wartość referencyjna – 60% PKB,
 deficyt budżetowy mierzony w roku poprzedzającym ocenę w cenach rynkowych nie powinien przekraczać 3% PKB danego kraju,
 średnia stopa inflacji w ciągu roku poprzedzającego akcesję do UGW nie powinna przekroczyć 1,5 punktu procentowego od pułapu wyznaczonego przez średni poziom inflacji obliczony dla trzech państw o najniższej inflacji w Unii Europejskiej,
 długoterminowe stopy procentowe nie powinny przekraczać więcej niż o 2 punkty proc. odnośnie do stopy procentowej występującej w trzech państwach członkowskich UE, które odnotowały najniższą stopę inflacji,
 waluta danego państwa członkowskiego powinna uczestniczyć w ERM i pozostawać w ramach dopuszczalnego przedziału wahań w ciągu dwóch lat.

Wielka Brytania wypełniła kryteria traktatu z Maastricht, np. w 1998 r. czwarty rok z rzędu spełniła kryterium dotyczące długu publicznego (60% PKB) z którym nie radziły sobie niektóre państwa będące już w unii walutowej. Nie było zatem formalnych przeszkód aby przystąpić do unii walutowej, jednak politycy brytyjscy w obliczu sprzeciwu społeczeństwa, a także w obawie przed negatywnymi skutkami dla gospodarki, odrzucili tę propozycję dzięki klauzuli opt-out, dającej Wielkiej Brytanii możliwość samodzielnego podjęcia decyzji co do uczestnictwa w unii gospodarczej i walutowej.

Brytyjczycy mieli trudności polityczne i psychologiczne z dostosowaniem się do systemu, którego sami nie tworzyli. Jak wynika z badań, przeciętny mieszkaniec wysp w pierwszej kolejności czuje się przede wszystkim "Wyspiarzem" a dopiero później Europejczykiem. Ma to swoje uzasadnienie w położeniu geograficznym, ale również, a może głównie w historii Wielkiej Brytanii, która to przede wszystkim koncentrowała się na własnych interesach a sprawy na kontynencie europejskim nie zawsze były w centrum jej politycznych zainteresowań, np. w XIX w. Brytyjczycy stworzyli imperium kolonialne podporządkowane i realizujące mocarstwowe interesy Wielkiej Brytanii. Po II wojnie światowej Brytyjczycy przestali być głównym mocarstwem decydującym o losach świata, a wstąpienie do struktur europejskich wydawało się nieuchronne z politycznego punktu widzenia. Przystępując do Wspólnot Europejskich byli pełni obaw o swoją niezależność w polityce wewnętrznej, jak i zewnętrznej, czego wyrazem od samego początku uczestnictwa we wspólnotach były działania konfederacyjne (m.in. odrzucenie członkostwa w EWWiS, wspólnej polityki obronnej, ochrona własnych strategicznych gałęzi gospodarki, a także sprzeciw wobec wszelkich działań federacyjnych zmierzających do utworzenia instytucji ponadnarodowych) które chroniły strategiczne interesy Wielkiej Brytanii i zapewniały jej niezależność w polityce międzynarodowej.

Brytyjczycy odrzucili euro również z takich powodów, jak przywiązanie do własnej waluty i tradycji. Wyraźnie wskazywały na to różnego rodzaju ankiety i sondaże, gdzie przeciętni Brytyjczycy, jak i zajmujący dyrektorskie stanowiska, byli zdecydowanie przeciwni wspólnej walucie, twierdząc że osłabiłoby to brytyjską gospodarkę.

Kolejnym czynnikiem wzmacniającym eurosceptycyzm były słabe wyniki gospodarcze krajów które przyjęły euro i towarzyszący im wzrost cen większości produktów.

Brytyjscy eurosceptycy z zadowoleniem przyjęli odrzucenie przez Szwedów wspólnej europejskiej waluty w referendum, gdyż obawiano się izolacji Wielkiej Brytanii w przypadku gdyby pozostała jedynym krajem, który nie przyjął wspólnej waluty.

Większość Brytyjczyków sprzeciwia się nie tylko nowej walucie, ale nawet próbie zorganizowania takiego referendum.

Zobacz też
 Czarna środa

Polityka Unii Europejskiej
Polityka Wielkiej Brytanii
Brytyjski

redpajama_set_name: RedPajamaWikipedia


text:
Q: RecycleView Wont update I'm still new with both Java and android
My problem is that the recycleview only gets updated and adds the new added tag if I closed the app and run it again. How can I get the app to update the recycle view instantly to display the new tags.
java code
package com.deitel.favoritesites;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.DialogPreference;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TextInputLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Adapter;
import android.widget.EditText;
import android.widget.TextView;

import android.view.Menu;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MainActivity extends AppCompatActivity {
private static final String SITES="Sites";

private EditText urlEditText; //where user enters the URL
private EditText tagEditText;
private FloatingActionButton saveFloatingActionButton;
private SharedPreferences savedSites;
private List<String> tags;
private SitesAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    urlEditText = ((TextInputLayout) findViewById(
            R.id.URLTextInputLayout)).getEditText();

    urlEditText.addTextChangedListener(textWatcher);
    tagEditText=((TextInputLayout)findViewById(R.id.tagTextInputLayout)).getEditText();
    tagEditText.addTextChangedListener(textWatcher);

    //get the shared prefrences containing the user saved URLs
    savedSites = getSharedPreferences(SITES, MODE_PRIVATE);

    //get the shared tags in an ArrayList then sort them
    tags = new ArrayList<>(savedSites.getAll().keySet());
    Collections.sort(tags, String.CASE_INSENSITIVE_ORDER);

    //get reference to the recycle to configure it
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

    //use a linerlayout to display items in  a vertical list
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    //create recyclerView.Adopter to bind tags to the RecyclerView
    adapter = new SitesAdapter(tags, itemClickListener, itemLongClickListener);
    recyclerView.setAdapter(adapter);

    recyclerView.addItemDecoration(new ItemDivider(this));

    //register listner to save a new or edit search
    saveFloatingActionButton = (FloatingActionButton) findViewById(R.id.fab);
    saveFloatingActionButton.setOnClickListener(saveButtonListener);
    updateSaveFAB();
}
private final TextWatcher textWatcher= new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        updateSaveFAB();
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
};
//show or hide the saveFloatingActionButton
private void updateSaveFAB() {
    //check if there is input in both EditButton
    if (urlEditText.getText().toString().isEmpty() || tagEditText.getText().toString().isEmpty())
        saveFloatingActionButton.hide();
    else
        saveFloatingActionButton.show();
}
//saveButtonListener save a tag query pair into sharedPrefrece
private final OnClickListener saveButtonListener=new OnClickListener() {
    @Override
    public void onClick(View view) {
        String query = urlEditText.getText().toString();
        String tag = tagEditText.getText().toString();
        if (!query.isEmpty() && !tag.isEmpty()) {
            //hide the virtual keyboard
            ((InputMethodManager) getSystemService(
                    Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(view.getWindowToken(),0);
            addTaggedSites(tag, query);//add/update the search
            urlEditText.setText("");//Clear queryEditText
            tagEditText.setText("");//clear tagEditText
            urlEditText.requestFocus();
        }
    }
};
//add new search to file then refresh all button
private void addTaggedSites(String tag, String query) {
    //get a sharedprefrence editor to store new tag/query pair
    SharedPreferences.Editor preferencesEditor = savedSites.edit();
    preferencesEditor.putString(tag, query);
    preferencesEditor.apply();

    //if tag is new> add and sort tags then display update
    if (!tag.contains(tag)) {
        tags.add(tag);
        Collections.sort(tags, String.CASE_INSENSITIVE_ORDER);
        adapter.notifyDataSetChanged();
    }
}
//itemClickListener launches web broswer to display search results
private final OnClickListener itemClickListener=new OnClickListener() {
    @Override
    public void onClick(View view) {
        //get query string and create a URL represeting the search
        String tag= ((TextView) view).getText().toString();
        String urlString=getString(R.string.search_URL)+Uri.encode(savedSites.getString(tag,""),"UTF-8");

        //create an intent to lanuch a web broswer

        Intent webIntent= new Intent(Intent.ACTION_VIEW,Uri.parse(urlString));
        startActivity(webIntent);
    }
};
//itemLongClickListener displays a dialog allowing the user to share edit or delete a saved search
private final OnLongClickListener itemLongClickListener= new OnLongClickListener() {
    @Override
    public boolean onLongClick(View view) {
        //get the tag that the user long touched
        final String tag = ((TextView) view).getText().toString();

        //creatw a new AlertDialog
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

        //set the alertDialog title
        builder.setTitle(getString(R.string.share_edit_delete_title, tag));

        //set list of items to display and create event handler
        builder.setItems(R.array.dialog_items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                            case 0://share
                                shareSites(tag);
                                break;
                            case 1://edit
                                tagEditText.setText(tag);
                                urlEditText.setText(savedSites.getString(tag, ""));
                                break;
                            case 2: //delete
                                deleteSites(tag);
                                break;
                        }
                    }
                }
        );
        //set the alertDialog negetive button
        builder.setNegativeButton(getString(R.string.cancel), null);
        builder.create().show();//display the alert dialog
        return true;
    }
};
//allow user to choose app for sharing URL of a saved search
private void shareSites(String tag){
    //create the URL representing the search
    String urlString= getString(R.string.search_URL)+Uri.encode(savedSites.getString(tag, ""), "UTF-8");

    //create an intent to share urlString
    Intent shareIntent= new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_subject));
    shareIntent.putExtra(Intent.EXTRA_TEXT,getString(R.string.share_message,urlString));
    shareIntent.setType("text/plain");

    //display app that can share plain text
    startActivity(Intent.createChooser(shareIntent,getString(R.string.share_search)));
}

//delete search after user confirms
private void deleteSites(final String tag){
    //create a new AlertDialog and set its message
    AlertDialog.Builder confirmBuilder= new AlertDialog.Builder(this);
    confirmBuilder.setMessage(getString(R.string.confirm_message, tag));
    //cancel button configration
    confirmBuilder.setNegativeButton(getString(R.string.cancel), null);
    //positive DELETE button
    confirmBuilder.setPositiveButton(getString(R.string.delete),new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog , int id){
                    tags.remove(tag);

                    //remove sharedPerefrences.Editor from Sharedprefrences
                    SharedPreferences.Editor preferenceEditor= savedSites.edit();
                    preferenceEditor.remove(tag);
                    preferenceEditor.apply();

                    adapter.notifyDataSetChanged();
                }
            }
    );
    confirmBuilder.create().show();
    }
  }

This is my adopter code
 package com.deitel.favoritesites;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

public class SitesAdapter extends RecyclerView.Adapter<SitesAdapter.ViewHolder> {
private final View.OnClickListener clickListener;
private final View.OnLongClickListener longClickListener;

private final List<String> tags;

public SitesAdapter(List<String> tags, View.OnClickListener clickListener, View.OnLongClickListener longClickListener) {
    this.tags = tags;
    this.clickListener = clickListener;
    this.longClickListener = longClickListener;
}

public static class ViewHolder extends RecyclerView.ViewHolder {
    public final TextView textView;

    public ViewHolder(View itemView, View.OnClickListener clickListener, View.OnLongClickListener longClickListener) {
        super(itemView);
        textView = (TextView) itemView.findViewById(R.id.textView);

        itemView.setOnClickListener(clickListener);
        itemView.setOnLongClickListener(longClickListener);
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
    return (new ViewHolder(view, clickListener, longClickListener));

}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.textView.setText(tags.get(position));
}

@Override
public int getItemCount() {
    return tags.size();
}
}

A: change your code to....
//add new search to file then refresh all button
private void addTaggedSites(String tag, String query) {
    //get a sharedprefrence editor to store new tag/query pair
    SharedPreferences.Editor preferencesEditor = savedSites.edit();
    preferencesEditor.putString(tag, query);
    preferencesEditor.apply();

    //if tag is new> add and sort tags then display update
    if (!this.tag.contains(tag)) {
        this.tags.add(tag);
        Collections.sort(tags, String.CASE_INSENSITIVE_ORDER);
        adapter.notifyDataSetChanged();
    }
}

A: Change your code into this
if (!tags.contains(tag)) {
        tags.add(tag);
        Collections.sort(tags, String.CASE_INSENSITIVE_ORDER);
        adapter.notifyDataSetChanged();
    }

Because, this below condition is always false
if(!tag.contains(tag))

Its because you are checking if a value contains in that value itself. SO it will be always true.
If you are checking the tag exist in the List<String> tags you should do like this below.
if(!tags.contains(tag))

A: This may help:

*

*create a setter method within your adapter allowing you to set/update the adapter ArrayList.

*Whenever you make a change to your list i.e. remove Tag, pass this updated list to your adapter via your new setter method.

*call notifyDataSetChanged().

redpajama_set_name: RedPajamaStackExchange


text:
East Fife Community Football Club Powered by
East Fife Under 20s - Squad Announcement & Trial Match
Following the announcement that we will be running an under 20s side this year, we have some exciting news for young players in the area.
Firstly, we would like to welcome our first signings for the new squad, all of whom have featured in our recent preseason friendlies:
Jamie Allan, Nathan Laird, Adam Davidson, Jake Horsburgh, Rory Cosgrove and Charles Marr.
All six of these players are eligible to play at under 20 level for at least two years but their involvement with the first team squad so soon is a credit to both themselves and the work that has been carried out within East Fife Community Football Club over the past few years.
Whilst our fans can now put names to faces, we are also keen extend the opportunity to join this exciting pathway to talented young players from the local area. We are holding a trial a match on Saturday 13th July at 10am at the Locality Hub Bayview Stadium and are inviting applications from those born on or after January 1st 2000. To apply for the match, please email a copy of your footballing CV to directoroffootball@efcfc.co.uk.
East Fife Community Football Club
East Fife Football Club
© My Club Hub

redpajama_set_name: RedPajamaCommonCrawl


text:
Omar slams Northern Command chief for 'great year' remark
By Precious Kashmir on 17/01/2019 Comments Off on Omar slams Northern Command chief for 'great year' remark
Srinagar, Jan 17: Former Jammu and Kashmir chief minister and National Conference (NC) vice-president Omar Abdullah on Thursday lashed out at the Northern Command Chief Lt General Ranbir Singh, on his "great year for security forces" remark.
Taking to Twitter, Abdullah wrote, the compulsion of killing militants shouldn't be treated as a cause for celebration.
"I beg to differ, a great year would be one in which no young man would join militancy, no militant would be killed & no security personnel would lose their lives in encounters. The compulsion of killing militants shouldn't be treated as a cause for celebration," Abdullah wrote.
Abdullah was reacting to a statement by Gen Singh on the sidelines of the inauguration of the Kalai bridge in Poonch district. Gen Singh said 2018 had been a great year for the security forces as they had managed to kill 250 militants.
"2018 has been a great year for the security forces, more than 250 militants were killed, 54 were caught alive, and 4 surrendered to the forces," he said.
Omar slams Northern Command chief for 'great year' remark added by Precious Kashmir on 17/01/2019


Covenant High School student Avery Chauncey Bevin recently traveled to Olympia to serve as a page in the state House of Representatives. He was sponsored by 26th District Rep. Jesse Young.
Chauncey is the son of Jolin and Avery Bevin and lives in Gig Harbor. He is a hard-working student. He enjoys biking and sprint flat water kayaking, of which he has won national medals.
Chauncey's page duties included learning to navigate the many buildings around the Capitol, delivering messages and documents to legislators and staff, and assisting on the House floor. A few hours a day, he attended page school to learn and understand the operations and actions of the Legislature. By week's end, he had the opportunity to write a bill for a mock committee hearing in front of his fellow pages.


text:
Az Éj anyánk Kurt Vonnegut amerikai író regénye, amely először 1961-ben jelent meg. A könyv címe Goethe Faustjából származik.
A könyv egy amerikainak, Howard W. Campbellnek a kitalált memoárja, aki 11 éves korában, 1923-ban költözött Németországba, nem sokkal az első világháború után. Később Campbell közismert drámaíró és náci propagandista lett. Ő maga a regény narrátora. A történet azzal kezdődik, hogy Campbell éppen visszaemlékezéseit írja egy izraeli börtönben, ahol háborús bűntettei miatt ül, és vár az ítéletre. Howard W. Campbell Vonnegut egy másik regényében, Az ötös számú vágóhídban is megjelenik.

Cselekmény

Németország a második világháború előtt
Hitler 1933-as hatalomra jutása után, a náci szervezkedés alatt, Campbell úgy dönt, hogy Németországban marad, annak ellenére, hogy a szülei elhagyják az országot. Továbbra is színdarabokat ír, olyan társaságokban, ahol a tagok a náci párt tagjai. Mivel kellően árja szülőktől származik, Campbell névlegesen a nácikhoz csatlakozik. Politikailag valójában egyáltalán nem motivált, csak a művészete és Helga, a felesége érdekli, aki minden színdarabjában szerepet kap.
A könyv első része azzal ér véget, hogy miközben Campbell a berlini állatkert egyik padján üldögél, megkörnyékezi egy ügynök. Frank Wirtanen, az USA háborús intézetétől azt kéri tőle, hogy kémkedjen az amerikaiaknak az elkövetkezendő háború alatt. Campbell rögtön visszautasítja az ajánlatot, ám Wirtanen ragaszkodik ahhoz, hogy legalább gondolja végig, majd közli, hogy Campbell válaszát onnan fogják tudni, hogy miként cselekszik, amikor az USA és Németország között kitör a háború.

Németország a második világháborúban és utána
Amint elkezdődik a második világháború, Cambell egyre feljebb jut a ranglétrán Joseph Goebbels propagandaszervezetében, amíg ő nem lesz a "hangja" azoknak a műsoroknak, amelyekben amerikaiakat győznek meg arról, hogy szimpatizáljanak a nácikkal. Így a kémkedés a következőképpen zajlik: amikor az üzeneteket közvetíti Campbell, akkor kódolt jeleket is küld köhögéssel, hosszú szünetekkel stb., az Stratégiai Szolgáltatások Hivatalának, a CIA elődjének. Erről a németeknek fogalmuk sincsen. Eközben Campbell (egy kivételtől eltekintve) soha nem tudja, hogy mi áll az üzenetben.
Nagyjából a háború felénél Helga a keleti frontra utazik, hogy ott szórakoztassa a német katonákat. Campbell teljesen magába zuhan, amikor meghallja, hogy az állomást, ahol a felesége volt, lerohanták, és valószínűleg meghalt. (Később Wirtanen elmondja Campbellnek, hogy a felesége valószínűleg meghalt, és erről már tudósított is Campbell a titkos üzenetekben.) Pont mielőtt a vörös hadsereg megszállná Berlint, Campbell meglátogatja Helga szüleit még utoljára. Apósa, a berlini rendőrfőkapitány elmondja Campbellnek, hogy sohasem kedvelte őt, és mindig is azt gondolta, hogy ő egy kém. Ugyanakkor kémkedési tevékenysége ellenére jobban szolgálta a náci Németországot, mint a másik oldalt valaha is. Ekkor találkozik Campbell Helga húgával, Resivel, és ennek az emléke még évek múltán is aktívan él benne.
Végül az amerikai erők elfogják Campbellt, de Wirtanen segítségével sikerül New Yorkba emigrálnia, a visszaemlékezések következő helyszínére.

New York
New Yorkban Campbell magányos, visszafogott életet él. Egyedül felesége emléke tartja életben, és a kíváncsiság, hogy mi lesz majd a saját sorsa. Az egyetlen barátja George Kraft, hasonlóan magányos szomszédja, aki éppenséggel egy szovjet titkos ügynök, és megpróbálja Campbellt Moszkvába csalni azzal, hogy nyilvánosság elé tárja azt a tényt, hogy Campbell csak a második világháború vége óta él csak New Yorkban.
Egy fehér felsőbbrendűségi szervezet tudtára jut, hogy Amerikában van Campbell, és őt teszik meg szónoknak, hogy beszéljen az újoncoknak arról, hogy mi az "igazi amerikai hazafiság". A szervezet vezetője, egy Lionel Jones nevű fogorvos egyszer csak felbukkan Campbell háza előtt egy nővel, aki azt állítja magáról, hogy ő Helga, életben van, és még mindig ugyanúgy szereti. Campbell életkedve évek óta először tér vissza, és később is megmarad annak ellenére, hogy "Helgáról" kiderül, hogy ő valójában Resi, Helga húga. Együtt azt tervezik, hogy Mexikóvárosba szöknek Jones egyik fasiszta gyűlése után.
Ekkor megjelenik Wirtanen, hogy figyelmeztesse Campbellt Kraft tervéről, és arról, hogy Resi is benne van. Campbel megtört szívvel elhatározza, hogy leleplezi kettőjüket. Resi viszont azt állítja, hogy tényleg szereti őt. Az FBI razziát tart a gyűlésen és elkapják Campbellt, Resi pedig ciánkapszulával öngyilkosságot követ el. Wirtanen ismételten beveti kapcsolatait, hogy kiszabadítsa. Mégis, amikor Campbell hazatér, rájön, hogy nincs értelme az életének többé, így feladja magát az izraeli hatóságoknál, hogy ott ítélkezzenek rajta.

Izrael
A könyv úgy ér véget, ahogy elkezdődött, Campbell ül a cellájában, és vár az ítéletre. Véletlenül találkozik Adolf Eichmann-nal, és tanácsokat ad neki, hogyan írja meg az önéletrajzát. Ezután átszállítják egy másik cellába, ahol tovább várja az ítélethirdetést. A könyv legvégén Campbell csatol egy levelet a könyvhöz. A levelet Wirtanen írta, hogy biztosítsa Campbellt arról, hogy a második világháború idején amerikai kémként tevékenykedett, és Wirtanen tanúskodni is fog mellette. Ahelyett, hogy megkönnyebbülne, Campbell "hányingert" érez már a szabadság gondolatától is, mivel már semmit sem tudna élvezni az életben. Az utolsó sorokban leírja, hogy fel fogja akasztani magát, nem az emberiség elleni bűntetteiért, hanem a saját magával szemben elkövetettekért.

"A történet tanulsága"
"Ez az egyetlen történetem, amelynek tudom a tanulságát. Nem gondolom, hogy valami világraszóló nagy tanulság, de legalább ennek tudom…

". Vonnegut "így megy ez" nemtörődömsége már a bevezetőben előkerül. A történet tanulsága később és folyamatosan megjelenik az Éj anyánkban. Vonnegut periodikusan elmondja a következő "tanulságot": "Azok vagyunk, aminek kiadjuk magunkat, így hát vigyáznunk kell, minek adjuk ki magunkat." Vonnegut még a következő megállapítást fűzi ehhez a tanulsághoz: "aki meghal, az halott." A szerző ezután szünetet tart, és a következőt írja: "És egy újabb tanulság jut eszembe: Szeretkezz, amikor lehet. Jót tesz az embernek."

Irodalmi eszköztár
A regény során Vonnegut a metafikció eszközét használja ahhoz, hogy magára a szövegre hívja fel a figyelmet. Az író történelmi dokumentumként kezeli a regényt. A bevezetőben Vonnegut Campbell írásairól azt nyilatkozza, hogy egy meglévő kéziratot ír át a nagyközönség számára.

A metafikció ugyanakkor alkalmazható Vonnegut karakterjellemzésére és karakterfejlődésére. Szemben az általános "mutasd, ne mondd" szabállyal, a szerző majdnem a mindentudó szemszögéből írja le szereplőit, például "A neve Andor Gutman. Andor egy álmodozó, nem túl eszes észt zsidó. Két évet töltött az auschwitzi koncentrációs táborban. A saját tohonya jelleméből adódóan, majdnem füstfelhőként szállt fel az ottani krematóriumból."
Míg az efféle dekonstrukcionalizmus kevésbé jellemző az Éj anyánkban, addig többi prózai művében, sokkal markánsabban jelen van. Ez nagyban a fentebb említett metafikció alkalmazásának köszönhető. Vonnegutnak szinte védjegyévé vált az "így megy ez" hozzáállás, amivel egyfajta metamoralitást teremtett prózájának disszociatív, kitaszított hangvételével.

Magyarul

 Éj anyánk; ford. Békés András, versford. Tótfalusi István; Maecenas, Bp., 1990
Éj anyánk / Mother night; ford. Békés András, versford. Tótfalusi István; kétnyelvű kiad.; Maecenas, Bp., 2012
Éj anyánk; ford. Békés András, versford. Tótfalusi István, utószó Szántó György Tibor; Helikon, Bp., 2016

Adaptációk
Az Éj anyánk című filmet 1996-ban mutatták be, amelyben Nick Nolte játssza Campbellt, Sheryl Lee pedig Helgát és Resit, Alan Arkin Kraftot, John Goodman Wirtanent alakítja. 2009-ben az Audible.com készített egy hangoskönyvet az Éj anyánkból a Modern Élcsapat hangoskönyvek sorozatban, Victor Bevine felolvasásában.

Fordítás

Kurt Vonnegut regényei
1961 regényei


How can I control Homematic with Google Assistant?
The Homematic system has been designed flexibly and open for expansion. Therefore, we provide individual partner solutions for the Homematic Central Control Unit. We are always looking for new partner solutions in order to supplement the system. Currently, we can unfortunately not refer to a partner that offers a solution for the integration of Google Assistant.


text:
import pytest
import gym

from baselines.run import get_learn_function
from baselines.common.tests.util import reward_per_episode_test
from baselines.common.tests import mark_slow

pytest.importorskip('mujoco_py')

common_kwargs = dict(
    network='mlp',
    seed=0,
)

learn_kwargs = {
    'her': dict(total_timesteps=2000)
}

@mark_slow
@pytest.mark.parametrize("alg", learn_kwargs.keys())
def test_fetchreach(alg):
    '''
    Test if the algorithm (with an mlp policy)
    can learn the FetchReach task
    '''

    kwargs = common_kwargs.copy()
    kwargs.update(learn_kwargs[alg])

    learn_fn = lambda e: get_learn_function(alg)(env=e, **kwargs)
    def env_fn():

        env = gym.make('FetchReach-v1')
        env.seed(0)
        return env

    reward_per_episode_test(env_fn, learn_fn, -15)

if __name__ == '__main__':
    test_fetchreach('her')

redpajama_set_name: RedPajamaGithub


This easy and refreshing appetizer is perfect for your summer gatherings!
Cut top and bottom off cantaloupe, stand cantaloupe upright on one of the cut ends. Peel cantaloupe, then cut in half. Scoop seeds out using a spoon and discard. Cut each lengthwise into 8 shaped wedges.
Wrap a prosciutto slice around the middle of each cantaloupe. Arrange on a serving tray and serve.


The team's analysis suggests that in the case of breast cancer alone, incorporating the algorithm into current genetic panels would double the number of patients who could benefit from PARP inhibitors. Of the 270,000 new breast cancer cases diagnosed in 2018, between 5% and 10% (13,500 to 27,000) are attributed to BRCA defects. Using computer simulation analysis, the researchers identified twice as many cases of breast cancer (27,00 to 54,000) bearing the genomic footprint of HR defects without BRCA mutations.
Cancer mutations can arise from inherited malformations in gene structure or from environmental causes such as UV radiation or cigarette smoke. Each of these disruptors causes idiosyncratic alterations in the cells' DNA. As a result, the letters of the DNA strand get scrambled—a genetic spelling error that can give rise to cancer.
The advantage of the new algorithm is that it can see the molecular footprints of the HR defect even in the standard clinical tests, which analyze only a subset of genes.
The researchers say their algorithm is better at detecting the presence of HR defects because it was "trained" on thousands of fully sequenced tumor genomes. This extensive training gives the algorithm a more expansive vocabulary that allows it to read and interpret many more molecular languages and misspellings based on far fewer molecular clues.
To test the accuracy of their model, dubbed SigMA (Signature Mutational Analysis), the investigators measured its performance against 730 samples analyzed by whole-genome sequencing, the gold standard for mutation detection. Despite the fact that it was reading far fewer genes and fewer mutations, the SigMA model correctly identified 163 of 221 samples with HR deficiency, a 74% accuracy rate. This is a notable improvement over current algorithms that detect HR-deficient cancer cells at a rate of 30 to 40%, the team said.
To gauge SigMA's performance on a real gene panel, the researchers applied it to 878 breast tumor samples from patients who had been previously analyzed by a standard genetic test. The algorithm identified 23% of the tumor samples as bearing the mark of HR deficiency. The algorithm also detected previously unidentified HR defects in other types of cancers, ranging from 5 percent in esophageal cancers and 38 percent of samples in ovarian cancers. To determine whether the algorithm could accurately predict response to PARP inhibitors, the scientists analyzed results from experiments on 383 patient tumor cell lines from 14 cancer types treated with four PARP inhibitors. Breast cancer cell lines identified by the SigMA algorithm as bearing the molecular mark of HR deficiency responded better to the PARP inhibitor olaparib than cells that did not bear the molecular signature of HR deficiency. A similar effect was observed in breast cancer cell lines treated with three other PARP inhibitors.
Other tumor types also responded better to PARP inhibitors if they were identified as HR-deficient by the SigMA model. The observation suggests that the algorithm can reliably identify patients who could benefit from PARP inhibitors, the team said.