skysight-inc/HackerNews huggingface dataset:
Show HN: Lama2 - Plain-Text Powered REST API Client for Teams
Hey everyone,

I've been working on publishing Lama2, a Plain-Text Powered REST API Client for Teams, for the past few months. Initial work on Lama2 started after my dissatisfaction with existing tools such as Postman/Insomnia. I wanted a text-powered and git-friendly system with a lightweight GUI layer on top so that I could onboard beginners/newcomers quickly into my team while also maintaining control over data. Today, we use Lama2 extensively internal to Hexmos; almost every internal code review tends to have a `.l2` API file attached now. It has worked great for us. More about the approach with Lama2 below.

TLDR: - Approach: "Markdown for APIs" (Design philosophy - https://hexmos.com/lama2/reference/philosophy.html) - Store APIs in plain-text files in human friendly syntax. (Examples - https://hexmos.com/lama2/tutorials/examples.html) - Simple CLI to execute API files - VSCode extension to launch requests right from within your editor - Collaborate with team over git - Good documentation + Extensibility - Import from Postman into Lama2 files - Fun Implementation :) Hand-crafted recursive descent parser in Golang; integrated flexible JSON parser

Links: Documentation site: https://hexmos.com/lama2 - Github: https://github.com/HexmosTech/Lama2

Background story: The story begins more than a year back, when our team at Hexmos wanted to collaborate on APIs in a simple and straightforward way. Our engineering infrastructure is split into dozens of self-contained software services. We deal with 100s of internal APIs, and so felt a need for a robust workflow for defining, sharing and updating APIs within our teams.

Traditional solutions such as Postman/Insomnia implement the collaboration features within their applications, and also tend to charge a fee for collaboration. We felt using git is the right way to collaborate on APIs, rather than any custom built solution. So, in a matter of 2 days we got a regex-based prototype DSL language to store API files.

Lots of issues cropped up over time, but we kept making improvements to Lama2 as needs arose. We accumulated 100s of API files over time. Then, we decided that the tool deserves to be out there, benefiting teams that want to collaborate on APIs over git. So, to make it happen, first we invested into formalising the grammar, and implementing the DSL as a hand-written recursive descent parser. Then we invested into helpful documentation, demos and so on. Once we had the basics, we released Lama2 into the world.

Future tasks: - Create human-friendly syntax for specifying websocket APIs, basic testing, etc - Integration with more editors + deeper/richer integration

Any suggestions/criticism/feedback welcome :)
Since Python fixed its v2/v3 issue, things seem to go well for it.
The biggest thing about C# (and it's .NET peers) that turns me off is the link to Windows and Microsoft.

I don't like using Windows or Visual Studio for development.
So true, a lot of people I've worked with treat adding types as a box to check (eg afterthought) rather than something to leverage.
I'm waiting for an active speaker with position measurement and fully digital closed-loop control of the speaker movement.
I was more interested in the number of software engineers having almost doubled in three years. Did that really happen? Is there any explanation for that?
> The great success of the EU is that it has stopped the member countries from going to war with each other.

You’re confusing the EU with NATO. The EU has no role whatsoever in defence policy, and can claim absolutely no credit for peace in Europe. Neither during the Cold War (how would that even work? Occupied Germany somehow invading France? Most of Europe weren’t even members then), nor now. Zelensky isn’t travelling to Brussels to give a speech to the European Parliament, he’s flying to Washington instead. NATO.
I primarily write c# for a living. What's wrong with async await in kotlin? I'd struggle to live without it in c#.
Just use static methods for that. Disadvantage: you are forced to use package and class name spaces. Advantage: everything is inside some namespace.
This is a horrifically-written article. The grammar and style suggest it is the output of an algorithm rather than something with human involvement.
What is the rarest mineral on Earth?
For reproduction. The topic at hand is art generation. The perfect amp doesn't exist because it changes from listener to listener and moment to moment. That said, a distorted guitar amp sounds kickass.
> 'Enterprise' java was a quagmire of mediocrity in the 00s.

