What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

0
0
0

https://news.hada.io/topic?id=19948

나는 프로그래밍을 Solaris에서 시작했고, FreeBSD의 오랜 팬이자 사용자였지만, 이제 와서는 BSD를 권하지 않음. 내 개인적으로도 이젠 더이상 쓰지 않고 있고. 물론 BSD가 특정 시나리오에서는 매우 뛰어난, 그리고 일반적으로 좋은 서버 OS라는 점은 지금도 유효하지만, 더이상 개인이 사용할 우위점은 거의 없다고 생각함.

  1. 리눅스가 충분히 안정화되었고, 가장 안정적인 OS를 찾는다면 RHEL(+클론들)을 쓰면 됨. 대형 유저들이 많으며, 전문가 집단이 구성하고 충분히 테스트한 OS임.
  2. 리눅스가 de facto standard여서, 더 효율적인 솔루션들이 있더라도 작은 차이라도 큰 특수 분야가 아니라면 굳이 다른 방법을 찾는 비용을 정당화하기 어려움. 무엇보다 유지보수, 확장, 인프라 이전 등 모든 면에서 리눅스가 제일은 아닐지 몰라도 충분히 쌈.
  3. 보안에 있어서도 OpenBSD의 품질은 대단하지만, 대형 리눅스 배포판들 또한 취약점 패치 속도에서 매우 빠른 편이고 보안 툴들도 잘 갖추고 있음. 이제 양자간 개발자, 사용자 숫자의 차이는 인원과 설계의 질로 메꿀 수 있는 수준이 아니라고 봄.

0

I’m seeing a lot of “WWDC was announced!”

And not a lot of “Don’t come to the US because it’s incredibly unsafe for anyone who’s non-white or queer”

And absolutely zero “we understand the difficulties faced by developers overseas so we’re hosting events around the world so everyone can take part”

0
0
0
0
0
0
0
0
0
0
0
0

New: Fediverse Report 109

This week, an essay about 's proposal for setting user preferences on their accounts. This allows people to indicate how they want their data to be handled off-protocol. I wrote about how the can improve on this, using its strengths of many different communities, each with its own culture and values.

Also:
- Next week is the digital conference @fediforum
- A research dataset to compare Threads and Mastodon users

Read at: fediversereport.com/fediverse-

0

I wrote a tool many years ago, called it dokumatix.

I wrote it half because I wanted more flexibility in my note taking, and half because I thought it would be funny.

It's a UNIX command line, filesystem oriented, document creation system.

...

Allow me to explain.

You create an output directory, preferably on a webserver. I just run apache on my desktop. All your documents will appear here in a basic index.

Then, you create a new directory, cd into it, and run dokumatix -i. This instantiates a new document build tree. If you run dokumatix (no i flag this time) anywhere under this directory, it will rebuild the entire document and shove the output to the configured web root.

You create clickable sections of the document by creating directories in the format "XX-Section-Name" where XX is a number that will be used as a sort order. The dashes after will be converted to spaces, and the remaining name used in the document as section headers.

This supports nesting, and will create a table of contents at the top of the document. The body of the doc will also be created following the same structure.

Inside directories is the meat and potatoes. Files are created with the form "XX-arbitraryName.extension." The XX is again, used as a sort order, the name is ignored, and just for keeping the pre-document self documenting. The work is done by the extensions. There are about 30 options right now. The most basic is just .html, which just gets sucked into the final document. There are basic ones like .ulist and .olist, which make every new line in the file a new entry into an unnumbered or ordinal list. Images can be imported, .dot files are parsed by graphviz and converted to png format. I have created quote formats, iFrames, tables, you name it. Aside from images, the entire thing is basic text, and the most quote unquote markdown you may need is : for field separators in tables, return carriage for new lines and lists, and the occasional use of <b> or <i>.

It takes all of your files, sorts them, builds a TOC, and produces a consistent looking document. You build the entire thing with mkdir, cd, mv, cp, and your $EDITOR. Want to reorder some things? Rename files to change the sort order. Need a spell checker? Install one and run it. Want to make it print ready? Open it in your web browser and save it as a PDF.

