Feda /dev/ - No Javascript allowed

Normas
spoiler
Personas non gratas
Memes feda dev




B

#43139 Hostia, le estoy echando un ojo a tu blog y el truco este de

curl -L https://github.com/kubernetes/kubernetes/pull/115382.patch | git am

Por tonto que parezca es de estas cosas que te suben la calidad de vida un poco.

A todo esto, he visto que tienes una entrada sobre las 6 reglas de gatto, de hace ya dos años. Qué opinas hoy día al respecto? lo mismo que has puesto en tu entrada o ha cambiado de alguna manera?

1 respuesta
desu

#43141 en el de gatto no hay opinion, es un extracto directo que simplifique borrando cositas para que sea mas corto. Que opino en que sentido? Sistema educativo? Mundo laboral? En la vida en general?

Mundo laboral:

  • Stay in the class where you belong: el otro dia hable de que no creo en senior ni junior ni en jerarquias

  • Turn on and off like a light switch: esto quizas aplicaria en el sentido haz lo que te digan de hacer, no estoy de acuerdo, el trabajo debe ser bottom up. si tienes meetings y no quieres ir pues no vayas.

  • Surrender your will to a predestined chain of command: en fin. no tengo manager porque nadie puede manejarme

  • I determine what curriculum you will study: a nivel mas general y filosofico hay que centrarse en lo que mas te gusta, encontrar pasion y explotarla. a nivel de trabajo, bottom up > top down decission making

  • Your self-respect should depend on an observer's measure of your worth: pff horrible, es que ni comento esta

  • I teach children that they are being watched: esto es que es tan triste... es que literalmente tu jefe es tu profesor del instituto controlando que hagas los deberes.

nse yo creo que sigo opinando lo mismo... y lo hare siempre. no entiendi tu pregunta muy bien.

1 respuesta
B

#43142 Sí, perdona, que escribo mientras me hablan y no concreto mucho. Me refería que al haber puesto en tu blog un extracto literal de lo que escribió en su momento sobreentiendo que estás de acuerdo con lo que dice, y mi pregunta era si te sigue pareciendo que tiene razón o quizá has cambiado y te parece un poco conspiranoico

1 respuesta
desu

#43143 no es conspiranoico.

es que nuestra raza siempre ha basado las jerarquias en la agresion y el abuso de los demas.

a mi me parece mal y defiendo la libertad porque sufro la opresion.

de pagar impuestos al sistema educativo.

opresion y agresion.

1 respuesta
JuAn4k4

#43144 Osita me has recordado un cojón a un ex compañero mío que siempre habla de la domesticación del hombre y tal.

isvidal

Las dos canciones que mas me representan ahora mismo, cuales son las vuestras?

2 respuestas
paulinho

#43103 Para ella es mejor estar a las 21.00h currando que con sus hijos. El mundo es muy raro, verdad?

TheBrotha

#43146

Ahora no lo tengo todo, pero vamos teniendo algo

Kaydy 'Coelho' Kain
1 1 respuesta
JuAn4k4

#43146 A mi se siempre Ama, ama y ensancha el alma, junto con Imagine son las que mejor me representan en general.

1
desu

#43148 A$AP DE$U

I'm the motherfuckin' Lord of this fashion shit
Don't I deserve just to brag a bit?
Set the blueprint, fuck your two cents
Number 1 stunner, ask Tumblr if I'm accurate
My motherfuckin' swag is immaculate
Plus I got enough style just to mack your bitch
I think back to when pockets packin' lint
It's like a nigga got rich on accident
Now back to Pimp, bitches lie, killers never lie
Triggers on the side by side, bet I'm down to ride
Prosper said let's ride to the sky, call it catastrophic
We don't ever die, we just multiply, bitch

I throw these Maybach keys
I wear my heart on the sleeve
I know that we the new slaves
I see the blood on the leaves
I see the blood on the leaves
I see the blood on the leaves
I know that we the new slaves
I see the blood on the leaves
They throwin' hate at me
Want me to stay at ease
Fuck you and your corporation
Y'all niggas can't control me
I know that we the new slaves
I know that we the new slaves
I'm 'bout to wild the fuck out
I'm goin' Bobby Boucher
I know that pussy ain't free
You niggas pussy, ain't me
Y'all throwin' contracts at me
You know that niggas can't read