Yes, I agree.

But at the time, fighting with Tomcat stack traces was often still preferable to a number of other options at the time.

Its obviously been a while, but IIRC for web stuff if you were not a JAR shop, then you were (probably) using ColdFusion or PHP, because the Microsoft badge couldn't be trusted at the time to be put on the web. And back then PHP was v4/v5 where it deservedly gathered community hate unlike today's pretty decent v7/v8. ColdFusion was generally ok though, but I think its largely going the way of Java these days, overtaken by better tech.
Hi, it's possible you were looking at it in Celcius? It currently defaults to to the SI unit preset (displayed at the top right of the page) if you had not selected a preference yet. I will be changing that soon to be smarter and default to the unit based on location. This link should be good for you in the meantime: https://merrysky.net/forecast/44.9603383,-93.350066/us

If you're still seeing a discrepancy, feel free to email me with the debugging information so we can clear that up. feedback@merrysky.net
I do most my .NET development on Linux… you don’t need windows or visual studio for like 6 years now.

Edit: changed all to most as I still need windows for some c++ specific stuff at the moment.
Function coloring
> A curious feature of the station is its powerful gravitational field, far stronger than would be suggested by its small mass. However, this probably represents a faulty reading by our instruments.

I know it's just fiction, but this is just outright contradictory. The gravitational field is determined by the mass, and even with faulty instruments, they can feel the strong gravity for themselves. "Small size" would likely have been better.

