Searching yarn

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

I’m really bad at competitive programming. 🙄 For today’s #AdventOfCode puzzle, I spent an eternity trying to understand exactly what kind of bG9naWMgY2lyY3VpdAo= the puzzle input describes – I haven’t done that in well over a decade, so I made little progress. I knew right from the start that SSBoYWQgdG8gbG9vayBmb3IgY3ljbGUgbGVuZ3RocyBhbmQgdGhlbiBmaW5kIHRoZSBMQ00K. It just didn’t occur to me to just run my program on cGFydGlhbCBpbnB1dAo= and print those numbers. đŸ„Ž I only did that after over 4 hours (including time to debug my nasty C code) and then, boom, solution 


​ Read More

Today’s Advent of Code puzzle was rather easy (luckily), so I spent the day doing two other things:

  • Explore VGA a bit: How to draw pixels on DOS all by yourself without a library in graphics mode 12h?
  • Explose XMS a bit: How can I use more than 640 kB / 1 MB on DOS?

Both are 
 quite awkward. 😬 For VGA, I’ll stick to using the Borland Graphics Interface for now. Mode 13h is great, all pixels are directly addressable – but it’s only 320x200. Mode 12h (640 x 480 with 16 colors) is pretty horrible to use with all the planes and what not.

As per this spec, I’ve written a small XMS example that uses 32 MB of memory:

https://movq.de/v/9ed329b401/xms.c

It works, but it appears the only way to make use of this memory is to copy data back and forth between conventional memory and extended memory. I don’t know how useful that is going to be. đŸ€” But at least I know how it works now.

​ Read More

Je viens de dĂ©couvrir que dans #nethack, c’est une mauvaise idĂ©e d’enchanter une armure dĂ©jĂ  Ă  +3. Me voilĂ  Ă  poil dans le donjon, je n’ai plus de robe XD

​ Read More

À propos du remplacement de la pĂąte thermique, il semble que ce soit encore + efficace le lendemain, comme si elle avait besoin de “sĂ©cher”. LĂ , je suis Ă  40°C en moyenne

​ Read More

Je viens de changer la pñte thermique sur le CPU de mon x250. obsdfreqd ne devient plus aussi indispensable : au lieu de tourner autour de 75°C, j’en suis à 55°C. Petit rappel du dimanche soir : pensez à mettre votre bios à jour, à nettoyer le ventilateur et à changer la pñte thermique. #openbsd

​ Read More
In-reply-to » It is a pleasure to work with the help system of Borland’s Turbo C++ 3.0 on DOS. The descriptions are clear and concise. There are short and simple examples. Pretty much every help page is cross-refenced and those links can be clicked.

@eapl.me@eapl.me I have many fond memories of Turbo pascal and Turbo C(++). They really did have a great help system. And debug tools! Its rare for language docs to be as approachable. QBasic was great. As was PHP docs when I first came into web.

​ Read More

It is a pleasure to work with the help system of Borland’s Turbo C++ 3.0 on DOS. The descriptions are clear and concise. There are short and simple examples. Pretty much every help page is cross-refenced and those links can be clicked.

​ Read More

Commentaire du code pour un service de lecture over ssh (et je me la pĂšte au passage avec plein de liens #C ) : https://si3t.ch/log/2023-11-13-txtoverssh.c.txt gopher://si3t.ch/0/log/2023-11-13-txtoverssh.c.txt gemini://si3t.ch/log/2023-11-13-txtoverssh.c.txt http://6gvb6fzoxv72mtlpvr2fgj7ytpeggwuerdawspt24njlkwfxir6jncid.onion/log/2023-11-13-txtoverssh.c.txt gopher://of2w2p5f4hsslk63hmo6tid6r7inhlxuxviq4pb5cxg45enswpbrfjad.onion/0/log/2023-11-13-txtoverssh.c.txt gemini://b2khgkvb2wn4avjshjp63kknsjwikgwff5dwwydldia6qwf4kdnueyad.onion/log/2023-11-13-txtoverssh.c.txt ou encore ‘ssh lire@si3t.ch’ numĂ©ro 45.

​ Read More

So Youtube rea really cracking down on Ad-blockers. The new popup is a warning saying you can watch 3 videos before you can watch no more. Not sure for how long. I guess my options are a) wait for the ad-blockers to catch-up b) pay for Youtube c) Stop using Youtube.

