Simon blogs

Started by Simon, October 18, 2015, 06:05:44 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Simon

#45
Thanks for the responses. I haven't rambled in a while.

Banana trick: Another Simon trick to lose weight. Carry a banana with you, everywhere. Have normal meals as planned. Whenever you get the urge to buy bratwurst, fast food, sweets, or anything else extra -- consider to eat the banana instead. Happily, you will recognize that you aren't as hungry as you thought you were. Often, you won't even eat the banana immediately. It becomes an element of reusable object-oriented diets.

The banana should be greener than brown. Thorsten (reallife friend from the math department) suggests that the banana should not be perfectly yellow, unlike the pure sun. If the banana is yellow, you'll want to eat it!

The banana trick is a variant of the guinea-pig diet. Recall: For the guinea-pig diet, you eat lots of cucumber with everything, because cucumber stuffs well. It tastes good in small amounts; by force of nature, you don't want to over-eat cucumber -- perfect. And cut back on sugary drinks. Occasionally exercise. Imagine you're a guinea pig, everything will follow trivially.

-- Simon

Ramon

It doesn't happen to be the Thorsten Hohage does it :3

I don't know why Simon needs to lose weight. A Simon without his weight in my opinion is not the Simon. But I see where you're coming from. I was also about to ask whether you'd come to Vienna again this year, since you said in 2 years... 2 years ago.

Simon

Quote from: Ramon on February 24, 2017, 08:59:11 PM
It doesn't happen to be the Thorsten Hohage does it :3

Someone else. :-)

QuoteSimon without his weight in my opinion is not the Simon.

I went from 95 kg in summer 2015 to under 80 kg in spring 2016, and right now I'm around 82-83 kg. The secret is routine. Building routine requires overcoming laziness; afterwards, it's easier.

The banana trick is still recent routing, I haven't used it for long yet, and I haven't compared against old strats.

QuoteI was also about to ask whether you'd come to Vienna again this year, since you said in 2 years... 2 years ago.

Still hoping to finish the PhD this year in late summer or fall. >_>

-- Simon

Simon

#48
I overrode Lemmingsforum's 78 % font with the 100 % font by custom client-side CSS, like I did 5 years ago when the youtube embeds annoyed me.

userContent.css

