I learned how to make gopls syntax highlight go templates in VSCodium.
By adding the following to my config

i could go from
into 
“The Sidecar” – Adding advanced networking, and a Linux shell, to a Psion palmtop
One of the coolest designs I’ve seen for extending older computers via the serial port. ⌘ Read more
I use Firefox as my preferred web browser both on PCs and my phone. One extension is always installed: uBlock Origin. The web is so much nicer with all the ads and tracking removed. But today I also retried an extension that will probably join the “must install” list: DarkReader. Especially when I’m browsing the web on my phone in the early morning, I don’t like to be blinded by white websites. Since March DarkReader has finally an option to detect if a website already has a dark theme and only apply it’s color chan … ⌘ Read more
i added some disclaimers
i added some disclaimers
@prologic@twtxt.net duud use an ad block on youtube.
@prologic@twtxt.net duud use an ad block on youtube.
@eaplmx@twtxt.net This exact thing happened to me last night. I happened to be watching some random Youtube video, then this Ad came on, normally they are short 3-5s ads and I just tolerate them (sometimes) – But this particular ad was 20+ mins long! Somehow I kept listening to it too, despite my daughter telling me I could hit that “Skip Ad” button.
What was it you ask?! 😅 It was one of those testimonial-style, hyped up marketing videos of some product called “Gemini 2” (a currency trading app, allegedly), I kept watching all the way through, it was fantastic! 🤣
Then I went and read up on it! …
Short answer: TOTAL FUCKING SCAM 🤣
Honest Government Ad | Rental Crisis ⌘ Read more
@b9056, Iran played USA hard. I did not realize I could hold my breath for 10 minutes. That was a lot of added time.
I reworked the current ActivityPub implementation of GoBlog, fixed ActivityPub replies to posts and also added support for reply updates and deletions. Under the hood it’s using the comment system. 🥳 Using the go-ap/activitypub library, working with ActivityPub is much easier (but still more complicated than I wish it would be). ⌘ Read more
Ignite Realtime Blog: Openfire Monitoring Service plugin 2.4.0 release
Earlier today, we have released version 2.4.0 of the Openfire Monitoring Service plugin. This plugin adds both statistics, as well as message archiving functionality to Openfire.
In this release, compatibility with future versions of Openfire is added. A bug that affects MSSQL users has been fixed, and the dreaded “Unable to save XML properties” error message has been resolved. A few other minor tweaks h … ⌘ Read more
@lyse@lyse.isobeef.org @prologic@twtxt.net yeah that was how i did it too. I think ill start using the debug version in new stuff since its been added. My comment was around assigning the result of an anonymous function to a a variable.
@lyse@lyse.isobeef.org @prologic@twtxt.net yeah that was how i did it too. I think ill start using the debug version in new stuff since its been added. My comment was around assigning the result of an anonymous function to a a variable.
Ignite Realtime Blog: Spark 3.0.0 Released
The Ignite Realtime community is happy to announce the release of Spark 3.0.0 version.
We decided to increase major version to 3.x to coincide with a complete UI refresh of Spark which was contributed by Amos. Now Spark uses only FlatLaf Look and Feel. We are very much grateful for his incredible work. Along that Pade Meetings plugin was added by [Dele](https://discourse.igniterealtime. … ⌘ Read more
Android vs iOS: Which spies on you more?
Watch now (25 min) | (This is a classic video originally produced back in 2018. It is presented here exactly as it originally was – including original ad spots. Many of the details discussed (links, stats, etc.) may have changed in the years that followed.) Which mobile operating system spies on you the most? Android or iOS? In other words: Does a Google-powered Android… ⌘ Read more
ProcessOne: Matrix protocol added to ejabberd
ejabberd is already the most versatile and scalable messaging server. In this post, we are giving a sneak peak at what is coming next.
ejabberd just get new ace in it sleeve – you can now use ejabberd to talk with other Matrix servers, a protocol sometimes used for small corporate server messaging.
Of course, you all know ejabberd supports the XMPP instant messaging protocol with hundreds of XMPP extensions, this is what it is famous for.
The second ma … ⌘ Read more
Honest Government Ad | Visit Western Australia ⌘ Read more
I was inclined to let this go so as not to stir anything up, but after some additional thought I’ve decided to call it out. This twt:
is exactly the kind of ad hominem garbage I came to expect from Twitter™, and I’m disappointed to see it replicated here. Rummaging through someone’s background trying to find a “gotcha” argument to take credibility away from what a person is saying, instead of engaging the ideas directly, is what trolls and bad faith actors do. That’s what the twt above does (falsely, I might add–what’s being claimed is untrue).
If you take issue with something I’ve said, you can mute me, unfollow me, ignore me, use TamperMonkey to turn all my twts into gibberish, engage the ideas directly, etc etc etc. There are plenty of options to make what I said go away. Reading through my links, reading about my organization’s CEO’s background, and trying to use that against me somehow (after misinterpreting it no less)? Besides being unacceptable in a rational discussion, and besides being completely ineffective in stopping me from expressing whatever it is you didn’t like, it’s creepy. Don’t do that.
ProcessOne: Matrix protocol added to ejabberd
ejabberd is already the most versatile and scalable messaging server. In this post, we are giving a sneak peak at what is coming next.
ejabberd just get new ace in it sleeve – you can now use ejabberd to talk with other Matrix servers, a protocol sometimes used for small corporate server messaging.
Of course, you all know ejabberd supports the XMPP instant messaging protocol with hundreds of XMPP extensions, this is what it is famous for.
The second ma … ⌘ Read more
ProcessOne: Matrix protocol added to ejabberd
ejabberd is already the most versatile and scalable messaging server. In this post, we are giving a sneak peak at what is coming next.
ejabberd just get new ace in it sleeve – you can now use ejabberd to talk with other Matrix servers, a protocol sometimes used for small corporate server messaging.
Of course, you all know ejabberd supports the XMPP instant messaging protocol with hundreds of XMPP extensions, this is what it is famous for.
The second ma … ⌘ Read more
ProcessOne: Matrix protocol added to ejabberd
ejabberd is already the most versatile and scalable messaging server. In this post, we are giving a sneak peak at what is coming next.
ejabberd just get new ace in it sleeve – you can now use ejabberd to talk with other Matrix servers, a protocol sometimes used for small corporate server messaging.
Of course, you all know ejabberd supports the XMPP instant messaging protocol with hundreds of XMPP extensions, this is what it is famous for.
The second ma … ⌘ Read more
One year ago, I started using AdGuard Home instead of Pi-Hole to filter DNS requests and block ads and tracking. Yesterday, I switched to NextDNS instead. NextDNS has mostly the same features, but is hosted in the “cloud” and I have one less self-hosted service to care about. AdGuard Home is awesome, but NextDNS seems to be working great as well and also integrates with Tailscale easily. ⌘ Read more
PEP 699: Remove private dict version field added in PEP 509
PEP 509 introduced a private ma_version_tag field for dictionaries to allow optimizations in CPython and extension libraries. This PEP proposes to rescind PEP 509 and declare the field an implementation detail, as it has already been superseded by alternatives. This will further allow the field to be reused for future optimization. ⌘ Read more
Ignite Realtime Blog: REST API Openfire plugin 1.10.0 released!
We are happy to announce the immediate availability of version 1.10.0 of the REST API plugin for Openfire!
This release will see the performance on lookups of MUC rooms based on case-insensitive room names, or non-existing rooms. This will be particularly notable in systems that hold many chat rooms.
Another feature that is added is that basic statistics on REST endpoint usage are now exposed. These can be viewed thro … ⌘ Read more
Honest Government Ad | Brazil 🇧🇷 ⌘ Read more
PEP 698: Override Decorator for Static Typing
This PEP proposes adding an @override decorator to the Python type system. This will allow type checkers to prevent a class of bugs that occur when a base class changes methods that are inherited by derived classes. ⌘ Read more
Kaidan: Encrypted Audio and Video Calls
Kaidan will receive a grant by NLnet for adding encrypted audio and video calls.
The calls will be end-to-end encrypted and authenticated via OMEMO.
Furthermore, Kaidan will support small group calls.
We strive for interoperability between Kaidan and other XMPP apps supporting calls.
In order to achie … ⌘ Read more
Integrated Terminal for Running Containers, Extended Integration with Containerd, and More in Docker Desktop 4.12
Docker Desktop 4.12 is now live! This release brings some key quality-of-life improvements to the Docker Dashboard. We’ve also made some changes to our container image management and added it as an experimental feature. Finally, we’ve made it easier to find useful Extensions. Let’s dive in. Execute commands in a runn … ⌘ Read more
The Docker-Sponsored Open Source Program has a new look!
Learn about the latest updates to the Docker-Sponsored Open Source Program. This announcement covers the new benefits being added and what’s staying the same! ⌘ Read more
@movq@uninformativ.de Do you know how I would find people that reply to my posts or replies or even mention my users? Prologic tried to contact me and unless I found him on the yarn pod then I would not know he exists and wants to talk to me. The user agents would work but I don’t know if I can view my web server logs from codeberg pages and I don’t know how to monitor my logs for mentions. What about the way yarn does it by added people you follow to your twtxt file and having friends of friends like yarn does it be a thing for jenny. Just an idea
@prologic@twtxt.net I have added that to my twtxt file. Even if I can’t see the metadata the people from yarn can. Not a big deal to add the metadata and it helps yarn users
Ignite Realtime Blog: Openfire ThreadDump plugin 1.1.0 released
Earlier today, we have released version 1.1.0 of the Openfire Thread Dump plugin. This plugin uses various evaluators to trigger the creation of a Java thread dump. These thread dumps provide valuable information that is typically used when analyzing issues within Openfire’s implementation.
In the new version of the plugin, two new evaluators have been added: one that looks at the usage pattern of Openfire’s TaskEngin … ⌘ Read more
@prologic@twtxt.net Yeah I don’t even know how to use them once I added myself to the registries. The jarn search engine is similar to the registries thing but its easier to search and find things from. Also I assume its easier to use it in the yarn pods and whatever elese to get new posts. I would always like to see yarn work with regular twtxt because there is advantges to plain twtxt.
@mckinley@twtxt.net really the language authors should have added those to the standard spec by now. That is just obscene.
@mckinley@twtxt.net really the language authors should have added those to the standard spec by now. That is just obscene.
Right now I have to setup jenny for my timeline. Just added myself to the Registry so that part is done.
Honest Government Ad | UK ⌘ Read more
re-encoded all videos to play in HTML5 video tags, and added corresponding support to eureka
(cont.)
Just to give some context on some of the components around the code structure.. I wrote this up around an earlier version of aggregate code. This generic bit simplifies things by removing the need of the Crud functions for each aggregate.
Domain ObjectsA domain object can be used as an aggregate by adding the event.AggregateRoot struct and finish implementing event.Aggregate. The AggregateRoot implements logic for adding events after they are either Raised by a command or Appended by the eventstore Load or service ApplyFn methods. It also tracks the uncommitted events that are saved using the eventstore Save method.
type User struct {
Identity string ```json:"identity"`
CreatedAt time.Time
event.AggregateRoot
}
// StreamID for the aggregate when stored or loaded from ES.
func (a *User) StreamID() string {
return "user-" + a.Identity
}
// ApplyEvent to the aggregate state.
func (a *User) ApplyEvent(lis ...event.Event) {
for _, e := range lis {
switch e := e.(type) {
case *UserCreated:
a.Identity = e.Identity
a.CreatedAt = e.EventMeta().CreatedDate
/* ... */
}
}
}
Events
Events are applied to the aggregate. They are defined by adding the event.Meta and implementing the getter/setters for event.Event
type UserCreated struct {
eventMeta event.Meta
Identity string
}
func (c *UserCreated) EventMeta() (m event.Meta) {
if c != nil {
m = c.eventMeta
}
return m
}
func (c *UserCreated) SetEventMeta(m event.Meta) {
if c != nil {
c.eventMeta = m
}
}
Reading Events from EventStore
With a domain object that implements the event.Aggregate the event store client can load events and apply them using the Load(ctx, agg) method.
// GetUser populates an user from event store.
func (rw *User) GetUser(ctx context.Context, userID string) (*domain.User, error) {
user := &domain.User{Identity: userID}
err := rw.es.Load(ctx, user)
if err != nil {
if err != nil {
if errors.Is(err, eventstore.ErrStreamNotFound) {
return user, ErrNotFound
}
return user, err
}
return nil, err
}
return user, err
}
OnX Commands
An OnX command will validate the state of the domain object can have the command performed on it. If it can be applied it raises the event using event.Raise() Otherwise it returns an error.
// OnCreate raises an UserCreated event to create the user.
// Note: The handler will check that the user does not already exsist.
func (a *User) OnCreate(identity string) error {
event.Raise(a, &UserCreated{Identity: identity})
return nil
}
// OnScored will attempt to score a task.
// If the task is not in a Created state it will fail.
func (a *Task) OnScored(taskID string, score int64, attributes Attributes) error {
if a.State != TaskStateCreated {
return fmt.Errorf("task expected created, got %s", a.State)
}
event.Raise(a, &TaskScored{TaskID: taskID, Attributes: attributes, Score: score})
return nil
}
Crud Operations for OnX Commands
The following functions in the aggregate service can be used to perform creation and updating of aggregates. The Update function will ensure the aggregate exists, where the Create is intended for non-existent aggregates. These can probably be combined into one function.
// Create is used when the stream does not yet exist.
func (rw *User) Create(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil && !errors.Is(err, ErrNotFound) {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
// Update is used when the stream already exists.
func (rw *User) Update(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
(cont.)
Just to give some context on some of the components around the code structure.. I wrote this up around an earlier version of aggregate code. This generic bit simplifies things by removing the need of the Crud functions for each aggregate.
Domain ObjectsA domain object can be used as an aggregate by adding the event.AggregateRoot struct and finish implementing event.Aggregate. The AggregateRoot implements logic for adding events after they are either Raised by a command or Appended by the eventstore Load or service ApplyFn methods. It also tracks the uncommitted events that are saved using the eventstore Save method.
type User struct {
Identity string ```json:"identity"`
CreatedAt time.Time
event.AggregateRoot
}
// StreamID for the aggregate when stored or loaded from ES.
func (a *User) StreamID() string {
return "user-" + a.Identity
}
// ApplyEvent to the aggregate state.
func (a *User) ApplyEvent(lis ...event.Event) {
for _, e := range lis {
switch e := e.(type) {
case *UserCreated:
a.Identity = e.Identity
a.CreatedAt = e.EventMeta().CreatedDate
/* ... */
}
}
}
Events
Events are applied to the aggregate. They are defined by adding the event.Meta and implementing the getter/setters for event.Event
type UserCreated struct {
eventMeta event.Meta
Identity string
}
func (c *UserCreated) EventMeta() (m event.Meta) {
if c != nil {
m = c.eventMeta
}
return m
}
func (c *UserCreated) SetEventMeta(m event.Meta) {
if c != nil {
c.eventMeta = m
}
}
Reading Events from EventStore
With a domain object that implements the event.Aggregate the event store client can load events and apply them using the Load(ctx, agg) method.
// GetUser populates an user from event store.
func (rw *User) GetUser(ctx context.Context, userID string) (*domain.User, error) {
user := &domain.User{Identity: userID}
err := rw.es.Load(ctx, user)
if err != nil {
if err != nil {
if errors.Is(err, eventstore.ErrStreamNotFound) {
return user, ErrNotFound
}
return user, err
}
return nil, err
}
return user, err
}
OnX Commands
An OnX command will validate the state of the domain object can have the command performed on it. If it can be applied it raises the event using event.Raise() Otherwise it returns an error.
// OnCreate raises an UserCreated event to create the user.
// Note: The handler will check that the user does not already exsist.
func (a *User) OnCreate(identity string) error {
event.Raise(a, &UserCreated{Identity: identity})
return nil
}
// OnScored will attempt to score a task.
// If the task is not in a Created state it will fail.
func (a *Task) OnScored(taskID string, score int64, attributes Attributes) error {
if a.State != TaskStateCreated {
return fmt.Errorf("task expected created, got %s", a.State)
}
event.Raise(a, &TaskScored{TaskID: taskID, Attributes: attributes, Score: score})
return nil
}
Crud Operations for OnX Commands
The following functions in the aggregate service can be used to perform creation and updating of aggregates. The Update function will ensure the aggregate exists, where the Create is intended for non-existent aggregates. These can probably be combined into one function.
// Create is used when the stream does not yet exist.
func (rw *User) Create(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil && !errors.Is(err, ErrNotFound) {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
// Update is used when the stream already exists.
func (rw *User) Update(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
I have updated my eventDB to have subscriptions! It now has websockets like msgbus. I have also added a in memory store that can be used along side the disk backed wal.
I have updated my eventDB to have subscriptions! It now has websockets like msgbus. I have also added a in memory store that can be used along side the disk backed wal.
Added some of my latest photos to my timeline :)
Microsoft Announces “Start Menu as a Service”
The company is also reportedly considering a free, ad-supported option. ⌘ Read more
Honest Government Ad | US Supreme Court ⌘ Read more
@win0err@kolesnikov.se I agree with @prologic@twtxt.net about the text size. Adding content="width=device-width" to your viewport meta tag will help massively with scaling on different device widths.
Eg. The first screenshot is the current site with a device width of 440px and the second is with the updated viewport meta tag.


Other than that, I like the aesthetic of it 😊 It gives me early-ish internet vibes, which I wasn’t online for (I’m a ‘90s baby) but I’ve seen some pretty early websites.
I just discovered that my phone app (on my personal smartphone) shows me the total call duration of all calls made with the phone so far. A total of about 137.5 hours, which is over five and a half days (!). And that’s just the calls I’ve made using the phone app in the last 22 months. With Telegram and WhatsApp (and my landline phone), I’m sure a few more hours could be added. I’ve often heard the statement that smartphones are hardly used for making calls anymore these days. But apparently I can disprove that. On … ⌘ Read more
@chronolink@chrono.tilde.cafe Replies are not part of the original twtxt format. They were added later as an extension by Yarn.social: https://dev.twtxt.net/doc/twtsubjectextension.html (only the section “Machine-Parsable Conversation Grouping” is used these days)
Help keep The Lunduke Journal free of all ads and “subscriber nags”!
Less ads! More nerdy stuff! ⌘ Read more
Honest Government Ads | Season 3 Launch 🎉 ⌘ Read more
How an expanded BRICS could lead the world instead of the waning West
Adding new members to BRICS would fragment the world on a scale not seen since the Cold War and amplify the new era of ‘vertical globalisation’. The US would not be at the centre of geopolitics for the first time since World War II, and even France may switch sides. ⌘ Read more
China, South Korea battle population woes as ‘children are not a must’, adding to economic peril
Japan’s shrinking population has long been an obsession, but its East Asian neighbours of South Korea and China are now facing the same problem as fertility rates, births and marriages fall, creating an economic headache for both Seoul and Beijing. ⌘ Read more
GitHub enables the development of functional safety applications by adding support for coding standards AUTOSAR C++ and CERT C++
GitHub is excited to announce the release of CodeQL queries that implement the standards CERT C++ and AUTOSAR C++. These queries can aid developers looking to demonstrate ISO 26262 Part 6 process compliance. ⌘ Read more
For China’s elite graduates, career dreams take a back seat to stability in coronavirus-hit job market
This year, a record 10.76 million college students are set to graduate, adding pressure to a job market economists are calling the most challenging yet for young Chinese. Many are setting aside career dreams for stability. ⌘ Read more
❤️ 🎶: 10 Reasons For I Love You by THE ADE
All this time spent being grumpy about how adding my Now updates directly into the html page is uncomfortable, and it just occurred to me I can chug it into a text file and use cat.
RT by @mind_booster: This book can be your next (perfect?) TBR: The Story of Classic Crime in 100 (102?) Books by Martin Edwards ⭐⭐⭐⭐⭐ @medwardsbooks @poisonedpen @BL_Publishing #BookReview #Booktwt https://paulasimoesblog.wordpress.com/2021/07/05/this-book-can-be-your-next-perfect-tbr-the-story-of-classic-crime-in-100-102-books-by-martin-edwards-%e2%ad%90%e2%ad%90%e2%ad%90%e2%ad%90%e2%ad%90-medwardsbooks-poisonedpen-bl_publishing-bo/
This book can be your next (perfect?) TBR: The Story of Classic Crime in 1 … ⌘ Read more
I started adding a list of books that changed my life to my tilde at http://tilde.club/~melyanna/library/
Gajim: Gajim 1.4.1
Only a week after the release of Gajim 1.4.0, we’re happy to announce Gajim 1.4.1! 🎉 This release brings several fixes for issues you reported to us. Thanks for your feedback!
In order to make it easier to reach us for help, we added a new menu item “Join Support Chat” under “Help”. Clicking it will directly join our support chat at gajim@conference.gajim.org.
While redesigning the message window, we moved message timestamps to the r … ⌘ Read more
Honest Government Ad | 1 Week Left! ⌘ Read more
Honest Government Ad | 2022 Election (Season 2 finale) ⌘ Read more
I added pointlessArgument: 'is a taco a sandwich' to a pile-of-arguments object today
Honest Government Ad | Carbon Credits & Offsets ⌘ Read more
You’re well-aware of the benefits of a healthier lifestyle: less pain, more energy, more mobility and autonomy, a higher life expectancy, and so on and so forth ad nauseam. Unfortunately, this knowledge doesn’t compel you to action. Your behavior mostly follows simple hyperbolic discounting - healthy actions pay off in the future, but the future is far away, and your TV / smartphone / snack is much closer. Why Take Care Of Your Health? - LessWrong
Honest Government Ad | We need to talk about the floods | with Sue Higginson ⌘ Read more
Alright, check this out. I just kinda completed today’s project of converting a jeans into a saw bag. It’s not fully done, the side seams on the flap need some more hand sewing, that’s for sure. No, I don’t have a sewing machine. Yet?
At first I wanted to put in the saw on the short side, but that would have made for more sewing work and increased material consumption. As a Swabian my genes force me to be very thrifty. Slipping in on the long side had the benefit of using the bottom trouser leg without any modification at all. The leg tapers slightly and gets wider and wider the more up you go. At the bottom it’s not as extreme as at the top.
The bag is made of two layers of cloth for extra durability. The double layers help to hide the inner two metal snap fastener counter parts, so the saw blade doesn’t get scratched. Not a big concern, but why not doing it, literally no added efforts were needed. Also I reckon it cuts off the metal on metal clinking sounds.
The only downside I noticed right after I pressed in the receiving ends of the snap fasteners is that the flap overhangs the bag by quite a lot. I fear that’s not really user-friendly. Oh well. Maybe I will fold it shorter and sew it on. Let’s see. The main purpose is to keep the folding saw closed, it only locks in two open positions.
Two buttons would have done the trick, with three I went a bit overkill. In fact the one in the middle is nearly sufficient. Not quite, but very close. But overkill is a bit my motto. The sides making up the bag are sewed together with like five stitch rows. As said in the introduction, the flap on the hand needs some more love.
Oh, and if I had made it in a vertical orientation I would have had the bonus of adding a belt loop and carrying it right along me. In the horizontal layout that’s not possible at all. The jeans cloth is too flimsy, the saw will immediately fall out if I open the middle button. It’s not ridgid enough. Anyways, I call it a success in my books so far. Definitely had some fun.
Honest Government Ad | The Floods 🌊 ⌘ Read more
Conservative leadership race turns nasty between Poilievre and Brown
Video: C Programming on System 6 - Talking to the Modem
Starting work on adding a serial module to join the console and telnet inputs, to allow calls through a modem. I got stuck for a while trying to figure out why writes to the serial port would hang the machine. ⌘ Read more
Honest Government Ad | United Australia Party ⌘ Read more
LuisMayo/Spotyparty
Too annoyed by Spotify Ads? Too lazy to navigate to Spotify when you want to change your music? Spotless is here to help you use Spotify effortless!
Language: JavaScript
Star: 1
Watch: 1 ⌘ Read more
Here’s a preview of some themes I’m adding to https://mkws.sh https://files.mills.io/download/plain.jfif, https://files.mills.io/download/mono.jfif !
Made a bunch of pretty much invisible changes to my twtxt.txt file 😋 Pretty much just added an avatar and description and stuff.
New year, new habits?!
Colin’s post yesterday inspired me to install the Loop Habit Tracker app. How did I not know about this app yet? Free, no ads, and even open source! ⌘ Read more
I have uBlockOrigin on desktop and https://vancedapp.com/ on android. I never see ads on YouTube.
On SmartTV however this would be a nice addition.
I have uBlockOrigin on desktop and https://vancedapp.com/ on android. I never see ads on YouTube.
On SmartTV however this would be a nice addition.
You’re right @ullarah@txt.quisquiliae.com I just watched Australia Post Outrage: Did She Need To Go? and I do believe I’ll start adding this to my “watchlist” – I don’t use Youtube specifically (because privacy eroding garbage); but the content this guy produces is awesome! 👌
Scotty from marketing really needs to be fired! Can we even fire Prime Ministers besides calling an election? 🤔 The more you dig into our #Australian #Government the more you realize just how fucking corrupt they all are and have been over so many years. How?! 🤦
Honest Government Ad | Hung Parliament ⌘ Read more
Blue-teaming for Exiv2: adding custom CodeQL queries to code scanning
The Exiv2 team tightened our security by enabling GitHub’s code scanning feature and adding custom queries tailored to the Exiv2 code base. ⌘ Read more
Honest Government Ad | Net Zero by 2050 ⌘ Read more
Red Hat to hire less experienced engineers, pay less going forward
The Linux giant plans to keep a “flat budget” while adding 200 employees… by hiring fewer senior programmers ⌘ Read more
Honest Government Ad | COP26 Climate Summit ⌘ Read more
Telegram Ads
So Telegram now has ads. But unlike the ads from Google, Facebook or Apple, the ads are not personalized and much more privacy friendly. The ads simply consist of a maximum 160-character message with no external links and are displayed only in large public channels. ⌘ Read more
My nutritional supplements aim should be:
- 1 or 1.5 cups of lentils (or any beans you might like better).
- 2 or 2.5 cups of bitter greens.
- 1 cup of your favourite protein (or an egg), grilled, or fried with a little of olive oil.
- 1 or 2 tomatoes, or a handful if of the cherry type.
- No added sugars. If it is sweet, make it have fibre.
- No added salt (or very little and ionised), as salt is everywhere.
Related, I tried wild rice for the first time yesterday. It was different, in a good way.
@movq@www.uninformativ.de Yup. Added all the language ones, and bam, working like a charm!
It’s Tuesday, but somehow I have a Thursday kind of feeling… Whatever. I’m following an online auction for a couple of PDAs. The starting price is more than I’d be willing to pay, but there isn’t a single bidder yet. I hope that last, because the seller will put the ad out for a lower price if it does!
@quark@twtxt.netbros.com Answering to myself: it doesn’t. @movq@www.uninformativ.de, would that be something that it could be added?
@quark@twtxt.netbros.com I have removed the cron job, and added jenny -f to the small script that starts mutt with the .muttrc-jenny file. That way when I open, it refresh the feed before. Let’s see how it goes.
Gajim: Gajim 1.3.3
This release features improved Ad-Hoc Commands and brings back spell checking. Gajim 1.3.3 includes many bug fixes and improvements. Thanks everyone for reporting issues!
The Ad-Hoc Commands window has been ported to Gajim’s new Assistant. This unifies the look and feel with other actions using an Assistant and it also fixes some issues.
More Changes New- Profile: A NOTE entry has been added
- API JID for search.jab … ⌘ Read more
GitHub Advisory Database now powers npm audit
Today, we’re adding a proxy on top of the GitHub Advisory Database that speaks the `npm audit` protocol. This means that every version of the npm CLI that supports security audits is now talking directly to the GitHub Advisory Database. ⌘ Read more
Honest Government Ad | AUKUS ⌘ Read more
GitHub Enterprise Server 3.2 brings new color modes and added security capabilities
GitHub Enterprise Server 3.2 is available today as a release candidate. With this release, we’re shipping over 70 new features and changes to improve the developer experience and deliver new security capabilities for our customers. ⌘ Read more
Honest Government Ad | Carbon Capture and Storage ⌘ Read more
2021 Transparency Report: January to June
We’re reporting on a six-month period rather than annually to increase our level of transparency. For this report, we’ve added more granularity to our 2020 stats. ⌘ Read more
Bringing back old-school web pins and buttons
Back in the not-quite-as-bad-old-days (at least as far back as the 90’s), every good website had a small “ad” gif that fans of the site could use as a colorful link. These are called “buttons” or sometimes “pins.”
You can see sites that collect these internet artifacts (both the good ones and boring ones) here and here.
Most people would have **do … ⌘ Read more
Bringing back old-school web pins and buttons
Back in the not-quite-as-bad-old-days (at least as far back as the 90’s), every good website had a small “ad” gif that fans of the site could use as a colorful link. These are called “buttons” or sometimes “pins.”
You can see sites that collect these internet artifacts (both the good ones and boring ones) here and here.
Most people would have **do … ⌘ Read more
Honest Government Ad | Hotel Quarantine ⌘ Read more
Adding support for cross-cluster associations to Rails 7 ⌘ Read more…
added shrine to Artisans who inspire me