Searching We.Love.Privacy.Club

Twts matching #tracking
Sort by: Newest, Oldest, Most Relevant

“There is, however,
evidence to suggest that a proportion of advertising-related data collection and tracking could be unnecessary, fuelling ad fraud and ‘made for advertising’ websites that have limited value to society, as well as generating carbon emissions.” href=”https://we.loveprivacy.club/search?q=%23ClimateCrisis
”>#ClimateCrisis**
“There is, however,

evidence to suggest that a proportion of advertising-related data collection and tracking could be unnecessary, fuelling ad fraud and ‘made for advertising’ websites that have limited value to society, as well as … ⌘ Read more

⤋ Read More

** I read some books in 2022, and have some thoughts about computer science writing **
At the start of this year I set out to revive my long dead reading habit. After having kids it fell by the wayside. I’ve read 41 books so far this year. Mostly a mix of science fiction and nonfiction computer science books. Here’s the complete list of everything I’ve read. I’ve got mixed feelings about keeping track and sharing cou … ⌘ Read more

⤋ Read More

Erlang Solutions: Change data capture with Postgres & Elixir
CDC is the process of identifying and capturing data changes from the database.

With CDC, changes to data can be tracked in near real-time, and that information can be used to support a variety of use cases, including auditing, replication, and synchronisation.

A good example of a use case for CDC is to consider an application which inserts a record into the database and pushes an event to a message queue after the record has … ⌘ Read more

⤋ 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

⤋ Read More

The journey of your work has never been clearer
In July, we launched the general availability of GitHub Projects, and now we are excited to bring you even more features designed to make it easier to plan and track in the same place you build! ⌘ Read more

⤋ Read More

**RT by @mind_booster: Who’d a thought. Golly gosh. Apple “privacy is a fundamental human right” .. but ….

“Apple Is Tracking You Even When Its Own Privacy Settings Say It’s Not, New Research Says”
https://gizmodo.com/apple-iphone-analytics-tracking-even-when-off-app-store-1849757558**
Who’d a thought. Golly gosh. Apple “privacy is a fundamental human right” .. but ….

“Apple Is Tracking You Even When Its Own Privacy Settings Say It’s Not, New Research Says”

[gizmodo.com/apple-iphone-ana…](https://gizm … ⌘ Read more

⤋ Read More

[…] UN framework convention on climate change said: “This does not go far enough, fast enough. This is nowhere near the scale of reductions required to put us on track to 1.5C. National governments must set new goals now and implement them in the next eight years.”
[…] UN framework convention on climate change said: “This does not go far enough, fast enough. This is nowhere near the scale of reductions required to put us on track to 1.5C. National governments must set new goals now and implement them in … ⌘ Read more

⤋ Read More

Voice Actor’s 109-track <i>Sent From My Telephone</i> is a surreal, fathomless dream
After spending countless late-night hours with mysterious artist Voice Actor’s massive, utterly hypnotic, 109-track, three-and-a-half-hour-long dark horse AOTY contender Sent From My Telephone since it dropped a couple weeks back, I’m now officially in love… [Continue reading…](https://www.gorillavsbear.net/voice-actors-sent-from-my-tele … ⌘ Read more

⤋ 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

⤋ Read More

The thing is I don’t know how to search the web logs on Codeberg or even if they are public. That is the issue with just regular text files. The thing with having the follower list in the twtxt file is that then it knows to track friends of friends like with yarn.
If not having www is an issue when I will add it in. Good to know its something I have to change

⤋ Read More
In-reply-to » Progress! so i have moved into working on aggregates. Which are a grouping of events that replayed on an object set the current state of the object. I came up with this little bit of generic wonder.

(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 Objects

A 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
}

⤋ Read More

@eaplmx@twtxt.net That reminds me, I should start doing some exercises, too. Years ago, I wrote a web application to track those and two other mates used it as well. This way we motivated us to do our daily pushups and situps. I even extended it to upload GPX trajectories from our bike rides and hikes to show the route on an OSM map. Finally, you could enter your weights and get a nice graph with all the ups and downs. I should revibe this project. And maybe even rewrite it.

⤋ Read More

**R to @mind_booster: Of course, kokori’s track is not the only one worth listening to. The compilation starts with the Argentinian project “Bosques”, with the track “El Planeta Es Una Nave”, a version of it available here:

https://soundcloud.com/bosques/el-planeta-es-una-nave**
Of course, kokori’s track is not the only one worth listening to. The compilation starts with the Argentinian project “Bosques”, with the track “El Planeta Es Una Nave”, a version of it available here:

[soundcloud.com/bosques/el-pl…]( … ⌘ Read more

⤋ Read More

**Ten years ago, the 3CD compilation “Bearded Snails” was released, featuring 16 tracks and 19 artists of the “A Beard of Snails Records” roster.

The last of those tracks is kokori’s “Attention”, in its first release to the general public. Now here: https://the20th.bandcamp.com/track/attention**
Ten years ago, the 3CD compilation “Bearded Snails” was released, featuring 16 tracks and 19 artists of the “A Beard of Snails Records” roster.

The last of those tracks is kokori’s “Attention”, in its first release to … ⌘ Read more

⤋ Read More

How the GitHub Security Team uses projects and GitHub Actions for planning, tracking, and more
Can projects and GitHub Actions be used by your non-developer teams? They absolutely can. Check out how our Security Team uses GitHub to run the department effortlessly. ⌘ Read more

⤋ Read More
In-reply-to » A read-only, finger(1)-based social network, maybe? http://txtpunk.com/fingers/

It’ll track a bunch of finger(1) endpoints and let you see what’s new. Very early draft. Not actually a social network, more an anti-social network for ‘80s CompSci transplants. :-)

⤋ Read More