I think I’m going with c) Stop using Youtube.

​ Read More

Elle: ChĂ©ri, j’ai un problĂšme, je ne sais plus oĂč j’ai mis un fichier ni comment il s’appelle. Par contre, je sais que dedans j’ai Ă©crit ‘cahier du soir’. Comment je peux faire? Moi > T’inquiĂšte poulette, un petit script find+odt2txt+grep et c’est la fĂȘte. Elle > Ooooh merci tu es si fort et si beau ! (non)

​ Read More

Je suis Ă  la recherche d’un script (#javascript) qui change la couleur du texte selon la nature grammaticale des mots. C’est censĂ© faciliter la lecture. Ça vous dit quelque chose?

​ Read More

Trop content: j’ai rĂ©ussi Ă  changer la lampe du clignotant arriĂšre de ma voiture tout seul. Fallait dĂ©monter le phare. C’est tout bĂȘte, mais j’en suis fier :). (je dĂ©teste les voitures, ça coĂ»te cher et c’est tout le temps en panne/vidange/CT

​ Read More

Experts warn ‘green growth’ in high income countries is not happening, call for ‘post-growth’ climate policies
The emission reductions in the 11 high-income countries that have “decoupled” CO2 emissions from Gross Domestic Product (GDP) fall far short of the reductions that are necessary to limit global warming to 1.5°C or even just to “well below 2°C” and comply with international fairness principles, as required by the Paris Agreement, according to a paper published in The Lancet Planetary Health j 
 ⌘ Read more

​ Read More
In-reply-to » A GTK 4 application showing an empty window uses about 160 MB of RAM:

@movq@www.uninformativ.de
Doesn’t even compile on my system, which is apparently broken:

> cc -Wall -Wextra -o win win.c $(pkg-config --cflags --libs gtk4)                                                                                                        
cc: error: unrecognized argument in option ‘-mfpmath=sse -msse -msse2 -pthread -I/usr/include/gtk-4.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/graphene-1.0 -I/usr/lib/x86_64-linux-gnu/graphene-1.0/include -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-4 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgraphene-1.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0’
cc: note: valid arguments to ‘-mfpmath=’ are: 387 387+sse 387,sse both sse sse+387 sse,387

​ Read More

A GTK 4 application showing an empty window uses about 160 MB of RAM:

$ wget https://movq.de/v/138ab3e622/win.c
$ cc -Wall -Wextra -o win win.c $(pkg-config --cflags --libs gtk4)
$ ./win

It also takes several seconds to start on my machine because it is compiling shaders and initializing DRI (it’s faster on the second run, unless you happen to lose ~/.cache/mesa_shader_cache/). This might be a hint as to why it’s using so much memory: There’s obviously much more going on behind the scenes these days, not just a little bit of internal housekeeping and then creating a window.

​ Read More

I have used Linux for most my life, and it hat been my daily driver for nearly two decades now. I have been bugged recently how when I exit the terminal buffer has not been cleared leaving whatever contents available to the next user to view.

a quick man zsh I found the STARTUP/SHUTDOWN FILES, and then a quick search on resetting the termianl buffer led me to <esc>c or printf "\033c".

In five minutes something which has bothered me for who knows how long was resolved. Just needed some motivation to figure it out.

​ Read More

On the topic of Programming Languages and Telemetry. I’m kind of curious
 Do any of these programming language and their toolchains collect telemetry on their usage and effectively “spy” on your development?

  • Python
  • C
  • C++
  • Java
  • C#
  • Visual Basic
  • Javascript
  • SQL
  • Assembly Language
  • PHP

​ Read More
In-reply-to » @prologic @movq this is the default behavior of pass on my machine:

@abucci@anthony.buc.ci So.. The issue is that its showing the password by default? Would making an alias to always include the -c help? We can probably engage Jason with a PR to enable a more hardened approach when desired. I’ve spoken to him before and is generally a pretty open to ideas.

I found this app that was created by the gopass author that does copy by default and has a tui or GUI mode https://github.com/cortex/ripasso

​ Read More
In-reply-to » @movq yeah.. i rewrote it a few times because i thought there was something breaking.. but was mistaken though now i am seeing a weird cache corruption.. that seems to come and go. Media

I have found the issue with this very subtle bug.. the cache was returning a slice that would be mutated. The mutation involved appending an item and then sorting. because the returned slice is just a pointer+length the sort would modify the same memory.

          CACHE         Returned slice          
original: [A B C D]     [A B C D]
add:      [A B C D] E   [A B C D E]
sort:     [E A B C] D   [A B C D E]

fix found here:
https://git.mills.io/yarnsocial/yarn/pulls/1072

​ Read More

Hoy estuve diseñando una versiĂłn solitaria de Saint Poker â™ ïžâ™„ïžâ™Łïžâ™Šïž.

No funciona tan mal, se siente divertida y te hace pensar de una manera diferente al Hold’em. Posiblemente sea la versión sobre la que hare un tutorial de C# y Unity. La versión Ultimate Poker para casino no la siento tan entretenida.

Me gustarĂ­a probar la versiĂłn multijugador. Siento que serĂĄ completamente diferente.

​ Read More
In-reply-to » Por aquĂ­ en america de Norte (llamado Canada), es muy dificil para las autos, los inviernos y las distancia los rompen todos.

ÂżVives en CanadĂĄ 🇹🇩? Suena demasiado frio para mĂ­ đŸ„¶ Mi hermano querĂ­a ir allĂĄ a trabajar, y tengo algunos amigos, pero con mi frĂ­o de 8° C ya me estoy congelando aquĂ­ al norte de MĂ©xico!

¡Me da mucha curiosidad como pueden soportar los autos tanto frío! Me toco manejar en la nieve en Minnesota, aunque quizás no es tanto como lo que soporta el tuyo


​ Read More

Estoy practicando Ruby con el libro Head First (muy recomendado), y me doy cuenta que es bastante diferente a otros lenguajes que conozco y me gustan como Python, JS, C#. Le estoy apostando sobre Go, PHP y otros. Espero sea buena decisiĂłn

​ 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
In-reply-to » Use C do crime! https://cdn.masto.host/pdxsocial/media_attachments/files/107/294/565/215/390/680/original/1d29c85c0aa4c9a5.png

JavaScript : web apps

wut?! 😳 seriously?! đŸ€Šâ€â™‚ïž

Python : small tools

Okay 👌

Go: micro services

Umm bad generalization đŸ€Ł – Example yarnd that powers most of Yarn.social 😂

Java: enterprise software

Yes! Oh gawd yes! đŸ€Ł And Javaℱ needs to die a swift death!

C: crimes

Hmmm? đŸ€” I feel this one is going to have some backslash and/or go the way of “Hacker” being misconstrued to mean entirely different/incorrect things as is what’s happening in the media (for various definitions of “media”).

​ Read More
In-reply-to » Assuming the DNS is playing ball now, my little personal site https://www.andrewjvpowell.com/ is now self hosted and solar powered. As @mckinley can attest, running on the original nearlyfreespeech.net non-production plan could use as little as $0.01 per day so there's not really any advantage to this, its just... because I can 🙃

a simple Makefile for forwarding internet to your local machine:

SSH_HOST=https://xuu.me
PRIV_KEY=~/.ssh/id_ed25519
forward:
	LOCAL_PORT=$(HOST_PORT); sh -c "$(shell http --form POST $(SSH_HOST) pub=@$(PRIV_KEY).pub | grep ^ssh | head -1 | awk '{ print "ssh -T -p " $$4 " " $$5 " -R " $$7 " -i $(PRIV_KEY)"  }')"

​ Read More
In-reply-to » My kid just uncovered a bug in a program I wrote by grabbing my laptop and smacking the keyboard a bunch. Biological input fuzzing; a real-life chaos monkey.

“ç”, I think. Anything above 7-bit ASCII would’ve done it, though.

​ Read More

@prologic@twtxt.net @jlj@twt.nfld.uk @movq@www.uninformativ.de

 /p/tmp > git clone https://www.uninformativ.de/git/lariza.git                                                                                                    Mon May 24 23:48:18 2021
Cloning into 'lariza'...
 /p/tmp > tree lariza/                                                                                                                                    12.5s  Mon May 24 23:48:32 2021
lariza/
├── BUGS
├── CHANGES
├── LICENSE
├── Makefile
├── PATCHES
├── README
├── browser.c
├── man1
│   ├── lariza.1
│   └── lariza.usage.1
├── user-scripts
│   └── hints.js
└── we_adblock.c

2 directories, 11 files

​ Read More