Friday code review: an error our tool once found in the code of the open-source Language Tool project. What do you think about the code? At first glance, it seems ok: it works as it should. But… V6009 'replace' receives an odd argument. The " véns " argument was passed several times. The Catalan language module has the removeOldDiacritics() method, which neatly corrects outdated spelling forms and removes unnecessary diacritics. For example, it converts "adéu" to "adeu", "dóna" to "dona", "vénen" to "venen" and so on. But here's the catch! The method replaces "véns" with "véns" — replacing the word with itself. Nothing changes. Most likely a copy-paste oversight: the developer copied the original word but forgot to update the second argument. Traditionally, we've reported it to the project maintainers and write the article about it. Small bugs like this are easy to miss, but fixing them makes open source stronger. Full article with bug explanations: https://lnkd.in/e4xdrt72 #Debugging #Development #Opensource #Java
Debugging Open Source Code: A Small but Important Fix
More Relevant Posts
-
I’m realizing something interesting as I work more with agents and less with direct typing. I can’t type fast enough anymore to keep up with the volume of communication, corrections, and guidance needed early in a project. Before core frameworks and patterns are established, there’s a lot of iteration, a lot of precision, and frankly a lot of noise. But once those foundations are in place, something shifts. That “overly verbose” style that many developers used to criticize starts to make sense. What was once seen as excessive becomes an advantage. Clear, explicit, structured code and communication isn’t just readable for humans, it’s optimal for agents. Java was designed decades ago to be readable and maintainable. Today, that verbosity turns into a feature, not a flaw. Agents thrive in that environment. They perform better with clarity, structure, and explicit intent. And don’t even get me started on bringing in a framework like Spring Framework. It introduces a consistent, opinionated set of standards that extends that verbosity into architecture level clarity. Conventions, structure, and well defined patterns give both humans and agents a shared language to operate in. Compare that to less structured approaches where iteration often introduces more ambiguity, more rework, and more noise. So maybe what we thought was “too much” was actually preparation for where we are now. Turns out, "this is the way." what is your favorite language to have your Agents use for your critical applications? #springframework #java Josh Long DaShaun C. @danvega Qodo
To view or add a comment, sign in
-
Most developers say "API" and mean one thing. But there are actually two very different categories worth knowing: 𝗪𝗲𝗯 𝘀𝗲𝗿𝘃𝗶𝗰𝗲 𝗔𝗣𝗜𝘀 These send and receive messages across the web using HTTP. Think REST, GraphQL, or SOAP. The big thing here: they're language-agnostic. Your Python app can talk to a service built in Java with no issues. 𝗡𝗮𝘁𝗶𝘃𝗲 𝗹𝗶𝗯𝗿𝗮𝗿𝘆 𝗔𝗣𝗜𝘀 These work differently. The functions are incorporated locally within your code - expanding what you can do inside your project. They're language-specific, so a Java library stays in Java land. Why does this matter for technical writers? Because the docs look completely different. Web service API docs focus on endpoints, request/response formats, and authentication. Native library docs focus on classes, methods, and parameters -often generated from code. Knowing which type you're documenting shapes everything: your tools, your structure, and your audience. I'm working through Tom Johnson's "Documenting APIs" and this was the first distinction that reframed how I think about API documentation as a discipline. #TechnicalWriting #APIdocumentation
To view or add a comment, sign in
-
!!! IMPORTANT TO KNOW !!!! -------------------------------------------------------------------- 🤯 Java 8 ka ek concept jo har developer ko confuse karta hai… 👉 Functional Interface ❌ MYTH: "@FunctionalInterface lagaya = Functional Interface ban gaya" ✔ REALITY: Aisa bilkul nahi hai! 🔍 ACTUAL DEFINITION: Agar kisi interface me sirf 1 abstract method hai, toh wo automatically Functional Interface hai ✅ Annotation lagao ya na lagao — farak nahi padta ⚠️ TOH @FunctionalInterface KA USE KYA HAI? Ye sirf ek safety guard hai 🛡️ 👉 Agar galti se 2 abstract methods add kar diye 👉 Compiler turant error de dega 💡 SIMPLE EXAMPLE: Runnable interface dekha hai? Usme bhi sirf 1 method hota hai → run() Isliye wo bhi ek Functional Interface hai 🚀 KYU IMPORTANT HAI? ✔ Lambda Expressions isi pe depend karte hain ✔ Code chhota aur clean ho jata hai ✔ Java ko modern banata hai (functional style) 🧠 FINAL TAKEAWAY: "Functional Interface annotation se nahi, uski structure se define hota hai." #Java #Java8 #Coding #BackendDeveloper #LearnInPublic
To view or add a comment, sign in
-
-
Most Go codebases don’t suffer from a lack of interfaces—they suffer from too many of them. I wrote about how overusing interfaces in Go quietly makes your code harder to read, harder to test, and slower to evolve. The core idea is simple: 👉 Interfaces in Go should be discovered, not designed upfront 👉 Premature abstraction adds indirection without real value A lot of this comes from bringing patterns from Java/TypeScript into Go—where they don’t translate well. If you’ve ever: created an interface with only one implementation added interfaces “just for testing” or built layers that don’t actually simplify anything …this is for you. Read the full breakdown here: https://lnkd.in/dmBz-hYJ Curious—what’s the worst interface overengineering you’ve seen in a Go codebase?
To view or add a comment, sign in
-
What is Postman and why do developers use it? When building APIs, you need a way to test them without relying on a frontend application. This is where Postman becomes essential. Postman is a tool that allows you to send HTTP requests to your API and inspect the responses. Instead of writing code just to test an endpoint, you can interact with your backend directly. Key idea: Postman helps you test and debug APIs quickly. Example: If you build an endpoint like: GET /users You can use Postman to send a request to that endpoint and instantly see: the returned data the status code (200, 404, etc.) headers and response time Why it matters: speeds up development by testing endpoints independently helps debug errors in your API allows you to experiment with different requests (GET, POST, PUT, DELETE) useful for working with teams by sharing API collections In simple terms: Postman is a bridge between you and your API, allowing you to understand exactly how your backend behaves. If you are building backend systems with tools like FastAPI, learning Postman is not optional, it is a core skill. #programming #backend #api #webdevelopment #python
To view or add a comment, sign in
-
Most developers don’t struggle with APIs. They struggle with 𝘤𝘰𝘯𝘵𝘦𝘹𝘵 𝘴𝘸𝘪𝘵𝘤𝘩𝘪𝘯𝘨. Last night, I explored Anthropic’s Claude API skill—and it quietly fixes that problem. What stood out to me: Instead of dumping the entire documentation into context, Claude uses 𝘱𝘳𝘰𝘨𝘳𝘦𝘴𝘴𝘪𝘷𝘦 𝘥𝘪𝘴𝘤𝘭𝘰𝘴𝘶𝘳𝘦. It loads only what’s relevant to your task when you need it. The skill provides up-to-date API reference material. No overload. No digging. Just signal. I put it to the test: → Prompt: “Build a streaming chat UI in TypeScript.” → Claude auto-detected the SDK → Loaded only TypeScript-specific docs, streaming patterns, and best practices → Output: working code with token streaming + proper error handling Time taken: minutes Typical effort: multiple tabs, docs, and iterations What makes this interesting isn’t just convenience—it’s how the system thinks. The skill covers: • Context-aware documentation injection • Language-specific SDK guidance (Python, TS, Java, Go, Ruby, C#, PHP, cURL) • Built-in patterns for streaming and tool usage • Batch processing support (~50% cost efficiency) • Real-time model + pricing awareness • Guardrails around common implementation mistakes It triggers automatically when SDK usage is detected—or manually via /claude-api. It's bundled with Claude Code, but also available in the open-source Anthropic skills repository. The bigger takeaway: This isn’t “better docs.” It’s a move toward 𝘥𝘰𝘤𝘶𝘮𝘦𝘯𝘵𝘢𝘵𝘪𝘰𝘯 𝘢𝘴 𝘢𝘯 𝘢𝘤𝘵𝘪𝘷𝘦 𝘱𝘢𝘳𝘵𝘪𝘤𝘪𝘱𝘢𝘯𝘵 𝘪𝘯 𝘥𝘦𝘷𝘦𝘭𝘰𝘱𝘮𝘦𝘯𝘵. Less searching. More building. If you’re working on AI-powered apps, this changes the inner loop entirely. Curious—how much time do you currently spend jumping between docs and code? #ClaudeAPI #AIEngineering #DeveloperExperience #AgenticAI #BuildInPublic #LowCode #DeveloperTools
To view or add a comment, sign in
-
-
“We want to use this new framework. It’s fast. Everyone talks about it.” Sounds reasonable, and sometimes it is. But at this point I usually ask one question: how many senior engineers in the US or Europe can actually support it a year from now, and what will it cost if you need to replace the team? That’s where the conversation shifts, because speed at the start is only part of the picture. In many cases, more established choices like Java or Kotlin turn out to be a safer bet. Yes, they aren’t trendy, but they’re definitely easier to scale, support, and keep alive over the next 3-5 years. At Modsen, the goal is not to push a specific stack, but to make sure the technology you choose won’t limit your business later on. If you’re currently weighing options, I’m always open to exchange perspectives.
To view or add a comment, sign in
-
-
Posts like this gives me massive hope that #Crystal aka #CrystalLang is on the right path to success. Hopefully, the developer "masses" who toil away daily on #C, C++ #Cpp, #Python, #JavaScript, #Java, #Csharp etc. will eventually figure it out. 😉 Anywho, I see BIG uses for Crystal in #Startups as a "#SecretWeapon" -- just like how #YCombinator's Paul Graham used #LISP in a #disruptive manner to achieve great financial success during the early #DotCom boom by creating Viaweb which was sold & later became "Yahoo! Store". Or, how Kagi is using Crystal right now to build an AMAZING search engine. Believe me, soon, somebody is going to write some hugely popular in Crystal. And then more developers eyes will open. 😊 Why?? 🤔 Bcuz it's "Fast like #C. Slick like #Ruby". 👍 🟰🟰🟰🟰🟰 📌📍 Is Crystal Just a Blend of Other Languages? I’m a #Crystal #newbie and I’ve only been learning it for a few months. In my newbie opinion, it feels like a combination of the best parts of other languages. But it does that really well. 🟣 It has graceful syntax like Ruby. When I’m learning it, it honestly feels like I’m learning a human language. 🟣 It’s flexible but still safe. Crystal’s #TypeInference system is truly genius. Even though I’m still a beginner, I can already tell the compiler has saved me from who knows how many runtime errors. 🟣 It combines #Go-like #concurrency with a #Ruby-style syntax, and writing concurrent code this way is genuinely enjoyable. 🟣 Powerful #macros (although I still haven’t learned macros yet hahaha :D) ...There are probably many more advantages of Crystal that I haven’t discovered yet. But at least for me right now, I really feel this language is a genius combination of great ideas, and an impressive piece of development built on top of them. Writing Crystal code is really enjoyable: flexible syntax, but still safe. If this language had a bigger community or stronger company backing, it would be perfect. I truly think Crystal is an absolutely great language, but one of the reasons it struggles is that it doesn’t have a strong supporter like #Go has with #Google. Maybe Crystal also needs a breakout moment, just like Ruby had with #Rails. Or maybe someone will build an awesome tool in Crystal that suddenly goes #viral on the internet. If that happens, Crystal could finally get more attention and visibility. Because honestly, the language itself is not bad at all. It just doesn’t have as strong a background or ecosystem behind it. All in all, I really like this beautiful language, and I’ll keep learning it...📍📌 source: user #RetiredGuitar64 https://lnkd.in/ddgV6wcx 🟰🟰🟰🟰🟰 #programming #RubyOnRails #tech #WebDevelopment #gaming #Freelancer #Engineers #Science #crypto #blockchain #Cloud #WASM #EmbeddedSystems #Coders #JVM #VisualBasic #ERP #POS #PointOfSale
To view or add a comment, sign in
-
3 months of learning German 🇩🇪 taught me something unexpected: it runs on strict mode by default. Hear me out. Strict typing. Wrong grammatical case? Compiler error. Wrong prefix? Compiler error. Wrong article? Compiler error. Building a sentence in German feels exactly like writing typed code - you have an object, it lives somewhere in the sentence, it has a role (subject? object? indirect object?), and you have to declare all of that explicitly before the sentence compiles. Sometimes you follow every rule perfectly and it's still wrong 😄 English is JavaScript. German is TypeScript with strict mode on. 3 months in, still my brain compiles it slowly but the error messages are getting clearer
To view or add a comment, sign in
-
-
Hello Everyone, What is CLI(Comman Language Infrastructure)? The CLI is a framework created to enable the development and execution of applications written in multiple high-level programming languages. It provides a platform-agnostic way to execute code, allowing different languages to interoperate seamlessly. The CLI is standardized under the ECMA-335 and ISO/IEC 23271 standards. Key Components of the CLI: Common Type System (CTS): Defines how types are declared, used, and managed in the runtime, ensuring that objects written in different languages can interact with each other. Metadata: Information about the code, such as the definition and characteristics of types, fields, methods, and properties. Metadata is stored with the code and is used by the CLR for various runtime operations. Common Language Specification (CLS): A set of base rules and constraints designed to promote language interoperability. It ensures that code written in one language can be used by another language. Virtual Execution System (VES): Provides the environment for executing managed code. The CLR is an implementation of the VES. It loads and executes CLI-compatible programs, manages memory, handles exceptions, and ensures security. Intermediate Language (IL): The CPU-independent set of instructions that can be efficiently converted to native code by the Just-In-Time (JIT) compiler. In the .NET ecosystem, this is known as Microsoft Intermediate Language (MSIL) or Common Intermediate Language (CIL).
To view or add a comment, sign in
More from this author
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development