Recent submissions

Comment · 2 years ago
Comment · 3 years ago
Comment · 3 years ago
Comment · 4 years ago
Hello. I'm just a (bad) med student and I'm not qualified to make any diagnosis, but I think the clinical picture you have reported warrants further investigations and I wanted to share my thoughts while I was reading your post.

In the demographic of woman of child-bearing age the coexistence of more than one autoimmune diseases is not uncommon. Occasionally, there are even combinations of several of them [1]. As you've written, the manifestations you have reported may or may not be caused by one or more autoimmune diseases, but the ones that tipically keep autoimmune/rheumatologic origin in consideration even when labs are negative are the partial spinal fusion and the arthritis [3][2].

> According to every test they run on her, there appears to be nothing wrong

Does it? We have:

- clinical picture strongly suggesting some rheumatologic disesease: inflammation and rapid onset arthritis are typical, but DVT, random bleeding may also be linked.

- radiographic evidence of spinal fusion.

And that's exactly how (eg) Ankylosing Spondylitis has been diagnosed classically (i.e. when MRI was not an option) [4]. More generally speaking, as the name suggests, the diagnosis of most Seronegative Spondyloarthropathies is based more on clinical than laboratory criteria [3]. For how I understand it, ideally AS would be diagnosed before spinal fusion happens, but when it's present and there isn't a more likely explanation AS would be at the top of the differential diagnosis.

Another thing that came to my mind when reading DVT, bleeding, vision loss was that these are more typically seen together in of some kind of vasculitides, hence why I mentioned above an the possibiity of multiple autoimmune diseases, but these could also be explained by anything altering Virchow's triad.

> There's no explanation for the temporary blindness, the rapid onset arthritis, the partial spinal fusion, the diverticulitis, the random bleeding,

That sounds somewhat strange. While for temporary blindness, diverticulitis and DVT the cause may already be gone by the time the patient arrives at observation, at least for rapid onset arthritis, spinal fusion and random bleeding I think a diagnosis of the cause should be made.

The reason why rheumatologic diseases should be diagnosed is that if left untreated there will be periods of remission, when nothing happens, and periods of activity, when irreversible damage accumulates. Another reason to diagnose rheumatologic diseases is that they may themselves be manifestations of some other condition (e.g. rheumatologic paraneoplastic syndromes). We don't know if your wife actually has a disease, it may be not, but that's not a risk a doctor would leave to chance. It's just standard practice.

As I've already written I'm not a doctor, but if I may give you my advice anyway I would say your wife should go and see a rheumatologist.

> There's no one who either wants to or is qualified to look.

If I were in you, at this point I would go to some known research center with maybe a university department or ward.