@-moz-document domain(www.lemmingsforums.com),
    domain(www.lemmingsforums.net)
{
    /* raise the font size and disable in-single-post scrolling that
     * appears due to the larger font size */
    body {
        font: 100%/150% sans-serif ! important;
    }
    div.windowbg2, div.post_wrapper, div.poster, div.postarea {
        overflow: hidden ! important;
    }

    /* make every 2nd post light grey instead of blue */
    .windowbg, #preview_body {
        overflow:   hidden  ! important;
        background: #E8E8E8 ! important;
    }
    .windowbg2 {
        overflow:   hidden  ! important;
        background: #FFFFFF ! important;
    }

    /* use sane link highlighting */
    a.bbc_link         { text-decoration: underline ! important; }
    a.bbc_link:link    { color:           #4040FF   ! important; }
    a.bbc_link:visited { color:           #800080   ! important; }
    a.bbc_link:hover   { color:           #FF4000   ! important; }

    /* hide unnecessary things from the avatar area */
    li.postgroup, li.blurb, li.karma_allow, li.karma, li.online, li.stars {
        display: none ! important;
    }

    /* Disable youtube embeddings, but keep the links to the vids.
     * This will save huge amounts of bandwith, because the browser won't fetch
     * the vids anymore in the first place!
     * This is somewhat of a kludge. I don't want to remove the whole table,
     * because it also contains the link, but the table's rows with the video
     * don't have a class. Instead, they all have separate IDs. This removes
     * the first 8 vids on a page. I blame the forum's PHP.
     * The link texts are insite table cells, I force them to be inline and
     * look like regular text as much as possible, but it's not perfect. */
    #saeva1, #saeva2, #saeva3, #saeva4, #saeva5, #saeva6, #saeva7, #saeva8 {
        display: none    ! important;
    }
    .maeva {
        font:    inherit ! important;
        display: inline  ! important;
    }
    .maeva * {
        display: inline  ! important;
    }



    /*************************************************************************
     *
     * The following modifies the front page with the board overview.
     *
     *************************************************************************/

    /* front page: disable the title logo area, and disable the news fader */
    /* on namida's forum, disable entire top area too, even if it has the
     * login thing. You can still login with the link on the main menu. */
    #wrapper #top_section, #newsfader,
    #upper_section {
        display: none ! important;
    }

    /* front page: hide descriptions of the boards, and decrease the vertical
     * space the new-posts-diamond takes. */
    td.info a.subject  { font-weight: normal      ! important; }
    td.info p          { display:     none        ! important; }
    td.icon            { padding:     0 0 0 0     ! important; }
    td.icon img {
        margin:         0 0 0 0 ! important;
        vertical-align: middle  ! important;
    }

    /* Front page: Since we now have so much space at
     * the left, shrink that, but don't linebreak the forum titles.
     * With the extra space, we can remove the <br> from the last post area. */
    tr.windowbg2 td             { padding:     2px 0 0 2px ! important; }
    tr.windowbg2 td             { margin:      0 0 0 0     ! important; }
    tr.windowbg2 td.windowbg    { width:       auto        ! important; }
    tr.windowbg2 td.info        { white-space: nowrap      ! important; }
    tr.windowbg2 td.lastpost    { width:       100%        ! important; }
    tr.windowbg2 td.lastpost br { display:     none        ! important; }

    /* Front page 2009-2014 instance: Remove the board category rows */
    table.table_list tbody.header { display: none ! important; }

    /* on namida's new forum, number of topics/post per board */
    tr.windowbg2 td.stats.windowbg    { white-space: nowrap   ! important; }
    tr.windowbg2 td.stats.windowbg br { display:     none     ! important; }

    /* on namida's forum, disable the icon (L3D head) that distinguishes
        between fully-read and unread boards, because it's so big */
    tr.windowbg2 td.icon.windowbg { display:     none     ! important; }

    /* on namida's forum, disable the separators between board categories;
     * I don't care at all, it's just many boards one after another */
    tbody.divider, tbody.header { display:     none     ! important; }



    /*************************************************************************
     *
     * The following modifies the individual board view = topic list.
     *
     *************************************************************************/

    /* Large page selector with easy-to-hit numbers */
    div.pagelinks { font-size: 200% ! important; }

    /* Make the topic rows use less vertical space. Inline the started-by-whom
     * after the topic name, and inline by-whom in the last-post-info. */
    table.table_grid * td.subject p {
        display:   inline  ! important;
        color:     #C0C0C0 ! important;
        float:     right   ! important;
    }
    table.table_grid * td.subject p a.navPages {
        font-size:   150% ! important;
    }
    table.table_grid * td.lastpost {
        white-space: nowrap ! important;
        font-size:   70%    ! important;
    }
    table.table_grid * td.lastpost br { display:     none   ! important; }

    /* Kill the table's header, and shorten the post/views cell widths. */
    table.table_grid * tr.catbg3 { display: none ! important; }
    table.table_grid * td.stats  { width:   auto ! important; }

    /* on namida's board, kill linebreak in 4 posts<br>5 views */
    table.table_grid * td.stats br { display: none ! important; }
}

Arch updated fonts, now everything looks narrow. The forum font dropped under a personal threshold. Other sites are mostly OK, nonetheless wtf at sudden change in shipped fonts. I even rebooted the machine and cleared some caches to see whether I was insane. Maybe the change wasn't that harsh, but it was a change, and it triggered personal re-evaluation of the forum fonts. They seemed far too small.

A 78% default font size is ludicrous in the first place, that's 1990's web design. Modern style uses large, legible fonts, and prunes prunes prunes prunes prunes the writing instead of cramming small text. Prunes!

I'm admin now, but even though I found the 78 % value in LF's served CSSs, I kept that. This is partly carrot-dangling -- I wrote about carrots earlier in this thread: You're happy once you can turn off annoyances, even if you leave them on. And it feels partly like this ADmiral quote: The greatest masters know when to not execute their power. The best state leader is who could, but never needs to, punish citizens. Likewise, the best object-oriented designers know when object-oriententation is inappropriate.

6 hours later: Now Firefox shows the wider font again. I didn't revert the update, no idea what I missed earlier. Oh well, now the font is both wide and large. <3



-- Simon

ccexplore

