« first day (124 days earlier)      last day (4377 days later) » 

8:34 AM
Alo
 
@Rojo My point is that continuous evaluation (CPU hogging) might happen. The If will prevent printing, but not evaluation.
Have you tried the code from my comment?
 
I know that
that some extra runs willhappen, but you think they might actually be a lot?
 
Yes
 
No, give me a sec
 
@Szabolcs, Rojo Hi
 
8:35 AM
Take the example from my comment: evaluation will happen continuously, it simply never stops.
 
I found that this works quite OK:
 
Wow
 
SetOptions[$FrontEndSession,
FrontEndDynamicExpression :> (Notebooks[];
With[{new = GetNewNotebooks[]},
If[new != {}, Print["New one(s):\n", new]]])]
 
Then a combination of that with TrackedSymbols option on Refresh or Dynamic
 
Don't know how brittle it is though...
 
8:36 AM
Just because the expression is updated whenever i changes. An the code itself changes i. This situation might happen very easily. What we need is to prevent i from being "tracked".
 
Ajasja, that might work, I think
 
@Rojo I tried TrackedSymbols with Dynamic, and it had no effect. Maybe you'll have better luck, or I used the wrong syntax.
 
Wait
I'm restarting my MMA after you killed it
 
:)
Me too
 
So it dies on multicore CPUs as well. I know it's a lot more fragile on single-core CPUs (what I have here)
On multicore CPUs sometimes a dialog comes up and asks if you want to disable dynamic updating.
 
8:40 AM
i = 0; SetOptions[$FrontEndSession,
FrontEndDynamicExpression :>
Refresh[Notebooks[]; Print["New one ", i++], TrackedSymbols :> {}]]
Works in Refresh
 
Ideally only Notebooks would be tracked, but no other symbol. What I can't figure out is how to do this.
Ping? 乒? I think I might have lost connection ...
 
Back
But Notebooks is not a symbol to be tracked
 
OK, I'm stupid. There's no TrackedSymbols -> None, only TrackedSymbols -> {}. This works fine.
 
Oh, do you think one could do some permanent damage using:

i = 0; SetOptions[$FrontEnd, FrontEndDynamicExpression :> (Notebooks[]; Print["New one ", i++])]
 
Why are we using the i? Just to hang our sessions?
 
8:42 AM
This works:
i = 0;
SetOptions[$FrontEndSession,
 FrontEndDynamicExpression :>
  Refresh[Notebooks[]; Print["New one ", i++], TrackedSymbols -> {}]]
 
So using $FrontEnd instead of $FrontEndSession
 
Or for the prints?
 
I'm not trying this right now:)
 
i = 0; SetOptions[$FrontEndSession,
FrontEndDynamicExpression :>
Refresh[Notebooks[];
If[GetNewNotebooks[] =!= {}, Print["New one ", ++i]],
TrackedSymbols :> {}]]
I think thats fine
 
@Rojo To demonstrate that a very minor modification of the code you posted may kill the session or hog the CPU. Introducing any global variable that is being changed my code has a potential to kill the session.
 
8:44 AM
Oh, ok
 
I think this is an important point to mention in the answer.
 
Definately
 
The code I posted above will print/increment every time a notebooks is opened/closed. I haven't found any other situation when it does, but if there is, the If should take care of not evaluating anything unnecessary, as you said. Also, it doesn't hog the CPU.
 
The code I posted then just adds Ajasja's line
to filter closed notebooks
Can you find an example where the code replacing Print can make it hang in those cases?
 
@Rojo @Szabolcs Thanks, for your help, got to run now.
 
8:48 AM
@Ajasja Did you know that invisible notebooks are often used in the background for copying/pasting/rasterizing operations?
 
I didn't
 
@Ajasja Just mentioning because you were talking about applying some changes to every opened notebook. For example, my image uploader palette uses invisible notebooks for rasterization/copying.
 
Nope, but I did notice, that MessageDialog is also counted among new notebooks.
 
I'll delete the useless comments
 
But I'll filter the code to apply only to *.m so it should be OK
 
8:52 AM
Maybe a little bit of explanation of why TrackedSymbols -> {} is needed would be useful. I'm deleting the comments as well.
 
Actually, Szabolcs
Are you sure it's necessary
yeah, brb
 
