[HN Gopher] I wrote a tool in Go to write Sequence Diagrams in Go
       ___________________________________________________________________
        
       I wrote a tool in Go to write Sequence Diagrams in Go
        
       Author : icemanx
       Score  : 54 points
       Date   : 2023-04-27 12:38 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | pachico wrote:
       | I use PlantUML every single day. It can be embedded in Markdown
       | docs and even Confluence (which I hate but I'm forced to use).
       | 
       | Diagram as Code is simply awesome. My only issue is how ugly it
       | looks, even using themes.
       | 
       | I wish an application managed to be a drop in replacement that
       | looked like it wasn't drawn in MS Paint in 1996.
        
       | huydotnet wrote:
       | There's an AI solution for this https://chatuml.com/
       | 
       | OK, I know the author are against AI, but just in case anyone
       | want to see an AI solution.
        
         | fleur-de-lotus wrote:
         | Wait, they ask for your api key and they promise not to store
         | it !
        
           | huydotnet wrote:
           | Other OpenAI-based projects does that too, and there's an
           | option to not provide your API key as well
           | https://chatuml.com/early-bird
        
         | cle wrote:
         | The author explicitly discusses requirements:
         | 
         | > You don't need to download any dependencies such as plantUML
         | or Graphviz, which is what most of the tools out there require
         | and what was also my motivation to start this project. go-uml
         | is using a 2D graphics engine written 100% in Go
         | https://github.com/fogleman/gg
         | 
         | This is not a solution for these requirements.
        
       | alecnotthompson wrote:
       | According to author, they're either fat or have never ridden in a
       | car.
        
       | Xeronate wrote:
       | Nice work, but seems like WSD accomplishes the same with a nicer
       | syntax and hosted interface https://www.websequencediagrams.com/
        
       | Veuxdo wrote:
       | I'm a bit biased, but I feel diagrams-as-code should use a
       | stateless, declarative language (like json or yaml) and not a
       | programming language. Programming languages have so much
       | functionality that just doesn't apply to the output you're
       | generating.
       | 
       | I guess the argument is "I already know Go" (or Python etc.). But
       | you probably already know json (yaml), too. And if not, it won't
       | take long to learn.
        
         | sn9 wrote:
         | I've used python for graphviz just because I wanted some
         | looping for many-to-one or one-to-many relationships and the
         | auto-complete that comes from anything with an LSP or Python
         | mode.
         | 
         | Honestly I'd use it just for the auto-complete.
         | 
         | (Admittedly, I didn't look too hard for dedicated editing
         | environments that could do it for DOT files specifically. I
         | just wanted to make something real quick.)
        
         | datadeft wrote:
         | Like D2? I love it.
         | 
         | https://play.d2lang.com/
        
         | taeric wrote:
         | Depends heavily on the diagram?
         | 
         | I go farther, all told. I think any sort of diagram should
         | almost certainly be process/pipeline based. Parts can be
         | generated by a declarative markup, certainly. But you need a
         | pipeline to "hand tune" things or you will end with diagrams
         | that are clearly generated by a program. Fine for some things,
         | sure. But there is a reason most of the diagrams that you
         | remember the looks of were bespoke authored in a much more
         | graphical environment.
        
           | smoyer wrote:
           | If this was used as a generator, you could include actual
           | type names, godoc comments (on mouse over for smarter image
           | formats), etc. In this case, it's the fact that the rest of
           | the code could provide context.
        
       | maister wrote:
       | > Warning - AI not welcome here
       | 
       | > Because of my own personal philosophy regarding technology and
       | AI, all the code in this repository that was written by me - I
       | wrote 100% on my own. There is and will be no usage of Github Co-
       | Pilot or any other AI tool. I became a software developer because
       | of my passion for our craft - Software Engineering. I build this
       | tool because I enjoy programming. Every single line of code
       | you'll read in this repo, that was written by me, is produced
       | first in my mind and then manifested into reality through my
       | hands. I encourage any contributor to follow the same principle,
       | though I can't and don't want to put any restrictions on this.
       | Just like people stopped walking because they commute by cars and
       | trains, which caused an increase in obesity and illness, I
       | believe that the massive usage of AI will cause people to stop
       | thinking and using their minds and the resulting havoc is
       | unthinkable.
       | 
       | AI Gatekeeping... What a time to be alive!
        
       | mevric wrote:
       | Love the thought mentioned the warning section
       | https://github.com/MrIceman/go-uml#warning---ai-not-welcome-...
        
         | warent wrote:
         | I don't. It's fine making a personal choice to not use AI, but
         | to go on to just openly insult anyone who uses AI is absurd and
         | too far. Everyone is allowed their choices and we should
         | respect that. The doom-whispering is not charming or
         | insightful, good grief.
        
           | robbywashere_ wrote:
           | This is a typical Ai-ist stance, us warm blooded norm-coders
           | are absolutely sick of this rhetoric!
        
           | kitd wrote:
           | I didn't read any insult. I don't agree with the author but
           | all I perceived was encouragement against using AI, not
           | personal denigration for doing so.
        
           | [deleted]
        
           | mevric wrote:
           | Agreed. I use AI to speed up my work and love the process of
           | discovering new ideas.
           | 
           | I was referring to the following line.
           | 
           | "Just like people stopped walking because they commute by
           | cars and trains, which caused an increase in obesity and
           | illness"
        
             | tester457 wrote:
             | If LLMs are transportation, here's to hoping we have a
             | Netherlands like solution, with lots of bicycles and trains
             | for longer distances, meaning lots of healthy people.
             | 
             | Instead of "car-dependency" we should try to use LLMs as
             | bicycles for the mind, still putting effort into every
             | mental pedal.
        
             | IshKebab wrote:
             | But people didn't stop walking...
        
         | cirrus3 wrote:
         | It seemed pretty cringy to me
        
       | marcc wrote:
       | The "AI Not Welcome Here" is interesting at the bottom of the
       | Readme.
       | 
       | https://github.com/MrIceman/go-uml#warning---ai-not-welcome-...
       | 
       | This is a pretty hard stance to take when creating an OSS
       | project. The author made an open source, MIT-licensed repo. Right
       | now, the statement reads "I wrote this all myself". Does that
       | mean the author is not willing to accept PRs?
       | 
       | Or will we see something like a DCO that developers make an
       | attestation that AI was not used in creating the change?
        
         | lib-dev wrote:
         | > Right now, the statement reads "I wrote this all myself".
         | 
         | He says, "all the code in this repository _that_ was written by
         | me" was, if fact, hand-written by him rather than auto-
         | generated by a tool like copilot.
         | 
         | I read it as he is open to contributions and if you want to use
         | AI that's allowed but he notes that he does not and he provides
         | a rationale to boot. Fine by me.
        
       | kerblang wrote:
       | Nice idea.
       | 
       | I think there's an error in the last diagram. The arrow pointing
       | at User A should point at User B.
       | 
       | (And look it's possible to say something other than blithering
       | about AI controversy. The author doesn't like AI, get over it)
        
       | umvi wrote:
       | "Because of my own personal philosophy regarding technology and
       | AI, all the code in this repository that was written by me - I
       | wrote 100% on my own. There is and will be no usage of Github Co-
       | Pilot or any other AI tool."
       | 
       | As a developer that recently went to the dark side with co-
       | pilot... all I can say is that from my perspective having used
       | AI-augmented IDEs, arguments like this seem to me like a
       | carpenter refusing to try power saws and power drills because
       | craftsmanship will be lost compared to using handsaws and awls +
       | hand drills. In my opinion, AI tools greatly enhance my
       | craftsmanship by both saving me time and by suggesting solutions
       | I didn't even know existed (most recent example being JS .every()
       | and .some() - I was about to roll my own every/some equivalent
       | with loops)
        
         | drewcoo wrote:
         | > like a carpenter refusing to try power saws and power drills
         | because craftsmanship will be lost compared to using handsaws
         | and awls + hand drills
         | 
         | Rejecting AI-backed software tooling reminds me more of Amish
         | power tools.
         | 
         | https://www.npr.org/sections/money/2013/02/22/172626089/insi...
        
           | umvi wrote:
           | Wow... it's like the Law of Moses come full circle (finding
           | loopholes in the letter of the law to skirt the spirit of the
           | law)
        
         | codegeek wrote:
         | Wrong analogy in my opinion. A hand saw vs power saw is like an
         | old Pentium Laptop vs M2 Macbook. The latter is just faster and
         | better. But both do not tell you how to do something. In case
         | of the both the hand and power saw, you need to know exactly
         | where to drill/cut without any hint. When coding with AI, you
         | are getting actual code snippets and hints.
        
           | umvi wrote:
           | I disagree. In my analogy, cutting wood == writing code. You
           | can't write code any faster on an M2 Macbook just because the
           | CPU is faster. If you are more productive on an M2, it's only
           | because you have more intelligent software (re: AI) helping
           | you write code faster. But given vi or emacs in both setups,
           | they are basically the same from a software dev standpoint
           | aside from faster build time as your software gets huge.
           | 
           | > When coding with AI, you are getting actual code snippets
           | and hints.
           | 
           | I still know the cut that needs to be made. Say I need a
           | function that returns true if an array contains a value.
           | Without AI, I would write it by hand, which might require me
           | to RTFM. But with AI, I can simply prompt "// return whether
           | the provided array contains a given value" and the AI will
           | fill in the function. I could have accomplished my goal
           | either way. But with AI, I was done and moved on without
           | context switching to google or stackoverflow.
           | 
           | I could have sawed the 4x4 in half by hand. But instead I
           | buzzed it with a buzz saw and moved on to the next part of my
           | project 5 minutes ago.
        
         | deepsun wrote:
         | Same thing people said for years about power IDEs vs. advanced
         | notepads.
        
         | thunky wrote:
         | Oh but you're missing the upside: now we can sell "handmade"
         | software and charge extra for it. Just like soap. And even
         | better, it can be less effective and have a shorter shelf life.
        
         | CodeWriter23 wrote:
         | That's a flawed analogy, a power saw never suggests a cutting
         | pattern while the very essence of what copilot/AI etc does is
         | suggest coding patterns. Which may or may not be vetted.
         | 
         | Typing manually vs auto-complete is a correct handsaw/power saw
         | analogy.
        
           | apgwoz wrote:
           | Saws certainly can project a laser beam across the cutting
           | surface, and don't get me started about AI powered CNC cuts.
           | I mean, just the other day I found the words "WHY ARE YOU
           | IGNORING ME?" CNC'd onto a piece of plywood I left in my
           | shop. I didn't do that by hand.
        
           | umvi wrote:
           | In my experience copilot behaves more like a power tool than
           | what you are suggesting. I know the cut that needs to be
           | made, and copilot makes the cut faster than it would have
           | taken me to make the cut myself via
           | RTFM/google/stackoverflow.
        
         | waynesonfire wrote:
         | "artisanally developed. all reference material and manuals were
         | read from printed text"
        
         | dimator wrote:
         | isn't it closer to "a carpenter refusing to offload the design
         | of subassemblies to an alien whose understanding of carpentry
         | is completely opaque"?
         | 
         | although, i suppose, to your point, even an alien could
         | introduce a skilled carpenter to a new table saw technique.
        
         | musha68k wrote:
         | "I believe that the massive usage of AI will cause people to
         | stop thinking and using their minds and the resulting havoc is
         | unthinkable"
         | 
         | Immediate utility aside that's a probable prediction by the
         | author though.
         | 
         | Let's hope the optimists will be right...
         | 
         | https://github.com/MrIceman/go-uml#warning---ai-not-welcome-...
        
           | deepsun wrote:
           | Was it Homer who said that writing dulls the minds, and real
           | poets use their mind to remember everything?
        
           | EFreethought wrote:
           | Some of the AI predictions make me think about a quote from
           | "Dune":
           | 
           | Once men turned their thinking over to machines in the hope
           | that this would set them free. But that only permitted other
           | men with machines to enslave them.
        
         | r0l1 wrote:
         | I don't use these tools, due to privacy concerns. Once there is
         | a capable offline model, I will be open to give it a try.
        
         | vlunkr wrote:
         | In my experience power saws and power drills don't steal
         | intellectual property without telling you.
         | 
         | On a less snarky note, this seems like a pretty serious
         | exaggeration. You could have learned about .every() and .some()
         | in many many other ways
        
           | umvi wrote:
           | Depends on the granularity of your copilot use. Generating
           | entire classes or non-trivial functions from a prompt vs.
           | generating just the next few lines at a time. Pretty hard to
           | "steal intellectual property" when the comment you wrote as a
           | prompt was "// remove all items from myArray that have the
           | provided prefix"
           | 
           | > On a less snarky note, this seems like a pretty serious
           | exaggeration. You could have learned about .every() and
           | .some() in many many other ways
           | 
           | Yeah but I didn't because it was an unknown unknown. How
           | would I have learned about .every() when I didn't know it
           | existed? Copilot as a discovery engine is a fantastic way to
           | learn about language features you didn't know about.
           | 
           | That was just one recent example. Copilot occasionally
           | suggests ways of doing things I didn't know about and that
           | were even better than my original approach.
        
       | azubinski wrote:
       | My respect to the author for the principled position.
        
       | zelphirkalt wrote:
       | I do not see any different kinds of edges in the diagram. Is only
       | one kind of message supported, or is perhaps the example not
       | chosen to include all kinds of message/returns?
        
       ___________________________________________________________________
       (page generated 2023-04-28 23:02 UTC)