I wrote this as a goof in the days after I left $weDropPackets in 2016 because I needed a project and it sounded funny. It has become my defacto tool for brain dumping. It works how my brain works; I like UNIX, it is very UNIX like. It even works well for final documents; I have successfully imported the HTML output into a WYSIWYG editor, tweaked it, and presented it to top tier management.

Does _anybody_ but me care? Be awesome to get some help with stuff I don't know well. Maybe introduce CSS support. I absolutely suuuuuck at HTML, and the stuff this thing produces might pass 3.2 validation.

Oh, and it is 100% Perl, and the original code was written while I was drunk.

0
0
0
0

For all those who are wondering:
Yes, I am still here on Mastodon.
I've just been taking a break from scrolling on social media.
There are more important ways to spend my time these days than on social media.
Feel free to ping me if you want to -- I will still receive a notification.
✌️

0
0
0
0
0
0
0
0
0

Ω🪬Ω
: Pete Hegseth, A Man Of Questionable Judgment

's in the news lately because of a "mishap" with a Signal group chat involving possibly top secret information about killing . You might think this demonstrates poor judgment.

This is all less surprising if you know that Hegseth is a crypto bro who lost a bunch of money in possibly the most obvious cryptocurrency ponzi scheme in history, . Hegseth entrusted the group of Russian Israelis running with his hard earned money *even after* the CFO of the firm was sent to prison in for and organized crime connections.

tl;dr Maybe America should reconsider putting crypto bros in charge of the military.

Retoots appreciated.

cryptadamus.substack.com/p/pet

0

i wrote about what the fediverse can learn from bsky's proposal for User Intents. Fediverse is a network of many independent communities, each with their own values and culture, and it should use that to its advantage. fediversereport.com/fediverse-re...

RE: https://bsky.app/profile/did:plc:7g5cwudxc4ybqwvarredxzwi/post/3ll7viwnetn72

0

I still remember this. One of the things that really challenged me, and my ideas about gender early on was Iggy Pop in a dress.

It wasn't so much him in the dress that did it, it was what he said about it.

I'm not ashamed to dress "like a woman" because I don't think it's shameful to be a woman.

Once I internalized that, I started recognizing it as a key to understanding bigotry.

Shows Iggy Pop, lips pursed, looking downward, long hair blowing behind him, his thin frame clad in a sleek, black, silky dress.
0
0

We cannot rely on the US to protect or nurture the commons. Think of the US as a giant shopping mall with guns. That’s it. That’s the whole philosophy right there.

We want to safeguard the infrastructure of civilisation, we have to do it ourselves here in the EU before it’s too late. And we can start by acknowledging our own failures and redoubling our commitment to fundamental rights and democracy (and not limit our own potential by having every single decision framed by the fucking “Single Market”).

You want to end up like the US? Then let’s keep going as we are. You want something different? We must invest in the commons, embrace our diversity, embrace equity, and move to an inclusive, post-capitalist existence.

It’s up to us. The bacteria in places we haven’t even visited yet that will survive long after we’ve made ourselves extinct – should that be the route we decide to take (because yes, it is a decision) – don’t really give two shits either way.

0
0
0
0

New: Fediverse Report 109

This week, an essay about 's proposal for setting user preferences on their accounts. This allows people to indicate how they want their data to be handled off-protocol. I wrote about how the can improve on this, using its strengths of many different communities, each with its own culture and values.

Also:
- Next week is the digital conference @fediforum
- A research dataset to compare Threads and Mastodon users

Read at: fediversereport.com/fediverse-

0
0

Fediverse Report – #109

An essay on user preferences, and how the fediverse’s interconnected network of communities can play into that, as well as some other news.

User Intents

The Bluesky Company (Bluesky PBC) recently announced a proposal to add User Intents to the AT Protocol (ATProto). The proposal allows people to set account-wide preferences how their data should be handled outside the network. It gives people the ability to opt in or opt out their account from a few different things, such as bridging to other protocols or not wanting any of their data being used in generative AI datasets. The proposal is similar to how robots.txt works, meaning that it is a machine-readable format which good actors are supposed to abide by, but is not legally enforceable.

I cover both the fediverse and Bluesky (including ATProto) under Fediverse Report because these networks are deeply interconnected and influence each other. Decisions on one network, like Bluesky’s User Intents proposal, can influence how the fediverse develops and builds their own features. My goal is to help readers understand the fediverse more deeply. By observing how Bluesky’s approaches default user preferences, the fediverse can build their own systems that use its strength of having many diverse and connected communities.