Aside from that nitpick, absolutely loved the story. Slowly realizing that the station is expanding around them and then reading the conclusion was riveting.
Google has only be usable for me if I include site:reddit.com in the search query. Even the auto populated suggestions include "site reddit" (which doesn't work the same way) so I believe it's a very popular trick.
240/4 ("class E") addresses were intended a buffer for future allocation, but they can't use it for global unicast because a lot of equipment considers any IP above 239.255.255.255 to be invalid. There have been RFCs to make it formally global-unicast and local-unicast but none have succeeded because of the above-mentionned poorly programmed equipment.

That said, if you know your equipment can handle it like some network operators know theirs can, there is nothing stopping you from using it as a /4 local address space.
You should contribute to open source project that has reviewers, it's like doing a test and having it graded by teachers.
That exists. It's called a servo subwoofer.
C# is still a better language than Java, despite the purported catching up.
You can use Linux or Mac to develop C#/.NET apps with VSCode, JetBrains Rider, or even vim: https://github.com/OmniSharp/omnisharp-vim
Yeah but the point is that other devices get the 1080p and higher resolutions
I like that. There’s also, “Opportunity tracks down the well capitalized.” I forget who said that, but it was in the context of having a conservatively invested (e.g. liquid) “opportunity fund”.
What you are referring to is asset encryption, not DRM. Many games have DRM (e.g. Steam API and Denuvo linked into the executable) but do not encrypt their assets; it's mostly "live service" games and competitive games with matchmaking and anti-cheat that do, usually with the intent of preventing future update leaks. On the other hand it's also common for DRM-free games to use custom (usually unencrypted but possibly compressed) asset and archive formats you can't easily open, especially if they are made using an off-the-shelf engine such as Unity or Unreal.
And why, exactly, should that matter?

The execs of each company didn't personally invent every machine and write every piece of software their employees are now using to be productive. Hell, a lot of it they didn't even particularly choose—so much of the productivity gains comes from basic stuff like "personal computers" and "Microsoft Office".

They are benefiting from the labour and expertise of others, and saying that means they deserve to get more money. Why? Why should those gains not be shared equally with the people who are actually doing the work?
And how much do you think “owning your own business” would net the people they profiled?
Probably for the same reason that people still think it's romantic or nostalgic to use analog film cameras to take photos, when a digital camera can reproduce everything that the old film camera can do, and more easily? It makes you feel somehow more in touch with some bygone era. People talk about the "warmth" of a tube amp or some kind of other intangible / A-B-test-inconsistent quality.

But it's all just perception.
I might go with, "Why do you ask?"

Seems like a polite noncommittal refusal. And if, by some miracle, they have a legitimate reason to want to talk about that topic, then they get a chance to clarify.
This reads so dystopian that I'm hoping it was said in jest. It's scary that I have to ask though, too many people actually think like this.
I dont remember a single a Java dying story. It was extremely hyped in the early 00s. There were lots of hate during the very late 00s and early 10s when Ruby on Rails is hyped. But I dont remember anyone saying Java or JVM is dying or dead.
I agree that the GIL situation is unfortunate.

Python at least does not pretend their it-just-works serialization is secure. The documentation [1] actively discourages deserializing untrusted data and suggests to use pure data format (e.g. JSON) as possible.

In contrast, the documentation on ObjectInputStream before Java 11 does not warn about this at all. Even then [2], it suggests to implement blacklist/whitelist filters, and it is pretty hard to get right. The same filtering can also be done for pickle, but the usual consensus in Python developers seems to be "don't do this even if it's possible".

> but from what I have seen ClassLoader/Import abuse is alive in both languages.

Yeah, should have said that my rant is mainly against endless deserialization/OGNL injection/whatever-popular-expression-language injection bugs in frameworks, not abusing ClassLoader. These features, just like log4j2's code-execution-disguised-as-string-interpolation feature [3], shouldn't exist.

[1] https://docs.python.org/3/library/pickle.html

[2] https://docs.oracle.com/en/java/javase/11/docs/api/java.base...

[3] I'd argue that's the real bug, instead of the obvious JNDI class loader blah blah stuff. Luckily log4j didn't refuse to fix it and completely removed "message lookup".
I think his intention was a spaceship/starship. He was a science fiction writer, after all, and most of the Lazarus Long stories take place elsewhere in the Galaxy.
A starship can be more or less complicated than a maritime vessel, depending on the onboard computer. Maybe as simple as saying “take me to a nice planet to relax”.
This is what the old CAPTCHA system from Google did.

https://en.wikipedia.org/wiki/ReCAPTCHA#ReCAPTCHA_v1_(human-...
I find these maps make great screensavers or desktop backgrounds. Why not a poster? That said maybe I'll wait a few years before ordering the ipv6 poster, I have black paper at home.
Everything you say about the like button also applies to votes, so if the like button is what makes social media bad, I don't see why HN should be better.
Or...his managers are just bad at evaluating performance.
What you are saying is correct from an engineering standpoint but it completely ignores the human psychology.

Tube amps produce a lot of (not only harmonic) distortion, especially the cheap stuff. And then there are also various nonlinearities due to the inevitable transformers, tubes aging, mains hum, etc.

The problem is that musicians (and not only) were "raised" on this type of "sound". So they consider this to be the nominal, "correct" way how an amplifier is supposed to sound like - especially that one obscure box they got 40 years ago at a garage sale somewhere is the gold standard.

They don't know squat about harmonics, distortion etc, many barely understand that the blinking red light on the amp indicating clipping is not what one is supposed to see and not the signal level one is supposed to adjust the gain pot to.

But they then see that a clean solid state amplifier (or even a tube one with a lot of negative feedback and compensation) sounds different, thus it has to be the one that is "wrong" and "sounds bad".

That's where the myth about tubes sounding "better" comes from. It has little to do with actual measurable distortion value.
There was also a large anti-fascist movement in Croatia during the Second World War: https://en.wikipedia.org/wiki/Croatian_Partisans.
Uff - there were many - and they are again starting to pop up...
There is no client side jvm dependency anymore. You bundle the jvm as part of your executable, using jlink to only include what's needed. It's invisible to a consumer that it's a java program. No need to install JRE.

Seems like your knowledge about Java is ~10 versions old.
Which would be some of the wrong answers?
Async/await is extra syntax and one more function color which you have to keep in mind, while being just a workaround for expensive threads.

Recent Java has just made threads cheap, so async concurrency is much simpler and more consistent with existing libraries and APIs.
I'm not sure you do understand it. My hypothesis is that if knowing the actual events of a 'successful' reading allows one to infer what cards were drawn, that there's a causal relationship between what cards are drawn and how successful the reading is.

But I think the question of experimentation risks obscuring an important point you touched on, namely the distinction between facts and meaning. They're certainly not the same thing, I think of them as three-dimensional and four dimensional analyses of the same dataset. If divination is worth anything it's because it deals with meaning, but the relation of that to the facts of the situation being examined is ambiguous.
In capitalism, every agent should at all times be looking to make the most money with the least input.

That way the most urgent tasks tend to get handled first.

This goes for corporations selling higher margin things to easier customers; customers seeking higher quality and better service for less, and workers seeking higher pay per time and effort spent
You can write unmaintained applications in any language or stack. An unmaintained system is not the language's fault, it's the maintainer's fault.
Correct. I like to think of it as “infrastructure” (things managed by Terraform that define the structure) vs “deployments” (actual apps deployed on that infrastructure). The line gets blurry because you can actually deploy many types of apps with Terraform too if you want, but typically you would use Helm or similar solution for that.
I’m at 2 for about 15 now, in terms of profitable SaaS businesses to good, several month attempts. It took maybe six or eight tries to get the first one going, so I’d say I’m getting better with practice.
And "the fastest growing Kotlin", which runs on the same JVM will solve all those "exploits and network stack bugs"?
Seems that for a beginner, a visual experience while programming could be helpful to understand the problem and tie it to something that feels real and tangible, but that it also slows the process down a lot because of the need to move around in a physical space and so on. I have a feeling that many hardcore programmers would be resistant to a visual programming experience, even if it were optimised better than this game, but your project made me wonder if somewhere in between could be a sweet spot. Imagine writing code, and when you get stuck, you put a VR set on and the code is visualised in a virtual room, as objects, with parameters and connections and you could walk through the code by scrolling time backwards and forwards. It might help you get unstuck and fix the problem while actually understanding the issue, not just trial and error.
I’m going to try to get back to the Elixir/Phoenix e-book I bought this time last year :)
I found myself agreeing with every word of this article. The penultimate paragraph summarizes it well:

