TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Why Tracebit is written in C#

245 pointsby mrcsharp3 months ago

40 comments

unsignedint3 months ago
One thing I appreciate about C# and .NET is how well they resist codebase rot. In some other languages, I often encounter situations where the development environment needs to be completely recreated—sometimes due to an updated interpreter version or other breaking changes. If you&#x27;ve been away from the codebase for a while, chances are you&#x27;ll need to make modifications just to get it running in a more recent environment.<p>With .NET, this issue is much less pronounced. While occasional adjustments are necessary, the environment is largely self-contained, minimizing the overhead required to get things running. As long as the .NET SDK is installed, running dotnet restore is usually all it takes—even when moving the codebase to an entirely new machine.<p>Some third-party libraries evolve more rapidly than others, but the core .NET libraries remain remarkably stable. More often than not, you can transition between major versions without needing to modify any code.<p>If I were starting a long-term project that required ongoing maintenance, C# would be my top choice. For quick scripting needs, I’d lean toward Python or PowerShell. In fact, PowerShell itself is another reason I appreciate .NET—it shares many concepts, and knowing .NET makes it easier to understand PowerShell. Plus, since PowerShell can directly leverage .NET libraries, it offers powerful scripting capabilities. I was thrilled when PowerShell became cross-platform, much like .NET itself.
评论 #42898075 未加载
评论 #42897247 未加载
评论 #42898050 未加载
评论 #42895093 未加载
评论 #42895089 未加载
评论 #42898188 未加载
评论 #42901772 未加载
评论 #42899148 未加载
LeFantome3 months ago
C# is one of my favourite languages and .NET is an awesome stack top to bottom. The interoperability between F# (a fantastic functional) language and C# is a real bonus that was just touched on in this article. Writing a compiler for .NET is easy and fun as you can target CIL (Common Intermediate Language) either as binary or text (.NET assembly basically). Something that builds in .NET today will probably run 20 years from now but faster.<p>Another benefit that is really stands out once you start using it is that you can write anything in it. It integrates to C well and you can get absolute control over the bits in memory and on disk if you want. You can avoid the garbage collector most entirely where you think you need to. You can also operate at a high level of abstraction. It has, if anything, way too many web and GUI frameworks (even just from Microsoft).<p>And that last part is the rub…<p>The downside of C# is that it is both old and rapidly evolving. That means multiple competing frameworks. That means that the complexity of the language keeps increasing. It is not quite C++ (and WAY better designed) but it has the same problem. The number of features and the breadth of syntax is non-trivial. There is also a bit of “magic” that has crept in that allows you to skip boiler-plate with the side-effect of basically have behaviour you cannot see in the code. All this is optional.<p>If you write everything green field with some coding standards, it is no problem. But if you want to read other people’s code, there is a fair bit of language to learn.<p>Like English, C# is incredibly useful and can be used anywhere. Like English, it is super easy to pick up and use. Like English, it feels like you can use it your whole life and still not know it all.
评论 #42905833 未加载
ThinkBeat3 months ago
One of the problems with C# is the constant expansion of the language. Microsoft wants it to be everything for everybody, instead of sharpening it in one direction.<p>If you have a lot of experience in C# 2.0, later code may be quite incomprehensible. (Yes this goes for other versions vs the latest version as well)<p>Whereas I can pick up a C program today and have a decent understanding of what it is doing.<p>Then the codebase becomes legacy a lot faster than most other environments. It will compile and keep it, but programmers want to stick new features into the codebase.<p>F# to the limited extent I have followed it seems more stable in terms of added features. C# has certainly adopted a lot of features from F&quot;.<p>My second big gripe with Net is EF ORM.<p>If the developers using it are not reasonably aware of how a relational database works, you can get truly horrific code. A dev team at a client I was at, managed to spike the SQL Server instance to damn near 100% for at least 30 mins.<p>When someone discovered the what and where was causing it.<p>A pure SQL statement replicating what needed to be done ran in seconds.
评论 #42897371 未加载
评论 #42899685 未加载
评论 #42896847 未加载
评论 #42896841 未加载
评论 #42899355 未加载
评论 #42897597 未加载
评论 #42899350 未加载
评论 #42901519 未加载
评论 #42901011 未加载
评论 #42896864 未加载
评论 #42896849 未加载
评论 #42899186 未加载
评论 #42900523 未加载
评论 #42908367 未加载
评论 #42896988 未加载
danielodievich3 months ago
I went skiing at Big Sky with bunch of Microsofties as part of Microsoft ski club back in 1999. One of them was a pretty big guy who on the first day of skiing took a bad tumble and threw out his knee. He had to stay at the chalet for most of the rest of the trip, missing out on some glorious snow. I remember asking him what he did while recuperating and he showed me what became .NET. He said it was going to be awesome and transformational, with many other nice adjectives. I didn&#x27;t really get that from his demo, it was pretty rough, but yeah, he was right. I&#x27;ve been Csharping almost every workday since it came out as 1.0 and its an excellent framework, especially these days where it runs everywhere.
PeterStuer3 months ago
&quot;Tracebit is a B2B SaaS Security Product. If you did a straw poll of Engineers - especially readers of a certain orange website - about the ‘best’ language for such a system, I think the common responses would include Python, TypeScript, Golang, Rust, something JVM-y, maybe Elixir&quot;<p>I guess everyone likes to be the underdog, but thruth is the B2B space is dominated by the duopoly of Java and .Net and shows no signs of changing.<p>The author is imho cosplaying as a contrarian while being solidly mainstream.
评论 #42896936 未加载
评论 #42896960 未加载
评论 #42900976 未加载
noveltyaccount3 months ago
As the author points out, Batteries Included is a big reason I choose C# over and over again. Every time I have to go to NPM or Crates.io and look over five or more packages to solve some seemingly basic problem I get exhausted and frustrated that I&#x27;m not actually solving the problem I need to. C# has so much built in, and while there are third party options, the Microsoft way is almost always good enough.
评论 #42899421 未加载
sophiacamille3 months ago
I have tried quite a few languages over the years. C# is my favourite. I don&#x27;t really know why, it just feels like a cosy, warm jumper.
评论 #42895411 未加载
评论 #42895677 未加载
评论 #42897969 未加载
评论 #42896882 未加载
halfcat3 months ago
C# is solid. It’s not necessarily the best at anything (is it?), but its floor is like a 3 out of 4 across the board.<p>I remember making a big spreadsheet of languages and a bunch of potential areas of use. Building desktop apps, mobile apps, games, concurrency, performance, cloud native, web apps, data pipelines, and machine learning. C# is 3 out of 4 on all of those, except maybe 4&#x2F;4 on games with Unity, and being cloud native with Azure, C# gives you a bunch of stuff automatically especially around observability.
评论 #42895065 未加载
评论 #42895258 未加载
ngrilly3 months ago
I recently inherited a C# code base at work. I agree that C# is a powerful, productive, and mature language, but as someone who has been programming mainly in Go, Python, and a bit of Zig over the past few years, there are a few things that feel like a regression in C#:<p>- The absence of free-floating functions (everything is an object, and I must use static methods on static classes).<p>- When “using” a namespace, the convention is to make all the symbols in the “used” namespace available directly in the current namespace. That makes harder to know where symbols are coming from when reading code. And to avoid name collisions, people tend to use longer names. The convention in Go or Rust is to prefix most symbols with the package they are coming from. But perhaps I’m missing something and need to read&#x2F;write more C#.<p>- The syntax for doc comments with tags such as &lt;summary&gt; is super verbose. I don’t see the point. Docs are working great without these tags in other languages. Reminds me of my J2EE days.<p>- I really prefer the name before type syntax (used in all new languages such as Go, TypeScript, Go, Swift, Kotlin, Zig, etc.) to the type before name syntax (used in C#, C, C++, Java, Dart).
评论 #42897403 未加载
评论 #42897433 未加载
评论 #42897855 未加载
评论 #42897604 未加载
GiorgioG3 months ago
Every time I futz around with another language I go back to C# for backend work. Part of it is likely due to familiarity (I’ve been using it since 2002). I wish MS would put some additional resources into F#.
评论 #42899344 未加载
EMM_3863 months ago
I&#x27;ve been working with C# since 2001, which is when it came out of beta stage and into production-ready.<p>My last greenfield product I was able to choose the stack (except the database, which I was stuck with).<p>Front-end? Angular, mostly because I felt it fit best with experienced .Net developers.<p>Back-end API layer? C#, obviosly.<p>So I&#x27;ve been working with C# for 24 years. No regrets.
评论 #42899476 未加载
spicyusername3 months ago
I recently waded into using C# to tinker with video game development using MonoGame, and I have been so surprised by how nice of a language it is to use.<p>With the exception of maybe Tagged Unions, it has all of the language features I could want, and the syntax is very clean and easy to read.
评论 #42895391 未加载
idatum3 months ago
I was pleasantly surprised to see FreeBSD part of the list of available cross-platforms running .NET. I already had a FreeBSD instance for ZFS and was able to also host a website and some workloads written in C#, avoiding the need for a separate Linux instance.<p><a href="https:&#x2F;&#x2F;wiki.freebsd.org&#x2F;.NET" rel="nofollow">https:&#x2F;&#x2F;wiki.freebsd.org&#x2F;.NET</a>
rednafi3 months ago
C# is a nice language, but it has a huge surface area in terms of syntax. Also, Microsoft’s past behavior makes a lot of people avoid it entirely before even considering it.<p>Plus, many, like myself, just don’t want to write OO code, no matter what. I simply don’t want to spend my time working that way. This makes hiring difficult, especially when many young engineers who start their careers with non-OO languages instinctively shy away from Java-esque languages.<p>That said, I welcome language diversity in the backend and love that new startups no longer default to Node. I’d rather deal with OO than fiddle with a poorly designed language that was never meant for anything but throwaway frontend code.
评论 #42897419 未加载
评论 #42897212 未加载
评论 #42896932 未加载
评论 #42899495 未加载
评论 #42898018 未加载
评论 #42897214 未加载
brainzap3 months ago
The tooling argument is contradicting itself: You need a big fat IDE to work with c#. Profiling is not even part of the default tooling, Microsoft tutorials want you to upload profiles to external flamegraph tools etc.
评论 #42899522 未加载
评论 #42908441 未加载
评论 #42899247 未加载
评论 #42899276 未加载
评论 #42906806 未加载
评论 #42907452 未加载
skeeter20203 months ago
C# really benefited from the trail that Java broke, and has stumbled in similar areas, notably the UI space. I know people who love Blazor but it&#x27;s not for me. MAUI just looks like MSFT&#x27;s latest cover fire &amp; delay strategy; not going to get me again. But if you&#x27;re writing primarily backend code in modern .Net C# is very productive, refreshingly lightweight, pretty much complete and has great tooling and lots of taleneted developers in the ecosystem.
评论 #42899776 未加载
begueradj3 months ago
This article is very useful because the author shares his thought process as why he picked C# over languages he is familiar with (such as Python), or something trendy as Rust. I wish more articles like this one would pop up every now and then here and elsewhere.
account-53 months ago
My only experience of C#&#x2F;.Net programming is by way of powershell. But the comments here make me think it would be a good idea to invest some time in learning c# beyond what it can provide over add-type in powershell. I&#x27;ve mostly avoided it because I thought it was windows only, I&#x27;ve learned dart and flutter for cross platform programming. Can c# run on mobiles?
评论 #42897113 未加载
评论 #42897074 未加载
评论 #42898070 未加载
MaxGripe3 months ago
In my opinion, one of the most underrated things by people programming in C# is the fact that they also have F# at their fingertips. They ignore it because they haven&#x27;t dedicated enough time to appreciate how powerful and fantastic it is.
评论 #42905465 未加载
评论 #42897849 未加载
doorhammer3 months ago
Tangentially related: When I was doing C# on Windows full time I ended up using LINQPad a ton for almost all of my daily scripting.<p>LINQ + MoreLinq + Extension Methods makes it really easy and fast to make type safe internal DSLs that I wouldn&#x27;t want anyone I care about to have to use but worked really well for personal power tooling. (you also _can_ definitely write more sane ones, but I didn&#x27;t have to for personal stuff and it let me burn off the cleverness in my brain before working on code other people might have to work with)
评论 #42899554 未加载
pjmlp3 months ago
Great post, instead of the usual rewrite X in Y, because reasons.
knallfrosch3 months ago
If Microsoft released a new version and called it something other than asp.net, .net, .net framework, .net core or anything like that, I&#x27;d be so happy.<p>Finding outdated search results from 2012 is probably the biggest impediment for the ecosystem.<p>Or finding out, from the project XML, whether a project is .net48 and Windows only or .net6 I&#x27;d a non-trivial task. Why?<p>Other than that, I agree with the article. It&#x27;s a mature ecosystem where the crucial bits have first-party support.
ansgri3 months ago
I didn&#x27;t follow it close, but had an impression that C# and .Net still have a significant Windows ecosystem bias. But this article, and comments from happy C# users, may just convince me to re-learn modern C# and start using it in everyday work. I&#x27;m kinda tired of C++&#x2F;Python ecosystem, and have fond memories of working with C# around 2.0-3.0.
tester7563 months ago
I&#x27;ve started programming in C++ and when I encountered C# then my initial reaction was:<p>Wow, this language allows me to focus on writing programs (algorithms) instead of fighting with the language!<p>9 years passed by, now &#x27;veI worked with C, C++ and C# for money and my opinion is still the same.<p>I&#x27;ve earned way, way more money in C&#x2F;C++ world, but I was 5x times happier &#x2F; saner in C# world.
codr73 months ago
Makes sense, but Java&#x27;s mostly portable library eco-system and its maturity would make a very strong contender to me.
评论 #42895450 未加载
评论 #42897220 未加载
coder5433 months ago
I have never had a chance to use C# professionally, but it was one of the first languages I taught myself when I was first learning programming when I was a kid. I have a lot of fond memories of it, and I hear so many positive things about C# and .NET Core these days… but I just don’t see very many interesting tech jobs where I would have the chance to use C#. So, I’ve mostly used Go, Rust, and TypeScript through my career up to this point.<p>If anyone wants to point me to some good C# opportunities, I’m interested. (Tracebit is looking for a founding engineer, so presumably they want someone who is already an expert at C#, and I doubt they want to sponsor the visa work needed to bring someone to the UK.)
npodbielski3 months ago
TPL seems fine in documentation but I found it very hard to be used in real world scenario. Wiring evrything to single input-output or using dozens Join blocks to achieve data structure you want for some blocks was not pleasant. Also finishing pipeline in the right time is also not that easy. Either blocks were not finishing at all or finishing too early. I end up writing my own flow library that is much easier to use for simpler pipelines, yes not so versatile and does not allow spanning multiple inputs across multiple blocks, but at least it does what it supposed too.
评论 #42899353 未加载
neonsunset3 months ago
Nice! C# is also a secret systems programming language in a way that competing GC-based languages are not. It’s actually very nice for high load environments. With the caveat that, much like in Rust, you have to actively vet your dependencies and sometimes write your own optimal implementations, which C# enables incredibly well with precise control over memory management, first-class structs, zero-cost abstractions, SIMD and a compiler that is slowly closing the gap with LLVM.
评论 #42898309 未加载
ilitirit3 months ago
I have used a myriad of programming languages in production in my nearly 25 years of professional programming. There are things I love (almost never &quot;hate&quot;) about most languages.<p>But the reason C# is one of my favourite languages to code in professionally is simply because of how easy it is to setup the environment and just get to work. Admittedly on Windows, but I&#x27;ve learned over the last 5 years it&#x27;s a pretty simliar experience on Linux too. No messing with environment variables or paths; no header file wrangling; no macro shenanigans; no messing with virtual memory settings etc etc etc.<p>Yeah, I get it. Choice is nice. But when it comes to my job what&#x27;s most important is that I can just get to work.
评论 #42909104 未加载
lordofgibbons3 months ago
How does it compare with Kotlin for backend development, which inherits all of the JVM ecosystem?
评论 #42897209 未加载
评论 #42895290 未加载
评论 #42895723 未加载
thdhhghgbhy3 months ago
Haven&#x27;t written C# for 8 years, but Visual Studio used to be dog slow. But that&#x27;s the only criticism I can think of, love the language. I remember when ReactiveX came out, C# became close to unbeatable at that point.
评论 #42903261 未加载
germandiago3 months ago
How does C# compare to Clojure, at which I am looking lately a lot with a wish to use it for distributed applications productivity-wise, concurrency-wise and productivity-wise, including deployments in production?
评论 #42899536 未加载
arrty883 months ago
i love dotnet &#x2F; c# and i would love to work with it again. i have been in the typescript&#x2F;node world for the past 10 or so years, and while productive, it leaves much to be desired.
jchw3 months ago
I am a certified Go zealot; pretty much anyone who&#x27;s trolled through enough threads here can attest to that. However, I am increasingly interested in .NET these days. I think Microsoft and the .NET community have built something truly compelling, and the language design of C# is superb (and I&#x27;m not saying it&#x27;s perfect by any means, but I&#x27;m routinely impressed with what they accomplish version over version.)<p>My only hangup is that I have had my confidence shaken by Microsoft&#x27;s occasional showing of hand: with the foundation drama, the debugger nonsense, and with the weird CLI live reload removal, it seems there&#x27;s still some shades of old Microsoft hanging around. I don&#x27;t honestly believe they&#x27;d pull a complete bait-and-switch, and let&#x27;s face it, Go is backed almost entirely by Google, a company that is at least as difficult to trust in the long run, but I wish they would, or perhaps <i>could</i>, do something to send a strong signal that they won&#x27;t meddle with things anymore. What they have done with open sourcing .NET is highly mutually beneficial to Microsoft, and I won&#x27;t lie that I think it was a greater service to us than them in some regards... but at the risk of sounding greedy here, I need to be able to trust that the people in charge are not going to pull any funny business if I&#x27;m going to invest my time, effort and possibly business into an ecosystem.<p>&gt; There are some - debatable - arguments that static typing reduces bugs. [...] I think the key benefit for me is what it enables in terms of reading and maintaining code. I find that static types help me understand the intent and implementation of half-remembered or unfamiliar code much more quickly.<p>But, that&#x27;s a large part of how it helps reduce bugs, in my opinion.<p>The other part is that static typing can legitimately disallow certain classes of runtime errors, but obviously that doesn&#x27;t in and of itself guarantee that code is overall less buggy. In practice, though, at least as far as reducing runtime crashes, JS with TypeScript has been night-and-day better than without. Maybe static typing itself is not actually guaranteed to reduce bugs, but in practice any system that can replace bits of &quot;Just Don&#x27;t Make Mistakes&quot; with diagnostics is going to improve reliability. The only case where I have ever questioned it was MyPy, and that&#x27;s because I feel the MyPy type system is just not powerful enough to properly cover the vast majority of idiomatic Python (or it requires too much effort.) If MyPy was more sophisticated, though, there&#x27;s just no doubt in my mind on that one.<p>All in all though I do think C# is a good choice for a productive environment to write code in. Modern .NET has a good ecosystem of tools, libraries, and frameworks, impressive language design going on in its most popular languages, and it&#x27;s honestly pretty good in terms of performance and scalability.<p>While &quot;right tool for the right job&quot; is a <i>little</i> over-indexed on, I do think that Rust occupies a bit of a different space than C#&#x2F;.NET. Rust remains king for very high performance, minimal overhead, and safe concurrency; it&#x27;s got very few direct competitors. You certainly <i>could</i> use Rust for anything you could do in C#, but I think C# is ultimately more productive. This is not hate towards Rust, though, as I personally am the type of person that finds the value proposition of Rust very appealing and I certainly plan on investing more into Rust in the future. A better comparison for C# is Go: I think they occupy a surprisingly similar space for all of their differences. And in that realm, C# compares shockingly favorably, especially modern C# on modern .NET.
评论 #42896925 未加载
评论 #42896189 未加载
评论 #42895623 未加载
评论 #42899644 未加载
sirjaz3 months ago
I hate people always raging on Windows, but I love that they embraced .Net and C#. Windows outside of its cost has a more advanced kernel, note WSL1.
评论 #42902909 未加载
romaniitedomum3 months ago
Honestly, this reads more like someone who wanted to use C# from the outset and needed to come up with reasons to justify it, rather than an honest comparison of a number of languages and platforms with a view to selecting the best fit for the problem domain. None of the listed reasons for choosing C# are unique to C# or its ecosystem. And some of them seem to have been discovered to be applicable only after the fact.<p>For instance, productivity is listed as the top reason, but his team only found C#&#x2F;dotNET to be the most productive after using it. They didn&#x27;t know it would be the most productive in advance. So it wasn&#x27;t a reason for choosing that platform.<p>Other reasons listed are, 1 Open Source, 2. Cross Platform, 3. Popularity, 4. Memory Safety, 5. Garbage Collection, 6. Stability, 7. Statically-Typed, 8. Batteries Included, 9. Tooling, and 10. Performance. I think there are plenty of languages and platforms that are as good as C#&#x2F;dotNET in all of these areas, but there&#x27;s nothing here to suggest any of them were even considered.
评论 #42896076 未加载
timeoperator3 months ago
&quot;Performance is rarely the primary reason to choose a language, but it’s certainly a nice bonus.&quot;<p>(X) Doubt
评论 #42897146 未加载
_pdp_3 months ago
The developer knew how to program in C# - end of story.
评论 #42899162 未加载
yohbho3 months ago
Free as in beer? Is Mono free as in free beer, or .NET, which at any time can be commercialized?
评论 #42898494 未加载
whoknowsidont3 months ago
I&#x27;m kind of shocked that one of the qualifiers for choosing a tech-stack wasn&#x27;t security, on a product that&#x27;s specifically in the cyber-sec domain?<p>They should have gone with Rust if they wanted to choose something new. C would have been respectable.<p>&gt;Some fairly trivial CSS build steps using node have more dependencies than our entire C# product!<p>I don&#x27;t know if I would really trust anything else written here. This is a security-focused product. Surely they understand that explicit, external dependencies are in fact safer than internal, implicit or &quot;quiet&quot; dependencies that make it hard to pinpoint attack vectors. It&#x27;s really trivial to say, set up &quot;canaries&quot; around the former dependencies vs. the latter.<p>Red team 101.<p>Also .NET&#x27;s runtime is _incredibly_ transparent, which is part of the reason why it&#x27;s &quot;reflection&quot; capabilities are so powerful. And this can often be a great thing for developers, but I don&#x27;t know about a security product that&#x27;s supposed to be acting as a defense line. This is why even most obfuscation programs struggle with .NET because ultimately you can&#x27;t really obfuscate much (pass some elementary things that have been obsolete since 2009 at least).<p>.NET programs can also &quot;mutate&quot; dramatically with no hope of detection except by outside sources that are constantly checking for the integrity of known programs. And I&#x27;m not talking about &quot;compile-after-delivery&quot; vectors either.<p>For example it&#x27;s pretty well known in some circles that the CLR&#x27;s dynamic assembly initialization and reflection capabilities allow you to even bypass AMSI. For _security-focused_ products and minimizing the blast radius on endpoints&#x2F;systems, .NET (like other similar tech-stacks) really should be a no-go.<p>&gt;Honestly, we’re not doing real-time&#x2F;systems&#x2F;embedded programming; we can afford a GC pause.<p>God this really hurts to read. You guys are really worried about the wrong thing(s).
评论 #42895452 未加载
评论 #42895734 未加载