All I can say is that I didn't notice any recent changes, but I'm not using Simon's custom CSS nor Firefox (nor Linux).  I may well be mistaken but I thought this forum had just been using the SMF defaults?  Changing the forums fonts without even so much as a poll would be very bad form indeed.

If there's concern about user's inability to customize things like font sizes on browsers not supporting custom client-side CSS, perhaps there's a forum mod out there that can provide a similar feature?

Simon

Lemmingsforums has been the same style since 2015, yes. :D

What I think happened: Archlinux updated a font package, and something in some font cache mismatched. This is normal and happened before. Apparently, waiting a few hours invalidates whatever cache I missed.

-- Simon

Simon

#51
Just

Standard situation: You are working within environment E and are trying to do X. You google or ask people. Person A tells you: "Just do Y." This "just" means many things at once:
  • E is horribly broken and overdesigned.
  • X is a natural problem to solve, but has no adequate natural solution within E.
  • Y is a terribly brittle, but standard workaround. Use it, then mindlessly learn it.
Why does A write "just"? If Y were that simple and natural, they could merely state Y. No, they forcefully dressed up Y as simple, for fear that we might not consider it simple otherwise. Does A want to hide from themself their own double standard?

This pattern is absurdly prevalent with any typesetting problem in Latex. It sucks, it sucks, it sucks. You google for a seemingly straightforward X, land on Latex stackexchange, and someone tells you "just include 2 packages and copy 10 lines of crap into your header." Bon appetit. You can never guess the pattern behind anything. Unless you want to do exactly Y, and not a minor variant of Y, you're terribly stuck.

Mathematicians shouldn't have to put up with this, but it's standard, live with it. You're already the golden hero if you can git commit -am, and don't have 100 commented-out lines in your header that someone-else copied from someone-else-2's bachelor thesis.

Simple stands out by itself.

The principle extends to anything, not only simplicity. When people insist that X has a property, it doesn't have that property at all. There was this meme image: Genders are a social construct, but if you're fat, then it's a genetic thing. I should go home and insert that here.

When I wrote my PhD thesis, I made sure that I spent at least as much time on the research as I spent on typesetting. -- Scott Meyers

The actual simplicity of software is not proportional to the lines of code, or the number of actions or command line arguments or anything like that. It's proprtional to the number of questions about that software on stack exchange, or the number of pages in the book about how to administer it. -- cbloom, on how git is not simple

-- Simon

ccexplore

Quote from: Simon on March 27, 2017, 03:04:44 PMPerson A tells you: "Just do Y."

I think part of the problem is that most people Googling for answers tend to just want something they can quickly copy-and-paste into their own work.  Often they don't actually want to take the time to really understand how it works or if it even really works correctly all the time.  So answers of unknown quality and lacking detailed explanations become the kind that gets passed around a lot, not necessarily because they are good as that they are expedient for all (typical) parties involved.

And honestly, with today's technologies, you would think one should be able to just write out an equation with a stylus or finger and have it automatically converted to the relevant representation in code, be it Latex or whatever else is used.  Even if the conversion isn't perfect I'd think that should save some time overall.  Granted, you can argue that it encourages people not to understand the code layer, which does make things more difficult when they do have to manually fix-up code from a suboptimal conversion.

Simon

#53
Wurst cutting game

Two players. Each player gets a nice, tasty sausage of equal weight. The game is played in rounds until one player has reached a goal score of N points, agreed before the game.

Each round, cut off from your wurst a piece sized as big as you like, and submit that piece for scoring. Neither player can see how much the opponent submits before both pieces are submitted. If you submit more than the opponent, you score 1 point, the opponent scores 0. Submitted pieces are removed from the game, and the next round starts with your remaining wursts. That's all the rules.

You can discretify the game like this: Each wurst weighs 1,000 grams, you may only cut off integer amounts of grams. Guarantee somehow that the game ends in finite time.

For this discrete game, you could rewrite the multi-round strategy tree as a single, huge matrix, then use Nash's theorem to show that there is a Nash equilibrium: There's an optimal probability distribution of how much wurst you should cut. I've never worked out the details of this equilibrium; at least it seems managable for a target score of 2.

I don't watch TV, but friends told me this. Schlag den Raab is a German game show. The host played the Wurst cutting game against another celebrity. You needed 5 points to win. The celebrity had 3 points already. The next round, the celebrity submitted his entire remaining wurst.

