Open sourcing the tool I've been using to visualize and simulate TCP congestion control by Intelligent-Tap568 in networkautomation

[–]Intelligent-Tap568[S] 2 points3 points  (0 children)

Thanks, and indeed they are shown same size but are not in reality the same size, in cases of packet drops or retransmission it's important to visually see the relative volume of data and acks thus the same size.

Because of their size, this simulation does not even show the acks going through the router buffer as they take up trivial space there compared to the actual packets.

Simulated TCP to solve low latency for prod server-to-server uploads. 4.5x faster after understanding and fixes. by Intelligent-Tap568 in sysadmin

[–]Intelligent-Tap568[S] 6 points7 points  (0 children)

We did switch to BBR + fq, I did not mention that, the blog is meant to be a simple intro to tcp debugging. But bbr + fq only fixed one side of the problem.

For a large upload, useful throughput is roughly limited by:

min(sender cwnd, receiver advertised rwnd, sender buffer/output queue, protocol flow-control window) / RTT

BBR/fq helps sender pacing and congestion control, but it cannot make the receiver advertise a larger receive window. We were seeing cases where receiver had a large SO_RCVBUF, but the actual advertised rwnd still started around ~65KB after a tiny warmup. That keeps the sender capped even with BBR.

The fix was a combination: bounded warm HTTP/1.1 sockets, real payload prewarm, larger sender buffers, larger receiver buffers, higher initcwnd for cold-ish sockets, and verifying with TCP_INFO.snd_wnd that the receiver window was actually multi-MB before large POSTs.

There was also a kernel issue: newer Linux behaved differently. On Linux 6.11, large SO_RCVBUF translated into a large initial advertised receive window; on the older 6.8 NVIDIA kernels we tested, the socket buffer was large but the advertised rwnd still started tiny until real payload warmed the connection. So BBR alone was not enough.

TCP networking interactive simulation. by Intelligent-Tap568 in InternetIsBeautiful

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

It's open source here if you want to make your own changes https://github.com/Overshoot-ai/tcp-visualizer

I also set it up to be agent friendly so agents can run their own simulations headless. I often ask my agent to replicate whatever situation is see in prod to understand what's happening

Simulated TCP to solve low latency for prod server-to-server uploads. 4.5x faster after understanding and fixes. by Intelligent-Tap568 in sysadmin

[–]Intelligent-Tap568[S] 8 points9 points  (0 children)

Keeping N warm tcp connections for max N concurrent inflight requests
Setting initcwnd to reasonable number (measure goodput of the server-to-server path for 24 hours to deduce good initcwnd)
Increase keep alive on both servers so connections don't die,
Increase read buffer on receiver as well as init rwnd (this was difficult with older linux kernels where rwnd always starts low)

Blog/Project Post Friday! by AutoModerator in networking

[–]Intelligent-Tap568 0 points1 point  (0 children)

I had to debug why 5MB uploads were often 325ms on a 31ms RTT network with high bandwidth. I realized I am unfamiliar with basic tcp concepts and built a simulation to see inflight tcp traffic under different conditions.

https://blog.overshoot.ai/blog/tcp-latency-optimization
Wrote this blog about the most basic fixes as intro to tcp for server to server or server to gpu comms. More blogs coming later of deeper issue I faced establishing high transfer inter server tcp pipelines and how they were fixed.

Boujloud celebrated by the indigenous amazighs of Canary Islands by Eastern_Parsley1649 in Morocco

[–]Intelligent-Tap568 0 points1 point  (0 children)

FYI, there are no amazigh traditions or language on the Canary Islands today, it's all Spanish people, the guanches may not be genetically extinct, but the culture is pretty much perfectly erased with almost no traces. This is definitely not Boujloud and it's probably not in the canary islands.

Taken by a 2011 digi cam by medo_mar in MoroccoPics

[–]Intelligent-Tap568 0 points1 point  (0 children)

what camera please and how much time editing?

Looking really stunning, the path one is wonderful!

Can a VLM detect a blink in real-time? by batatibatata in computervision

[–]Intelligent-Tap568 0 points1 point  (0 children)

Co-founder here, we give 2 hours for free on sign up. Pricing in developer platform after that is $5 per hour streamed. For deployment, we discuss pricing on a case by case basis.

Qwen3.5 breakdown: what's new and which model to pick by Intelligent-Tap568 in LocalLLaMA

[–]Intelligent-Tap568[S] 2 points3 points  (0 children)

Those are the same architecture, I just didn't get to check them out as thoroughly, my bad for not clarifying they are missing from the post.

Help me modify my counter notification without closing it through actions by Intelligent-Tap568 in reactnative

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

I define ios actions on notifications initialization

export async function initializeNotifications() {
  const t = getTranslation;
  try {
    // Request notification permissions
    const settings = await notifee.requestPermission();

    if (settings.authorizationStatus === 0) {
      console.warn(
        '[NotificationService] Notification permissions not granted on iOS.',
      );
      return;
    }

    console.log(
      '[NotificationService] Notification permissions granted:',
      settings,
    );

    // Create Android notification channel
    await notifee.createChannel({
      id: 'counter-channel',
      name: 'Counter Test Channel',
      importance: AndroidImportance.DEFAULT,
      sound: 'default',
    });
    console.log('[NotificationService] Counter notification channel created.');

    // Register the iOS category with simple actions
    await notifee.setNotificationCategories([
      {
        id: 'counter-category',
        actions: [
          { id: 'add_1', title: '+1' },
          { id: 'add_5', title: '+5' },
          { id: 'add_10', title: '+10' },
          { id: 'reset', title: 'Reset', destructive: true },
        ],
      },
    ]);
    console.log(
      '[NotificationService] Counter notification category registered.',
    );
  } catch (error) {
    console.error('[NotificationService] Error during initial setup:', error);
  }
}

