« first day (2441 days earlier)      last day (2033 days later) » 

12:03 AM
@Szabolcs when you call setup.py how are you doing that? Just a plain python setup.py build_ext --inplace in a 3.6 venv?
 
12:30 AM
I can reproduce your issue (wrong Mac build/no C++11 support) using an old 3.5 venv so now at least I can debug it.
Ah wait that's a 3.4 venv
Ah wait you found that already
 
1:31 AM
For the interim I added that hack to force deployment to MacOSX 10.9 and am adding a pre-compiled binary that Mac x86-64 platforms will try to use by default.
 
1:44 AM
@Szabolcs see if 1.0.2 at least gets you started...
 
 
5 hours later…
6:34 AM
@b3m2a1 It's morning and I can't try it right now, but something I forgot to mention last night: if you include long text in a Message (such as Python traceback or similar), wrap the Message in Block[{$MessagePrePrint = Identity}, ...] to prevent clipping the output. From the M side it still didn't work last night and the output was truncated by default.
We do this for MATLink.
@b3m2a1 Yes, but that had other issues, so after figuring out that the problem was the deployment target, I went back to a Jupyter notebook and followed your instructions on W|C
 
6:49 AM
@Szabolcs Good to know. I'll be sure to add that.
 
Grid[{
  DynamicModule[{}, {a, b}],
  DynamicModule[{}, {c, RandomImage[]}]
}]
Will give a bounty for a general way to sync independent DModules within one grid layout.
The code about should procude something like:
Grid[{
  {a, b},
  {c, RandomImage[]}
  }]
To be clear, it is only about making items sizes as they would belong to the same grid. Without knowing each other.
 
@Kuba Oof that's hard. If instead of variables you use an Association as a state manager to handle the "independence" is that okay? Or do they still know each other too much?
 
@b3m2a1 single symbol as a state manager is out of the question :) need separate symbols for robustness in refreshing dynamics.
I mean, I can redesign the layout but this question is general
'invisible' boxes should be transparent for layout boxes
unfortunately they are not
 
Hmm... could some meta-programming that collects dynamic module variables as multiple Association objects work? That way it really can be multiple symbols. On the other hand I don't know if the refresh is still bad on that.
It might be a somewhat fragile solution, but if DynamicModule is well written potentially well-performing.
There's also that wormhole thing for DynamicModule that I've never used but often thought about using.
I think this is the kind of thing it's designed for.
Ooh. Or InheritScope->True?
Oh wait that doesn't fix it. I'm an idiot.
 
@b3m2a1 I'm not sure I get your point for solving layout issue.
 
7:01 AM
Yeah no I was confused.
I'm just wrong.
 
Ok
What could help would be an arond typesetting stage fix that would collect rows of grid that are DynamicModules and which would move their spec outside the grid leaving only body inside.
 
If you have DynamicModule[{a, b, c, d}, Grid[{Dynamic[a], Dynamic[b]}, {Dynamic[c], Dynamic[d]}] how much does a refresh of a affect the Grid refresh rate?
 
@b3m2a1 That would be fine but in general both rows are independent. If I know the big picture up front that is fine
 
I think that typesetting fix is probably the best option. I keep thinking of something that basically unwraps the DynamicModule into a single Grid. Oh actually you could just manipulate the body if you made every module have InheritScope->True.
 
If not I have to go back to outer or sibling boxes and adjust them for something that was introduced later
And a common one needs to have collisions resolved anyway
That is probably acceptable if I'm the sole author of the code
@b3m2a1 and all this is just a beginning. What if I have DynamicModule[{...}, Dynamic[{..., ...}], ...]? I need to account for Dynamic too. But if I wrap it around Grid it will affect refreshing logic of entire grid :)
 
7:08 AM
Yeah I was imagining a world where variables are specified sans-collisions. Alternately I guess you could try forcing variables into a new custom context?
 
So Much Fun!
@b3m2a1 otoh with few programming tips, few meta programming helpers and understanding what is going on one could make it more user friendly
Thanks for brain storming. :)
 
I was imagining you'd define some typesetting construct like DynamicGrid[{__DynamicModule}, ops] which would typeset as DynamicModule[{a}, DynamicModule[{b}, DynamicModule[{c}, Grid[{{a}, {b}, {c} ... }, ops], opc], opb], opa]
It's definitely a hard problem though
Hopefully you find a good, flexible solution
My best ideas still require cleverness on the part of the user.
I guess you could provide something like:
DynamicGrid[{
  {{vars...},  {body}, dynops}...
 }, ops]
And then do a collisions check in the variable names before returning some "finalized" form.
 
@b3m2a1 yeah, cleverness is not the biggest obstacle :p I just end up doing case specific tweaks which is tiring and is not helpful in future.
 
So like a single DV that checks for validity
 
@b3m2a1 I can ignore collisions atm firstly because I try to write meaningful names. And because automatic fix would break my gui coding 'technique' where I'm flexible in modularity but I have to have 100% control on symbols names.
So without taking care about collisions this will do:
MergeRows[
  Grid[{a___, DynamicModule[spec_, body_List, dmOpt___], b___},
   grOpt___]
  ] := DynamicModule[spec, MergeRows@Grid[{a, body, b}, grOpt], dmOpt]