> People call Twitter an indispensable public space because it’s the “town square”, but in the real world there isn’t just one town square, because there isn’t just one town. There are many. And the internet works when you can exit — when you can move to a different town if you don’t like the mayor or the local culture.

> Disagreement in society is necessary for progress, but it’s most constructive when it’s mediated by bonds of trust and affinity and semi-privacy.
>But today you would be nuts to use Java instead of Go (or Rust if you need the low-level).

I really hope you're trolling to come up with this kind of statement.
>Usually the Matrix organization posts such an update, but I felt like this years update was a bit scary and also light on community projects.

I noticed that while reading it as well. The call for funding ap few weeks ago did not sound nearly as dire. I wonder how things are going with that. I had wanted to donate to Matrix a number of months ago, but there was no easy, non-Patreon way to do that. I guess I assumed that with the new ask for donations and setting up DonorBox would have a pretty large response.

It's also strange how quickly this situation developed. I read every TWIM (at least I did before RSS broke recently) and follow the project and some developers on Mastodon, and don't recall hearing anything about financial woes. If anything, it seemed like at least New Vector was doing well financially. It isn't clear to me whether the financial issues are with Matrix directly, or New Vector. I don't think this is mentioned for the two developers who were laid off either.

Overall, the tone and urgency of the 2022 update struck me very off guard - not what I was expecting.
I mean multi generational English with family members who died in wars defending England, people who have shed blood for England. People whose homeland England is and has always been. People who have defined the uniqueness of English culture from other cultures for thousands of years. People who have made England a desirable place to be vs the places everyone else wants to leave.