The proposal by Bluesky PBC is as follows:

  • People are able to set their preferences for four different categories:
    • generative AI
    • protocol bridging
    • bulk datasets
    • public archiving and preservation
  • These preferences are account wide. They are valid not only for Bluesky, but for every app build on ATProto.
  • The default value is ‘undefined’, not opt-in or opt-out.
    • Projects which are intending to use the public data should decide for themselves whether data reuse when the intents are classified as “undefined” is acceptable or not.
  • the current proposal is set to lead the way for more granular user preferences, allowing people to specify on an app-level or post-level what their preference is.

Also, some concepts of ATProto that are relevant, which makes the protocol different from ActivityPub:

  • On ATProto, a user has only 1 account, and can use that account to log into any service. This is in contrast with ActivityPub, where you need a new account for every service.
  • Data on ATProto is public by default, and designed to be accessible. Everyone has full and free access to the data of the entire network.

One thing about user preference settings in social apps is that they are a bit of red herring. The majority of people never change the default settings. Giving people choice is a good thing, but it is impossible force people to choose: the majority of people will just not choose anything. This makes it so that the default value for any preference is hugely important, as it is the de-facto value that the majority of people will experience.

Bluesky PBC tries to avoid this issue by introducing a default “undefined” value. The advantage of using a default value of “undefined” is that Bluesky PBC will not overstep their boundaries and determine the preference of everyone on the network, including people who are not using Bluesky but are using other platforms on the network. The downside is that Bluesky PBC effectively makes no decision at all for the majority of people. Bluesky PBC leaves it to the organisations who use the data to determine how data can be handled if the preference is set to “undefined”. These organisations are likely to value their own interests more than the interest of people whose data they intent to process.

Bluesky PBC has three options here, that all have a downside:

  • If Bluesky PBC sets default values for how ATProto account data can be handled it reinforces its centralising role in the network.
  • If Bluesky PBC does not set a default value, no decision is made for the majority of people, and it is left to organisations whose goals do not align with those of the people whose data they process.
  • If Bluesky PBC sets User Intent not on an ATProto-account wide level, but only on an per-app basis, choices quickly become overwhelming if users must set preferences for every app.

So far I’ve only been talking about Bluesky and ATProto. But the fediverse has a long history of debates, conversations and drama on how to deal with data processing that happens outside of the network. Some high-profile cases include the blowup around Bridgy Fed considering making the bridge between the fediverse and Bluesky opt-out, or the backlash against Searchtodon, which saved user’s timeline locally for searching.

These debates are around data scraping, consent, things being opt-in or opt-out. But one of the struggles that the fediverse has had is to build structural solutions. A significant portion of the fediverse does not consent to have their data handled outside of the network. A persistent problem is that this preference is not expressed in a machine-readable way. This leads to an endless cycle of new developers coming in that are not familiar with the culture who then cross lines of consent and it all blows up in drama again.

Moreover, the fediverse and ActivityPub have a significant advantage on how to deal with the dilemma of setting default values over ATProto. The fediverse is a network that is build up of many different communities connecting with each other. A variety of communities allows for diverse preferences, which can also be expressed in setting default values. And it is a shame that the fediverse is not capitalising on this advantage.

There are communities from whom discoverability is important. Just as there are communities for whom not being easily publicly discoverable is important. These preference can differ within an individual as well: people treat personal photos shared with friends differently from blog articles.

The fediverse can sidestep the question of default account values because people have many accounts on the fediverse, for different use cases. This gives the option to set a different default value for different services. A Pixelfed platform for close friends should set stricter default data-handling preferences. A Mastodon server for blogging platform Medium that has the goal of giving more visibility and reach to its writers could consider setting default values to be more open.

The power of the fediverse is in that there does not have to be a single default at all. Instead, communities and servers should be able to set default values for themselves. This can help shape the tone of the community, and makes it clear what the identity of a community is about. What’s even more powerful is that this only concerns the default value, giving people the ability to set their preferences as they desire. The state of the open social web is such that there are now two protocols in competition with each other. That gives the ability for the fediverse to take ideas from other networks, and improve on them in a way that plays up to the unique strengths that the fediverse has.

The News