MergeRows[in : Grid[{__List}, ___]] := in;

MergeRows@Grid[{
   DynamicModule[{}, {a, b}],
   DynamicModule[{}, {c, RandomImage[]}]
   }]
 
7:21 AM
Yeah and then make that just be the typeset form or whatever of some custom object and you can then extend that whenever you need to.
 
@b3m2a1 good idea
 
7:47 AM
@Kuba here's a little implementation of that with some variable checking. It's not great, but I'm sure you can do whatever you think is best to make it work as it should:
DMGrid[
   spec : {{{(_Symbol | _Set) ...}, _List, ___?OptionQ} ..},
   ops : OptionsPattern[Grid]
   ] :=
  With[
   {
    cts =
     Select[# > 1 &]@
      Counts@
       Flatten[
        Replace[Thread@Thread[#][[1]], Hold[Set[a_, _]] :> Hold[a],
           1] & /@ Thread[Hold[spec]]
        ]
    },
   If[Length@cts > 0,
    Message["Oops!"];
    DMGrid[spec, ops],
    DMGrid[spec, ops, 1]
    ]
   ];
Format[
   DMGrid[
    spec : {{{(_Symbol | _Set) ...}, _List, ___?OptionQ} ..},
    ops : OptionsPattern[Grid],
Might have been better to force DynamicModule as the list element instead of imitating Grid with that list-of-list structure
But here's what it looks like:
DMGrid[
 {
  {
   {a = 1, b = 2},
   {Dynamic[a], b}
   },
  {
   {c = RandomImage[], d},
   {Dynamic[d = c*RandomInteger[a]; c], Dynamic@d}
   }
  },
 Alignment -> Right
 ]
One issue as you can see is that inner-variables inherit outer scope.
But not sure how to get around that.
 
@b3m2a1 that is one approach. But I think it does not fit my needs. I have a long but modularized code so I have:
gui[]:= Grid[{ gui1[], gui2, ...}]

gui1[]:= DynamicModule[{}, {..., ...}]

...
Unless I keep var spec visible to DMGrid it won't be able to collect it
 
8:12 AM
@b3m2a1 another bounty would be for
Grid[
   {{1, Style[2, "Header"]}},
   BaseStyle -> {"Header" -> {FontSize -> 18, FontColor -> Red}}
]
 
8:30 AM
@Kuba I think you could remove the hold attributes if you force DynamicModule and that’d handle that case mostly. In any case I’m sure you can do that if you find it useful.
 
9:19 AM
@b3m2a1 I am defeated by:
DynamicModule[{x = True},
 Grid[{
   {RandomImage[], Checkbox@Dynamic@x}
   ,
   Dynamic[
    If[x,(*both DMs are very different and independent,
     it should be one or the other, can't plan that in advance*)
     DynamicModule[{}, {"-", 1}],
     DynamicModule[{}, {2, "-"}]
     ]]
   ,
   Dynamic[If[x,
     DynamicModule[{}, {2, "-"}],
     {Spacer[{0,
        0}]}(*this row should be invisible without any gap left*)
     ]]
   }]
 ]
And also by deeply nested cases.
I will just go with good old set of predefined Framed placeholders to put wherever I want to enforce e.g. a column width
 
 
2 hours later…
10:56 AM
Welcome back, @J.M.! :)
18
 
@MichaelE2 where did you see him? Indeed, last seen 2 min ago.
 
@Kuba I saw a post of his on Community. He just posted an answer here.
Brightens my day, I must say.
 
Indeed, hope he will come here soon.
 
11:14 AM
Hi guys.
I'll write up a more detailed update on my... status in a few minutes.
3
for now, let me try to catch up on what I missed.
(and very belated congrats to @halirutan!)
 
@J.M.issomewhatokay. Woohoo, you are alive! I'm so relieved, you cannot imagine.
4
 
Hi, I'll e-mail you in a bit. Sorry for worrying all of you.
(can't say the last few months were a picnic)
 
@J.M.issomewhatokay. We almost sent some CIA guys after you and yes, we were really worried because your sudden disappearance looked really as if something terrible had happened. I guess we should thank @rm-rf that I didn't call Langley and we waited for a bit longer with the hope that you just can't be online at the moment.
 
the longer explanation will be for a blog post I'm writing later.
short version: I got really ill again, and only got well enough to go home yesterday.
I definitely missed writing here, tho. :)
 
11:34 AM
@J.M.issomewhatokay. Don't worry. I'm just glad you are up and running.
 
er... maybe not running; shuffling perhaps
:D
 
11:45 AM
Welcome back!
 
 
1 hour later…
1:00 PM
@J.M. Yeah, welcome back! I also lost almost all my hope to hear from you.
 
@J.M. Good to see you back, but maybe it's better if you don't suddenly spend a lot of time with the screen.
 
@J.M.issomewhatokay. Welcome back :)
 
@Szabolcs Yes, you are absolutely right. I will just try to finish a few things before I rest.
Thanks for the welcome, everybody.
 
 
2 hours later…
gwr
3:26 PM
@halirutan Um, is sending the "CIA" after someone here conceived of as a measure of support? I don't know about so many they came after making a reappearance in a forum. :O
@J.M.issomewhatokay. Great news - and I am expecting nothing less than you telling us about what being a beta tester on Mars for Elon Musk is like ;-)
 
3:38 PM
@J.M.issomewhatokay. Just got a notification from you blog post (tpfto.wordpress.com/2018/09/24/on-auspicious-returns), I'm glad to see you writting again.
By the way, the ads in @J.M.issomewhatokay. blog try to sell me retirement plans, a bit too soon. I clicked on all advertisements anyways.
 
@J.M. Glad to see you here again!
 
@halirutan I'm glad we didn't, if that was your interpretation of our idea of trying to find out he was OK.
 
@gwr prolly not in the best of health for an extended space trip, but I appreciate the thought :)
@rhermans huh, unfortunately I have no control (or revenue) over those ads, sorry
Well, the last few months were not fun; hopefully the rest of the year will compensate...
 
@J.M.issomewhatokay. No revenue from the ads?! Ah... will have to do something else then... :)
 