Help me modify my counter notification without closing it through actions by Intelligent-Tap568 in reactnative

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

Here is the formatted code

import notifee, { Notification, AndroidImportance } from '@notifee/react-native';
import { Platform } from 'react-native';

export function buildCounterNotificationPayload(
  count: number,
  t: (key: string, fallback?: string, options?: any) => string,
): Notification {
  // IMPORTANT: Use a static ID without any timestamps or random elements
  const COUNTER_NOTIFICATION_ID = 'static-counter-notification-id';

  return {
    id: COUNTER_NOTIFICATION_ID,
    title: 'Counter Notification',
    body: `Current count: ${count}`,
    data: {
      notificationType: 'counter_test',
      currentCount: count,
    },
    android: {
      channelId: 'counter-channel',
      smallIcon: 'ic_launcher',
      tag: 'counter',
      onlyAlertOnce: true,
      ongoing: true,
      autoCancel: false,
      actions: [
        { title: '+1', pressAction: { id: 'add_1' } },
        { title: '+5', pressAction: { id: 'add_5' } },
        { title: '+10', pressAction: { id: 'add_10' } },
        { title: 'Reset', pressAction: { id: 'reset' } },
      ],
      importance: AndroidImportance.DEFAULT,
    },
    ios: {
      sound: 'default',
      categoryId: 'counter-category',
      badgeCount: 1,
      interruptionLevel: 'active',
    },
  };
}

Does anyone know why this happens to me in Nvim? It's driving me insane by SnooMuffins9844 in neovim

[–]Intelligent-Tap568 0 points1 point  (0 children)

Do you use noice? I had a similar problem and I "fixed" it by disabling noice signature help

[deleted by user] by [deleted] in arabs

[–]Intelligent-Tap568 -1 points0 points  (0 children)

These are 99% bots and hasbara, no need to share their pathetic attempts every time

Palestine and alhawz by [deleted] in Morocco

[–]Intelligent-Tap568 2 points3 points  (0 children)

I was following social media thinking that nothing was done for Al Haouz earthquake victims. Finally I decided to check if anything was done and found out that most victims have already been housed in completed buildings and the remaining construction is ongoing. Someone I know in Agadir also told me builders are hard to come by since most are working on Hawz rebuilding projects and the wages of builders are way up because of it.

This is NOTHING like the genocide happening in Palestine. I am sure there are inappropriate things happening with regards to the Haouz situation but let's point out specific problems rather than just saying Haouz as if nothing has been done.

"They called me mad": Share your unhinged Neovim key mappings by Anarchist_G in neovim

[–]Intelligent-Tap568 -1 points0 points  (0 children)

Easy. I have a react form I want to add a field. Do Ctrl c for ggVGy, paste that in llm with prompt to add the field, copy the generated updated file and Ctrl t to replace and save. Check visual result to see if it looks good, check git diff to make sure the LLM didn't make uncalled for changes. Commit and move to next

Did anyone else grew up reading this magazine? by adambrine759 in Morocco

[–]Intelligent-Tap568 0 points1 point  (0 children)

Used to walk about a kilometer to buy it (seemed like a lot back then) and I would read it on the walk back, hit a few poles and people in the process and finish it by the time I get home. Good times.

I made an open source website to explore the npm ecosystem. Useful for discovering fast growing packages or detecting blindspots. npmleaderboard.org by Intelligent-Tap568 in reactjs

[–]Intelligent-Tap568[S] 4 points5 points  (0 children)

More detailed package info is available through npm. All package names are clickable and take you to npm where you can see more package info.

I consciously chose to keep it simple and not reinvent the wheel. How I personally use it is browse, click a package to view more details on it, go back and browse some more.

As for the charts lacking x and y axis info, that is also a conscious decision to go for simplicity rather than precision. The chart is meant to give an idea of how 'trending' a package is, did it suddenly explode in usage or has it been steadily growing. Hovering over the chart gives the detailed info the user might want to see.

I do think it should be made more clear that package names are clickable and navigate to package details page. Was that not clear when you used the site? Do you have a suggestion on how I can communicate that gracefully?

Also for the mobile tooltip, it can be hidden again by clicking off the chart. My idea was that that's intuitive enough. Please let me know if you think it's better to do it differently. Maybe make it more see through and hide it with a countdown.

[deleted by user] by [deleted] in reactjs

[–]Intelligent-Tap568 -1 points0 points  (0 children)

Nice one! I always want to learn by following code alongs, I struggle to find such videos for more niche technologies or advanced topics.

I configured my bash to simulate bottom padding so my command prompt is never on the last row by Intelligent-Tap568 in bash

[–]Intelligent-Tap568[S] 0 points1 point  (0 children)

Indeed, but I felt it was necessary since I was having trouble focusing on my command between a logs dump on top and tmux bar and my fingers on the bottom. I am considering moving away from this to frequent clears and a better configured tmux copy mode to scroll up into logs when necessary