estos tontitos del hilo que no saben lo que es pasar hambre se creen que se puede salir del guetto escuchando musica de cayetanos y bad bunny

PiradoIV

¿Salir del guetto es emanciparse por fin de casa de los papis?

1 respuesta
desu

#43151 que emanciparse si voy a prejubilar a mi madre dentro de poco

la voy a convertir en mi cocinera particular

tu quitaste de trabajar a tu familia o eres un fracasado?

1 respuesta
PiradoIV

Soy un fracasado, de esos que saben cocinar y tal.

Nos hacemos un 1vs1 friendo huevos cuando quieras.

5 1 respuesta
NoSeke_1

#43152 le has preguntado? Igual prefiere seguir trabajando para otro a tenerte a ti como jefe.

1
desu

#43153 no escucho consejos de gente menos exitosa que yo


hoy por cierto estoy pensando en como podriamos re hacer todos los servidores http del mundo.

ahora mismo la manera en que trabajamos es que levantamos 1 proceso, y este proceso spawnea threads, y cada thread corre un event loop. aprovechando las vcpu disponibles. mas o menos. podemos considerar que algo normal y generalista tiene una forma de este estilo.

debido a la cantidad de bugs que he encontrado en los frameworks spring, webflux, reactor, netty y relacionados. es obvio que esto es demasiado complicado para los fperos y que la gente ni lo sabe usar ni lo sabe programar. para empezar usar java es un red flag de que eres un MAL PROGRAMADOR. Un MEDIOCRE.

ahora, estaba pensando en un modelo mucho mas simple que he visto por ahi hoy, imagina correr dentro de tu container lo siguiente:

parallel --jobs 2 --halt now,done=1 ::: \
        "./myhttpserver --port 8080" \
        "./myhttpserver --port 8081"

donde cada server ya se ejecuta en una cpu, y myhttpserver tansolo tiene un simple eventloop que ante cualquier fallo peta.

cuando algo pasa al petar, es el supervisor que quieras del OS de tu container quien se encarga de re-start. esto ya hace que te ahorres mil problemas de multitasking a nivel de proceso, threadlocal, memoria compartida, memoria entre loops, corutinas entre cpus... etc etc

y los crashes como si fuera erlang y corriesemos procesos sobre la beam. que siempre es mas elegante que tratar de hacer recoveries a nivel de proceso... suele ser un red flag de que tu codigo esta mal y tienes memoria compartida o cosas mal diseñadas.

entonces siguiendo este modelo el unico cambio que veo es que en lugar de enxufar todo a un socket 8080 como normalmente hacemos, deberiamos balancear en algun punto entre los distintos sockets que usara la instancia. si tenemos 4 vcpu, pues tendremos 4 puertos a balancear el trafico, lo cual no es problema y se puede hacer a nivel de hardware incluso.

que opinais? que otros downsides le veis?

si la mejor linea de codigo es la que no se tira.

porque no haces todo single core y lo tiras en multiples cores usando una herramienta para ello?

1 respuesta
PiradoIV

BTW, un día de estos comparto lo de Prack, que igual os mola. Tiene algo que ver con lo que comentas @desu.

4 2 respuestas
desu

#43156 0 gracia

sabes perfectamente que te queda grande la discusion intelectual, por este motivo toda la gente con mas de 4 neuronas ha abandonado este foro

si solo quede yo... se esta solo

1 respuesta
PiradoIV

#43157 Meh, viniendo de alguien que no escribe dos frases seguidas con sentido, la acusación no me ofende. Encima rabias en seguida.

Te tengo cariño y tal, pero no le llegas a la suela a la mayoría de los fperos a los que insultas. Tus cumbres son los comienzos de la gente medio normal.

Apenas estás saliendo del cascarón, ya te llegará la humildad cuando crezcas.

No te enfades. Besitos.

2
Fyn4r

#43156 Se ha inventado todo ese tocho para escaquearse de un 1v1 a huevo frito

1
JuAn4k4

#43155 Había escrito una parrafada y se me ha borrado (estoy en el móvil y no se hacer undo)- tl;dr; no me parece mala idea, la única pega es que toda la mierda hecha no valdría la mitad, que tampoco sería malo. Aunque ahora con l tendencia a rx se podría reusar muchas cosas.