Reminder: next week will be FediForum, on April 1-2, and you can register here.

FediverseSharing: A Novel Dataset on Cross-Platform Interaction Dynamics between Threads and Mastodon Users is a new academic paper (currently under review and up on arXiv) that explores the interaction between Threads users and Mastodon users. It takes a dataset of 20k Threads users that have fediverse sharing enabled and compares it to 20k Mastodon users that have interacted with these Threads users. The main goal of the research is to build up this dataset and share it with the community for further research. How sharing a dataset of aggregated user interactions relates to the above essay on user preferences for being included in bulk datasets is left as an exercise to the reader.

PeerTube has done a major redesign for their v7 of the software that came out a few months ago. The organisation now shared the design and development reports that shaped the update.

IFTAS recently had to shut down most of their larger projects due to a lack of funding. One of their projects, FediCheck is now available as open source for someone else to continue with. FediCheck is a deny list management tool that allows server admins to subscribe to external deny lists.

The Lemmy developers will hold an AMA on Wednesday March 26th.

Last week, Ghost made their ActivityPub integration available in public beta for Ghost Pro subscribers. Their weekly update says that now over 250 sites already use the integration. WeDistribute has a hands on with the new features that Ghost offers.

Note: Last week I wrote about the new fediverse platform Forte, and said that the repository did not include an install guide. This is incorrect, the guide can be found here.

The Links

That’s all for this week, thanks for reading! You can subscribe to my newsletter to get all my weekly updates via email, which gets you some interesting extra analysis as a bonus, that is not posted here on the website. You can subscribe below:

<form action="https://fediversereport.com/wp-admin/admin-ajax.php?action=tnp&na=s" method="post" style="text-align: center"><input type="hidden" name="nr" value="minimal"><input type="hidden" name="nlang" value=""><input class="tnp-email" type="email" required name="ne" value="" placeholder="Email"><input class="tnp-submit" type="submit" value="Yep, I want to receive the newsletters" style=""></form>

fediversereport.com/fediverse-

Frozen leaves of a bramble bush
0
0
0

Fediverse Report – #109

An essay on user preferences, and how the fediverse’s interconnected network of communities can play into that, as well as some other news.

User Intents

The Bluesky Company (Bluesky PBC) recently announced a proposal to add User Intents to the AT Protocol (ATProto). The proposal allows people to set account-wide preferences how their data should be handled outside the network. It gives people the ability to opt in or opt out their account from a few different things, such as bridging to other protocols or not wanting any of their data being used in generative AI datasets. The proposal is similar to how robots.txt works, meaning that it is a machine-readable format which good actors are supposed to abide by, but is not legally enforceable.

I cover both the fediverse and Bluesky (including ATProto) under Fediverse Report because these networks are deeply interconnected and influence each other. Decisions on one network, like Bluesky’s User Intents proposal, can influence how the fediverse develops and builds their own features. My goal is to help readers understand the fediverse more deeply. By observing how Bluesky’s approaches default user preferences, the fediverse can build their own systems that use its strength of having many diverse and connected communities.

The proposal by Bluesky PBC is as follows:

  • People are able to set their preferences for four different categories:
    • generative AI
    • protocol bridging
    • bulk datasets
    • public archiving and preservation
  • These preferences are account wide. They are valid not only for Bluesky, but for every app build on ATProto.
  • The default value is ‘undefined’, not opt-in or opt-out.
    • Projects which are intending to use the public data should decide for themselves whether data reuse when the intents are classified as “undefined” is acceptable or not.
  • the current proposal is set to lead the way for more granular user preferences, allowing people to specify on an app-level or post-level what their preference is.

Also, some concepts of ATProto that are relevant, which makes the protocol different from ActivityPub:

  • On ATProto, a user has only 1 account, and can use that account to log into any service. This is in contrast with ActivityPub, where you need a new account for every service.
  • Data on ATProto is public by default, and designed to be accessible. Everyone has full and free access to the data of the entire network.

One thing about user preference settings in social apps is that they are a bit of red herring. The majority of people never change the default settings. Giving people choice is a good thing, but it is impossible force people to choose: the majority of people will just not choose anything. This makes it so that the default value for any preference is hugely important, as it is the de-facto value that the majority of people will experience.

