Self-hosting Umami analytics on Cloudflare, Fly, and Supabase
submitted by /u/Sankra [link] [留言]
找到 1409 篇相关文章
submitted by /u/Sankra [link] [留言]
Hello, I'm Maneshwar. I'm building git-lrc, a Micro AI code reviewer that runs on every commit. It is...
Imagine you are sitting at a table in a restaurant. You have a menu in front of you with a list of delicious meals, and the kitchen is ready to cook them. However, there is a missing link. You are sitting in the dining room, and the chefs are tucked away in the back. You can't just walk into the kitchen and grab your food, and the chefs don't leave the stove to come take your order. To bridge the gap, you need a mediator. You need someone to take your order from the table, deliver it to the kitchen, and then bring the food back to you. That person is your waiter. In the digital world, an API (Application Programming Interface) is that waiter. The Plain English Definition An API stands for Application Programming Interface. Strip away the technical jargon, and an API is simply a software messenger that allows two different computer programs to talk to each other and share data. Think of it as a digital bridge. When you use an app on your phone, it doesn't contain all the data in the world inside its small download file. Instead, it uses an API to send a request over the internet to a massive server, which then sends the correct information back. The Restaurant Analogy: Side-by-Side To see how this works in real life, let’s map our restaurant experience directly to how technology works on your phone or computer: The Customer (You): This is the Client (your web browser, smartphone app, or computer). You are the one asking for information. The Menu : This is the API Documentation. It lists out exactly what items you are allowed to order and how you need to ask for them. The Waiter : This is the API. They take your request, run it over to the system, and bring you back the result. The Kitchen : This is the Server / Database. It holds all the raw data, processes the request, and prepares the final output. Where Do You See APIs in Real Life? You interact with dozens of APIs every single day without even realizing it. Here are a few common examples: "Log In with Google" or
submitted by /u/iximiuz [link] [留言]
The Story: Picture this: It is 10 PM. I was eating my dinner while adding one final touch to my social media app, Vlox. It should just say "Processing..." while generating a card. Simple, right? See the nightmare. 🔥 The Nightmare Scenario 📉 Suddenly, my "Download Card" button broke. htmlToImage started spitting out completely empty 0b images. The hunt was on. Failed Mission Log 🛰️ Attempt 1: Swap to html2canvas 🔄 Result: Error stating the element was not found in the cloned iframe. Verdict: The parent container was completely lost. Attempt 2: Use CoolAlertJS Toast 🍞 Result: It looked ugly and meant loading two different alert libraries for the same job? Not my game. Verdict: Total waste of bundle size. Attempt 3: Append to body + display: none 🙈 Result: The canvas process failed entirely. Verdict: Canvas snapshot engines completely ignore hidden elements. The "Aha!" Moment 💡 Why did the element vanish? Because the card generator lives entirely inside a Swal popup. When you click the download/confirm button, Swal instantly destroys that entire popup DOM tree. You cannot snapshot an element that no longer exists. 👻 The Ultimate Fix 🚀 Inside the new "Processing" popup, I appended the #card-generator-image-preview directly into the new alert container. The element stays alive in the active DOM. The snapshot succeeds perfectly. Clean code. Happy developer. Delicious dinner. Want to see the exact JavaScript code block that fixed it? Drop a comment below or check Vlox on Github .
Finding a co-founder is one of the hardest parts of building a startup, and most platforms weren't built for it. LinkedIn is a professional directory, not a matching network. Reddit threads are noisy and unstructured. Cold outreach is a gamble. FoundrGeeks is built specifically for this problem . It's an AI-powered co-founder and team matching platform that connects builders based on what they're building, what skills they bring, and what gaps they need to fill, not just their job title or who they already know. The problem with finding a co-founder most builders looking for a co-founder face the same wall: the people they need aren't in their network, and the platforms that exist weren't designed for this specific search. You're not just looking for someone with the right skills. You need someone at the same stage, with the same intensity, who fills exactly the gaps you have right now. And you need to know that before spending three hours on discovery calls. That's the gap FoundrGeeks fills. How FoundrGeeks works When you create a profile, you describe what you're building, what you bring to the table, and what you need. You set your stage, idea, MVP, or funded, and your weekly availability. From there, the AI takes over. It surfaces people whose strengths complement your gaps, scores each match as Strong, Good, or Potential, and generates a plain-English explanation of why each person fits what you're building right now. Three features stand out at launch: Complementary matching: the engine looks for people who fill your gaps, not mirror your background Scored matches with explanations, every match tells you exactly why, before you reach out Stage-aware feeds, as you move from idea to MVP to funded, your matches reshuffle automatically You also control your visibility, go public and let talent find you, or stay private and let the AI work quietly on your behalf. Why we built this This platform exists because of a project that never got finished. I had an idea I wa
I reviewed HackerRank's open-sourced Hiring Agent - prompts, the scoring logic, and the GitHub enrichment code. I tested the tool with a few faked resumes. Post : https://blog.grandimam.com/posts/how-hacker-rank-scores-engineers/ Takeaways: * Open source is weighted at 35%, technical skills at 10% * A senior engineer with perfect production experience scored 71/100 * Job titles to "Founding Engineer" and "CTO" results in same score * Startup roles emphasis * Active development was 77 days Code: Hiring Agent submitted by /u/grandimam [link] [留言]
AI is not a smarter Google I am convinced most people are using AI in the worst possible way. They treat it like a slightly magical search bar. Type question. Get answer. Copy. Paste. Forget. I think that mindset is holding a lot of people back. Developers. Designers. Knowledge workers. Even my baseball kids who ask ChatGPT for homework help. AI is not a better Q&A machine. It is a delegation machine. You do not "ask" AI. You give it a job. This post is me making that shift concrete. I just shipped six AI gallery pages on my site, built entirely around that idea. Not as a gimmick. As infrastructure for how I work, learn, and build. Why I stopped asking AI questions The turning point was basically frustration. My workflow looked like this for months: Open ChatGPT Ask something like "How do I X in Astro / Svelte / Next" Skim the answer Try the snippet Debug for 30 minutes anyway The answers were fine. Sometimes even useful. But nothing stuck. I would ask the same class of questions over and over. Same concepts. Same patterns. Same gotchas. No real accumulation of knowledge. Just one-off transactions. Then I noticed something: the few times I actually got huge value from AI, I was not asking. I was delegating. "Rebuild this layout using CSS grid, but keep these class names." "Refactor this component, keep the same API, and annotate the performance tradeoffs in comments." "Act like my annoying senior engineer and poke holes in this data model." That felt different. Less like search. More like a teammate who does legwork while I keep steering. Delegation > questions So I made a decision: treat AI like a junior colleague with unlimited patience and questionable taste. That means: I do not ask "How do I do X". I say "You are responsible for X. Here is context. Here are constraints. Here is the definition of done." The shift sounds subtle. It is not. When you ask a question, the model guesses what you want. When you delegate a job, you tell it what you want and where it fit
Exposing the keys in the GitHub Issue The Phishing Site (Notice the Spotify option) There is a golden rule in cybersecurity: the weakest link is almost always human error. But what happens when that human error comes from a malicious actor trying to orchestrate a crypto phishing scam? The result is surprisingly comedic. Here is the story of how my newly built open-source secret scanner, Sentinel, accidentally neutralized a Tether (USDT) phishing operation during a routine benchmark. The Setup: Testing in the Wild I recently released Sentinel , a statically compiled, context-aware Git secret scanner and pre-commit hook written in Go. After fine-tuning its engine to achieve near-zero false positives, I decided to benchmark it "in the wild" by scanning random, recently updated repositories on GitHub. The goal was to see if Sentinel could catch edge-case credentials that traditional, regex-heavy tools often miss or drown in noise. During the scan, Sentinel instantly flagged a critical severity finding in a rather suspicious repository. The Catch: AI Copy-Paste Gone Wrong Upon inspecting the flagged file, the issue was immediately apparent: a fully exposed, hardcoded Firebase configuration object containing the API key, project ID, and messaging sender ID. It was a textbook case of a script kiddie asking an AI for a web login template and blindly copy-pasting the frontend code into a public repository. They had effectively handed over the administrative keys to their backend infrastructure before the project even launched. The Phishing Site: Logging into Crypto with Spotify? Out of professional curiosity, I checked the Vercel deployment linked to the repository. The project was attempting to impersonate Tether (USDT), the world's largest stablecoin. It featured the official logo, a catchy slogan, and a login prompt designed to harvest credentials. However, because the scammer had blindly copied a generic consumer application template, the authentication options presented
# Building an AI Sales Intelligence Platform in Just 12 Hours at Hack Aarambh 2026 Turning sales conversations into actionable business insights using AI. Yesterday, my team and I participated in Hack Aarambh 2026 at Swarnim Startup & Innovation University (SSIU) . Like every hackathon, the challenge wasn't just writing code—it was identifying a real-world problem, designing a practical solution, and delivering a working prototype within 12 hours . Instead of building another chatbot or productivity tool, we wanted to solve a problem faced by almost every sales-driven organization. The Problem Every day, sales teams spend hours talking to potential customers. These conversations contain valuable information such as: Customer pain points Buying intent Competitor mentions Product feedback Common objections Feature requests Unfortunately, most of this information remains buried inside meeting recordings or handwritten notes. Managers rarely have time to review every conversation, which means valuable business insights are often lost. That became our motivation. Introducing AI Sales Intelligence Platform Our project is an AI-powered platform that automatically analyzes sales conversations and transforms them into actionable insights for both sales representatives and business leaders. Instead of manually reviewing calls, users receive: AI-generated summaries Customer intelligence Actionable recommendations Performance analytics Business insights ...all within seconds. What We Built AI Call Transcription & Summarization The platform automatically converts conversations into readable transcripts and concise summaries. Customer Intelligence The platform identifies: Customer sentiment Buying intent Objections Competitor mentions Important discussion topics This helps sales teams focus on what actually matters. AI Generated Follow-ups Writing follow-up emails after every meeting is repetitive. Our platform automatically generates personalized follow-up emails based on each c
When learning a new technology, most of us follow a familiar path. We start with the official documentation. Then we search GitHub repositories. We read blog posts. We watch YouTube tutorials. Eventually, we ask an AI assistant when we get stuck. Each resource solves a different problem, and the best developers know when to use each one. Documentation Is the Foundation Official documentation should almost always be your first stop. It tells you how a framework or library is intended to work. The information is usually accurate, maintained, and version-specific. If you're learning React, Next.js, or Node.js, the official docs provide the most reliable starting point. But documentation has limits. It explains what something does, not always why developers use it in real projects. Community Content Fills the Gaps That's where blog posts, conference talks, and open-source repositories become valuable. Experienced developers share: Real-world architecture decisions Common mistakes Performance considerations Debugging strategies Project structure Deployment workflows These practical insights often don't belong in official documentation, but they're essential for becoming a better engineer. AI Has Changed the Workflow AI assistants have become another tool in the developer toolbox. Instead of searching through multiple pages, developers can ask targeted questions like: Why is this hook re-rendering? What's the difference between these two approaches? How can I improve this query? Can you explain this error message? AI doesn't replace documentation. It helps you understand it faster. The most effective workflow is using documentation as the source of truth while letting AI explain concepts, compare approaches, or clarify confusing examples. Build Your Own Reference Library One habit that's improved my productivity is creating a personal knowledge base. Whenever I solve a difficult problem, I write down: The issue Why it happened The solution What I learned Links to relevant
submitted by /u/TheBear_at_SBB [link] [留言]
Publishing ten apps in four months sounds good. And it is good. It means the bottleneck is no longer building the app. With AI-assisted coding, small utilities, focused experiments, and niche apps can go from idea to App Store submission in days, sometimes hours. But there is a second part that can soon get really ugly. And messy. And time consuming. After you publish the apps, you own them – not in the inspirational sense, in the annoying sense. Every app becomes a small surface that needs attention: metadata, screenshots, reviews, ratings, keywords, conversion, cross-promotion, build status, rejections, releases, privacy answers, promo text, support links. Ok, you can catch your breath now. We good? Good, let’s move on. One app is manageable as a pastime, but ten apps are already a small portfolio. And a small portfolio needs systems. So I started building one. The repo is called app-store-release-agent , and, for now, it’s a small Python toolkit for the release workflow itself. Eventually, this could evolve into a full ASO brain. The Business Problem The business problem is simple: maintenance does not scale linearly with motivation. Building an app has a clear dopamine loop. Maintenance is fragmented: a review here, a screenshot there, a keyword set that probably needs work, a support email, a product page that now feels weak. None of these tasks are hard in and by themselves. That is a real and very subtle trap, because they can easily get postponed, and then they pile up. The benefit of an automation pipeline is not only speed. Speed is good, don’t get me wrong, but it’s secondary. The real benefit is lowering the activation energy. If the agent can pull live App Store data, compare it with local metadata, inspect git history, and apply the next release action safely, I do not have to reconstruct the context from scratch every time. A good pipeline should answer three questions quickly: What needs attention now? What can wait? What action has the highest lever
submitted by /u/therafort [link] [留言]
Offloading fan-out work to Render Workflows (docs linked above). Retries and parallel tasks live there. My problem is the web layer. First version: return 202, tasks POST back to /internal/events with a bearer token, UI subscribes over SSE. Added a reconciler that polls the Render API every 2s anyway because I didn't trust callbacks alone. Second version: skip callbacks entirely. One POST stays open, poll getTaskRun every 1.5s in an async generator, stream SSE until the digest finishes. Postgres at the end. Less wiring, but the HTTP request lives for the whole run. Both work on small traffic. I'm not sure which one I'd keep if this wasn't a demo. Restarting the API wipes in-memory viewer state in the callback version. Workflow keeps going, which is fine, but the UI looks stuck unless you reconcile. Polling version doesn't have that split because the request IS the session. Has anyone shipped callbacks + poll backup long term? Or do you pick one and accept the downsides? Callback handler: github.com/ojusave/dealhealth-playground/blob/main/services/api/src/routes/events.ts Poll loop: github.com/ojusave/read-it-for-me/blob/main/server/lib/orchestrator.ts submitted by /u/ojus_render [link] [留言]
The first year class HelloWorld { public static void main ( String args []) { // Displays "Hello World!" on the console. System . out . println ( "Hello World!" ); } } The second year /** * Hello world class * * Used to display the phrase "Hello World" in a console. * * @author Sean */ class HelloWorld { /** * The phrase to display in the console */ public static final string PHRASE = "Hello World!" ; /** * Main method * * @param args Command line arguments * @return void */ public static void main ( String args []) { // Display our phrase in the console. System . out . println ( PHRASE ); } } The third year /** * Hello world class * * Used to display the phrase "Hello World" in a console. * * @author Sean * @license LGPL * @version 1.2 * @see System.out.println * @see README * @todo Create factory methods * @link https://github.com/sean/helloworld */ class HelloWorld { /** * The default phrase to display in the console */ public static final string PHRASE = "Hello World!" ; /** * The phrase to display in the console */ private string hello_world = null ; /** * Constructor * * @param hw The phrase to display in the console */ public HelloWorld ( string hw ) { hello_world = hw ; } /** * Display the phrase "Hello World!" in a console * * @return void */ public void sayPhrase () { // Display our phrase in the console. System . out . println ( hello_world ); } /** * Main method * * @param args Command line arguments * @return void */ public static void main ( String args []) { HelloWorld hw = new HelloWorld ( PHRASE ); try { hw . sayPhrase (); } catch ( Exception e ) { // Do nothing! } } } The fifth year /** * Enterprise Hello World class v2.2 * * Provides an enterprise ready, scalable buisness solution * for display the phrase "Hello World!" in a console. * * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED * TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER * PARTY WHO MAY MODIFY AND/OR REDISTRIVUTE THE LIBRARY AS * PERMITTED ABOVE, BE LIABLE TO YOU FOR DAM
Meta told Dylan Byers, of Puck News, that it had nixed the feature after backlash from its user base.
Following significant backlash, Meta is turning off the feature it announced this week that let users generate AI images based on content from public Instagram accounts just by tagging them. The feature, as originally set up, meant that content from any public Instagram account could be used in AI creations without the account owner's permission. […]
The café was crowded that evening, but to me, the world had fallen completely silent. An open...
submitted by /u/PinkFrojd [link] [留言]