Rather than people whose parents came to England because it has a good economy.
Agreed, and the ease of 'assembling' various components is much easier now. Even the project in this article has very little soldering/individual components besides a few pull up resistors and some LEDs, both of which could have been on breakout boards. Everything else is just pin headers and jumpers to/from prebuilt boards.

The Heathkits and even things like the Radio Shack spring-wire 250-in-one type kits had you build circuits from all individual components: resistors, capacitors, diodes, transistors, inductors, etc. If lucky, maybe a few basic ICs like triple-nickels, op-amps, comparators. After hours of soldering/wiring you had something that did some very basic function - not a microcontroller/SBC with full programming language support and more power than a supercomputer a few decades ago.
I feel like this was written in such a way that many won’t realize it’s satire.
I think that's far too cynical. Is it (just) marketing that keeps actual pianos being built? A keyboard with a good software synthesizer attached is, I think, objectively, a better instrument these days. Greater dynamic range, never needs to be tuned, you can swap in any particular timbre you prefer, whatever. So why build an actual piano?

With the electric guitar, the tube amp is part of the classic form of the instrument, as it was known for half a century, and first came to be played. It's the physical instrument present on most of the classic recordings and which older players learned to play with.

This quest for authenticity, or whatever you want to call it, is surely psychological, and often, in my opinion, a bit silly. Marketing often plays on it, for sinister marketing reasons, sure. Still, when it comes to pianos (or violins or trumpets or whatever), making and using period-accurate instruments, in the way they were made historically, and played historically, is both rather popular as a hobby/art, and also a serious academic field. Why would the electric guitar be exempted?
It would be helpful to understand from you: as opposed to what?

Kubernetes continues to be the de-facto leader in cloud native cluster management, so if you don’t use it what would you do instead?
let them discover the joy of xmonad
For example, blanket access to filesystem seems bad. Start with, most apps get access to some particular subdir of $HOME, like say "Documents", their own config for and systemwide files (not user-specific). Then you have a directory of home which you know is more vulnerable, but the rest of it, like .ssh, is protected. Select programs like ssh or rsync can have access.

Perhaps a simpler starting point is a runner script that enforces such rules on an opt-in basis from the user, and tooling that makes it easy to run binaries through this. Like a reverse sudo sort of thing.

I'm certainly not saying it's easy, but I'm not sure it is impossible either. It's a bit like an internal firewall.

Even if apps request blanket permissions, that's a win already. On mobile, when apps do it, it is a big red flag for me and I skip.
Speech is also about comfort and venting where echo chambers shine. And those chambers predate the social media. IME even IRL people tend to congregate mostly with like minded individuals.

And if the congregation turns out to have too many views in contrast to ones own then folks tend to leave.
Async/await doesn’t change anything there. It just makes it easier to deal with.
Related: https://craftinginterpreters.com/
That's true when you have plenty engineering power at your disposal. Most companies can't afford to regularly replace their legacies. That's how they became legacies, after all.
With Excelsior JET [1] you could do that since 2000. They closed the company when GraalVM/Native Image started coming out...

[1]: https://en.wikipedia.org/wiki/Excelsior_JET
To me it never made sense, people point out issues that makes linux not suitable for desktop use by quoting how it should follow Windows or OSX approach... to me someone wanted to use linux but without using linux, at that point why don't they use windows or OSX? I also use linux on the desktop and the way it behaves matches my thinking process, If I wanted it to be used as Windows or OSX I would be using Windows or OSX
The "idempotency" is that the request should not cause a state transfer from the client to the server that causes the server to change the resource.

That doesn't mean that the server can't change the resource itself for other unrelated reasons.
I don't see the contradiction.
How to use Tana for writing and note taking