Bluesky PBC tries to avoid this issue by introducing a default “undefined” value. The advantage of using a default value of “undefined” is that Bluesky PBC will not overstep their boundaries and determine the preference of everyone on the network, including people who are not using Bluesky but are using other platforms on the network. The downside is that Bluesky PBC effectively makes no decision at all for the majority of people. Bluesky PBC leaves it to the organisations who use the data to determine how data can be handled if the preference is set to “undefined”. These organisations are likely to value their own interests more than the interest of people whose data they intent to process.

Bluesky PBC has three options here, that all have a downside:

  • If Bluesky PBC sets default values for how ATProto account data can be handled it reinforces its centralising role in the network.
  • If Bluesky PBC does not set a default value, no decision is made for the majority of people, and it is left to organisations whose goals do not align with those of the people whose data they process.
  • If Bluesky PBC sets User Intent not on an ATProto-account wide level, but only on an per-app basis, choices quickly become overwhelming if users must set preferences for every app.

So far I’ve only been talking about Bluesky and ATProto. But the fediverse has a long history of debates, conversations and drama on how to deal with data processing that happens outside of the network. Some high-profile cases include the blowup around Bridgy Fed considering making the bridge between the fediverse and Bluesky opt-out, or the backlash against Searchtodon, which saved user’s timeline locally for searching.

These debates are around data scraping, consent, things being opt-in or opt-out. But one of the struggles that the fediverse has had is to build structural solutions. A significant portion of the fediverse does not consent to have their data handled outside of the network. A persistent problem is that this preference is not expressed in a machine-readable way. This leads to an endless cycle of new developers coming in that are not familiar with the culture who then cross lines of consent and it all blows up in drama again.

Moreover, the fediverse and ActivityPub have a significant advantage on how to deal with the dilemma of setting default values over ATProto. The fediverse is a network that is build up of many different communities connecting with each other. A variety of communities allows for diverse preferences, which can also be expressed in setting default values. And it is a shame that the fediverse is not capitalising on this advantage.

There are communities from whom discoverability is important. Just as there are communities for whom not being easily publicly discoverable is important. These preference can differ within an individual as well: people treat personal photos shared with friends differently from blog articles.

The fediverse can sidestep the question of default account values because people have many accounts on the fediverse, for different use cases. This gives the option to set a different default value for different services. A Pixelfed platform for close friends should set stricter default data-handling preferences. A Mastodon server for blogging platform Medium that has the goal of giving more visibility and reach to its writers could consider setting default values to be more open.

The power of the fediverse is in that there does not have to be a single default at all. Instead, communities and servers should be able to set default values for themselves. This can help shape the tone of the community, and makes it clear what the identity of a community is about. What’s even more powerful is that this only concerns the default value, giving people the ability to set their preferences as they desire. The state of the open social web is such that there are now two protocols in competition with each other. That gives the ability for the fediverse to take ideas from other networks, and improve on them in a way that plays up to the unique strengths that the fediverse has.

The News

Reminder: next week will be FediForum, on April 1-2, and you can register here.

FediverseSharing: A Novel Dataset on Cross-Platform Interaction Dynamics between Threads and Mastodon Users is a new academic paper (currently under review and up on arXiv) that explores the interaction between Threads users and Mastodon users. It takes a dataset of 20k Threads users that have fediverse sharing enabled and compares it to 20k Mastodon users that have interacted with these Threads users. The main goal of the research is to build up this dataset and share it with the community for further research. How sharing a dataset of aggregated user interactions relates to the above essay on user preferences for being included in bulk datasets is left as an exercise to the reader.

PeerTube has done a major redesign for their v7 of the software that came out a few months ago. The organisation now shared the design and development reports that shaped the update.

IFTAS recently had to shut down most of their larger projects due to a lack of funding. One of their projects, FediCheck is now available as open source for someone else to continue with. FediCheck is a deny list management tool that allows server admins to subscribe to external deny lists.

The Lemmy developers will hold an AMA on Wednesday March 26th.

Last week, Ghost made their ActivityPub integration available in public beta for Ghost Pro subscribers. Their weekly update says that now over 250 sites already use the integration. WeDistribute has a hands on with the new features that Ghost offers.

Note: Last week I wrote about the new fediverse platform Forte, and said that the repository did not include an install guide. This is incorrect, the guide can be found here.