[1] [Coexistence of Axial Spondyloarthritis, Systemic Lupus Erythematosus, Sjögren’s Syndrome and Secondary Antiphospholipid Syndrome: Case Report](https://dergipark.org.tr/en/download/article-file/1615538)

[2] [Approaching the Patient with "Joint Pain" - CRASH! Medical Review Series ](https://www.youtube.com/watch?v=sfKWNeAywak&t=195s)

[3] [Seronegative Spondyloarthropathies - CRASH! Medical Review Series](https://youtu.be/hvQkROf5rsQ?t=377)

[4] [Progression of Spinal Fusion in Ankylosing Spondylitis](https://clinicaltrials.gov/ct2/show/NCT00085995)

Comment · 4 years ago
As you can see I am a fan of both your product and the philosophy behind it, so thank you for your work. If I was interested in working just on software diagrams.net would be somewhat of a dream job for me, however, currently my life plan is to finish my last years of med school (after being stuck for ~20 years) and then possibly do something related to both software and med at the same time. Thanks for the offer anyway, since it came from you I admit I have really appreciated it.
Comment · 4 years ago
I agree on the graphical editor. Before customizing it to my needs there were several behaviors that I found quite tedious.

Since it may be of interest I'll add some notes.

You can get a console also in the desktop app if you launch it from a terminal adding --remote-debugging-port=..., then opening http://127.0.0.1:<port> from a chromium-based web browser.

A couple of useful functions that allow to listen to events are graph.model.addListener and graph.selectionModel.addListener. They are documented in the mxGraph api page.

You can make your functions persistent between sessions by putting your code in a javascript file, clicking from the desktop app on Extras > Plugins > Add > Select File... Then restart the app. In the web app "Select File..." is replaced by "Custom..." and the file should be some reacheable url. The javascript file can contain arbitrary javascript code, doesn't need to have a specific format.

Finally, to customize the ui actions, keybindings and menus without touching the various event listeners, this answer on stackexchange [1] from user holroy is what initially guided me in the right direction.

[1] https://webapps.stackexchange.com/a/82379

Comment · 4 years ago
Comment · 4 years ago
One thing that made it difficult to me was that I didn't explicitly realize for a long time that there were two things to understand: what a monad is and why they are useful. Most explanations tell why it's useful, but it really clicked for me when I read through the book "Haskell Programming from First Principles" (Julie Moronuki, Christoph Allen) [1] and got to the monad chapter, which if you read the previous chapters explains really clearly what a monad is.

The way I understand monads: some data structure plus 2 functions, "return" and "join":

- "return": wraps something with the data structure. (no relation with the return keyword you are used to in most languages)

- "join": joins 2 layers of the _same_ data structures into one.

And that's it. It's just that simple what a monad is: in java it would be an interface with just these two methods.

Examples:

- "return" for List: takes a value and returns a List containing just that value.

- "return" for Maybe: takes a value and returns Maybe value.

- "join" for List: takes a List of Lists and returns a flattened List (2 outer layers joined).

- "join" for Maybe: takes Maybe Maybe value and returns Maybe value.

I think what makes these functional programming concepts hard to grasp most of the times is that communicating the boundaries of abstract concepts is hard in general, even if the concept itself is really simple, like a monad can be for a programmer.

As for why monads are useful, the explanations you can find online give a lot of examples. Just think of all the times you may have used flatmap for arrays: that's just map followed by the "join" for arrays, which is sometimes called flatten. The other operators you see used in haskell, like "bind" (>>=), can be derived from "join" and vice versa and are just conveniences to write code with less noise, like flatmap is.

Recap: monad is the name of the concept for things that have a "join" and a "return" functions defined. Basically "join" is the distilled concept of what a monad is.

[1] https://haskellbook.com/

(edit: formatting)

Comment · 5 years ago
Comment · 6 years ago
Comment · 6 years ago
> Racket's graph library can do everything jgraphx can do

What I need is to make a diagram from a file produced by diagrams.net without me writing the parser (JGraphX can already parse diagrams.net's xml), show me a window where I can select and adjust elements by hand, transform the diagram programmatically in a language where I have both type-checking and good completion for (eg) the selected objects, export back to diagrams.net's format. Occasionally I want to extend the already interactive window myself. I also evaluated Typed Racket before picking Kawa and the JVM, but JGraphX was just a more appropriate tool for this specific workflow.

> There's also this (and others) for selenium

I remember finding that, and I counted it as a subset of Selenium's functionality rather than equivalent.

I agree on the sentiment on Racket though, as for the language itself Java was a second choice for me. What eventually convinced me to invest in it was that I could always call what I had already written from other languages on the JVM (mainly Scala and Kawa, which also happen to have decent repls) without writing any glue code.

Comment · 6 years ago
If Racket had packages functionally equivalent to the ones on the JVM that I can't live without (Selenium, JGraphX, ...) I would start learning it right away. However sticking to the JVM and Kawa I get a vaguely similar typed/untyped experience except for the un-lispyness of Java. Usually when I write a script I make a new Java project that also pulls the dependencies and then embed Kawa (or jshell/ammonite jupyter server) for interactivity. Between the pom.xml and the code itself embedding Kawa (or jshell/ammonite) in a java program is like 10 lines at most.
Comment · 6 years ago
Comment · 6 years ago
Comment · 6 years ago
Disable javascript or use a browser that doesn't run it. I am an emacs user so its browser, eww, works for me.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton