« first day (2553 days earlier)      last day (1932 days later) » 

12:35 AM
@b3m2a1 I could bet it works...
CurrentValue[$FrontEndSession, TaggingRules] = {"a" -> "FES"};
CurrentValue[EvaluationNotebook[], TaggingRules] = {};
CurrentValue[EvaluationNotebook[], TaggingRules] = {"a" -> "NB"};
CurrentValue[EvaluationNotebook[], {TaggingRules, "a"}] = Inherited;

AbsoluteCurrentValue[EvaluationNotebook[], {TaggingRules, "a"}]

CurrentValue[EvaluationNotebook[], TaggingRules] = Inherited;

CurrentValue[EvaluationNotebook[], {TaggingRules, "a"}]
AbsoluteCurrentValue[EvaluationNotebook[], {TaggingRules, "a"}]
The Inherited one from the first AbsoluteCV is very strange.
I am surprised I have not faced that problem earlier
 
 
6 hours later…
6:53 AM
We're not there yet on the autogenerated docs (still have a bunch of patterns I need to prune and clean...) but at the very least we're getting there. Here's my ugly preliminary site for BTools docs: wolframcloud.com/objects/b3m2a1.docs/BTools
This index of functions is probably the most useful part of the thing but who knows
 
7:35 AM
I just finished getting the rest of the 308 functions I expose through one of the many BTools subpackages up there. There are a few gems in there like say this one and a bunch of clunkers and a number of functions that are really interfaces to a pile of lower-level functions like this one.
Oh wow look at all this crud in here. Here's a great example of a function I totally forgot was in there and is now basically built-in so I should probably prune it out: CompressedForm
If you want the mildly glitchy notebook-based docs that was built off of you can install them like so:
PacletInstall[
 "Documentation_BTools",
 "Site" ->
  "https://www.wolframcloud.com/objects/b3m2a1.docs/\
DocumentationServer"
 ]
 
 
2 hours later…
10:06 AM
@Mr.Wizard @halirutan and others, should we merge and ?
 
 
2 hours later…
12:14 PM
If I want to flag a question Q, as a duplicate, and the question which Q is a duplicate of is also a duplicate. What question should I flag Q as a duplicate of?
 
@voidlife The best would be the final one in the chain. But sometimes the scope diverges as you move up to chain so it may be more helpful to link what you think is more understandable to the OP.
 
@Kuba Thanks
 
1:26 PM
@Kuba Dialog[ ] is interactive but do not need GUI i think.
 
@GalAster good point, otoh it fits .
 
2:07 PM
@Kuba I would leave them as separate tags. Gui construction is to me something that is concerned with laying out gui elements and make more complex information flows inside it. interactive can be for instance "Why does Refresh not update values appropriately" which is to me something different.
 
@halirutan I understand, otoh I feel like we have to many tags now. Btw, Refresh does not feel , rather ++
 
@Kuba You seem to have thought much more about this topic than I did. I'm not the best tagger. I simply use what is suggested and certainly don't know if we have too many tags. So don't really listen to me in this case.
For instance, to me it is completely unclear what the difference between interactive and dynamic is.
 
@halirutan let's say I felt annoyed for a longer period about that. I don't know how to solve it so want to trigger a discussion.
I am not sure either but dynamic is probably more output centered aspect of gui while interactive more input or i/o.
Interactive could be nice for InputDialog/Input and friends but I would opt for or something to cover it instead.
 