The Links

That’s all for this week, thanks for reading! You can subscribe to my newsletter to get all my weekly updates via email, which gets you some interesting extra analysis as a bonus, that is not posted here on the website. You can subscribe below:

<form action="https://fediversereport.com/wp-admin/admin-ajax.php?action=tnp&na=s" method="post" style="text-align: center"><input type="hidden" name="nr" value="minimal"><input type="hidden" name="nlang" value=""><input class="tnp-email" type="email" required name="ne" value="" placeholder="Email"><input class="tnp-submit" type="submit" value="Yep, I want to receive the newsletters" style=""></form>

fediversereport.com/fediverse-

Frozen leaves of a bramble bush
0
0
0
0
0
0
0

A reminder, the Fediverse cost money.

Yes, it is free for YOU to use, but your local administrator pays for domain registration, web hosting, storage space, CDN, and of course, bandwidth.

The busier and more active your Fedi site, the most it cost.

If you are able, consider reaching out to your admin, and asking how you can help. Even small contributions add up and make a difference.

0
0
0

🚨 Let’s Encrypt at risk from Trump cuts to OTF: “Let’s Encrypt received around $800,000 in funding from the OTF”

Dear @EUCommissionEuropean Commission, get your heads out of your arses and let’s find @letsencryptLet's Encrypt €1M/year (a rounding error in EU finances) and have them move to the EU.

If Let’s Encrypt is fucked, the web is fucked, and the Small Web is fucked too. So how about we don’t let that happen, yeah?

(In the meanwhile, if the Let’s Encrypt folks want to make a point about how essential they are, it might be an idea to refuse certificates to republican politicians. See how they like their donation systems breaking in real time…)

CC @nlnet @NGIZero@mastodon.xyz

mastodon.social/@publictorsten

0
0
0
0

Here's an interesting question: Have you noticed people using idioms less often?

Someone told me they've heard older people bemoaning the disappearance of idioms from daily language.

It's not something I've noticed. Have you?

0
0
0
0
0
0

I just discovered why some of my followers from larger instances (like mastodon.social) would mysteriously unfollow me after a while!

A pull request was just merged in Mastodon that fixes a critical bug in their follower synchronization mechanism.

Turns out Mastodon implements the FEP-8fcf specification (Followers collection synchronization across servers), but it expected all followers to be in a single page collection. When followers were split across multiple pages, it would only see the first page and incorrectly remove all followers from subsequent pages!

This explains so much about the strange behavior I've been seeing with and other -based servers over the past few months. Some people would follow me from large instances, then mysteriously unfollow later without any action on their part.

Thankfully this fix has been marked for backporting, so it should appear in an upcoming patch release rather than waiting for the next major version. Great news for all of us building on !

This is why I love open source—we can identify, understand, and fix these kinds of interoperability issues together. 😊

0
3
0

A reminder, the Fediverse cost money.

Yes, it is free for YOU to use, but your local administrator pays for domain registration, web hosting, storage space, CDN, and of course, bandwidth.

The busier and more active your Fedi site, the most it cost.

If you are able, consider reaching out to your admin, and asking how you can help. Even small contributions add up and make a difference.

0
0
0

A reminder, the Fediverse cost money.

Yes, it is free for YOU to use, but your local administrator pays for domain registration, web hosting, storage space, CDN, and of course, bandwidth.

The busier and more active your Fedi site, the most it cost.

If you are able, consider reaching out to your admin, and asking how you can help. Even small contributions add up and make a difference.

0
0
0
0

You *should* be very careful which substituters (caches) you trust since you have to trust who can push to them. Effectively you are trusting them with root on your machine.

You *should* be wary of “community” caches if you don’t want to have to vet who has access there.

You *should* build things from source yourself if you do not wish to trust the build farm and Hydra infrastructure (or to lessen the load on their CDN)

What you should ABSOLUTELY NOT do is trust some random VC backed company (which may or may not have a business relationship with military-industrial-complex contractors) over the actual NixOS project which stewards the actual sources you trust to be secure in the first place

0
0
0
0
0
0
0

Here's an interesting question: Have you noticed people using idioms less often?

Someone told me they've heard older people bemoaning the disappearance of idioms from daily language.

It's not something I've noticed. Have you?

0
0
0
0