So @Mr.Wizard, apart from halirutan becoming a mod and the SE interface becoming even more confusing, anything new? ;)
 
3:48 PM
lol -- uh, I'll have to think on that. I'm not nearly as active these days as I once was so I've probably missed a bunch of stuff anyway.
 
hmm, that's interesting; I'm trying to finish and document some old chem stuff I have too...
 
@J.M. I read your blog post. It's rather concerning. :-( Not sure what else to say, other that to reiterate that I am happy you are here again.
 
eh, it's not the best situation.
computer's still working, but it seems to be at the end of its life cycle
so I want to put up as much as I can while I still can
 
gwr
4:42 PM
@Mr.Wizard That somewhat reads as if the retirement ads rhermans has seen on J.M.'s blog simply missed the right recipient indeed ... :)
@J.M.issomewhatokay. That reads rather discomfortingly like a "perpetual race against the (same bad) odds". Stupid question probably, but may there not be something to be done to alleviate your situation "fundamentally" like moving (for a little time) to a cozy country where "waylaying" is only read about in books?
 
@gwr well, to be honest, if I had the money to move to a different country, it would be a higher priority for me to use the money to pay for my hospital debts...
I'd already moved to a relatively rural area just to stave off cost-of-living
 
5:16 PM
@J.M.issomewhatokay. Welcome back! I also checked your blog every now and then and was worried by the lack of new items.
@J.M.issomewhatokay. (and now I can't seem to find your blog... I am probably too jetlagged!)
 
@chris it's still at the same place. :) Frequent travel can be hard...
 
5:36 PM
Just wanted to make sure people know that if they use Safari and the editor bar extension, they shouldn't upgrade to OSX Mojave yet. It will break the editor bar extension in Safari.
(Or, they can upgrade to Mojave and use a different browser; that's what I'll be doing. This change to the extensions API makes 75% of my browser extensions stop working)
(To be specific, don't upgrade to Safari 12 if you want the editor bar extension to keep working)
 
6:20 PM
@CarlLange I noticed that a few weeks ago and found a possible workaround. Let me check on that and I'll write it up somewhere
 
For those who work with MathLink, here's a nice way to test how a packet is written to a link:
linger = LinkCreate[LinkMode -> Loopback];

LinkWrite[linger, 1]

LinkRead[linger]

1
In particular, things like System`Utilities`HashMap actually have a fully explicit InputForm that does get converted properly.
You can write one to the link and get it back out and it's valid again
 
6:58 PM
@ChrisK That would be really useful! I haven't found anything that would mean one of us wouldn't have to pay the $99/year developer account.
 
8:02 PM
@CarlLange the technique at georgegarside.com/blog/macos/… works for me
still a hassle, because I can't figure out how to have it persist through safari restarts
 
8:40 PM
@CarlLange @halirutan I have edited Halirutan's post on the editor extension (mathematica.meta.stackexchange.com/a/1044/6358) to add the workaround for MacOS 10.14 and also replaced the broken links to NinjaKit to one that works (on my own server)
 
9:17 PM
 
@Szabolcs I actually didn't (but now I've upvoted it)
I just assumed it had to exist
 
Loopback links are also useful when programming in C
 
And needed to see what would happen to HashTable when I push it through to python
They're what Expr is built off of in JLink, but I only partially implemented Expr for PJLink
It will probably work, but I haven't battle tested it
 
Currently I'm trying to figure out how I want to handle the PythonObject system.
@Szabolcs it's too bad Todd Gayley doesn't really spend time here. It'd be helpful to have his expertise.
Admittedly that might be part of the reason he doesn't as I'm sure being bombarded with questions isn't the most enjoyable way to spend his time
 
10:17 PM
@Szabolcs what does the internal form of Graph mean? I'm writing an encoder that will just dump it to some GraphData class which is effectively efficient temp storage but don't know what each of these elements is.
 

« first day (2441 days earlier)      last day (2033 days later) »