Friend-focused photo sharing app Retro snags $21M
Retro, a friend-focused photo-sharing app built by former Instagram employees, has raised more than $21 million in Series A funding.
找到 20 篇相关文章
Retro, a friend-focused photo-sharing app built by former Instagram employees, has raised more than $21 million in Series A funding.
As the appetite for “authenticity” grows online, content creators are buying up empty boxes for luxury goods—and resellers are cashing in for “crazy prices.”
Google Trends has no public API. What it has is the same internal JSON endpoints the trends.google.com single-page app calls — and those endpoints do something most REST clients aren't built to survive: they answer with HTTP 200 and an empty body when Google decides you look like a bot. Quick answer A 200 OK from Google Trends' widgetdata endpoints does not mean you got data. If the response body is empty, Google soft-blocked the request without bothering to send a 429. The fix is to stop trusting the status code alone: check resp.text.strip() on every call that's supposed to return a payload, and if it's empty, rotate the proxy session and retry exactly like you would on a 429 — because that's what it functionally is. if status == 200 : if require_body and not resp . text . strip (): # Soft block: Google returns 200 with empty body when it detects bots. # Treat the same as 429 — rotate session and retry. logger . warning ( " %s: HTTP 200 but empty body (soft block, attempt %d/%d) " , ...) if proxy_cfg is not None : new_sid = _fresh_session_id () current_proxy_url = await proxy_cfg . new_url ( session_id = new_sid ) await asyncio . sleep ( delay ) continue return resp Why does a working response start with )]}' ? Every Trends JSON endpoint prepends an XSSI-protection prefix before the actual JSON body — a defence against cross-site script inclusion attacks that predates fetch() . Naive json.loads(resp.text) throws a JSONDecodeError on a perfectly healthy response. Worse, the prefix isn't even consistent: /trends/api/explore sends )]}'\n (no comma), some widgetdata endpoints send )]}',\n (with a comma). We check the longer variant first so a response using the short prefix doesn't get mis-stripped: XSSI_PREFIX = " )]} ' , \n " XSSI_PREFIX_NO_COMMA = " )]} ' \n " def _strip_xssi_prefix ( body : str ) -> str : if body . startswith ( XSSI_PREFIX ): return body [ len ( XSSI_PREFIX ):] if body . startswith ( XSSI_PREFIX_NO_COMMA ): return body [ len ( XSSI_PREFIX_NO_COMMA
Can electrifying your workout offer a shortcut to a stronger, fitter you? I sweated in a skintight EMS suit for two months to find out.
Platforms are finally recognizing that people don’t want to consume AI slop. A growing number of sites and apps now have tools and policies to flag, label, and ban AI-generated content.
This report summarizes how the InfoQ Culture and Methods editorial team sees the ongoing and emergent trends in the culture and methods space in 2026. By Shane Hastie, Ben Linders, Vanessa Formicola, Shawna Martell, Rafiq Gemmail, Craig Smith, Phillip Mortimer, Yinka Omole
ESPN unveiled an “AI tells detection” tool during broadcasts of the 2026 World Series of Poker. Is it a neat computer-powered party trick, or a real threat to poker’s future?
Thanks to the surge in local AI processing and the ongoing memory shortage, it’s incredibly difficult to buy a Mac Mini.
Ever sat down and thought about how a movie can spark your curiosity about technology? I was rewatching "Jurassic Park" recently, and, for the umpteenth time, I found myself mesmerized not just by the dinosaurs but by the computers! The way they portrayed tech in the early '90s was a mix of excitement and pure whimsy. I’ve been exploring the tech behind the magic, and it’s been a wild ride down memory lane—a nostalgia trip mixed with some surprising insights into how things have evolved. A Walk Down Memory Lane When I first watched "Jurassic Park" as a kid, the scene where Dr. Ellie Sattler runs through the control room, frantically trying to restore the park’s security, left me awestruck. I mean, who didn’t dream of typing on one of those cool-looking computers? As a budding developer, I couldn't help but wonder about the behind-the-scenes tech. Ever wondered why they used UNIX systems? Or why the computer graphics felt so cutting-edge back then? Turns out, they were leveraging a blend of SGI workstations and proprietary software that made their visual effects legendary. I remember my first experience with UNIX during my college days, and it felt like being dropped into a different universe—powerful, complex, and sometimes, downright intimidating. I’ve learned that just like in the movie, the power of tech lies in how effectively we can wield it. The Nostalgia of User Interfaces Let’s talk about user interfaces. The interfaces portrayed in the film, with their vibrant colors and flashy animations, were quite ahead of their time. It’s funny looking back because, at points, they seemed so unrealistic. I mean, the way Dr. Ian Malcolm effortlessly navigated the systems? I wish it was that easy! When I started working on UI/UX projects, I learned that simplicity is key. I once spent hours creating a beautiful interface that was so complex no one could figure it out! My takeaway? Sometimes, less is more. It’s the same lesson I’ve carried into modern frameworks like React
Companies’ increasing reliance on AI chatbots isn’t making the customer service experience smarter. It’s just making it more infuriating.
More dog owners have begun cooking for their canine companions in recent years. When my own dog fell ill, I became part of this growing group.
Ever wondered why sometimes the simplest things throw a wrench in our beautifully crafted code? I recently had a realization that hit me like a ton of bricks: the bottleneck could literally be the air in the room. It sounds absurd, right? But let me take you on a little journey through my recent experiences that led me to this conclusion. The Setup: A Frustrating Week Just a few weeks ago, I was knee-deep in a project using Python and TensorFlow to build an AI model for image classification. I was feeling pretty confident, you know? I had my dataset prepped and cleaned, my model architecture designed, and I was ready to train. But then, out of nowhere, my training took an eternity. I was kicking myself for not optimizing my code, but something just felt off. I started checking everything from my training loop to the data pipeline. I even considered that maybe I had some rogue semicolons in my Python code—classic mistake, right? But no, everything seemed fine. Then, in a moment of clarity, I realized my laptop was struggling to keep up. The fan was roaring like it was auditioning for a heavy metal band. It hit me that maybe, just maybe, the problem was my environment—specifically, the air conditioning. Environment: The Unsung Hero I’ve learned that environment can have a huge impact—like, why didn’t I think of this sooner? I had been training my model in my home office, where the temperature was rising faster than my enthusiasm for debugging. I decided to take things to the next level and moved my setup to a cooler room. And guess what? My training speed improved significantly. It turned out that my laptop was throttling itself to prevent overheating. This was my "aha moment." It was a reminder that sometimes the bottlenecks in tech aren’t just about code or hardware; they’re about the conditions we create for them. The Code: Finding Efficiency Once I had a handle on my environment, I dove back into my code. I had learned the hard way that performance optimization is
Sun hoodies are the greatest new garment since the original hoodie.
Even if peace holds up between the US and Iran, oil prices aren’t going back down to where they were any time soon.
With its music focus, no-AI content policy, and larger artist royalties, the hi-res streaming service is scooping up all sorts of switchers.
Soccer officials already rely on cameras to see who’s offside and who sent the ball out of bounds. But during this World Cup, refs will use digital twins of each player to view plays from every angle.
According to new research, Trionda would show less unpredictable movements in actions such as corner kicks or free kicks. However, in powerful and long-distance clearances it would lose range.
Today, June 8th, InfoQ celebrates 20 years. This is not a comprehensive history, but a deliberately selective look at the technologies and practices InfoQ identified early, where they sit on the adoption curve in 2026, and how that curve may evolve over the next five to ten years. By InfoQ
From battery life to privacy, there are many hurdles to the idea taking off.
It’s hard to believe how quickly the tech landscape is evolving, especially with AI/ML at the forefront. Just the other day, I had the chance to attend the Mistral AI Now Summit, and wow, what an experience! I walked in with a notebook full of questions and a mind buzzing with curiosity. I left with a treasure trove of insights, a few new friends, and even more questions. Ever wondered what it’s like to dive deep into the world of AI with some of the brightest minds? Let me take you on a journey through my day at the summit and the lessons I picked up along the way. A New Era of AI Walking into the venue felt electric. The air was thick with excitement, and the buzz was palpable. I’ve been exploring AI for a few years now, and it feels like we’re at the cusp of something monumental. Mistral’s focus on open-weight models really got me thinking. What if we could democratize AI further? Imagine a world where innovation isn't locked behind corporate walls but accessible to everyone. I remember a speaker discussing how open models can help small startups compete against big players. It hit home because I’ve been that small developer trying to fight the good fight. Real-World Applications One of the discussions that resonated with me was about real-world applications of large language models (LLMs). I’ve dabbled in a few projects where I used Hugging Face's Transformers library to create chatbots, but hearing actual use cases from businesses was enlightening. For instance, a startup shared how they used a fine-tuned model to improve customer service response times by 50%. Can you imagine the time and money saved? It got me thinking about how I could implement something similar in my own projects. Here’s a quick code snippet that I’ve found useful when fine-tuning a model for a chatbot: from transformers import Trainer , TrainingArguments training_args = TrainingArguments ( output_dir = " ./results " , evaluation_strategy = " epoch " , learning_rate = 2e-5 , per_device_tra