I think an explanation about it is definitely necessary. Otherwise sooner or later someone who reads the answer will shoot himself in the foot and lose his session (e.g. me, this time ;-) )
 
Added it
Going to sleep now, cheers
 
Good night!
4
A: What should our site design look like?

wxfflesInspired by F'x, here's a 2D analogue of spikey. Done with a bunch of rules because I like them, and they make it clear what is going on. Start with a pentagon: p = Polygon[Table[N[{Cos[t], Sin[t]}], {t, \[Pi]/10, 2 \[Pi], (2 \[Pi])/5}]]; Make a rule to split any polygon into triangles (ce...

2
 
 
6 hours later…
3:22 PM
@RM, @Szabolcs Guys, I think this time you were too fast deleting that question on shadowing. It has a clear title, and it is more than likely that many people would search using something similar.
 
R.M
@LeonidShifrin I've voted to undelete. I initially voted because a recent change to how duplicates w/no answers are handled would've meant that no one would ever see that question (other than users with enough reputation). Low rep/anonymous users are automatically redirected to the other question if they happen to click on it.
But it seems like I misunderstood it (because the behaviour is different based on rep and whether you're logged in or not)
 
@R.M I see. I did not know these details. But in any case, people coming from Google need a page to be alive to be indexed, I suppose.
 
R.M
@LeonidShifrin I agree, I thought it's completely hidden unless you're logged in, but the crawler will probably see it either way. (BTW, to see what I mean, open this link when logged in and in an incognito window)
 
@R.M. Ok, I saw this effect. Thanks for the interesting tidbit on how the site works.
 
3:51 PM
Hello, quick question: is there a way to convert an Overlay figure into a Show figure? More generally where can I read about the virtue of overlay (beyond the obvious) relative to show/graphics ? It seems to me its introducing yet another way of doing things which is a bit confusing
 
4:17 PM
@RM Interesting effect. I had not noticed that before.
 
@chris The difference is that Show combines graphics, while Overlay will overlay any two things that can be displayed in the front end without changes---not matter if they're graphics or not.
@chris when you combine two graphics Show, they'll have the same axes, frame, labels, ticks, size, etc.
otherwise yes: I agree it's a bit messy.
 
@Szabolcs Overlay is actually useful if you want one plot with two different vertical axes.
 
@Heike Yes, it's useful, but it's messy: the result will not be a resizable graphics object, and great care must be taken to make sure the frames will overlap properly (i.e. fixed ImagePadding without cutting off labels...)
 
@Szabolcs True, but rescaling graphics and relabeling axes is pretty messy too.
 
You showed me once a very compact and nice way to generate a random point on the surface of the sphere, but I forgot how exactly you did it ...
 
4:34 PM
@Szabolcs You can do something like this:
n = 1000; r = 1;
pts = {Cos[#1] Sqrt[r^2 - #2^2], Sin[#1] Sqrt[r^2 - #2^2], #2} & @@@
Transpose[{RandomReal[{0, 2 Pi}, n], RandomReal[{-r, r}, n]}];
 
Hm ... maybe my memory fails me about the very simple one-liner :)
 
There's probably a simpler way, but I'm a bit tired at the moment
 
R.M
@Szabolcs if you have a wide enough window, everything is a one-liner ;)
3
 
I use {2 Sqrt[(1 - #2) #2] Cos[2 Pi #1], 2 Sqrt[(1 - #2) #2] Sin[2 Pi #1], 2 #2 - 1} & @@ RandomReal[1, 2] myself...
 
brb ...
 
4:39 PM
@Heike Does that give a uniform distribution?
 
@SjoerdCdeVries Yes
 
Or slightly more compactly: Append[2 Sqrt[(1 - #2) #2] Through[{Cos, Sin}[2 Pi #1]], 2 #2 - 1] & @@ RandomReal[1, 2]
 
@SjoerdCdeVries The surface area of a slice of a spherical shell is linear in the width of that slice
 
@Sjoerd: see this.
(Interestingly, I was using this just now for generating points for a spherical Voronoi diagram...)
 
4:57 PM
all: does fully describe the scope of this question?
 
There ought to be another tag. What that tag should be slips my mind at the moment.
 
is almost a good fit, too, as that is why Part is behaving the way it is.
 
R.M
@rcollyer it's not about the implementation of Part, right? Just its behaviour... maybe ?
(actually, I dislike that tag... it doesn't say much at all)
 
5:13 PM
@RM It is rather uninformative... but what's a better tag for the questions under it?
 
R.M
@JM I don't know and I don't think there's one...
 
There are enough users on the site now that when someone unexpectedly changes their nick, I have no idea who they are any more ...
 
Who did you have in mind?
 
R.M
My ghost trail answer is a favourite among the "vote balancing" crowd... I've gotten about 3 unupvotes so far
 
5:28 PM
@RM Odd...
 
@RM That doesn't sound like vote balancing, rather people who think they should only give a vote to the single best answer. Vote balancing would would be downvotes on (overly) popular answers, right?
(or not voting for popular answers only because they already have lots of votes)
 
Ah yes... there are indeed people who think voting for more than one answer to a question is a sin. Oh well.
 
Often being an early but less than thorough answerer, I get that fairly often; I've learned to accept it. Down votes on the other hand still sting a bit when I cannot see the reason.
 
Another (probably not completely straightforward) question. Is it possible to hack into Integrate so as a to add to the "grammar" of integration a new family of integrals which the user would have qualibrated (in the spirit of what ProbabilityDistribution which allows the user to include his own PDF into the existing tools).
The idea is that mathematica would be able to identify when such integrals pop up and replace it by the given definition. I have specific example in mind involving the integral of MultiNormalDistribution over square subregions of the integration domain.
 
@chris You could use either of TagSet or TagSetDelayed to define how Integrate[] should behave towards your function. (It's almost never a good idea to tamper with system definitions.)
 
5:38 PM
@RM that's why I said almost, as it has to do with how Part interprets a structure. Not a fan of , either.
 
R.M
@MrWizard Either way, I don't really care about it... it was just amusing that it happened thrice with the same one (which hasn't happened before).
 
One thing I noticed about that ghost trail question: none of us bothered to try to replicate the color gradient used in the OP's image... :D
 
R.M
@JM heh, I answered first and used SunsetColors as a close enough approximation and everyone went with it :)
 
Yeah, everybody used "SunsetColors". I wonder how they would look with a bit a fire, instead?
 
@rcollyer Remember that color gradient you shared with me a while back? It worked nicely there as well.
 
5:42 PM
@JM that's the one I was thinking of, exactly.
Every once in a while a newbie question makes me wonder,
3
Q: Why does Mathematica use an underscore when defining parameters?

Ethan WillisFor example if I was defining the following function exprod[n_] := Expand[Product[x + i, {i, 1, n}]] Then why is the underscore after the variable n, necessary in the function definition? Where does this style come from or is it specific only to the Mathematica programming language?

mostly wonder about the poster, more than the question itself.
 
I suppose somebody's already asked why Mathematica uses square brackets?
 
Thanks. Would the function Expectation inherit my tempering with integrate?
 
@chris Maybe, but test it to be sure.
 
@chris I don't think so; you might have to also specify how Expectation[] should behave towards your function...
 
R.M
@JM I guess Wolfram cleared that one in the book, so it's not that common (except for the occasional $OtherLanguage user who's pissed that it doesn't use parenthesis)
 
5:47 PM
@JM I always thought the answer to that one was: because we wanted to, alongside making an unambiguous distinction between a function call and a parenthetical expression. But, I could be wrong. :)
 
@rcollyer That's actually the explanation given in the Book, if memory serves. :)
 
acl
@RM what is the explanation in the book? that we "should realise" that "traditional notation" is ambiguous? (I have ver 5 and ver 2 of the book right here in my office but can't find anything in a quick check)
 
@JM If Expectation a non-internal version of Integrate internally, then yes. Otherwise, no. So, maybe. :)
 
"is f(x) 'f of x' or 'f times x'?"
 
@JM only read the the student version, and I don't recall it.
 
acl
5:49 PM
@JM that's true, I spend a substantial amount of my time every time disambiguating this
 
@RM that was covered in "because we want to." :P
 
@rcollyer Better safe than sorry, I'd say; for all we know they might rearrange the drapes in the next version...
 
R.M
@acl I think it's covered early in the book (chapter 1, maybe)
 
@JM right. drapery rearranging is always a possibility.
But, it may work on his version.
So, testing is in order.
 
R.M
@JM for me it's more along the lines of is it`"f of x"` or "index x in f"... but it has never really been a problem for me though. If people don't use single letter variables and use a sensible naming convention, it's fairly clear to figure out
 
5:55 PM
"use a sensible naming convention" can't be sufficiently emphasized. :)
Problem is, a number of people write as if they won't be reading what they've written in the future...
 
@JM or expect anyone else to either.
 
"Feck, what sorcery did I do in line 64?!?"
 
@rcollyer I only recently realised that a_ is short for a:_
 
You don't really think about it until you see the output of FullForm[{HoldForm[a_], HoldForm[a:_]}] or something like it...
 
@Heike I worked on a "simple" parser for patterns at one point (mostly to get MakeCheckedReader to function better, but abandoned for something better), and they start to make a lot more sense.
@Heike I guess my objection to the question is that it seems like another RTFM question, and no effort went into reading the docs to see if they said anything, like what a_ means.
 
acl
6:02 PM
@rcollyer I think the problem is that it's not so easy to work out what the big picture is
 
I think TagSet does not quite "extend the grammar"; for instance 'Unprotect[Integrate];
Integrate /: Integrate[f[x], {x, a_, b_}] = F[a, b]
Protect[Integrate];'
 
@chris Augh, no! Don't do that!
 
allows me to ask 'Integrate[ f[x], {x, a, b}]' which returns F[a,b]
 
@rcollyer I saw someone claim today that the underscore was to indicate a SetDelayed.
 
but on the other hand Integrate[ 2 f[x], {x, a, b}] does not return 2F[a,b]
 
6:02 PM
Try:

f /: Integrate[f[x], {x,a,b}]:= F[a,b]
 
@chris What I intended for you to do was f /: Integrate[(* stuff *)]...
 
acl
@chris you have to associate the rule with f not Integrate
 
Maybe that question would actually be useful to that person.
 
acl
@Heike I saw that somewhere too, SO? I don't remember
 
@Heike really, where? o_O
 
6:04 PM
@chris Let me repeat my warning again: don't screw around with built-ins unless you know perfectly well what you're doing.
 
R.M
@rcollyer I believe this is the answer she's referring to (check the history)
 
@RM I had blanked that from my memory. Downvote into oblivion?
 
@rcollyer @acl here. Luckily Sjoerd put him/her straight, but it was still accepted as the right answer
 
@rcollyer It's no secret that for a lot of users, the F1 key is mostly a dust accumulator...
 
@RM Yes that's the one.
 
R.M
6:05 PM
@rcollyer well, there are two close votes on the question...
 
@JM F1 does not work on my laptop, it's linked to screen brightness. However cmd-f does the trick.
 
I understand why its less dangerous to associate new rules to user symbols rather than built it symbol; but my purpose is really to extend mathematica's integration ability in a direction I am interested in rather than (in my context) extend properties of MultinormalDistribution as a far Expectation is concerned.
 
@chris Yes, and the method we gave you is the safe method for telling Mathematica how built-ins should interact with your new objects.
 
acl
@rcollyer can't you use fn-f1? on mine, I have the function keys to be function keys by default and only do the brightness/volume thing with fn
 
@RM I have not voted to close that, as it is an okay question. Not necessarily worthy of an upvote, but as newby question, I can live with it.
 
6:07 PM
@acl Isn't that standard on macbooks
 
@acl hmmm, never tried that. I always remember cmd-f.
 
R.M
@Heike you'll have to change it in keyboard settings. The default is F* keys for brightness, volume, etc.
 
acl
@Heike I think standard is to have the function keys to not be f1, f2 etc but to be brightness, "dashboard and all the rest. but there is an option in the prefs to change the behaviour so that pressing f1 actually send f1, and so on.
 
Here I am interested in 2 built in objects though Integrate and MultinormalDistribution (well technically 3 since I want Expectation to work with Boole in a regime it does not by default.
 
acl
@RM in the settings you can also change caps lock to be ctrl, which will be of great use to you as an avid emacs user
 
6:10 PM
@acl I use vi (well, vim, technically).
 
@chris Sounds like something you should be asking in main, then.
 
@chris I have to second that.
 
R.M
@acl whaa... emacs? What's that? :P
 
Somebody's itching for a duel...
 
acl
@RM @rcollyer sorry to hear that...
 
6:11 PM
@RM yeah, why use emacs when you can use x-code? or, vi(m)?
 
acl
@JM not much of a duel; more like light sabre vs pocket knife
 
@acl I must have changed that then.
 
This means ask a question to mathematica.SO?
 
@acl The problem is that acolytes from either sides insist that theirs is the light saber...
 
@acl most of the systems I deal with use vim by default. and once I got used to the syntax, I haven't gone back. using a single command, I refactored flawlessly 24 similar lines of code to their new equivalents without a hassle.
 
6:12 PM
@chris Yes.
 
OK thanks for your time.
 
@JM I think pocket knives are much more useful than lightsabers to be honest
 
@JM exactly. and both are extremely powerful. I just got used to vim, and never quite got used to emacs.
 
@Heike Oh certainly, but this is a duel, not an expedition (apparently). ;)
 
acl
@JM well I was winding them up of course...
 
R.M
6:16 PM
Obligatory:
 
@RM I was just looking for that one.
 
A picture a friend took of the eclipse:
 
R.M
@Heike I'm always quick on the draw when it comes to something that's starworthy :P
 
not to side track the conversation or anything. :)
 
@rcollyer Neat!
 
6:18 PM
@rcollyer I feel a "can you emulate this picture with Mathematica" question coming up.
 
@Heike Not by me. :)
 
R.M
@rcollyer ooh, nice. I just put on a pair of dark sunglasses and looked straight at it (partial eclipse)
 
It was taken from Los Alamos.
@RM that still likely burned your retinas.
 
@Heike I think one could make an entire series of "how to make fake X in Mathematica?" questions...
 
R.M
@JM I bet you could use Mathematica to generate that series too...
 
6:19 PM
@JM Maybe we should create a tag for that.
 
@JM Okay, I'll bite: how to make a fake Sasquatch using Mathematica?
 
(So far, I've done a fake column, a fake log, a fake brick...)
@rcollyer You should ask that on main. :P
 
@rcollyer Just show me a picture and I'll give it a go.
 
R.M
@rcollyer Import["http://i.stack.imgur.com/kBhPf.jpg"]
 
6:22 PM
@JM I've done a fake spherical giraffe (in vacuum), but I don't think that counts.
 
@Heike That's easy: Sphere[]
 
(On a more serious note, hair's always been a bitch to render realistically in CG...)
 
@JM I know, that's why it came to mind.
 
@rcollyer What about the patterning?
 
@rcollyer That's why Monsters Inc. probably wowed me more than the average viewer...
 
6:23 PM
@Heike does it matter?
@JM Sully was amazing.
 
R.M
@Heike isn't there a giraffe fur in the texture data?
 
@JM According to a guy working at the R&D department of Dreamworks rendering hair takes up about half their CPU (IIRC)
@RM That's what I used
Apparently, rendering 3D clouds is quite hard as well.
 
@Heike not surprised. it is a very intensive operation. But, half?!? that is very scary as they have a very large cluster.
 
@rcollyer He was talking about how to train a dragon. There are a lot of hairy men in there.
 
@Heike I'm sorry I never saw that movie. But, I can see how that would take up so much time.
 
R.M
6:29 PM
@Heike Pixar is smart— they do stuff like "Cars", "Up", "Finding Nemo", "Toy Story", etc which don't have as much hair as Dreamworks' stuff. No wonder their films are hits... better use of CPU time to, you know, create a good story
 
I was reading this paper on how to use PDEs to generate synthetic textures like the giraffe pattern, but I haven't fully thought about how to translate their ideas into a Mathematica implementation...
 
@JM that would be interesting to see. Let us know if you succeed. Blog post here, maybe?
 
@RM Well, for Finding Nemo, the simulated optics were quite the challenge for their computers...
 
Gotta run. Talk to you all later.
 
@RM I think dreamworks also suffers from the dreamwork-face
 
R.M
6:30 PM
@Heike yes!
 
@JM Pixar actually consulted oceanologists when the were making finding nemo
 
@Heike Yeah, I think they even interviewed one of those oceanologists for the extra features in the DVD.
 
@RM I hadn't actually heard of this until someone told me about it about 5 minutes before I went to see this talk by the dreamworks-guy.
 
R.M
There are "unconfirmed rumors" that Eddie Murphy inspired that face
but this one is classic:
 
@JM I remember seeing an interview where they were talking about kelp and how that they shouldn't put that stuff everywhere.
 
6:40 PM
Should the day come that Mathematica is finally able to do ray-tracing, I may be able to move away from POV-Ray...
 
 
1 hour later…
7:55 PM
posted on May 21, 2012 by Wolfram Blog Team

We are excited to announce that registration is now open for the Wolfram Technology Conference 2012, October 17–19 in Champaign, Illinois! Wolfram is innovating at a breathtaking pace. Hear directly from developers about the latest technologies for mobile devices, cloud computing, interactive deployment, and much more. Held just yards from Wolfram’s headquarters, our experts will [...]

 
acl
8:10 PM
does anybody know how I can export a notebook object as pdf? (short of scripting mathematica externally)?
Export["~/Desktop/nb.pdf", nb] and the like don't seem to work. I'm not knowledgeable about fronted programming so am probably missing something obvious
 
@acl I'll have a look at it
 
acl
@SjoerdCdeVries if it's nontrivial I guess I should ask on the site
@SjoerdCdeVries hmmm.... now it works
very strange, I am looking at what I did before and it seems to be the exact same thing. didn't quit the kernel or anything
 
@acl seems to work here too. Have to examine tghe resultsbrb
@acl flawless.
 
acl
yes... pretty neat
thanks anyway
 
@acl Did you see this comment?
So, trying out those solution it appears that my problem is something else entirely, since when I load the Time Series package it is the package LogLikelihoodfunction that I can't access, even when using the full context in referring to it. — Mr Alpha 5 hours ago
If this is true, the question which has been closed as a duplicate, might need to be reopened
 
acl
8:19 PM
@SjoerdCdeVries have you tried it?
 
@acl Don't have the package
 
acl
oh I see it refers to this package
yes
 
@acl Time series. Do you have it?
 
acl
@SjoerdCdeVries no
can he modify his question even though it is closed?
 
I think so
 
acl
8:21 PM
we could leave a comment that if he makes it more explicit what the difference is between this and the other question then it makes sense to reopen it
 
@acl I'll do that
 
acl
9:21 PM
how did this collect two downvotes and a close vote instantaneously?
-2
Q: probleme withe EvenLocator

Manel i am tring to solve differential equations with variable parameter (p) : x''[t] == (1/(p*p))*y[t], y'[t] == -x'[t] - y[t] + u, the sign of u change depending on the position of x[t] if x[t+1]> x[t] and x start from (0) so u = 10 until x[t]=4 if x[t+1]< x[t] (and normally x start...

ok never mind I read it
 
R.M
@acl probably didn't collect fast enough? ;)
 
acl
@RM three errors in the title, that has to be a record
this is not bad either
0
Q: --W. Mathematica Application Structure

AnnaI had such expression in "applicative form", like : Y [X][X][Z][X][Y [X][M][Z][X]][Y [X][F][Z][X]]. In these structure we have different types: Y,X, Z, F . And I want to index such structure, in a way to rewrite this expresion like ..we have : Y [X][X][Z][X][Y [X][M][Z][X]][Y [X][F][Z][X]], this ...

 
R.M
@acl My first reaction was to start editing, but as I read a little further, I realized it can't be salvaged... at least, not in its current form and not without going through his code in depth
 
acl
mine too, but I could not understand what was being asked
I can probably guess but I'm not willing to do this every day...
 
R.M
9:36 PM
exactly
 
flagged for low quality
 
10:01 PM
I think the OP just wants to flip the sign of some parameter when x[t] becomes too large or too small
 
acl
@Heike yes but I think we shouldn't encourage too many questions where it comes down to one of us guessing what's being asked and answering (like I did yesterday)
 
10:15 PM
Does anyone know why this issues a Pattern::pattvar message?
head[b_[PatternSequence[_, _]]] := 9
 
acl
10:49 PM
mathematica is not the most robust runtime to have ever been created
(although it's the most powerful I've seen)
 
11:12 PM
Is there a change in how much reputation you get from stuff when you get to 6k or something?
 
R.M
@Rojo nope, it's the same at all levels. Why?
 
Ohh, nothing
It must be because of the mas 200 rep pre day
 
R.M
oh, right. You've capped for the day :)
 
I just read the faq
Thanks
 
R.M
It's important to cap early in the day so the rest of the day (outside mma.se) can be productive :)
 
11:16 PM
Hehe
But it's cruel anyway
I'd rather cap the week in a couple of days and then be productive for 5 days outside
 

« first day (124 days earlier)      last day (4377 days later) »