|
Yeah. Sonar uses COM for it's control surface interface. Old code from the before times.
Works though.
|
|
|
|
|
Time for a proverb:
Was der Bauer nicht kennt, frisst er nicht.
Anyway, I need such tools rarely. I have always been writing libraries for and against everything. No need to generate anything when I can reuse stuff.
I have lived with several Zen masters - all of them were cats.
His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
|
|
|
|
|
It really depends on what you're doing though. For example, my parser generators almost always allow for a runtime parser, or a compiled parser. The latter uses code generation, and the result is faster.
Libraries aren't always a replacement for code-gen. Code-gen is pretty specialized though so a lot of times people rarely need it.
Real programmers use butterflies
|
|
|
|
|
Nice and well. Then generate a fast parser and stuff it into a library, along with other useful stuff. No more need to ever generate it again.
I have lived with several Zen masters - all of them were cats.
His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
|
|
|
|
|
I mean, that's fine, but something has to generate it in the first place.
Real programmers use butterflies
|
|
|
|
|
Sometimes it's better not to get too lazy and use that stuff between the ears not only to keep them apart.
I have lived with several Zen masters - all of them were cats.
His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
|
|
|
|
|
The reason for generation is not to save on thought. It's to save on bugs.
Complex parsers like a C# parser for example, can be difficult even to test, much less develop.
Being able to generate the tens of thousands of lines of code necessary to parse something like again, C#, from an input specification saves countless hours debugging and testing.
Real programmers use butterflies
|
|
|
|
|
honey the codewitch wrote: I've tried to simplify my project, and simplify describing that project but it's like trying to simplify Roslyn.
That's what a good technical writer is for. Explain to them what the tool does, and let them write the final documentation.
IMO, having access to such resources is one of the advantages of working for a large company.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
I should note that Microsoft's documentation for Roslyn is currently trash
Real programmers use butterflies
|
|
|
|
|
They must have fired the technical writers along with the QA department.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
I create tools that I don't understand and don't use.
I'm not sure how many cookies it makes to be happy, but so far it's not 27.
JaxCoder.com
|
|
|
|
|
Make a store app. The stats make the reception somewhat more transparent. It also motivates you to keep making it better. New. Trending. Top Selling. etc.
(I make it so no "help" is needed).
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
All the time! Except, most of the time even I don't use it, because either I find out an already existing, better solution, or it turns out that I wasn't able to really meet all of my own requirements.
Among the more complex tools were a pool implementation for C++ objects that would auto-garbage-collect unneeded memory blocks with an amortized complexity of O(1) for allocation and deallocation (including the garbage collection!). Or a lazy-evaluation point/vector/matrix implementation that would auto-optimize algebraic expressions at compile time. In both cases I eventually switched to easier solutions because I was reaching far beyond the actual requirements - but I still keep them in a drawer in case I find a use for them some time in the future ...
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
honey the codewitch wrote:
Do you ever write non-trivial tools that you swear by, but only you will probably ever use?
I have a dozen or more personal apps that increase productivity that I'd probably classify as trivial in the sense that they aren't terribly complicated...however I'd classify many as non-trivial regarding usage pattern and time saved/errors reduced.
Hand-rolled apps I use often:
0: Password keeper
1: FTP client
2: Database connection getter/setter for main products
3: Encryption/Decryption tool
4: Database Object Modeler/Script Generator (one of my first) (pre .NET) - spits out either paste ready code or creates a script file that can be posted for a customer to 'pick up' and run by one of our distributed products. This one saves me the most time overall and I'm the only one that knows how to use it.
5: Database Upsize/Downsize/Copy/Offload/Backup/Restore/Prep utilities
6: Color Editor ('cause I just wanted something local, light-weight, lets me lock sliders, and gives me the color codes back in multiple formats)
I also have the fortune of creating a number of features that are complicated enough that the end users usually don't even attempt to do it themselves...such as enabling field parsing on text-based imports with a position of 2F4, 2L4, 3M5:2, or 3E5:-. I even added an expression builder with examples and everything, but have yet (in over 5 years) seen an end user or colleague/trainer use without my help. At least I'm indispensable!
Sorry for the rambling. My Covid-19 project (won bid in early March) went live 3 days ago and I'm in observation mode, watching the mutant managers end users test it. So far only one major error caught the first day, and a handful of user mistakes. (yes, I know I'm supposed to prevent user mistakes!)
This tool was created by a tool.
"Go forth into the source" - Neal Morse
|
|
|
|
|
Of course, I created an entire eco system for production of winforms applications, converted that to Silverlight and then to WPF. I inflicted that system on every company I worked for since the mid 90s, some may even still use it but I doubt it.
The tools allowed me to produce LOB solutions astonishingly fast. I once did a "prototype" in WPF in 2 months that took a team of 10 outsourced developers over a year to duplicate as a web solution. The prototype performed better!
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
"Quote: that is poorly understood and not really used despite being very useful for what they were designed to do. 😔
I've tried to simplify my project, and simplify describing that project but it's like trying to simplify Roslyn. There's just too much there to be able to make it simple.
There's your Problem. People can't use any tool that is poorly documented. Additionally, by the time someone would figure it out, and start using it, the OS, Language, framework, and libraries will have all changed....
Get the Zarking Zark out of here! - Zaphod BeebleBrox
|
|
|
|
|
I've put more effort into documenting it than i have many of my other projects. Code generation tends to be complicated to begin with, and libraries to facilitate it are rarely simple. This is that. I've posted articles here explaining how to use it, and I know that at least one person is playing with it.
We'll see. I've dumped all I've got in me into documenting this thing so far, and I'm burnt out on it for now.
Real programmers use butterflies
|
|
|
|
|
I feel your pain. Been there and didn't like it at all.
To this day I struggle with documenting Support notes.
Just trying to say Don't feel too bad about it.
I looked at your stuff and it was way over my head. I am just an old VB6 programmer converting my code from VB6 to C# while teaching myself C# at the same time.
"What?" - Arthur Dent
|
|
|
|
|
honey the codewitch wrote: Do you ever write non-trivial tools that you swear by, but only you will probably ever use?
What's worse is when I write a non-trivial tool that I write with the idea that other people will use it and nobody but me does.
An example is a tool I wrote to test credit card and ACH processing for the various processors we support, that lets you select between a direct API call or going through our back-end server, as well as using test and live accounts, test and live card numbers, etc.
Well, as you say, it's useful to me.
|
|
|
|
|
Yeah, i recently posted something here for others to use "Slang" and the "CodeDOM Go! Kit" - and the effort i put into it because of that was a lot more than if i had simply wrote it for myself.
And it's got like 18 downloads in 2 days.
Oh well. It makes my code generators that much more powerful than they'd have otherwise been.
My Parsley project that used it for example, would let you embed code in its spec files, and it could render the generated code in C# or VB.NET even though you write your embedded code in a subset of C#
It's no joke. But it's also hard to explain how to use it and the full scope of what it does.
Real programmers use butterflies
|
|
|
|
|
Yup! I wrote an amazing little tool that reads in an Excel spreadsheet specification document and generates an entire buildable C# project from it. I spent a ton of time refining it... and only used it twice. The tool was great fun to develop though!
|
|
|
|
|
I have created a project that used a tool that nobody else ever used. But it only had a use in a specific area, and that was decoding a one of a kind telemetry for a one of a kind device. If you want to create a killer tool, you broaden the area of usefulness, like Wireshark. Then many will want to use your tool.
|
|
|
|
|
Yeah part of it is the tool is necessarily niche, as it's intended for developers who are writing code generators.
I've created some more popular tools and posted them here, but in one case, a 1st place CP winner, my winning tool was built using the technology provided by this tool - without which it wouldn't have been possible.
I'm just trying to give other people access to this tech, not so much try to make the most popular tool.
It's a great tool for creating potentially popular tools is what I'd say.
Real programmers use butterflies
|
|
|
|
|
I think we programmers need marketeers and salesmen. As much as I hate them, we need them to sell our wares.
|
|
|
|
|
I recognize that we need them. I think I'd just rather be able to ignore them and stick to our respective jobs. I've had too many times when sales ultimately dictated deadlines, and led to less than great deliverables.
Real programmers use butterflies
|
|
|
|