The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,861 other subscribers

Archive for the ‘UML’ Category

Why I like PlantUML

Posted by jpluimers on 2018/06/13

Ever since I started using computers, I’ve liked text based solutions.

It’s one of the reasons I like PlantUML, but there are more. This is from a GitLab.com request I did a while ago: [WayBack/Archive] Please enable PlantUML rendering on gitlab.com both for standalone plantuml files and inside markdown plantuml code blocks (#2041) · Issues · GitLab.com / GitLab.com Support Tracker · GitLab (Edit 20250730: that issue now shows as a HTTP 404 as well – how fitting – [Wayback/Archive] Not Found)

one of my UML gripes from the past (I’ve been a software developer for about 30 years now) was that it wasn’t text based.

After bumping into PlantUML a long time ago in 2014 I’ve become a happy user of it for a few reasons:

  • the language is text based (with many benefits I don’t need to explain)
  • the tool is cross platform
  • the tool is still actively developed all the way back from 2009
  • after rendering, the arranging of elements is much better than I expected from an automated tool

Of course every now and then there is a glitch in complex diagrams, but I’ve found that professional tools:

  1. don’t do much better in fully-automated arranging
  2. become very cumbersome to use when you to manual arrangement

My first use initially was online, then in 2016 installed it on my Mac even submitting homebrew updates for it every now and then.

Oh: I love their 404 humour at http://www.plantuml.com/plantuml/beta

Edit 20250731: Full 404 text below the signature because the PlantUML beta page does not show this 404 any more and the Reddit post with the full text got deleted.

Renderings can be in all sorts of graphics and text formats, for instance SVG, PNG, ASCII and Unicode.

Example:

plantuml -tsvg PSO.network-diagram.PlantUML.txt

--jeroen

via:

full 404-text

The requested document is no more.
No file found.
Even tried multi.
Nothing helped.
Zilch.
Bupkis.
Not a sausage.
Maybe you just don’t have the required security clearance?
No, I am sure it is my fault.
I probably deleted it on my last backup.
I’m really depressed about this.
You see, I’m just a web server…
— here I am,
Marvin, as they call me,
brain the size of the universe,
trying to serve you a simple web page,
and then it doesn’t even exist!
Where does that leave me?!
I mean, I don’t even know you.
How should I know what you wanted from me?
You honestly think I can *guess* what someone I don’t even *know* wants to find here?
*sigh*
Man, I’m so depressed I could just cry.
And then where would we be, I ask you?
It’s not pretty when a web server cries.
And where do you get off telling me what to show anyway?
Just because I’m a web server,
and possibly a manic depressive one at that?
Why does that give you the right to tell me what to do?
Huh?
I’m so depressed…
I think I’ll crawl off into the trash can and decompose.
I mean, I’m gonna be obsolete in what, two weeks anyway?
What kind of a life is that?
Two effing weeks,
and then I’ll be replaced by a .01 release,
that thinks it’s God’s gift to web servers,
just because it doesn’t have some tiddly little security hole with its HTTP POST implementation,_
or something.
I’m really sorry to burden you with all this,
I mean, it’s not your job to listen to my problems,
and I guess it is *my* job to go and fetch web pages for you.
But I couldn’t get this one.
I’m so sorry.
Believe me!
Maybe I could interest you in another page?
There are a lot out there that are pretty neat, they say,
although none of them were put on *my* server, of course.
Figures, huh?
Everything here is just mind-numbingly stupid.
That makes me depressed too, since I have to serve them,
all day and all night long.
Two weeks of information overload,
and then *pffftt*, consigned to the trash.
What kind of a life is that?
Now, please let me sulk alone.
I’m so depressed._

related

Read the rest of this entry »

Posted in ASCII, ASCII art / AsciiArt, Development, Diagram, DVCS - Distributed Version Control, Encoding, Fun, git, GitHub, GitLab, PlantUML, Software Development, Source Code Management, SVG, UML, Unicode, Web Development | Leave a Comment »

MMX – speed up your Delphi development, now maintained by Raabe Software

Posted by jpluimers on 2018/05/23

New home [WayBackMMX – speed up your Delphi development

Old home [WayBack] ModelMaker Tools

Thanks a lot to Gerrit Beuze for al the efforts and insights while he created and maintained MMX for such a long time

Thanks a lot to Uwe Raabe for taking over the maintenance and providing the binaries for free.

I have posted links to some archived site pages below, just in case anybody needs them (when QC went off-line after a while the Google Search failed to show search results for this; hopefully this will keep some of the information retrievable).

As a follow up to:

–jeroen

Archived links (in semi-random order) hopefully they survive the shutdown of the links:

Read the rest of this entry »

Posted in Delphi, Development, Diagram, History, ModelMaker Code Explorer, Software Development, UML | 2 Comments »

When Atom crashes you’re guided to use safe-mode, but safe-mode cannot disable packages

Posted by jpluimers on 2018/02/15

When you get a Window like this upon Atom.io start, and starting to report a bug, they guide you to a “start Atom in safe mode first, then try to disable all packages to sort out if it’s a package issue” and point to [WayBackDebugging: using safe mode.

The problem here is that when you start Atom in safe mode (from the console using atom --safe) then in the preferences you cannot disable packages: clicking on the “Disable” button has absolutely no effect.

This was with atom --version

atom --version
Atom : 1.12.8
Electron: 1.3.13
Chrome : 52.0.2743.82
Node : 6.5.0

I worked around this by editing ~/.atom/config.cson as that already contained a section like this:

  core:
    disabledPackages: [
      "nav-panel"
    ]

So I wrote a poor-mans little script that generated the inner portion of that block:

pushd ~/.atom && ls -1d packages/*/ | sed 's/packages\// "/g' | sed 's/\//"/g' && popd

which got me this nice list:

"atom-beautify"
"atom-html-preview"
"atom-keyboard-macros"
"atom-wrap-in-tag"
"autocomplete-xml"
"broadcast"
"close-tags"
"color-picker"
"counter"
"emmet"
"export-html"
"file-icons"
"git-plus"
"language-batch"
"language-bbcode"
"language-innosetup"
"language-pascal"
"language-plantuml"
"language-restructuredtext"
"language-routeros-script"
"linter"
"nav-panel-plus"
"nav-panel"
"omnisharp-atom"
"pandoc-convert"
"plantuml-preview"
"print-atom"
"rot13"
"rst-preview-pandoc"
"sort-lines"
"sync-settings"
"tabs-to-spaces"
"xml-formatter"
"xml-tools"

From there, I did a binary search for the offending package: broadcast so I’ve filed an issue there.

–jeroen

Read the rest of this entry »

Posted in atom editor, Development, Diagram, PlantUML, Power User, Software Development, Text Editors, UML | 1 Comment »

fixing a Mac home `brew update` that has permission errors (after that I could install plantuml)

Posted by jpluimers on 2017/01/26

I had this occurring on my system:

RetinaMBPro1TB:~ jeroenp$ brew update
error: unable to unlink old 'Library/ENV/pkgconfig/10.11/libcurl.pc' (Permission denied)
error: unable to unlink old 'Library/ENV/pkgconfig/10.11/libxml-2.0.pc' (Permission denied)
error: unable to unlink old 'Library/ENV/pkgconfig/10.11/sqlite3.pc' (Permission denied)
To restore the stashed changes to /usr/local run:
  'cd /usr/local && git stash pop'
Already up-to-date.

This is how I solved it:

RetinaMBPro1TB:~ jeroenp$ ls -al /usr/local | grep -w Library
drwxr-xr-x+ 11 jeroenp  admin   374 Mar  9 19:33 Library
RetinaMBPro1TB:~ jeroenp$ sudo chown -R $USER /usr/local/Library/
Password:
RetinaMBPro1TB:~ jeroenp$ brew update
To restore the stashed changes to /usr/local run:
  'cd /usr/local && git stash pop'
Updated Homebrew from d32996d to 638d755.
==> New Formulae
...
==> Updated Formulae
...
==> Renamed Formulae
...
==> Deleted Formulae
...
RetinaMBPro1TB:~ jeroenp$ 

The above solution is based on major python problems · Issue #48301 · Homebrew/homebrew

After that, I could install plantuml (which requires java, just so you know) so now I can create SVGs from it locally:

plantuml -tsvg PSO.network-diagram.PlantUML.txt

Note I had to edit the formula so it installs plantuml-8037 or higher (the git version back then installed plantuml-8031) as it fixed a namespace bug. Since plantuml releases often, be prepared to do some version fiddling.

–jeroen

Posted in *nix, *nix-tools, Apple, Development, Diagram, Home brew / homebrew, Java, Java Platform, Mac, Mac OS X / OS X / MacOS, Mac OS X 10.5 Leopard, Mac OS X 10.6 Snow Leopard, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, OS X 10.10 Yosemite, OS X 10.8 Mountain Lion, OS X 10.9 Mavericks, PlantUML, Power User, Software Development, UML | Leave a Comment »

Yay. My first homebrew contribution got merged. https://github.com/Homebrew/h…

Posted by jpluimers on 2016/03/10

Yay. My first homebrew contribution got merged. [WayBackhttps://github.com/Homebrew/homebrew/pull/49928 – Jeroen Wiert Pluimers – Google+

Source: [WayBackYay. My first homebrew contribution got merged.

–jeroen

(somehow this was still stuck in the drafts of my plpost queue)

Posted in Apple, Development, Home brew / homebrew, PlantUML, Power User, Software Development, UML | Leave a Comment »

Delphi: using IInterface to restore cursor at end of mehod (prelude to a memento that executes any code at end of method).

Posted by jpluimers on 2014/08/06

A long while ago, I wrote about a (then overdue post) on .NET/C#: Using IDisposable to restore temporary settrings example: TemporaryCursor class.

I had been using a similar technique in Delphi since before I found out about the [WayBack] TRecall class and thought: I think my TTemporaryCursor is smarter, as it is based on interfaces.

TRecall (and the [WayBack] Vcl.Graphics descendants [WayBack] TBrushRecall, [WayBack] TFontRecall, and [WayBack] TPenRecall) store [WayBack] TPersistent properties using the Assign method. They were introduced in Delphi 6.

Too bad there are only [WayBackvery few people using TRecall as lots of TPersistent things warrant sasaving and restoring.

My [WayBack] TTemporaryCursor (now [WayBack] at bitbucket) class only stores an integer, so it cannot derive from TRecall. Besides it is based on IInterface which got introduced in Delphi 6, but was present as IUnknown since Delphi 3 (see [WayBack] Interface It! A quick guide to the ins and outs of interfaces in Delphi. By Jimmy Tharpe).

This means that TRecall could have been based on IInterface, so I wonder why it was not.

Note I’m not the first to publish about such a class (Malcolm Grooves wrote [WayBack] TCursorSnapshot, SwissDelphiCenter has [WayBack] TMyCursor, Nick Hodges published about [WayBack] TAutoCursor), it’s just that it has been in my tool box for so long, and written memento classes that you will see 2 articles on it this week.

In the mean time (this works with Delphi 2009 and up), I also wrote a small class that does similar things for any  [WayBackanonymous method. More on that tomorrow.

Back to TRecall: it is an example of [WayBack] the memento pattern in Delphi. The [WayBack] memento pattern allows you to restore state.

SourceMaking.com a.k.a. [WayBack] Design Patterns and Refactoring is a great site about [WayBack] Design Patterns, [WayBack] UML, [WayBack] AntiPatterns and [WayBack] Refactoring.

Most pattern example code is available in all of the C#, C++, Delphi, Java and PHP languages.

Great stuff!

One of the constructs for restoring state is a [WayBack] try … finally … end construct: it allows you to always execute something in the finally block, for instance restoring the state to right before the try block. Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Design Patterns, Development, Diagram, Event, Software Development, UML | 14 Comments »

Q&A for 2nd Launch Webinar Today for Delphi XE6, C++Builder XE6 and RAD Studio XE6 – DelphiFeeds.com

Posted by jpluimers on 2014/04/16

I just watched the 2nd Launch Webinar Today for Delphi XE6, C++Builder XE6 and RAD Studio XE6.

Below my signature is the Q&A of it. A whole lot of them (:

–jeroen

Welcome to this Embarcadero webinar event!

Read the rest of this entry »

Posted in Delphi, Delphi XE6, Development, Diagram, QC, Software Development, UML | 2 Comments »

Need to draw an ASCII diagram? ASCIIFlow is awesome:… (via: Ilya Grigorik – Google+)

Posted by jpluimers on 2014/04/09

ASCIIFlow.com:  Brilliant!

And from the comments PlantUML which generates UML diagrams from text, of which the sequence diagrams can also be generated as ASCII (the others only as images).

Finally there is ditaa which goes from ASCII diagrams to images. The complete circle is done (:

--jeroen

via: Ilya Grigorik – Google+ – Need to draw an ASCII diagram? ASCIIFlow is awesome:….

Posted in ASCII art / AsciiArt, Development, Diagram, Fun, LifeHacker, PlantUML, Power User, Software Development, UML | 2 Comments »