En el project bloom de Java la idea es la contraria, tú tira de threads que ya me encargo yo de gestionar tu millonada de mierda lo más eficientemente posible. Y tira de thread local para que no te explote la cabeza pensando en concurrencia, echa paladas de threads, que el precio el kg está barato.

Al final ambos approach intentan resolver un mismo problema, y es la mediocridad del dev.

1 1 respuesta
desu
#43160JuAn4k4:

En el project bloom de Java la idea es la contraria

porque estos proyectos estan hechos para atraparte en su ecosistema y venerte frameworks y mierdas... project bloom no quiere hacer la programacion mejor, quiere que uses java.

#43160JuAn4k4:

Y tira de thread local para que no te explote la cabeza pensando en concurrencia, echa paladas de threads, que el precio el kg está barato.

bueno el threadlocal, normalmente nos referimos a nivel de kernel thread, no user thread. y project bloom no soluciona nada. asi que no entiendo a que te refieres. la manera de no compartir memoria ni punteros kernel thread => user thread es pasar mensajes como lo hace go. asi no tienes problemas.

quizas te he entendido mal, mi experiencia con el threadlocal es cuando hago rust y creo un thread y lo tiro con tokio y tengo que pasar cosas "down the stack"

#43160JuAn4k4:

Al final ambos approach intentan resolver un mismo problema

bueno, no estoy de acuerdo. creo que solo es mediocridad de dev. al menos viendo como la gente usa java, jvm, netty, webflux y demas... no tienen ni puta idea de que es un thread ni que es un event loop y hay mil problemas...

un dia tuvimos que meter el profiler a la jvm de un serivcio y tenemos como 8 threads creados que nadie usa que por algun motivo alguna mierda de spring te crea XDDDD

el modelo que propongo evitaria que los programadores mediocres de java la liasen tanto. porque no necesitarias nada de este ecosistema de frameworks...

reactive feign por cierto, tener clientes con esa mierda de framework en lugar de hacer una llamada http... menuda porqueria XD

imaginate mi modelo, tienes que cada peticion http que te llega es una corutina en un proceso, y cada proceso es una vcpu. en que casos necesitas compartir memoria o datos entre corutinas? si es que no tiene sentido... y si quieres tener algun recolector pues haces ipc o escribes a un mismo sitio sin problema.

1 respuesta
JuAn4k4

#43161 Me refería a cómo se usaba el thread local antes para guardar datos de cada request (authentication, request-cache, etc).

Normalmente compartir datos entre procesos, el caso más común es caching.

1 respuesta
desu

#43162 Ah no tengo ni idea la verdad de eso de auth requestcache a que te refieres.. Con antes te refieres al modelo 1 thread : 1 request? O memoria compartida vs pasar mensajes?

Es que el caso de caching con thread local no lo resuelves entre kernel threads... sigues necesitando compartir una referencia.

https://tokio.rs/tokio/tutorial/shared-state

use tokio::net::TcpListener;
use std::collections::HashMap;
use std::sync::{Arc, Mutex};

#[tokio::main]
async fn main() {
    let listener = TcpListener::bind("127.0.0.1:6379").await.unwrap();

println!("Listening");

let db = Arc::new(Mutex::new(HashMap::new())); // *1

loop {
    let (socket, _) = listener.accept().await.unwrap();
    // Clone the handle to the hash map.
    let db = db.clone(); // esto nos da una nueva referencia para pasarlo hacia abajo

    println!("Accepted");
    tokio::spawn(async move {  // *2
        process(socket, db).await;
    });
}
}

*1 db seria la memoria compartida, en este caso un hashmap que se esconde debajo de un atomic reference count pointer y un mutex

2 fijate en el move, este move mueve la referencia al stack de la corutina** de esta manera te olvidas a nivel de corutina de el thread local de padre... para ti todo esta en tu stack y al terminar te limpias liberando memoria. y el arc hace que rust te gestione el drop por ti.

en este ejemplo tokio::spawn usa el event loop por defecto, que creo que usara tu numero de CPU como numero de threads. para ti el kernel thread es transparente.

que es lo que yo defiendo mas arriba. a mi me gustaria tener tansolo 1 kernel thread por proceso. porque si solo paso memoria a las corutinas y esto lo haces bien, te la suda la memoria compartida... si necesitas comunicar corutinas que serian HTTP request... que cojones estas haciendo?