-- Simon

Proxima

That reminds me a little of Gops, which I played with my friend Laura in high school.

How to play Gops: Take a normal pack of cards (no jokers), and separate the suits. One player has the clubs, the other the spades. Shuffle the diamonds and place them in a face-down pile. The hearts are left out.

Turn over the diamonds one by one. For each one, after it's been revealed, both players bid for it by placing one of their cards face down, then both show their bids. The player making the higher bid (Ace is low) takes that diamond, but the bid cards can't be reused (so you have to use all 13 cards once each). If both players make the same bid, the diamond goes to the winner of the next bidding round.

At the end, add up the value of the diamonds you've won (A = 1, 2 = 2 etc up to K = 13) and the player with the higher total wins.

Simon

#55
I've played Gops! We discarded tied diamonds instead of accumulating them. Either rule works and makes for an excellent, simple game. Very straightforward, can't prune anything from the design, and playable with a standard deck of 52 cards. Seal of rodent quality.

There is a variant of Gops sold as a commercial gard game, it gives tied prizes to the highest bid that doesn't tie, which may well be the lowest. I don't like that rule, it's too volatile.

ALSA black magic

ALSA, the Linux sound system, is trial-and-error. Discord didn't want to pick up my default sound input device. Yet every other program worked perfectly. I'm hesitant to assume bugs in widespread software, but this was so lopsided, I gave this a 50-50 shot to be a Discord bug, and that my config was as good as it could be.

.asoundrc

The apparently-erroneous config started like this:

pcm.!default {
    type asym
    playback.pcm "myOutputMixer"
    capture.pcm "myMic"
}


Assuming the two cards or virtual devices exist and are properly configured, everything works in most apps. But no, apparently Discord wants more detail:

pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "myOutputMixer"
    }
    capture.pcm {
        type plug
        slave.pcm "myMic"
    }
}


Keywords to make this joke googleable: discord alsa device, discord alsa default device, discord alsa default input device, discord alsa default recording device, discord alsa default mic, discord alsa default microphone

This solution was obviously nowhere documented, I had to hunt around the web for random things to try. But there it is. I'm dumping it here partly to rage, partly to help future me and others.

Maybe Discord or Electron call ALSA somehow differently library than my remaining programs call ALSA? Who knows. Discord is closed-source bloatware that does too much. :lix-tongue: I still recommend the open-source Mumble for Lix. Mumble does one thing, and one thing well. But Arty would have been readily voicechattable only in Discord today, and the Jazz community uses Discord. Thus, happy that this works again.

Simon: The worst thing about Discord are the cutesy help pages
Simon: I want hard-ass debugging tips with pruned writing
Arty: Oh, Simon is still ranting about Discord. I guess I have to upload this video in the uncolored channel.
(= not suitable for American children for profanity? profannyty? <_<;;)

-- Simon

Simon

#56
Plans

Finish oriental tileset, merge physics changes from the git backburner. Release this before the now-unreleased physics changes turn 1 year old. <_<;;

Have a speedsolving competition, like Rubix hosted in 2014. The host prepares several puzzles, no contestant can see them in advance. Ideally, everybody sits in IRC. Time starts when the host shares the download link; time ends when you link to your zip file with proofs.

Maintain a normal sleeping pattern. Nepster leaves IRC every day at 0 German time, very consistent. Hats off. Night cap on. But how can you sleep easily when there might be exciting bugs discussed in IRC? :lix-scared:

Find answers to the deep problems in life. When you update your physics, who is responsible to keep level packs up-to-date? What happens if maintainers leave after some years? Our culture with replay coverage is still young, we haven't ever faced this. Probably someone must step up and become maintainer of the orphaned pack. Should they force themselves to look at all solutions?

Make the eggplant-sucuc dish with Icho again. Last time we had that, I was a fat Leekdiana Jones. I used Gimp to manipulate a photo and put mustaches and pipes on everybody. I think the photo is gone by now, it was hosted on asdfasdf. Maybe it's on the old laptop, but I doubt it.

-- Simon

Simon

#57
Youtube rage

I maintain videos on youtube, such as my 5-week-old Jazz Jackrabbit in 28:09 world record (youtube vid).