@Kuba I am sure only a handful of people would think about such details when tagging their questions.
(I don't even know how to make these nice tag links in chat..)
 
That is another point for making a set of tags more limited and creating more synonyms.
[tag:name]
 
2:17 PM
Ahh. nice.
 
Anyway, thanks for feedback. I should materialize those thoughts in a meta question one day
 
 
1 hour later…
3:46 PM
Crashes the kernel:
prop[n_] := a[n] == formula[n];
FullSimplify[
 ForAll[n, prop[n]],
 {prop[0], ForAll[k, s@k == k + 1],
  ForAll[k, a[s@k] == a[k] + s[k]^2],
  ForAll[k, formula[k] + s[k]^2 == formula[s@k]],
  Implies[prop[0] && ForAll[k, Implies[prop[k], prop[s@k]]],
   ForAll[n, prop[n]]]}]
Ditto for FullSimplify -> Refine
 
 
2 hours later…
5:33 PM
Either there are a lot people recently who think posting just an image of code is sufficient, or I've gotten extremely sensitive to its occurrence.
 
6:10 PM
@MichaelE2 Seems like mostly newbs, which is inevitable, so we can just keep up the standard comments.
It took me some time to discover the norm of the "accepted answer" for example!
 
6:47 PM
@Kuba I don't have a strong opinion about this, but I see GUI construction as rather distinct from simpler interactive (InputForm) behavior, etc. seems closer to to me, but I also recognize the distinction you make. I don't see a clear path to reduce these tags, but I'll think about it. If you act please make a synonym rather than a hard merge, to see how it plays out in practice.
 
7:34 PM
@Kuba, I am back from my web-free week. If you still want to discuss the difficulty I was having with shortcuts and joker.m, let's chat.
 
7:53 PM
@MichaelE2 Or an image of homework questions, which is definitely my favourite
 
8:29 PM
@MichaelE2 on Maple forum it is worst. I've seen some just post the problem number and the book title and then ask for the solution. They do not even have link or which edition of the book or where to find it :)

I call these questions as DBQ (Drive By Questions)

It is a new generation thing. I Blame it all on social media :) (and lack of some basic common sense)
 
9:21 PM
@Kuba, I did a little digging. If I try the code in joker.m in another notebook (NotebookApply[nb,
RowBox[{"[", "\[SelectionPlaceholder]", "]"}], Before], where nb is nbObject), it works. So, it is something in
..something in Shortcut.m's (If[ FileExistsQ[#1],Get[#1], etc) that is not working for me. FileExistsQ[yourFilePathCommand] returns True
I note that there are two files in your distribution. Shortcut.m and Shortcuts.m.
 
@CraigCarter this is what I see:
Ctrl+t wrapped selected code with []
I tested directly in the joker file
 
@Kuba, Yes, me too, but only when I run it explicity, not with Control-D. Do you want to move to webex/skype/other so we can screenshore?
 
Can't now. Let's see what we can debug
btw, you may be interested in: mathematica.stackexchange.com/q/164653/5478
 
Oh, the code in joker.m is SelectedNotebook[] not EvaluationNotebook[]. I don't think that will make a difference though?
The SE link looks very useful. Thanks. I'll give it a try.
 
