The Official Status Thread


  • FoxDev

    yes. catchy tune though.


  • FoxDev

    …there's a Megadeth cover:
    https://www.youtube.com/watch?v=7iRJMErDh9k


  • FoxDev

    original is funny though.....

    https://www.youtube.com/watch?v=XBX88lYivxg



  • Status: I took my laptop apart to clean it, then put it back together... and it still works! 😮 I am honestly a bit surprised.



  • @ben_lubar said:

    You should convert to the religion that only eats pork.

    Southern Baptist?


  • Grade A Premium Asshole

    Status: At 9AM this morning I started tearing up flooring with the intention of laying tile today and grouting tomorrow.

    It is 10PM and there are no tile laid and I just poured myself a stiff drink. It has been quite the day. Also, quite the stack of Home Depot receipts...



  • const size_t dql_num_states = ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25;
    const size_t dql_num_actions = df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1;
    const size_t dql_temporal_window = 1;
    
    typedef bool dql_input[dql_num_states*dql_temporal_window + dql_num_actions*dql_temporal_window + dql_num_states];
    template<typename parent_t>
    typedef ReLU<FullyConn<parent_t, dql_input, 50>, dql_input> dql_fc;
    typedef Regression<dql_fc<dql_fc<Input<dql_input, dql_num_states, dql_num_actions, dql_temporal_window> > >, dql_input, dql_num_actions> dql_network;
    typedef Trainer<dql_input, dql_network> dql_trainer;
    typedef Brain<dql_network, dql_trainer, df::interface_key, dql_num_states, dql_num_actions, dql_temporal_window> dql_brain;
    

    Status: apparently this is illegal C++ because I'm using templates in typedefs. They want me to write this:

    Brain<Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25, df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1, 1>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], 50>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25]>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], 50>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25]>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1>, Trainer<bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25, df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1, 1>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], 50>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25]>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], 50>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25]>, bool[((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25*1 + df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1*1 + ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25], df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1> >, df::interface_key, ((1<<8 /* ch */) + (1<<4 /* fg */) + (1<<3 /* bg */)) * 80 * 25, df::enum_traits<df::interface_key>::last_item_value - df::enum_traits<df::interface_key>::first_item_value + 1, 1>
    

    as the type name.



  • I believe that

    template<typename T>using Bob = SomeOtherType<T>;
    

    is equivalent to

    template<typename T>typedef SomeOtherType<T> Bob;
    

    except it has the advantage that it's actually valid C++ syntax and should actually compile.

    See here, for example....



  • Well, it works...

    Scanning dependencies of target dql
    [ 95%] Building CXX object plugins/dql/CMakeFiles/dql.dir/dql.cpp.o
    In file included from /home/ben/dfhack/plugins/dql/fc.h:5:0,
                     from /home/ben/dfhack/plugins/dql/dql.cpp:13:
    /home/ben/dfhack/plugins/dql/relu.h: In instantiation of ‘class ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>’:
    /home/ben/dfhack/plugins/dql/layer.h:51:14:   required from ‘class Layer<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u>’
    /home/ben/dfhack/plugins/dql/fc.h:9:7:   required from ‘class FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>’
    /home/ben/dfhack/plugins/dql/relu.h:9:7:   required from ‘class ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>’
    /home/ben/dfhack/plugins/dql/layer.h:51:14:   required from ‘class Layer<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/fc.h:9:7:   required from ‘class FullyConn<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u, false>’
    /home/ben/dfhack/plugins/dql/layer.h:51:14:   required from ‘class Layer<FullyConn<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u, false>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/layer.h:56:7:   required from ‘class LossLayer<FullyConn<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u, false>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/regression.h:11:7:   required from ‘class Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/brain.h:45:15:   required from ‘class Brain<Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u>, Trainer<bool [1121481], Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u> >, df::enums::interface_key::interface_key, 560000u, 1481u, 1u>’
    /home/ben/dfhack/plugins/dql/dql.cpp:112:39:   required from here
    /home/ben/dfhack/plugins/dql/layer.h:9:25: error: ‘const size_t Layer<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u>::out_size’ is inaccessible
         static const size_t out_size = size;
                             ^
    In file included from /home/ben/dfhack/plugins/dql/dql.cpp:14:0:
    /home/ben/dfhack/plugins/dql/relu.h:9:7: error: within this context
     class ReLU : public Layer<parent_t, input_t, parent_t::out_size> {
           ^
    In file included from /home/ben/dfhack/plugins/dql/fc.h:5:0,
                     from /home/ben/dfhack/plugins/dql/dql.cpp:13:
    /home/ben/dfhack/plugins/dql/relu.h: In instantiation of ‘class ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>’:
    /home/ben/dfhack/plugins/dql/layer.h:51:14:   required from ‘class Layer<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/fc.h:9:7:   required from ‘class FullyConn<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u, false>’
    /home/ben/dfhack/plugins/dql/layer.h:51:14:   required from ‘class Layer<FullyConn<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u, false>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/layer.h:56:7:   required from ‘class LossLayer<FullyConn<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u, false>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/regression.h:11:7:   required from ‘class Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u>’
    /home/ben/dfhack/plugins/dql/brain.h:45:15:   required from ‘class Brain<Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u>, Trainer<bool [1121481], Regression<ReLU<FullyConn<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 1481u> >, df::enums::interface_key::interface_key, 560000u, 1481u, 1u>’
    /home/ben/dfhack/plugins/dql/dql.cpp:112:39:   required from here
    /home/ben/dfhack/plugins/dql/layer.h:9:25: error: ‘const size_t Layer<ReLU<FullyConn<Input<bool [1121481], 560000u, 1481u, 1u>, bool [1121481], 50u, true>, bool [1121481]>, bool [1121481], 50u>::out_size’ is inaccessible
         static const size_t out_size = size;
                             ^
    In file included from /home/ben/dfhack/plugins/dql/dql.cpp:14:0:
    /home/ben/dfhack/plugins/dql/relu.h:9:7: error: within this context
     class ReLU : public Layer<parent_t, input_t, parent_t::out_size> {
           ^
    make[2]: *** [plugins/dql/CMakeFiles/dql.dir/dql.cpp.o] Error 1
    make[1]: *** [plugins/dql/CMakeFiles/dql.dir/all] Error 2
    make: *** [all] Error 2
    

    layer.h:8-9:

    public:
        static const size_t out_size = size;
    

    why can't it access a public static constant integer?



  • OK, that's a genuinely interesting problem. Either *mutter mutter* template syntax, or is any other class defining an out_size which isn't public?

    I haven't been able to make a toy example with the same error and without seeing any information other than the build failure, any suggestion is going to be speculative, but this seems like a clue...

     class ReLU : public Layer<parent_t, input_t, parent_t::out_size> {
    

    Is that other parent_t::out_size being brought into scope which is confusing things?



  • 👨😧😦



  • sizeof(T) == 458214804

    WHAT HAVE I DONE



  • class FullyConn : public Layer<parent_t, input_t, num_neurons> {

    Yeah, I had a suspicion something like that might be part of the solution...



  • What does class A : B even do? It's not public, protected, or private. It should be a warning at least.



  • class A: B means class A: private B means B is being privately inherited. It's another example of C++ deciding on a default behaviour which is absolutely not the one you want.

    (struct A: B would mean B is publically inherited, which is 90% of the time what you want, so I tend to prefer struct over class in my private code for that reason alone...)



  • @ben_lubar said:

    WHAT HAVE I DONE

    Touched yourself in God's presence.


  • Discourse touched me in a no-no place

    Love the length of that error message. Templates FTW on the understandability front!



  • Status: In this run, pretty much every pickup was tears up. All things die in one hit.


  • ♿ (Parody)

    @ben_lubar said:

    You should convert to the religion that only eats pork.

    You can have my veal when you pry it from my cold dead hands.


  • ♿ (Parody)

    @Onyx said:

    Is it?

    I wouldn't put it there. But I wouldn't capitalize the S. So: PMs.


  • Discourse touched me in a no-no place

    Would probably spill my drinks too!


  • Discourse touched me in a no-no place

    Status: Just watched people serve beer from the Mannekin Pis. Only in Belgium.


  • BINNED

    Status: Discourse is attempting to suck out the remains of my sanity by showing 1 new topic all the time and clearing it on refresh.

    Probably something in articles / hidden categories. Broken piece of...


  • Discourse touched me in a no-no place

    I've seen that before. Wish it wouldn't…


  • BINNED

    Status: trying to disable a userscript:

    Umm... What? Apply this action... Start? How long is it supposed to take? Do I have to wait 5 minutes or something?

    Well, apparently. Because the damned thing is still enabled.



  • I get it now and again. When it first happened, it was because someone made a topic in a category I track (so the topic was tracked) then moved it to a category I have muted.

    Since then, it's happened a few more times and I couldn't find a topic that met that criteria.



  • What what's your win streak now? -463?



  • @blakeyrat said:

    What what's your win streak now? -463?

    I broke through that. I'm running out of things to win here. Have to find a new action roguelite podcast game.



  • @cartman82 said:

    Have to find a new action roguelite podcast game.

    Ok "action" game, yes. "roguelike" game, sure. "action roguelike", why not. "action roguelike podcast"? Now I'm stumped.

    In what way is Binding of Isaac a "podcast" game?



  • @blakeyrat said:

    In what way is Binding of Isaac a "podcast" game?

    • Can turn off sound
    • No great concentration required, especially no reading
    • Can play over and over again, yet there is still some progression
    • Can play with just keyboard (gamepad would work too, but I prefer keyboard)

    Other suitable "podcast games" I found: Rogue Legacy, Hero Siege, Pro Evolution Soccer master league mode (yes), Heroes of Broken Land... there were more. Hmm, I should make a list or something.



  • @cartman82 said:

    Can play with just keyboard (gamepad would work too, but I prefer keyboard)

    The original Binding of Isaac promised controller support and never fucking bothered to implement it, and yes I'm still bitter about those lying liars lying to me, the fuckers.

    You can't play a game like that with a keyboard. They should just renamed it, "The Binding Of Your Fingers Before The Doctor Has To Do Your Carpel Tunnel Surgery" because seriously. Fuck keyboards.

    @cartman82 said:

    Heroes of Broken Land... there were more. Hmm, I should make a list or something.

    Stick with the classics, Bejeweled and Peggle.



  • @blakeyrat said:

    You can't play a game like that with a keyboard.

    QFT. I play almost everything with a keyboard, but that is one of the major exceptions.
    Good thing Joy2Key exists if you need to force working controller support.



  • @aliceif said:

    Good thing Joy2Key exists.

    THEY LITERALLY PRINTED THIS BULLSHIT ON THE TITLE SCREEN OF BINDING OF ISAAC INSTEAD OF SHIPPING THE PROMISED FEATURE!

    ... seriously that made me mad.



  • @blakeyrat said:

    You can't play a game like that with a keyboard. They should just renamed it, "The Binding Of Your Fingers Before The Doctor Has To Do Your Carpel Tunnel Surgery" because seriously. Fuck keyboards.

    For me it's the other way around. My hands start hurting after half an hour with joypad. No problems with keyboard.

    @blakeyrat said:

    Stick with the classics, Bejeweled and Peggle.

    Too puzzle like. The point is for hands to play the game, while brain is listening to audio.


  • BINNED

    Status: Playing Völgarr the viking. Bloody hell guys, you could've given me an option to have a checkpoint before the boss. It would still be challenging due to lack of upgrades. This is just tedious since you're bound to die at least once while figuring out the patterns so level replaying is almost inevitable.

    Also, I need a new gamepad, this one's done for. Buttons are starting to stick, causing double jumps when I don't want to make one...



  • @Onyx said:

    Status: Playing Völgarr the viking. Bloody hell guys, you could've given me an option to have a checkpoint before the boss. It would still be challenging due to lack of upgrades. This is just tedious since you're bound to die at least once while figuring out the patterns so level replaying is almost inevitable.

    That game is for masochists. I can't stand infinitely spawning enemies. Too much stress.



  • Status: removed references to std::vector in my code. Now the struct is 573,734,476 bytes. That's probably still too much to load into a 32 bit process that's already struggling to fit in memory.


  • BINNED

    @cartman82 said:

    That game is for masochists. I can't stand infinitely spawning enemies. Too much stress.

    I'm fine with those because they at least have predefined spawning spots (not like, for example, Ghosts & Goblins, where they keep spawning under your feet / on the platform you're aiming for while you're mid-jump).

    But there are these complete asshole bits, where you have to jump offscreen and they stuck a fucking arrow traps right where you land.

    Also, need to switch to keyboard. This is like the 5th time I died due to sticky buttons and my character rolling instead of jumping (and, subsequently, dying due to a spear getting shoved up his... spine).


  • BINNED

    @loopback0 said:

    watched people serve beer from the Mannekin Pis.

    Sure it where locals?
    Who am I kidding, of course they where


  • Discourse touched me in a no-no place

    @ben_lubar said:

    That's probably still too much to load into a 32 bit process that's already struggling to fit in memory.

    How much of that is actually hot memory? Are you using high-dimensional arrays in there? (In case you are, did you know that using a map with a struct key containing the indices might let you say the same thing as you actually mean in a lot less space? And that this can speed your code up a lot by being much more cache-friendly?)


  • BINNED

    Ok, I give up for tonight. I switched to keyboard and keep hitting the wrong buttons. Why? Fuck knows.



  • @Onyx said:

    Status: Playing Völgarr the viking.

    Yeah I played that when it was free on Xbone Gold. There's "difficult fun" and there's "difficult tedious annoying", and I definitely had Volgarr put in the latter camp.



  • Well, most of the space is a multidimensional array of floats. All of the floats get updated after each iteration because that's how it learns.


  • ♿ (Parody)

    Taxes: How do they work?


  • BINNED

    Status: Didn't stop playing. Finally killed the fucking boss. Figured out my problem: I was waiting for it to telegraph it's attack. Nope, wrong move, that's too late, so I just had to use judgment calls on the timing -.-


  • FoxDev

    @boomzilla said:

    Taxes: How do they work?

    Well, you call dispatch and order one, then when it arrives you get in and it takes you where-

    Oh, wait, I'm thinking of taxis 😊


  • Java Dev

    @boomzilla said:

    Taxes: How do they work?

    Apparently via a web application this year, instead of a downloadable one. Worked pretty smoothly. Had to log in again at the end for some reason to upload it? Weirdness. End result same as last year: Several k rebate.



  • @PleegWat said:

    End result same as last year: Several k rebate.

    You need to adjust your withholdings. It'll never be perfect, but a rebate of several thousand indicates you can do better.



  • Status: off to see if I can fix a leaking faucet without leaving my entire house without water until I can get a plumber to visit.

    (For those not keeping track of offhand things I said a month or two ago, the builders of my house apparently didn't know what "valves" are and so there aren't any. To turn off water to this faucet I have to turn it off to the entire house at the meter.)


  • FoxDev

    Status: Wondering how many Amy Rose reaction images is too many…


Log in to reply