A happy viewer wrote a comment. A happy Simon replied. But my reply wouldn't show! I saw only the original comment, even hours after. This can't be related to browser cache.

I google for the problem. Search result: Youtube videos.

This is understandable. The problem is with youtube, therefore it will strike youtubers, therefore youtubers react how it feels natural for them: By creating a video. Eeeargh, sooooo. Today I'm going to show you how to view your comments on youtube. As you may or may not have seen, youtube doesn't show... eaahh, comments. Please like and subscribe. Have you checked your video settings? You will now be able to see your comments. If you like this video, please like and subscribe!

These have abysmal information density. And miserable hit rate. I skimmed through one or two of these -- every suggestion was either unrelated, or obvious and I've already checked for it before even googling. I did not subscribe.

Use the correct technology for discussing problems: Text! Maybe even an article with images. Good writing is random-access: You can skip over what you already know. Videos make that hard. If you think an un-postprocessed 2-minute screencast is best for your 2-paragraph, 10-second payload, you show technical incompetency. Good that it's sensable already from the form, not only from the content.

I found the answer only in later search results, IIRC in a reddit thread. Solution: My reply indeed got through, I can see it in a private-mode browser. It's a bug in the youtube page, not in the database. I like this, my data is OK.

Technical issue videos have one massive, good use: Record a bug live, then send the video to the developers. This is perfect. The screencast informs devs about a hundred things that you wouldn't have mentioned in a written bug report. Lix #159 happened when Flopsy plays Lix (youtube vid). I could see Flopsy use savestates and restart before the bug manifested, that was super helpful.

Similar phenomenon: Discord bot development. Bot writers use discord, therefore some require bug reports on discord, not on github. This is like one long forum thread with bugs burying other bugs, complete with off-topic banter.

-- Simon

ccexplore

I guess technical issues videos might also be occasionally useful for providing exact step-by-step to a complete novice, when you can't be there either in-person or via remote assistance software to do it for them (eg. the dreaded phone call assistance :-\), but maybe you can email them a link to the video and hope they can follow it better than you trying to describe what to do purely verbally over the phone.  For the likes of us, video help are problematic for the reasons you listed, and tends to be more likely of a miss the more technical or non-obvious the problems/solutions are.  To be honest, to someone like me who never livestreamed anything or produced much on youtube in general, it almost seems like more work to make a video than just make a post about a solution, but I guess like you said, for seasoned youtubers, making videos must be more second-nature compared with old-fashioned text. :-\

Simon

#59
Yeah, videos for technical newbs are probably OK. I hope that my issue was not newb-level, but I'm never sure. >_>; The video results aren't completely bad, they had basic advice. I'm merely irritated how prominently this appears in search results.




Broccoli (inverted carrot)

I wrote about carrots earlier in this blog: A carrot is a feature that you want in a given program, maybe you push very hard for the feature. But once the feature is in, you don't use it, you're perfectly happy that you could access its power at any time. You believe that you'd be annoyed were the feature removed, even though maybe you wouldn't notice at all.

Carrots are orange, their interesting part is the bottom half. The top half is a boring bush.

Broccoli is green, and the interesting part of broccoli is the fractal twigs at the top. The bottom is a boring stem that tastes like wood. Children don't like broccoli, but it is excellent. It's the main ingredient in the awesome ham-broccoli-creme-fraiche sauce for noodles. Therefore:

A broccoli is a feature you haven't wished for, but once it's there, you clearly see its usefulness and grow accustomed to it. Were it removed, you'd notice its lack. Maybe you even push for it in related applications, but find it hard to justify. The feature looks too expensive for unclear benefit.

Performance is broccoli. Open source is broccoli. D templates are broccoli.

Staircase blueprints (a.k.a. shadows) before a builder assignment sound like broccoli, but I'm not sure. You can explain the idea to anybody on this forum in 5 seconds, and they realize why it's useful. It has minimal interaction with UI, will not break workflows. A good feature that I want in Lix, but not perfect broccoli. I've merely pushed it too far behind in the priority queue, that's the only broccoli potential of blueprints.

Re performance. I've changed a part of the Lix physics from garbage collection to reference counting. Now the automatic replay verifier is 3 % slower. :lix-suspicious: But that should become an entire post with design ideas and tradeoffs.

-- Simon