9:45 PM
@Kuba The package you wrote in the SE link above works great (very nifty). But, I do have a lot of stylesheets that I've written with extra cell types that I am using for a book project. If you are really busy, I can go ahead an hardcode it into KeyEventTranslations.tr. Otherwise, if you want to try and debug, I'll wait.
@Kuba I've checked and the control-d does delete the selection if I don't load the package---which is the same behavior after I load the shortcuts package. My guess is that the OS is grabbing the control-d before the frontend sees it.
@Kuba, Some useful news. I edited KeyEventTranslations and changed
Item[KeyEvent["d", Modifiers -> {Control}]
to
Item[KeyEvent["]", Modifiers -> {Control}]
and this works as advertised. Problem solved (for me at least).
 
drives me nuts that python doesn't have a Flatten equivalent softwareengineering.stackexchange.com/a/254676
> What are the use cases for a general-purpose multi-level flatten? Are these really compelling enough for the function to be added to the standard library?
Flatten is probably in my top-ten most-called functions
 
@CarlLange I know. I've had to write a bunch of these restructuring things when I've used python these days for my sanity.
@CarlLange One thing I do miss about python is how little mental effort it requires to write clean python code. The encapsulation is great. The support for simple protocols to minimize the amount of effort to get things to play nice and consistently is similarly beautiful. It's a language that clearly has evolved to be nice to use unlike Mathematica which has only one design principle: Stephen Wolfram needs to think it's cute and he doesn't have to think too much to use it
The former is clearly superior to the latter
Writing large-scale Mathematica projects requires that I both maintain a mental list of the overall project structure, everything external, all my data types, etc. I can't easily reuse anything, and it's tiring.
 
10:08 PM
@b3m2a1 I suppose I've never had to write anything sufficiently large in Mathematica to really hit that problem
 
Writing large-scale python code is basically just vomiting words from my fingers and yet somehow everything works beautifully and scales well (assuming I use efficient numerical data structures where I need them)
If you look in the Mathematica source (i.e. the DownValues) you'll see OOP has been invented and reinvented to death.
 
Although I think a sensible rule of thumb is that if it's more than a few dozen lines of mathematica code it's not worth doing in mathematica (perhaps, at all). The critical path is so good to use, but once you stray it can often be quite poor
(The exception that I've found is the NN framework, which is a dream)
 
There are tons of different encapsulation schemes. And none of them are good.
 
I've definitely stayed very far from learning how any of that stuff works
Basically I model how I use MMA on the way SW does in his livestreams, and everything seems to work basically fine ;)
 
@CarlLange Yeah the SW model (i.e. the Mathematica as toy not as serious development language/platform) is very cute.
But I've found it doesn't scale.
 
10:11 PM
I wonder what the largest thing ever built in mma is. WA perhaps, although I suspect there's an awful lot of non-mathematica
 
I keep trying it for my projects and I keep needing to extend them over and over and over and all of a sudden everything is trash and inconsistent and I can't remember where anything was defined and it's miserable.
@CarlLange W/A for sure. And look at how W/A works:
Jan 6 at 22:46, by C. E.
user image
 
A toy is maybe a bit harsh - it's definitely an extremely useful tool, and I'm absolutely much richer and more knowledgeable for knowing it. But I would be scared to sell anyone a product anything on it
@b3m2a1 Ah now, clearly a mistaken image upload ;)
* But I would be scared to sell anyone a product I built with it
 
@CarlLange There is a model of using Mathematica which makes it not a toy. But to do that you need to use the language as a real language.
 
Anyway, I still love MMA, just as long as I don't look behind the curtain or think hard about the walled garden I'm in!
 
And to do that you need to first cry tears of blood at the altar of terrible language design and self-flagellate for years.
I'm certainly a fan of Mathematica. I just wish it didn't make my life so difficult.
 
10:15 PM
Please, you merely adopted the darkness. I was born in javascript
;)
 
Touché
 
anyway, best stop procrastinating
 
@CraigCarter sorry for delay. Great news. I am glad it works. I don't know what is wrong with Mac in this case and don't have any to check. About my package, you can enable templates/events without changing stylesheets.
 
10:35 PM
I have 10000+ LOC in pure Mathematica package code (excluding all functions, standalone things, code in notebooks, unpublished packages, etc.). Do I get an award for masochism...?
countLoc[file_String] :=
  With[{rs = ReadString[file]},
   Quiet@Close[file];
   If[StringQ@rs,
    StringCount[
     StringDelete[rs, Repeated["\n", {2, \[Infinity]}]],
     "\n"
     ],
    0
    ]
   ];
countLoc~SetAttributes~Listable;

packageFileSubsample =
  Flatten@FileNames["*.m" | "*.wl",
    FileNames["Packages", PacletDirectoryAdd[][[1]], 3],
    10
    ];

Total@countLoc@packageFileSubsample

133938
Of course some amount of that will be inflated by comments and things
Ah here's a fun other way to break down where I've spent most of my dev effort. BTools alone is 62000 of those LOC and most of what I've written there has clearly been in service of try to make package development better in Mathematica:
AssociationMap[
 Total@countLoc@Flatten@FileNames["*.m" | "*.wl",
      AppExecute["Path", "BTools", "Packages", #],
      10
      ] &,
 FileBaseName /@ Select[DirectoryQ]@
   FileNames["*", AppExecute["Path", "BTools", "Packages"]]
 ]

<|"Cruft" -> 0, "Developer" -> 5860, "Experimental" -> 0,
 "External" -> 8635, "Formatting" -> 7753, "Frameworks" -> 1598,
 "FrontEnd" -> 2214, "Paclets" -> 19562, "Utilities" -> 6259,
 "Web" -> 10272|>
(That's what "Paclets" is)
 

« first day (2553 days earlier)      last day (1932 days later) »