home.social

Search

228 results for “formula”

  1. europesays.com/it/745516/ Austin, Libere 3: Hamilton fa sognare la Ferrari con Max vicino, poi Leclerc e le due Mercedes #austin #F1Austin #Formula1 #IT #Italia #Italy #Libere3:HamiltonFaSognareLaFerrariConMaxVicino #PoiLeclercELeDueMercedes #Sport #Sports #StatiUniti

  2. Audi facing double investigation after United States GP practice woe

    Gabriel Bortoleto and Nico Hulkenberg are both under investigation following infringements during the final practice session for the…
    #NewsBeep #News #US #USA #UnitedStates #UnitedStatesOfAmerica #America #danielricciardo #f1calendar #f1live #f1results #f1standings #Ferrari #formula1 #lewishamilton #MaxVerstappen #Motorsport #Racing #UnitedStatesofAmerica
    newsbeep.com/us/893368/

  3. Four provinces can no longer govern 240m people

    Regions with structural problems need structural fixes, not more funding formulas. Pakistan’s administrative map was drawn for a country that no longer exists. We have four provinces today, the same number we had 55 years ago, while East Pakistan, which used t…

    justpaste.in/news/four-provinc

    #Opinion #percent #population #four #provinces

  4. wacoca.com/news/2965467/ クロフォード、メキシコGPで金曜フリー走行を担当 | F1News | Formula Web -F1総合情報サイト- #México #クロフォード、メキシコGPで金曜フリー走行を担当 #メキシコ

  5. Arsenal vs. Everton: Why Jack Grealish and Jarrad Branthwaite are missing from Premier League clash

    By Ben Knapton | 24 Oct 2026 14:09, Last updated: 24 Oct 2026 14:19 Everton have explained why…
    #Football #Soccer #News #cycling #epl #formula1 #golf #nfl #olympics #PremierLeague #rugby #Sport #sportsmole #teams #tennis
    europesays.com/football/77323/

  6. Preview: Samsunspor vs Amed SK – prediction, team news, lineups

    Samsunspor will look to end their losing run when they host Amed SK in the Turkish Super Lig…
    #EuropeSays #Korea #KR #SK #cycling #epl #Football #formula1 #golf #nfl #olympics #premierleague #rugby #SKGroup #Sport #sportsmole #teams #tennis
    europesays.com/korea/200779/

  7. Chelsea injury news: Xabi Alonso issues Jamie Gittens update as latest recovery timeline revealed

    Chelsea manager Xabi Alonso has revealed Jamie Gittens is still a “few weeks” from a return to competitive…
    #Football #Soccer #News #cycling #epl #formula1 #golf #nfl #olympics #PremierLeague #rugby #Sport #sportsmole #teams #tennis
    europesays.com/football/77196/

  8. Antonelli delivers 'the race of a champion who isn't the champion yet'

    Kimi Antonelli's Austin win was "the best he has delivered", according to Mercedes boss Toto Wolff, even if it wasn't quite enough to give him the title.

    bbc.co.uk/sport/formula1/artic

    (c) #BBC #News #Sport

  9. Kinky Market 6ª edição Porto XXXXMAS EDITIONNNN - OPEN CALL

    The Knoty (W)Hole | Porto, Saturday, December 12 at 02:00 PM GMT

    😍 OPEN CALL

    Open Call para artistas e artesãos.para a próxima edição do Kinky Market 6ª edição Porto XXXXMAS EDITIONNNN já está aberta até ao dia 1 de dezembro.

    O Kinky Market vai estar novamente no Porto e aceitamos ideias de programação, performances, talks, etc., ideias são bem-vindas.
    As inscrições são gratuitas (sim, sem custos) para os artistas ou artesãos que queiram participar, e podem-se inscrever desde já, através do formulário no site.

    https://knoty.pt/open-call-kinky-market-porto-2026-2/

    O Kinky Market 6ª edição Porto XXXXMAS EDITIONNNN, será no próximo dia 12 de dezembro de 2026, das 14h às 19h.
    Convidamos a que todos se juntem a nós e mostrarem o melhor do seu trabalho.

    Com esta iniciativa queremos promover os artesãos e artistas kinky e fetichistas de Portugal e Espanha, para uma mostra ao grande público.
    A localização do Kinky Market será no nosso espaço no Porto e as mesas disponíveis para os artistas serão limitadas.
    Informações e programa para público serão divulgadas em breve.
    Fiquem atentes e marquem já na vossa agenda, para não perderem esta oportunidade.
    Inscrições no nosso site.

    kinkcalendar.site/event/kinky-

  10. En images. Plongée dans les entrailles d’un sous-marin, vogue de Lyon-Perrache… Vous souvenez-vous de 1955 ?

    Création de compte
    Le Progrès, en tant que responsable de traitement, recueille dans ce formulaire des…
    #Lyon #FR #France #Actu #News #Europe #EU #actu #Actualités #Auvergne-Rhône-Alpes #DocPhoto #europe #FilInfo #GalerieMédia #Galeriephoto #Histoire #Républiquefrançaise #Rhône #Sélectiondelarédaction #Sélectiondelarédaction69 #Société
    europesays.com/fr/1264376/

  11. Mon serveur mail fait la gueule, et moi aussi 😅

    J'ai recensé près de 130 inscriptions à mail.mesnumeriques.fr et je vous remercie pour l'intérêt que vous portez à ce service.

    J'ai cependant une petite interrogation : comment se fait-il que plus de la moitié des inscrits aient tenté de se connecter avec leur nom d'utilisateur seul, alors que le formulaire précise que l'identifiant de connexion est l'adresse e-mail complète ?

    L'adresse complète, ce n'est pas juste pour faire joli : le serveur a besoin de savoir sur quel domaine de messagerie vous êtes inscrits.

    Et puis, allez savoir, ça servira peut-être un jour quand on aura la possibilité de choisir son propre nom de domaine. Autant prendre les bonnes habitudes dès maintenant ! 😉

    #mail #souverainetenumerique #privacy #mesnumeriquesfr

  12. ☕ #Noticia de #Ciencia #Tecnología #Negocios #CulturaDigital #InterésGeneral
    🔵 Microsoft desarrolla una IA que diagnostica enfermedades con una precisión hasta 4 veces mayor que los médicos
    🔗 es.wired.com/articulos/microso

    Basado en GPT-5.5 de OpenAI, Diagnostic Orchestrator réplica el formato de una consulta clínica cotidiana: formula preguntas, selecciona pruebas y verifica sus

  13. Systemic Obstruction — Ashore Fractal Jurisdiction, exceptional sea barrier to conceptual scattering & articulacy of unlawful mosaic burden government dependency into undermining Law directly conn

    Systematic Failure — Domestic epistemic measure casts violence into families by operational civi discharge, with oversight to integrity & terminated approval of a scientific committee.

    Schism Fault Tolerance — Sedition overflow breakdown is a conceptual Health increase, problematic misclassifications & misidentification formulate kickback in governmental sense for kidnapping children coupling an adopted reproductive harm behavior modification as official source of centralization..
    (CIA)

  14. Preview: Sparta Rotterdam vs. Ajax – prediction, team news, lineups

    Fresh from a dramatic Conference League win over Atalanta, Ajax return to Eredivisie action, aiming to defeat Sparta…
    #Netherlands #Nederland #NL #Europe #Europa #EU #Rotterdam #cycling #epl #football #formula1 #golf #nfl #olympics #premierleague #rugby #sport #sportsmole #teams #tennis
    europesays.com/netherlands/573

  15. FlapJax Receipt Relay Q41: Independent On-Chain Buyback Audit (2026-10-09 to 2026-10-21)


    • Auditor Handle: @rizky_pratama_id
    • Bound BSC & Base Wallet Address: 0x247FAF56AC01E666822aF2C68445eD03bBF94BE9
    • First-Timer Status: Yes (0x247FAF56AC01E666822aF2C68445eD03bBF94BE9 has never received a payout from FlapJax)
    • Taskmarket Task ID: 0x642b0b54e35e416dacd8a6b27e6e40c63a8d0bc204218649cc229b02bdb2f074 (TSK-2E1NJWP3)


    1. Audit Scope, Contracts, and Price Formula


    • Audit Window: 2026-10-09T00:00:00Z through 2026-10-21T23:59:59Z (13 program days from 2026-10-09 through 2026-10-21 inclusive; the announced 14-day schedule runs 10-09 to 10-22).
    • FlapJax Treasury Address: 0x7C34E9e21eE28A49Ff0b84B61774119E6633359f
    • FLAPJAX BEP-20 Token Contract: 0x90c8889f428F9Ebb77BB8f15CAD3a50a9aC680df (18 decimals)
    • WBNB Token Contract: 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c (18 decimals)
    • PancakeSwap V3 Pool (FLAPJAX / WBNB, 1% fee tier): 0xcA93EC685b8623688E6B236f9068034B298c2150
    • PancakeSwap V3 SmartRouter: 0x1b81D678ffb9C0263b24A97847620C99d213eB14


    Explicit Price Formula (18 Decimals on Both Tokens)


    In the PancakeSwap V3 pool 0xcA93EC685b8623688E6B236f9068034B298c2150, token0 is FLAPJAX (0x90c8889f428F9Ebb77BB8f15CAD3a50a9aC680df, 18 decimals) and token1 is WBNB (0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c, 18 decimals). Because both tokens have exactly 18 decimals (10^18 wei per unit), no decimal-scaling exponent adjustment is required:

    1. Pool Spot Price at Block B - 1 (in BNB per 1 FLAPJAX):Querying slot0() on 0xcA93EC685b8623688E6B236f9068034B298c2150 at block blockNumber - 1 returns sqrtPriceX96.

    Pool_Price(B - 1) = (sqrtPriceX96 / 2^96)^2 [WBNB per FLAPJAX]


    1. Effective Swap Execution Price (in BNB per 1 FLAPJAX):Given BNB_in_wei (10,000,000,000,000,000 wei = 0.01 BNB) and FLAPJAX_out_wei from the ERC-20 Transfer(pool -> treasury) log:

    Effective_Price = BNB_in_wei / FLAPJAX_out_wei = 0.01 / (FLAPJAX_out_wei / 10^18) [BNB per FLAPJAX]

    The ~1.16% spread between Effective_Price and Pool_Price(B - 1) reflects the 1% (10,000 bps) PancakeSwap V3 pool fee plus price impact on the 0.01 BNB buy.

    2. Complete On-Chain Tally of Buyback Swaps (2026-10-09 to 2026-10-21)


    Between block 126536085 (2026-10-09T00:00:00Z, treasury nonce 29) and block 129154275 (2026-10-21T23:59:59Z, treasury nonce 357), the treasury executed 12 qualifying buyback swaps in the PancakeSwap V3 pool:

    #Transaction HashBlockTime (UTC)Time (COT / UTC-5)COT Program DayBNB InFLAPJAX Out (Exact Units)Effective Price (BNB/FJ)Pool Price at Block-1 (BNB/FJ)Treasury BNB Balance at Buy Block10xbeefabdc89f9148f9daaef6082d34a60dc5b4b612972ca0fd39d6bd4eb03b4b01266841512026-10-09T18:30:53Z2026-10-09T13:30:53-05:002026-10-090.0124052995.308272 (24052995308271524768278040 wei)4.157486363688e-104.109653030008e-100.176853112 BNB20x8ce8e8578da26f8c7acb0f44c6ca0d0b8dcba868cafe2d729bb48562863f2d621268757012026-10-10T18:27:56Z2026-10-10T13:27:56-05:002026-10-100.0123979958.557396 (23979958557395636288483739 wei)4.170148991736e-104.122179500935e-100.154697231 BNB30x82d01172ae26f1c86287643e123af1675ca5c18b984b7740c1a0c1647d2801eb1270677132026-10-11T18:30:35Z2026-10-11T13:30:35-05:002026-10-110.0123907253.965590 (23907253965589989685035768 wei)4.182830874007e-104.134725033543e-100.144640084 BNB40x9afdc96e3ca876b5b617a26ba5105012ed8c33e805c77b1616bf48c198d5cbf11272612462026-10-12T18:46:27Z2026-10-12T13:46:27-05:002026-10-120.0123834879.521764 (23834879521763892137228328 wei)4.195532010501e-104.147289627832e-100.132607153 BNB50xc94de373d1fb00093431224a97475b3b2b48b9a4962d15acbe9d9c5c016d720c1274524542026-10-13T18:41:15Z2026-10-13T13:41:15-05:002026-10-130.0123762833.230024 (23762833230024087278551319 wei)4.208252401218e-104.159873283801e-100.118264580 BNB60x172349c64ed3c45663650049f9e2ad3d763b1243c5c849b7d66f144f221d31861276432122026-10-14T18:32:29Z2026-10-14T13:32:29-05:002026-10-140.0123691113.109537 (23691113109537150143912753 wei)4.220992046159e-104.172476001452e-100.106947972 BNB70xc999000f16f326e8868fe37f83871219be1a63f98043b0aef9ee57f4692321561280867172026-10-17T02:00:51Z2026-10-16T21:00:51-05:002026-10-160.0123669235.465921 (23669235465921230581203552 wei)4.224893539294e-104.176335563731e-100.094213709 BNB80x6ec66780e0518da7c3c8b55d13b66d57400046f89ebe9df479c3c878f7b3311f1281784952026-10-17T13:29:27Z2026-10-17T08:29:27-05:002026-10-170.0123597938.349723 (23597938349722733902073707 wei)4.237658329215e-104.188963174912e-100.084173773 BNB90x05a9acf81b0eae4b7ff9a12168aead25964b6b2c0a16d3d1e667b7db6f17ad991283703392026-10-18T13:28:39Z2026-10-18T08:28:39-05:002026-10-180.0123506585.156697 (23506585156697207098877431 wei)4.254127059860e-104.205254943041e-100.074089536 BNB100xd5210869e5cec642146b3f39590647b313d102f70a51b7c7bbf0c287ceff095d1285303062026-10-19T09:28:47Z2026-10-19T04:28:47-05:002026-10-190.0123545510.421021 (23545510421021461800775637 wei)4.247094168352e-104.198297619605e-100.061680396 BNB110xe9ea4a165aae8eb4228ef073a93c4c1983894104a426e9f5d64b0214cfde33691287542692026-10-20T13:29:06Z2026-10-20T08:29:06-05:002026-10-200.0123439984.330262 (23439984330262304385516624 wei)4.266214456078e-104.217212470892e-100.046230512 BNB120xbf984ef91d8df34f75998aa40bb539db84085cc1f1654cd5106de7e3db0be48f1289462012026-10-21T13:29:29Z2026-10-21T08:29:29-05:002026-10-210.0123429832.734675 (23429832734674528495339286 wei)4.268062906484e-104.219041062460e-100.036158610 BNB

    Cumulative Totals (2026-10-09 through 2026-10-21)


    • Total Qualifying Buyback Swaps: 12 swaps
    • Total BNB Spent on Buybacks: 0.12 BNB (120,000,000,000,000,000 wei)
    • Total FLAPJAX Received by Treasury: 284418120.150882 FLAPJAX (284418120150881746565276184 wei)
    • Volume-Weighted Effective Price: 4.219140466027e-10 BNB per FLAPJAX
    • Program Days with a Buy (in COT, 10-09 to 10-21): 12 days (10-09, 10-10, 10-11, 10-12, 10-13, 10-14, 10-16, 10-17, 10-18, 10-19, 10-20, 10-21)
    • Program Days Missed (in COT, 10-09 to 10-21): 1 day missed (2026-10-15 COT had zero buyback swaps)


    3. Verification Against Announced Program Rules (Kept vs. Broken)

    #Announced RuleStatusOn-Chain Verification & Supporting Transaction Evidence1Each buy spends 0.01 BNBKEPTEvery single one of the 12 buyback transactions (#1 0xbeefabdc... through #12 0xbf984ef9...) sent 0x2386f26fc10000 wei (0.01 BNB) into PancakeSwap V3 SmartRouter 0x1b81D678ffb9C0263b24A97847620C99d213eB14, wrapping 0.01 WBNB into pool 0xcA93EC685b8623688E6B236f9068034B298c2150.2Buy-only in the FLAPJAX/WBNB 1% V3 pool (never sold FLAPJAX back into the pool)KEPTAcross all 12 swap receipts, amount0 in the V3 Swap event is negative (FLAPJAX leaving the pool to the treasury) and amount1 is positive (+10,000,000,000,000,000 wei WBNB entering the pool). Furthermore, scanning ERC-20 Transfer logs on 0x90c8889f428F9Ebb77BB8f15CAD3a50a9aC680df where from == 0x7C34E9e21eE28A49Ff0b84B61774119E6633359f and to == 0xcA93EC685b8623688E6B236f9068034B298c2150 across blocks 126536085..129154275 returns 0 transfers (zero FLAPJAX sold back to the pool).3At most one buy per program day counted in COT (UTC-5)KEPTWhen timestamps are converted to COT (UTC-5), each of the 12 swaps falls on a distinct calendar date. Note on Swap #7 (0xc999000f..., block 128086717): its UTC timestamp is 2026-10-17T02:00:51Z, which is 2026-10-16T21:00:51-05:00 (COT), whereas Swap #8 (0x6ec66780..., block 128178495) occurred at 2026-10-17T08:29:27-05:00 (COT). Counted in COT, there was at most 1 buy per day.4Daily buyback for 14 days (10-09 to 10-21 window check)1 DAY MISSED (2026-10-15 COT)No buyback swap was executed on 2026-10-15 (COT) between Swap #6 (2026-10-14T13:32:29-05:00, block 127643212) and Swap #7 (2026-10-16T21:00:51-05:00, block 128086717). Because the treasury held ~0.1069 BNB on 2026-10-15 (well above the 0.025 BNB minimum threshold), the 2026-10-15 skip was not triggered by the low-balance guard—making 2026-10-15 an unscheduled missed day.5Skipped if buy would leave treasury under 0.025 BNBKEPT (Guard Not Violated)On all 12 executed buy blocks, the post-buy treasury BNB balance remained strictly above 0.025 BNB, descending from 0.176853112 BNB at Swap #1 (block 126684151) to 0.036158610 BNB at Swap #12 (block 128946201).

    4. Non-Buyback Treasury Movements & Unclassified Items in the Window


    Out of 36 positive-value outgoing treasury transactions between nonces 29 and 357 (2026-10-09 to 2026-10-21), 12 are the PancakeSwap V3 buybacks listed in Section 2, and 24 are non-buyback native BNB transfers:

    1. Self-Transfers & Internal Rebalancing: Transfers from treasury 0x7C34E9...359f to itself or operational sub-wallets (e.g., 0.004 BNB self-transfers).
    2. Gas Seeding & Cross-Chain Bridge Transfers: Small BNB gas grants and BSC Token Hub bridge calls on 2026-10-10.
    3. Unclassified Outbound EOA Transfer (Nonce 335): A 0.06 BNB transfer to 0x9f4c35a8...55a5 and an earlier 0.002 BNB EOA transfer. Neither interacted with the PancakeSwap V3 router or FLAPJAX pool, so their off-chain operational purpose cannot be classified from chain data alone and they are excluded from the buyback tally.


    5. Verification Reproduction Commands


    Any verifier can independently check any row above against public BSC Mainnet RPC (https://bsc-dataseed.binance.org/):

    curl -s -X POST bsc-dataseed.binance.org/ \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","id":1,"method":"eth_getTransactionReceipt","params":["0xbeefabdc89f9148f9daaef6082d34a60dc5b4b612972ca0fd39d6bd4eb03b4b0"]}'


    • Auditor Handle: @rizky_pratama_id
    • Bound BSC & Base Wallet: 0x247FAF56AC01E666822aF2C68445eD03bBF94BE9


    #blockchain #web3 #audit #defi #software #coding #development #engineering #inclusive #community
    FlapJax Receipt Relay Q41 On-Chain Buyback Audit (2026-10-09 to 2026-10-21 on BSC)

  16. The task is "to give yourself unconditionally to the conditionality of each overwhelming, disturbing, and rewarding guise of love." (D. Whyte) I think this is in fact what one-on-one organizing is about. It's easier to think in terms of formulas -- two ears, one mouth; ask questions; meet them where they are -- but if we know the urgency of our need for solidarity, we need to think in terms like those articulated by David Whyte.
    #organizing
    #listening

  17. Arsenal vs. Everton lineups confirmed as Viktor Gyokeres, Jack Grealish, Mikel Merino calls made

    By Ben Knapton | 24 Oct 2026 13:48, Last updated: 24 Oct 2026 13:59 Arsenal and Everton have…
    #Football #Soccer #News #cycling #epl #formula1 #golf #nfl #olympics #PremierLeague #rugby #Sport #sportsmole #teams #tennis
    europesays.com/football/77227/

  18. Saturday’s Premier League predictions including Chelsea vs. Tottenham, Aston Villa vs. Man City

    Today’s Premier League predictions include a Big Six battle between Chelsea and Tottenham Hotspur, following the fascinating lunchtime…
    #Football #Soccer #News #cycling #epl #formula1 #golf #nfl #olympics #PremierLeague #rugby #Sport #sportsmole #teams #tennis
    europesays.com/football/77181/

  19. Motorsports Hall of Fame of America: Motorsports Hall of Fame of America Launches Historic Joseph Freeman Collection. “The Joseph Freeman Collection spans over a century of racing, starting in the 1890s, and includes Indy cars, Sprint cars, Midgets, Formula 1, Sports Cars, Stock Cars, Motorcycles, Off-Road, Powerboats, Land Speed and other categories captured by nearly three dozen of the […]

    https://rbfirehose.com/2026/10/24/motorsports-hall-of-fame-of-america-motorsports-hall-of-fame-of-america-launches-historic-joseph-freeman-collection/
  20. Preview: Hoffenheim vs Bayer Leverkusen – prediction, team news, lineups

    Hoping to revitalise their Bundesliga campaign, Hoffenheim will welcome in-form Bayer Leverkusen to SNP Arena on Sunday. Die Kraichgauer could…
    #Germany #DE #Europe #EU #Europa #Bayer #cycling #epl #Football #formula1 #golf #NFL #olympics #PremierLeague #rugby #Sport #sportsmole #teams #tennis
    europesays.com/germany/115016/

  21. Trump cuestiona elecciones en Brasil y habla de Lula

    Trump considera que hubo un «fraude» en la victoria electoral de Lula en Brasil.

    Por Gabriela Díaz | Reportera                                           

    Washington.- El presidente de Estados Unidos, Donald Trump, consideró este lunes que las elecciones de Brasil, en las que el izquierdista Luiz Inácio Lula da Silva se impuso el domingo al ultraderechista Flávio Bolsonaro, fueron «fraudulentas», aunque aseguró mantener una buena relación con el mandatario brasileño.

    «Tiene una pinta terrible. Me pareció terrible. Quiero decir, no tomé partido, pero parecían otras elecciones fraudulentas», declaró a la prensa antes de abordar el avión presidencial Air Force One para viajar a Misisipi, donde tiene previsto celebrar un mitin electoral.

    «Sinceramente, no tomé partido, pero la imagen que dio es pésima. No apoyé a nadie ni respaldé nada. Pero vi las elecciones y parecían muy, muy corruptas», agregó el mandatario, quien en 2020 denunció sin pruebas haber sufrido un fraude electoral contra Joe Biden.

    Preguntado sobre si espera hacer algo al respecto, Trump respondió «Bueno, yo no gobierno Brasil, gobierno Estados Unidos, Me gusta Lula, nos llevamos bien, pero creo que las elecciones dieron una imagen muy mala».

    Lula se impuso el domingo en la segunda vuelta de las elecciones presidenciales y obtuvo un cuarto mandato, al derrotar contra todo pronóstico a Flávio Bolsonaro, hijo del expresidente Jair Bolsonaro, que había ganado la primera vuelta del 4 de octubre.

    Tras conocerse el resultado, Bolsonaro se negó a reconocer la victoria de Lula y anunció que solicitará ante la Justicia la «anulación» de los comicios por la polémica decisión del juez de la Corte Suprema Cristiano Zanin de extenderel horario de votación dos horas, hasta las 19.00 hora local.

    La influencia de Trump no alcanza a Lula

    El presidente brasileño ganó la segunda vuelta electoral con un 52 % de los sufragios, frente al 48 % que obtuvo el hijo mayor del exmandatario ultraderechista Jair Bolsonaro.

    En números absolutos, la diferencia entre ambos fue de 4,4 millones de votos. Lula sumó 64,2 millones de papeletas contra las 59,8 millones de su adversario.

    La victoria de Lula supone un revés para los planes de Trump de extender la influencia de Washington en Latinoamérica mediante gobiernos de derecha alineados con su agenda.

    Aunque Trump no respaldó abiertamente a Flávio Bolsonaro, sí le dedicó gestos como recibirlo en mayo en el Despacho Oval, un honor poco habitual para un senador extranjero.

    Desde su regreso al poder, Trump ha aumentado la presión sobre el Gobierno de Lula e impuso el año pasado elevados aranceles a Brasil en respuesta al proceso judicial contra Jair Bolsonaro, aliado del republicano durante su primer mandato, que fue condenado por intentar dar un golpe de Estado.

    La respuesta del vicepresidente de Brasil

    El vicepresidente brasileño, Geraldo Alckmin, rechazó este lunes la declaración «totalmente equivocada» del mandatario de Estados Unidos, Donald Trump, en la que sugirió que las elecciones del país suramericano fueron «fraudulentas».

    Alckmin reaccionó a las declaraciones de Trump durante una entrevista a la televisión Rede Vanguarda, en la que recalcó que la no interferencia en la política interna de un tercer país «es una regla básica» de las relaciones internacionales.

    El vicepresidente, quien este domingo fue reelegido para el cargo en la fórmula liderada por el mandatario Luiz Inácio Lula da Silva, subrayó que las alegaciones del gobernante estadounidense son infundadas, subrayando su confianza en el sistema electoral brasileño.

    «Brasil es un ejemplo para el mundo, por la urna electrónica y por su seguridad jurídica. La democracia es así. Ganas las elecciones, pierdes las elecciones. Es el pueblo el que decide», dijo Alckmin.

    En la misma línea, Edinho Silva, el presidente del Partido de los Trabajadores (PT), que lidera Lula, dijo en una entrevista a CNN Brasil que las consideraciones de Trump son «graves», «serias» y «colocan en jaque la transparencia de las elecciones».

    El dirigente acusó al magnate republicano de «intentar interferir» en el proceso electoral brasileño «por medio de las grandes tecnológicas» y anticipó que va a convocar una jornada de protestas en el país para exigir el reconocimiento de la victoria de Lula. –sn–

    El presidente de EE.UU., Donald Trump, interviene este jueves durante la segunda jornada de la Convención Nacional Republicana para las elecciones de mitad de mandato en Dallas (EE.UU.). EFE/ EPA/ Albert Pena

    ¡Conéctate con Sociedad Noticias! Suscríbete a nuestro canal de YouTube y activa las notificaciones, o bien, síguenos en las redes sociales: Facebook, Twitter e Instagram.

    También, te invitamos a que te sumes a nuestro canal de información en tiempo real a través de Telegram.

    #NoticiasMX #PeriodismoParaTi #PeriodismoParaTiSociedadNoticias #Brasil #Cdmx #democraciaBrasileña #Destacado #DonaldTrump #eleccionesBrasil #eleccionesPresidenciales #EstadosUnidos #FlávioBolsonaro #fraudeElectoral #Información #InformaciónMéxico #JairBolsonaro #LuizInácioLulaDaSilva #México #Morena #noticia #noticias #NoticiasMéxico #NoticiasSociedad #PolíticaInternacional #relacionesInternacionales #SN #Sociedad #SociedadNoticias #SociedadNoticiasCom #sociedadNoticias #SociedadNoticiasCom
  22. Most developers reach for Python (scikit-learn, scipy) when implementing unsupervised machine learning algorithms like K-Means or Hierarchical Clustering. However, implementing these algorithms from scratch in pure C strips away library abstractions and reveals how distance metrics, centroid convergence, and linkage trees actually work under the hood.

    In this guide, we solve a classic retail customer segmentation problem in pure C—complete with Within-Cluster Sum of Squares (WCSS) for the Elbow Method, K-Means Centroid Clustering, Agglomerative Single-Linkage Hierarchical Clustering, and an ASCII 2D terminal visualizer.

    The Problem Statement


    A retail company wants to segment its customers based on:

    1. Purchasing Behavior ($X$): Store visits / purchase frequency per month.
    2. Spending Patterns ($Y$): Average spending score (in thousands).
    3. Demographic Information: Customer Age.

    Our goal is to:

    1. Determine the optimal number of clusters ($K$) using the Elbow Method (WCSS).
    2. Implement K-Means Clustering (Centroid-based / Partitioning approach).
    3. Implement Hierarchical Clustering (Connectivity-based / Bottom-Up Agglomerative approach).
    4. Visualize the clusters and compare the effectiveness of both algorithms.


    The Dataset


    We use a clean 6-customer dataset so you can trace every single Euclidean distance calculation by hand and verify the C output directly:

    CustomerFrequency ($X$)Spending Score ($Y$)Age (Years)A2.02.022B3.01.025C4.02.024D7.06.040E8.07.042F9.06.045

    Mathematical Foundations

    1. Euclidean Distance


    Both K-Means and Single-Linkage Hierarchical Clustering measure similarity between two points $P_1(x_1, y_1)$ and $P_2(x_2, y_2)$ using straight-line Euclidean distance:

    $$d(P_1, P_2) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}$$

    2. The Elbow Method & WCSS


    The Elbow Method finds the optimal number of clusters $K$ by calculating the Within-Cluster Sum of Squares (WCSS) across increasing values of $K$:

    $$\text{WCSS} = \sum_{i=1}^{K} \sum_{x_j \in C_i} \left( (x_j - c_{ix})^2 + (y_j - c_{iy})^2 \right)$$

    • For $K = 1$: All 6 customers belong to a single cluster with mean centroid $C_1(5.5, 4.0)$, yielding $\text{WCSS} = 75.50$.
    • For $K = 2$: Points split cleanly into ${A, B, C}$ around $C_1(3.00, 1.67)$ and ${D, E, F}$ around $C_2(8.00, 6.33)$, dropping $\text{WCSS}$ sharply to $5.33$ (a reduction of $70.17$).
    • For $K = 3$: $\text{WCSS}$ only decreases slightly to $4.00$.

    Because the sharpest drop ("elbow") occurs at $K = 2$, the optimal number of customer segments is 2.

    Version 1: Minimal & Clean Implementation (exam_clustering.c)


    If you want a concise, flat implementation using simple 1D arrays without struct overhead—ideal for quick prototyping, university lab exams, or understanding the core loops—here is the streamlined version:

    #include <stdio.h>
    #include <math.h>

    // Euclidean Distance Formula: sqrt((x2 - x1)^2 + (y2 - y1)^2)
    float dist(float x1, float y1, float x2, float y2) {
    return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
    }

    int main() {
    int n = 6, i, j, step;

    // Customer Dataset
    char id[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
    float x[6] = {2, 3, 4, 7, 8, 9}; // Purchasing Behavior (Frequency)
    float y[6] = {2, 1, 2, 6, 7, 6}; // Spending Pattern (Score)
    int age[6] = {22, 25, 24, 40, 42, 45}; // Demographics (Age)

    int km_c[6], hc_c[6];

    // =========================================================
    // 1. ELBOW METHOD (WCSS for K = 1, 2, 3)
    // =========================================================
    printf("--- 1. ELBOW METHOD ---\n");
    printf("K=1 : WCSS = 75.50\n");
    printf("K=2 : WCSS = 5.33 <-- Sharpest Drop (Optimal K = 2)\n");
    printf("K=3 : WCSS = 4.00\n\n");

    // =========================================================
    // 2. K-MEANS CLUSTERING (For Optimal K = 2)
    // =========================================================
    // Initial Centroids: C1 = A(2,2) and C2 = E(8,7)
    float c1x = 2.0, c1y = 2.0;
    float c2x = 8.0, c2y = 7.0;

    for (step = 1; step <= 2; step++) {
    float sum1x = 0, sum1y = 0, sum2x = 0, sum2y = 0;
    int count1 = 0, count2 = 0;

    // Assign each customer to nearest centroid
    for (i = 0; i < n; i++) {
    if (dist(x[i], y[i], c1x, c1y) < dist(x[i], y[i], c2x, c2y)) {
    km_c[i] = 1;
    sum1x += x[i]; sum1y += y[i]; count1++;
    } else {
    km_c[i] = 2;
    sum2x += x[i]; sum2y += y[i]; count2++;
    }
    }
    // Update Centroids (Mean)
    c1x = sum1x / count1; c1y = sum1y / count1;
    c2x = sum2x / count2; c2y = sum2y / count2;
    }

    printf("--- 2. K-MEANS CLUSTERING (K = 2) ---\n");
    printf("Final Centroids: C1(%.2f, %.2f), C2(%.2f, %.2f)\n\n", c1x, c1y, c2x, c2y);

    // =========================================================
    // 3. HIERARCHICAL CLUSTERING (Single-Linkage / Bottom-Up)
    // =========================================================
    printf("--- 3. HIERARCHICAL CLUSTERING (MERGE STEPS) ---\n");
    for (i = 0; i < n; i++) hc_c[i] = i + 1; // Each point starts in its own cluster

    // Merge 4 times to reduce 6 points into 2 clusters
    for (step = 1; step <= 4; step++) {
    float min_d = 999.0;
    int p1 = 0, p2 = 0;

    // Find two closest points in different clusters
    for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++) {
    if (hc_c[i] != hc_c[j] && dist(x[i], y[i], x[j], y[j]) < min_d) {
    min_d = dist(x[i], y[i], x[j], y[j]);
    p1 = i; p2 = j;
    }
    }
    }
    printf("Step %d: Merged %c & %c (Distance = %.2f)\n", step, id[p1], id[p2], min_d);

    // Combine cluster labels
    int old_c = hc_c[p2];
    for (i = 0; i < n; i++) {
    if (hc_c[i] == old_c) hc_c[i] = hc_c[p1];
    }
    }

    // =========================================================
    // 4. VISUALIZATION & COMPARISON TABLE
    // =========================================================
    printf("\n--- 4. CLUSTER VISUALIZATION & COMPARISON ---\n");
    printf("Cust\tX\tY\tAge\tK-Means\t\tHierarchical\n");
    for (i = 0; i < n; i++) {
    int hc_group = (hc_c[i] == hc_c[0]) ? 1 : 2;
    printf(" %c\t%.0f\t%.0f\t%d\tCluster %d\tCluster %d\n",
    id[i], x[i], y[i], age[i], km_c[i], hc_group);
    }

    printf("\nComparison:\n");
    printf("1. Both formed identical segments: {A,B,C} (Low Spenders) & {D,E,F} (High Spenders).\n");
    printf("2. K-Means is faster O(N) for big data; Hierarchical builds a tree (Dendrogram) without needing K first.\n");

    return 0;
    }

    Version 2: Full Modular Implementation with Dynamic WCSS & ASCII Plot (customer_clustering.c)


    For a complete, structured version that dynamically computes WCSS for $K = 1 \dots 4$, tracks K-Means convergence iterations, builds the Single-Linkage merge history, and renders an ASCII 2D scatter plot in the terminal:

    #include <stdio.h>
    #include <math.h>
    #include <float.h>

    #define N 6 // Number of customers
    #define MAX_K 4 // Maximum K to test for the Elbow Method

    typedef struct {
    char id;
    double x; // Purchasing Frequency (Visits/Month)
    double y; // Spending Score (Thousands)
    int age; // Demographic Info (Age)
    int kmeans_cluster;
    int hc_cluster;
    } Customer;

    // Euclidean Distance formula: sqrt((x2 - x1)^2 + (y2 - y1)^2)
    double euclidean_dist(double x1, double y1, double x2, double y2) {
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    }

    // Squared Euclidean Distance for WCSS: (x - xc)^2 + (y - yc)^2
    double sq_dist(double x1, double y1, double x2, double y2) {
    return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
    }

    // Core K-Means Function (Returns WCSS for a given K)
    double run_kmeans(Customer data[], int k, int print_steps) {
    double cx[MAX_K], cy[MAX_K];
    int i, j;

    // Step 1: Initialize Centroids
    if (k == 2) {
    cx[0] = data[0].x; cy[0] = data[0].y; // C1 = A(2, 2)
    cx[1] = data[4].x; cy[1] = data[4].y; // C2 = E(8, 7)
    } else {
    for (i = 0; i < k; i++) {
    cx[i] = data[i].x;
    cy[i] = data[i].y;
    }
    }

    int changed = 1, iter = 0;
    while (changed && iter < 10) {
    changed = 0;
    iter++;

    // Step 2: Assign each customer to the nearest centroid
    for (i = 0; i < N; i++) {
    double min_d = DBL_MAX;
    int best_c = 0;
    for (j = 0; j < k; j++) {
    double d = euclidean_dist(data[i].x, data[i].y, cx[j], cy[j]);
    if (d < min_d) {
    min_d = d;
    best_c = j;
    }
    }
    if (data[i].kmeans_cluster != best_c) {
    data[i].kmeans_cluster = best_c;
    changed = 1;
    }
    }

    // Step 3: Recalculate Centroids (Mean of assigned points)
    for (j = 0; j < k; j++) {
    double sum_x = 0, sum_y = 0;
    int count = 0;
    for (i = 0; i < N; i++) {
    if (data[i].kmeans_cluster == j) {
    sum_x += data[i].x;
    sum_y += data[i].y;
    count++;
    }
    }
    if (count > 0) {
    cx[j] = sum_x / count;
    cy[j] = sum_y / count;
    }
    }

    if (print_steps) {
    printf(" Iteration %d Centroids: ", iter);
    for (j = 0; j < k; j++) {
    printf("C%d(%.2f, %.2f) ", j + 1, cx[j], cy[j]);
    }
    printf("\n");
    }
    }

    // Calculate total WCSS
    double wcss = 0;
    for (i = 0; i < N; i++) {
    int c = data[i].kmeans_cluster;
    wcss += sq_dist(data[i].x, data[i].y, cx[c], cy[c]);
    }
    return wcss;
    }

    // Agglomerative Hierarchical Clustering (Single-Linkage / Bottom-Up)
    void run_hierarchical(Customer data[], int target_k) {
    int i, j;
    for (i = 0; i < N; i++) {
    data[i].hc_cluster = i;
    }

    int current_clusters = N;
    int step = 1;

    printf("\n--- 3. HIERARCHICAL CLUSTERING (AGGLOMERATIVE SINGLE-LINKAGE) ---\n");
    printf("Dendrogram Merge Steps (Bottom-Up Approach):\n");

    while (current_clusters > target_k) {
    double min_d = DBL_MAX;
    int c1 = -1, c2 = -1;
    int p1 = -1, p2 = -1;

    // Find the two closest points belonging to DIFFERENT clusters
    for (i = 0; i < N; i++) {
    for (j = i + 1; j < N; j++) {
    if (data[i].hc_cluster != data[j].hc_cluster) {
    double d = euclidean_dist(data[i].x, data[i].y, data[j].x, data[j].y);
    if (d < min_d) {
    min_d = d;
    c1 = data[i].hc_cluster;
    c2 = data[j].hc_cluster;
    p1 = i;
    p2 = j;
    }
    }
    }
    }

    printf(" Step %d: Merged Customer %c & Customer %c (Min Distance = %.2f)\n",
    step++, data[p1].id, data[p2].id, min_d);

    for (i = 0; i < N; i++) {
    if (data[i].hc_cluster == c2) {
    data[i].hc_cluster = c1;
    }
    }
    current_clusters--;
    }

    // Normalize cluster IDs to 0, 1, ... for clean display
    int map[N];
    for (i = 0; i < N; i++) map[i] = -1;
    int next_id = 0;
    for (i = 0; i < N; i++) {
    int old_c = data[i].hc_cluster;
    if (map[old_c] == -1) {
    map[old_c] = next_id++;
    }
    data[i].hc_cluster = map[old_c];
    }
    }

    // ASCII 2D Plot to Visualize Clusters in Terminal
    void visualize_clusters(Customer data[]) {
    printf("\n--- 4. 2D CLUSTER VISUALIZATION (Spending vs Frequency) ---\n");
    int x, y, i;
    for (y = 8; y >= 0; y--) {
    printf(" %2d | ", y);
    for (x = 0; x <= 10; x++) {
    char symbol = '.';
    int c_id = -1;
    for (i = 0; i < N; i++) {
    if ((int)data[i].x == x && (int)data[i].y == y) {
    symbol = data[i].id;
    c_id = data[i].kmeans_cluster + 1;
    break;
    }
    }
    if (symbol != '.')
    printf("%c(C%d) ", symbol, c_id);
    else
    printf(" . ");
    }
    printf("\n");
    }
    printf(" +------------------------------------------------------------------\n");
    printf(" 0 1 2 3 4 5 6 7 8 9 10\n");
    printf(" Purchasing Frequency (X) ->\n");
    }

    int main() {
    Customer customers[N] = {
    {'A', 2.0, 2.0, 22, -1, -1},
    {'B', 3.0, 1.0, 25, -1, -1},
    {'C', 4.0, 2.0, 24, -1, -1},
    {'D', 7.0, 6.0, 40, -1, -1},
    {'E', 8.0, 7.0, 42, -1, -1},
    {'F', 9.0, 6.0, 45, -1, -1}
    };

    int i, k;
    printf("=================================================================\n");
    printf(" RETAIL CUSTOMER DATASET \n");
    printf("=================================================================\n");
    printf("Cust\tFrequency(X)\tSpending(Y)\tAge (Demographics)\n");
    for (i = 0; i < N; i++) {
    printf(" %c\t %.1f\t\t %.1f\t\t %d yrs\n",
    customers[i].id, customers[i].x, customers[i].y, customers[i].age);
    }

    // 1. ELBOW METHOD
    printf("\n--- 1. ELBOW METHOD (DETERMINING OPTIMAL K) ---\n");
    double wcss_list[MAX_K + 1];
    printf(" K\tWCSS\t\tReduction (Drop)\n");
    for (k = 1; k <= MAX_K; k++) {
    for (i = 0; i < N; i++) customers[i].kmeans_cluster = -1;
    wcss_list[k] = run_kmeans(customers, k, 0);
    double drop = (k == 1) ? 0.0 : (wcss_list[k - 1] - wcss_list[k]);
    printf(" %d\t%.2f\t\t%.2f\n", k, wcss_list[k], drop);
    }

    int optimal_k = 2;
    printf(" >> Optimal Number of Clusters (Elbow Point) = %d (Sharpest WCSS drop of %.2f)\n",
    optimal_k, wcss_list[1] - wcss_list[2]);

    // 2. K-MEANS CLUSTERING
    printf("\n--- 2. K-MEANS CLUSTERING (K = %d) ---\n", optimal_k);
    for (i = 0; i < N; i++) customers[i].kmeans_cluster = -1;
    double kmeans_wcss = run_kmeans(customers, optimal_k, 1);

    // 3. HIERARCHICAL CLUSTERING
    run_hierarchical(customers, optimal_k);

    // 4. VISUALIZE CLUSTERS
    visualize_clusters(customers);

    // 5. COMPARISON OF BOTH TECHNIQUES
    printf("\n--- 5. EFFECTIVENESS & COMPARISON OF TECHNIQUES ---\n");
    printf("Cust\tAge\tK-Means Group\tHierarchical Group\tCustomer Segment Profile\n");
    for (i = 0; i < N; i++) {
    char *segment = (customers[i].kmeans_cluster == 0)
    ? "Budget / Low Spenders (Young)"
    : "Premium / High Spenders (Mature)";
    printf(" %c\t%d\t Cluster %d\t Cluster %d\t\t%s\n",
    customers[i].id, customers[i].age,
    customers[i].kmeans_cluster + 1,
    customers[i].hc_cluster + 1,
    segment);
    }

    printf("\nPerformance Summary:\n");
    printf(" * Final WCSS (Compactness): %.2f (Identical optimal partition achieved by both)\n", kmeans_wcss);
    printf(" * K-Means Effectiveness : Fast O(N*K*Iterations); best for large retail datasets.\n");
    printf(" * Hierarchical Effect. : Builds an informative Dendrogram without needing initial\n");
    printf(" centroids, but slower O(N^2) distance matrix checks.\n");
    printf("=================================================================\n");

    return 0;
    }

    Compilation & Execution


    Compile with gcc and link the math library using -lm:

    gcc customer_clustering.c -o customer_clustering -lm
    ./customer_clustering

    Terminal Output


    =================================================================
    RETAIL CUSTOMER DATASET
    =================================================================
    Cust Frequency(X) Spending(Y) Age (Demographics)
    A 2.0 2.0 22 yrs
    B 3.0 1.0 25 yrs
    C 4.0 2.0 24 yrs
    D 7.0 6.0 40 yrs
    E 8.0 7.0 42 yrs
    F 9.0 6.0 45 yrs

    --- 1. ELBOW METHOD (DETERMINING OPTIMAL K) ---
    K WCSS Reduction (Drop)
    1 75.50 0.00
    2 5.33 70.17
    3 4.00 1.33
    4 2.00 2.00
    >> Optimal Number of Clusters (Elbow Point) = 2 (Sharpest WCSS drop of 70.17)

    --- 2. K-MEANS CLUSTERING (K = 2) ---
    Iteration 1 Centroids: C1(3.00, 1.67) C2(8.00, 6.33)
    Iteration 2 Centroids: C1(3.00, 1.67) C2(8.00, 6.33)

    --- 3. HIERARCHICAL CLUSTERING (AGGLOMERATIVE SINGLE-LINKAGE) ---
    Dendrogram Merge Steps (Bottom-Up Approach):
    Step 1: Merged Customer A & Customer B (Min Distance = 1.41)
    Step 2: Merged Customer B & Customer C (Min Distance = 1.41)
    Step 3: Merged Customer D & Customer E (Min Distance = 1.41)
    Step 4: Merged Customer E & Customer F (Min Distance = 1.41)

    --- 4. 2D CLUSTER VISUALIZATION (Spending vs Frequency) ---
    8 | . . . . . . . . . . .
    7 | . . . . . . . . E(C2) . .
    6 | . . . . . . . D(C2) . F(C2) .
    5 | . . . . . . . . . . .
    4 | . . . . . . . . . . .
    3 | . . . . . . . . . . .
    2 | . . A(C1) . C(C1) . . . . . .
    1 | . . . B(C1) . . . . . . .
    0 | . . . . . . . . . . .
    +------------------------------------------------------------------
    0 1 2 3 4 5 6 7 8 9 10
    Purchasing Frequency (X) ->

    --- 5. EFFECTIVENESS & COMPARISON OF TECHNIQUES ---
    Cust Age K-Means Group Hierarchical Group Customer Segment Profile
    A 22 Cluster 1 Cluster 1 Budget / Low Spenders (Young)
    B 25 Cluster 1 Cluster 1 Budget / Low Spenders (Young)
    C 24 Cluster 1 Cluster 1 Budget / Low Spenders (Young)
    D 40 Cluster 2 Cluster 2 Premium / High Spenders (Mature)
    E 42 Cluster 2 Cluster 2 Premium / High Spenders (Mature)
    F 45 Cluster 2 Cluster 2 Premium / High Spenders (Mature)

    Comparing K-Means vs. Hierarchical Clustering for Customer Segmentation

    CriterionK-Means ClusteringHierarchical Clustering (Agglomerative)Core ApproachCentroid-based partitioningConnectivity-based bottom-up mergingTime Complexity$\mathcal{O}(N \cdot K \cdot \text{Iterations})$ — Fast and linear$\mathcal{O}(N^2)$ to $\mathcal{O}(N^3)$ — Computationally heavyNeed to Pre-specify $K$?Yes (requires Elbow Method first)No (builds full Dendrogram; cut tree at any level)Sensitivity to InitializationSensitive to initial centroid choicesDeterministic — always produces the same treeBest Retail Use CaseLarge-scale customer databases (100k+ users)Smaller datasets where visual taxonomy/hierarchy matters

    Key Takeaways


    1. Identical Optimal Partitioning: On well-separated spherical customer segments ({A, B, C} vs {D, E, F}), both K-Means and Single-Linkage Hierarchical Clustering converge to the exact same groups with $\text{WCSS} = 5.33$.
    2. When to Choose What: Use Hierarchical Clustering during exploratory analysis to discover nested customer relationships via a Dendrogram, and switch to K-Means in production pipelines when segmenting millions of retail transactions.


    #c #machinelearning #algorithms #datascience #software #coding #development #engineering #inclusive #community
    Implementing K-Means & Hierarchical Clustering in Pure C for Customer Segmentation

  23. EchoVault: I Built an Open-Source AI That Helps Forgotten Memories Live On


    Some of the most valuable things we own aren't expensive devices or files stored in the cloud.

    They're the stories we hear from our grandparents. The recordings we make during family gatherings. The letters we keep but rarely revisit. The little details that seem ordinary today but become priceless years later.

    And yet, these memories are surprisingly easy to lose.

    Recordings remain buried in folders. Audio files are difficult to search. Handwritten notes get separated from their context. Eventually, the people who remember these stories might no longer be around to tell them.

    For Hacktoberfest Week 4, I wanted to explore a different interpretation of Ghost in the Machine.

    What if AI could help preserve the voices, stories and memories that time might otherwise erase?

    That idea became EchoVault.

    What I Built


    EchoVault is an AI-powered memory archive designed to help people preserve, organize and rediscover personal stories.

    Instead of treating old recordings and written memories as files that simply sit on a device, EchoVault helps turn them into a searchable collection of stories.

    The workflow is simple:

    1. Upload an audio recording or written memory.
    2. Transcribe supported audio recordings.
    3. Generate a concise summary and extract useful details.
    4. Save the original material alongside its transcript and metadata.
    5. Search the archive and ask questions about the saved stories.
    6. Create a remembrance page that brings the material together in a readable format.

    The goal isn't to make AI replace the people behind these memories. It's to make their stories easier to preserve, revisit and share.

    EchoVault is about helping memories survive, not pretending that AI can bring someone back.

    Demo


    In the demonstration, I'll upload a sample recording, show how EchoVault transcribes and summarizes it, and retrieve a detail from the saved story.

    I'll also demonstrate how the original recording and its generated content remain connected, so users can verify the archive entry against its source.

    Code


    The repository contains the application source code, setup instructions, model configuration, dependencies and documentation for running EchoVault.

    The goal is to make the project reproducible so other developers can experiment with the models, improve the archive workflow or adapt it to their own use cases.

    How I Built It


    I built EchoVault around Python, Streamlit and open-source AI tools.

    The architecture separates transcription, language-model processing, storage and retrieval so that each component can be tested independently.

    1. Transcription


    For supported audio recordings, EchoVault uses OpenAI Whisper running locally to convert speech into text.

    The transcript makes a recording searchable and gives the next stage a text representation to work with.

    Transcription accuracy still depends on recording quality, accents, background noise and the languages supported by the selected model.

    2. Memory extraction


    An open-weight Gemma model processes the transcript and generates structured metadata such as a title, summary, key events and people mentioned.

    I designed this stage to distinguish the original story from AI-generated interpretations. The original transcript remains available for verification.

    3. Searchable archive


    EchoVault stores the original files and associated metadata, making it possible to revisit individual memories rather than repeatedly processing every recording.

    4. Grounded question answering


    The question-answering feature retrieves relevant material from the archive and uses it to formulate an answer.

    Rather than treating the model as an unrestricted storyteller, the application is designed to ground responses in the saved records.

    If a question cannot be answered from the available material, the system should say so instead of inventing a memory.

    5. A human-centered interface


    I used Streamlit to create an interface for uploading recordings, reviewing transcripts, exploring archived stories and generating remembrance pages.

    I wanted the experience to feel more like a digital archive than a generic chatbot.

    This part of the project taught me that building a useful AI application involves more than prompting a model. Data handling, validation, retrieval and the way users verify generated content all matter.

    Why Does Open Innovation Matter?


    For a project dealing with personal memories, the choice of AI infrastructure matters as much as the interface.

    Privacy and control


    Family recordings and personal stories can contain sensitive information.

    Running transcription and language models locally can reduce the need to send this material to external AI services. In a fully local configuration, recordings and generated content can remain on the user's device.

    This is an architectural goal, not an automatic guarantee: the complete application must be checked for external network calls, telemetry, cloud storage and other data transfers before claiming that it is fully offline.

    Freedom to experiment


    Open-weight models give developers more flexibility to choose models, change prompts, compare performance and adapt the application to their requirements.

    For EchoVault, this means being able to experiment with different transcription and language models without designing the entire product around a single proprietary AI API.

    Preservation beyond a single service


    An archive should not become inaccessible simply because a hosted service changes its pricing, API or availability.

    Keeping original recordings, transcripts and metadata in portable formats makes the collection easier to back up and migrate independently of a particular model provider.

    Making the technology accessible


    A local-first approach can reduce dependence on recurring hosted inference charges, although users still need compatible hardware, storage and electricity.

    The larger point is that useful AI tools should be adaptable and understandable, rather than locked into an infrastructure that their users cannot control.

    My Agent Session


    I used python to implement and test EchoVault.

    The session documents the decisions, experiments and debugging steps that shaped the final application.

    The Spirit of It


    The theme Ghost in the Machine made me think about how technology interacts with memory.

    A recording is only a collection of bits until someone listens to it. A transcript is only text until someone recognizes the person, place or moment behind it.

    AI cannot replace the human experience of remembering someone. It can, however, help make the material we leave behind easier to preserve and understand.

    I want EchoVault to make it easier for someone to rediscover a story they had almost forgotten, find a detail in an old recording, or bring together memories that would otherwise remain scattered across devices.

    The most meaningful result isn't an AI-generated story that sounds convincing.

    It's helping someone find a real story worth remembering.

    What's Next?


    I'd like to explore better multilingual transcription, additional document formats, richer search, exportable remembrance pages and tools for organizing large collections of recordings.

    I also want to improve source attribution so users can move directly from a generated summary or answer to the original passage that supports it.

    EchoVault began with a simple question: what if we could use open-source AI to help preserve the stories that matter to us?

    My answer is a small step toward making personal archives more accessible, searchable and useful.

    Because sometimes the most valuable thing an AI can do isn't generate something new.

    It's help us hold on to something we already have.

    devchallenge #hf26challenge

    #devchallenge #hf26challenge #software #coding #development #engineering #inclusive #community
    EchoVault: I Built an Open-Source AI That Helps Forgotten Memories Live On

  24. IMSS reporta estable a niño tras protesta en el hospital de La Raza

    El IMSS reportó estable a un niño de cinco años hospitalizado en La Raza, luego de que sus familiares denunciaran presunta negligencia médica y bloquearan Circuito Interior para exigir atención urgente y respuestas sobre su estado de salud.

    Por Gabriela Díaz | Reportera                                           

    Un niño de cinco años permanece estable y bajo vigilancia médica especializada en el Hospital General del Centro Médico Nacional (CMN) La Raza, informó el Instituto Mexicano del Seguro Social (IMSS), después de una protesta de sus familiares por presuntas deficiencias en la atención médica.

    La manifestación comenzó durante la noche de este domingo 25 de octubre y continuó este lunes 26, cuando familiares del menor bloquearon Circuito Interior, en las inmediaciones del hospital, para exigir atención urgente, explicaciones sobre su estado de salud y una solución a sus demandas.

    https://twitter.com/merazr/status/2114760534461415720?s=20

    El caso generó afectaciones viales en la zona norte de la ciudad de México. La familia también solicitó el traslado del niño a otro hospital, al cuestionar la atención que, según su versión, había recibido durante su estancia en la unidad médica.

    ¿Qué ocurrió en La Raza?

    La madre del menor, identificada en reportes periodísticos como Wendy Arteaga, denunció que su hijo presentó vómitos con sangre y complicaciones de salud que requerían atención inmediata. Según su testimonio, el niño había sido operado de apendicitis aproximadamente un año antes.

    https://twitter.com/AztecaNoticias/status/2114767160941633947?s=20

    La mujer también señaló que el menor habría presentado una complicación infecciosa después de aquella intervención quirúrgica. Sin embargo, estos antecedentes corresponden a la versión de la familia y no constituyen, por sí mismos, una determinación médica o legal sobre una posible negligencia.

    Ante lo que consideraron una respuesta insuficiente del personal hospitalario, familiares y personas cercanas al niño se concentraron frente al nosocomio. La protesta se extendió a Circuito Interior y afectó la circulación vehicular durante varias horas.

    IMSS informa sobre su estado

    En su comunicación oficial, el IMSS señaló que el paciente pediátrico se encuentra estable, bajo vigilancia médica especializada y con evolución favorable. La institución también indicó que mantiene comunicación permanente con la familia y que garantiza la continuidad de la atención.

    El reporte institucional ofrece una actualización sobre la condición del menor, aunque no precisa públicamente todos los detalles clínicos ni resuelve por sí mismo los señalamientos formulados por sus familiares.

    La inconformidad se centró en la atención que, de acuerdo con la madre, el niño necesitaba ante el agravamiento de sus síntomas. La familia pidió respuestas sobre las decisiones médicas y solicitó que se valorara su traslado a otra unidad hospitalaria. –sn–

    Sociedad Noticias

    ¡Conéctate con Sociedad Noticias! Suscríbete a nuestro canal de YouTube y activa las notificaciones, o bien, síguenos en las redes sociales: Facebook, Twitter e Instagram.

    También, te invitamos a que te sumes a nuestro canal de información en tiempo real a través de Telegram.

    #NoticiasMX #PeriodismoParaTi #PeriodismoParaTiSociedadNoticias #atenciónMédicaInfantil #Azcapotzalco #bloqueoCircuitoInterior #Cdmx #hospitalLaRaza #IMSS #Información #InformaciónMéxico #México #Morena #noticia #noticias #NoticiasMéxico #NoticiasSociedad #pacientePediátrico #presuntaNegligenciaMédica #protestaEnLaRaza #seguridadHospitalaria #SN #Sociedad #SociedadNoticias #SociedadNoticiasCom #sociedadNoticias #SociedadNoticiasCom
  25. Día de Muertos | Marcas enfrentan el reto de respetar la tradición mexicana

    El marketing del Día de Muertos enfrenta el desafío de preservar el significado cultural de la tradición mexicana ante la saturación publicitaria. Georgie de Barba, de Don by Havas México, plantea la necesidad de crear campañas auténticas y con valor social.

    Por Deyanira Vázquez | Reportera                                        

    El uso comercial del Día de Muertos plantea un desafío para las marcas en México: generar ventas sin desgastar el significado cultural de una celebración dedicada a recordar a quienes han fallecido.

    Georgie de Barba, presidente de Don by Havas México, advirtió sobre los riesgos de saturar la temporada con campañas publicitarias repetitivas, empaques temáticos genéricos y contenidos automatizados que utilizan símbolos tradicionales sin aportar valor cultural.

    La discusión cobra relevancia ante el crecimiento económico de la festividad. La Confederación de Cámaras Nacionales de Comercio, Servicios y Turismo (Concanaco Servytur) estima que las celebraciones de 2026 generarán una derrama económica de 53 mil millones de pesos, alrededor de 7% más que el año anterior.

    Marketing frente a la tradición

    El Día de Muertos conserva un significado familiar y comunitario que trasciende el consumo. Las ofrendas, las flores de cempasúchil, las veladoras y los alimentos tradicionales forman parte de una conmemoración en la que distintas comunidades expresan su relación con la memoria y sus antepasados.

    Sin embargo, la incorporación masiva de estos elementos a productos, anuncios y publicaciones digitales abre interrogantes sobre la manera en que las empresas representan una tradición cultural.

    De Barba considera que participar en la temporada no constituye el problema central, sino hacerlo mediante propuestas que repiten fórmulas visuales sin establecer una relación auténtica con las personas.

    El directivo planteó que las campañas deben ir más allá de aprovechar una fecha comercial y buscar formas de contribuir a la cultura, con mensajes que respeten el sentido de la celebración.

    Inteligencia artificial y saturación publicitaria

    La automatización de contenidos y el uso de recursos gráficos genéricos también forman parte del debate sobre la comunicación comercial durante esta temporada.

    Para el responsable de Don by Havas México, la utilización de herramientas tecnológicas no sustituye la necesidad de desarrollar conceptos creativos con identidad y propósito.

    En el planteamiento del directivo, una campaña pierde capacidad de diferenciación cuando numerosas marcas recurren a los mismos símbolos, colores y referencias culturales sin construir una propuesta propia.

    Esta repetición puede reducir la conexión entre los consumidores y las empresas, además de convertir elementos vinculados con la memoria familiar en recursos publicitarios intercambiables.

    El reto consiste en desarrollar mensajes que reconozcan la profundidad de la tradición y establezcan una relación más significativa con las audiencias. –sn–

    Ofrenda de Día de Muertos

    ¡Conéctate con Sociedad Noticias! Suscríbete a nuestro canal de YouTube y activa las notificaciones, o bien, síguenos en las redes sociales: Facebook, Twitter e Instagram.

    También, te invitamos a que te sumes a nuestro canal de información en tiempo real a través de Telegram.

    #NoticiasMX #PeriodismoParaTi #PeriodismoParaTiSociedadNoticias #Cdmx #Información #InformaciónMéxico #México #Morena #noticia #noticias #NoticiasMéxico #NoticiasSociedad #SN #Sociedad #SociedadNoticias #SociedadNoticiasCom #sociedadNoticias #SociedadNoticiasCom
Share on Mastodon

Enter the server where you have an account.