en que casos de uso necesitas comunicar corutinas entre ellas? mmm muy raro eh. y si necesitas algo compartido, seria atraves del kernel como el ejemplo de la db, y seria a nivel de 1 thread! simplificando todo.

asique tiraria el codigo de arriba con un runtime fijado a 1 kernel thread. y si quiero tener 4 procesos, dentro del contenedor mismo ejecutaria los 4 procesos. si nuuunca algo peta, el contenedor que haga restart del proceso.

el problema que queremos solucionar es tener que gestionar todo el tema de threading y event loops a nivel de aplicacion. porque esto es spring+netty+webflux+reactor y ESTA ROTO, ESTA LLENO DE BUGS.

es que si vosotros haceis un ps aux en vuestra maquina y mirais todo lo que estais corriendo... y mirais los pids y parents... vereis que la manera en que se programa en user space suele diferir del kernel en este sentido... mmm para que quieres tener una jerarquia padre => hijos si son procesos independientes?

si yo tengo un servidor http y tengo 4 cpus, pues tiro 4 procesos, y si uno pasa algo lo reinicio... porque quiero tener 1 proceso, que spawnea 4 threads que tengo YO que contorlar??? no es mas facil que lo haga el kernel por mi?

no se, cual es el pro/cons de tener 1 proceso y tirar 4 threads vs tener 4 procesos de 1 thread cada uno? yo veo mas facil lo segundo XD

1 respuesta
JuAn4k4

#43163 Request cache es un patrón de cachear en el contexto de un request y no compartido con el resto de requests. Y si me refería a 1 request = 1 thread, que se hacía antes.

Y si, si el HW tiene 4 cpus lo mejor es tener 4 kernel threads y ya, y ejecutar todo ahi en un event loop. Y eso se intenta simular con la “mierda que tenemos” para que “sigan usando mi mierda” como bien has dicho. Very.X lo hace un poco mejor que Spring, lo de spring es meter capa tras capa tras capa sobre lo que ya está hecho.

Yo creo que estamos muy alineados aquí si.

1 1 respuesta
desu

#43164 Ademas en la practica la manera actual de desplegar y provisionar es algo parecido a lo siguiente:

Donde cada app o servicio, esta en su propia instancia, y nosotros escalamos horizontalmente es servicio creando nuevas instancias. En este caso tengo 2 cajas que serian 2 instancias, y dentro 2 apps corriendo que serian 2 procesos por ejemplo.

Si el provisionamiento, obviando side cars para logs, metricas y demas, esta centrado en tener 1 servicio 1 app 1 instancia, y esta instancia tiene un hardware determinado, que problema hay en tener 1 proceso o 4 o 150 mil millones? Si el kernel de esa instancia es dedicado a hacer lo que tu quieres.

Es como si a nivel de provisionamiento, en lugar de desplegar en instancias con 2 vcpus, me sale de la polla solo usar 1 vcpu (que asi es como funciona por dentro el cloud provider al final no? por eso existen los vecinos noisy), y escalar con 1 vcpu en paralelo lo que me sale de la polla.

Bueno, quizas esto ultimo no es lo optimo a nivel de hardware y debemos encontrar un equilibro con el numero de vcpu/instancias, pero esto no me fuerza a tener que spawnear 1 proceso padre por aplicacion que quiera correr y luego tener hijos...

1 respuesta
JuAn4k4

#43165 Fargate es algo así, provisionas por vcpus y RAM, ahora eso si se pagan a precio de oro, y encima al final es lo mismo de siempre.

isvidal

Alguno quiere? https://zed.dev/

Es brutal lo rapido que va comparado con VSCode y Intellij, yo no lo uso porque pierdo demasiada funcionalidad a dia de hoy comparado con WebStorm, pero para los mas puretas/raws, probadlo (Rust, TypeScript) porque de verdad que es brutal.

2 respuestas
desu
#43167isvidal:

Es brutal lo rapido que va comparado con VSCode y Intellij


Sois adorables...

1 respuesta
B

#43168 en tu caso es:
Lo que tarde en iniciarse el VS Code + 193 milliseconds de lo que tarda en iniciarse el plugin de neovim

PaCoX

contra mas tarde en iniciar mejor, asi te puedes tomar un cafe o leer mediavida

6 1 respuesta