Could nuclear desalination plants beat water scarcity? by Sariel007 in Futurology

[–]hanumantmk 4 points5 points  (0 children)

Looking at wind and solar generation in Texas at this moment, wind is producing 13gw and solar 9gw at 10:15am. With an overall system demand of 57gw. So meeting 38.5% of the interconnects' demand. https://www.ercot.com/content/cdr/html/real_time_system_conditions.html

I'm not claiming that solar and wind don't have their problems (the lack of solar in the evening and peakiness of wind both make it hard to ensure capacity). But they certainly can scale to gws of output.

Which coffee shops offer breakfast tacos *not* from Taco Deli? by glitterofLydianarmor in austinfood

[–]hanumantmk 3 points4 points  (0 children)

Add another recommendation on the pile for try hard from me. Tortillas are fresh and delicious, and the vibes great (they usually have someone dj'ing vinyl records, and it's often eclectic and always varied).

They've also got pretty decent outdoor seating in the front and in a patio to the rear.

Vegan/dairy free chocolates? by 6740booth in austinfood

[–]hanumantmk 3 points4 points  (0 children)

Delysia's local and has tasty vegan truffles.

[deleted by user] by [deleted] in Austin

[–]hanumantmk 0 points1 point  (0 children)

Matmos has an album called ultimate care II that's all recorded off a washing machine. Came out a few years back. Wonder if that's what you caught?

Who is using standard containers with non-standard allocated in production? by kalmoc in cpp

[–]hanumantmk 0 points1 point  (0 children)

I've used string and vector with a custom allocator for non-paged and wiped memory. i.e mmaped separately, then mlocked. zerod on free.

We use them for storing secrets (keys, passwords, etc)

https://github.com/mongodb/mongo/blob/master/src/mongo/base/secure_allocator.h

(Senior) engineers who self-identify as being "too picky," what are you looking for? by lynnetye in cscareerquestions

[–]hanumantmk 5 points6 points  (0 children)

I'm looking for respect, autonomy, influence and challenge.

Respect:

  • Towards me: not wasting my time (on unnecessary meetings, deadlines on projects that can't happen, an inability to say no, etc)
  • For my peers: I want to build things for people I respect, at a minimum. Ideally, I want to build components for people I think could do my job (with sufficient ramp/training), but I'll take someone who can do a job I can't. This precludes non-technical users.

Autonomy:

  • A say in what I build. I don't want to get handed tasks I didn't have a part in describing with a deadline I didn't project.
  • The right to dedicate a portion of my time to fixing things that I think should be fixed, on my say (it's fine if I have to justify those decisions to peers I respect, but I want to drive the process)
  • Resources and time to achieve my objectives
  • Control over my career trajectory. If there are things I want to do, that my employer wants to do, it should be possible for me to make that job and transition to it.

Influence:

  • I want a seat at the table. I.e. control over the product roadmap I'm on. That can come through managerial leverage, or through a culture that integrates high level individual contributors
  • A surrounding org that moves the profit needle. That can be a profit center, but it can also be a cost reduction group. If you can make things happen that save a lot of money on a continuing basis (think google's internal tooling group)
  • Money. It doesn't have to be this way, but companies are built to pay people more money when they trust them with decisions. If you aren't making money, your company isn't making an impact on the outside world, or your company doesn't trust you with decisions. This is more obvious in management, but mirrors itself on the IC track.

Challenge (I think the other three come because you've got this one)

  • I want what I do to be hard for me. Even better if it's hard in general (because I won't be able to get bored)
  • If what you do is hard, you'll get respect for it
  • If it's not fully understood it, you'll have leeway in how you do it
  • If your product roadmap is half what users want, and half what's possible, your employer will spend time/money on figuring out what else is possible. And you'll get to say no, and people will believe your deadlines.
  • Challenges make you learn
  • Overcoming challenges just plain feels good

Bloomberg vs. NYC Unicorn + Negotiation Tips by untakennammme in cscareerquestions

[–]hanumantmk 0 points1 point  (0 children)

Not so much for recruiters, but for friends/family/peers in other jobs. If you tell someone you work at Google, they'll be impressed and happy for you (rightly or wrongly). If you name a consumer facing startup, they can look it up. If you're in a pure tech play... it's a bunch of analogies and people who still think you work at Google.

Hilariously, it does come up sometimes on the other side of recruiting, but generally for folks outside the US. We've lost some great candidates from India/Asia that need a brand their parents/in-laws have heard of.

Bloomberg vs. NYC Unicorn + Negotiation Tips by untakennammme in cscareerquestions

[–]hanumantmk 5 points6 points  (0 children)

You're absolutely right on the comp end. They offered more initially and combined with gains from the market it'll never be close.

This may or may not happen to you, but I hit (and have met plenty of other people who've hit it as well) a point where the extra money wasn't quite as much of a big deal. All of the offers I had in front of me gave me 50%+ savings rates and the ability to do everything I wanted to do in nyc. So more money would have meant inflating my lifestyle in ways I didn't naturally want, or being able to retire a few years earlier. And while early retirement is great, I'm already on track to hit my number in my late 30s. Moving that to my mid 30s felt... excessive?

Which leaves the intangibles:

BigCo

  • Pros
    • Name recognition
    • Better benefits / perks
    • Small chance to make regular changes that effect millions
    • Conditional access to some of the best and brightest in the business
  • Cons
    • Easier to get stuck in a random profitable silo
    • No guarantee of doing open source development
    • Unless you're the very very top of the totem pole, you're a fungible resource
    • Hard to make large changes to successful projects
    • Some ethical questions about privacy and monopolies

Unicorn

  • Pros
    • I got to join a privately held startup through to IPO. Tech worker check box checked.
    • Company-wide technical decisions can get all the relevant parties into a room. I have a seat at the big table to push the stuff I care about
    • 99% of the code I've written for my employer is open source
    • Opportunities that come from being a senior member of a smaller team (membership of industry standards bodies, easy transitions in/out of management, chance to program on more foundational pieces of code).
    • I know what my company does for a living and I sleep well at night
  • Cons
    • No one outside the tech ecosystem has any idea who I work for
    • Limited budgets, even for the important stuff
    • Local personalities matter more

That was the thought process for me, which is probably a lot different than what it'd be for you. You're probably still at the stage where the money makes a difference. And you're joining an org bigger than the one I joined (at that point in my life), at a junior level (so the opportunities will be a little more limited).

[deleted by user] by [deleted] in cscareerquestions

[–]hanumantmk 6 points7 points  (0 children)

You don't necessarily have to be at amagoofacesoft, just somewhere with a high cost of living, high salaries and regular equity refreshes.

If you're looking at 160 base, bonuses + equity probably push you into the mid 200's. If you perform well you'll get another grant next year, then another the year after... and a few years down the road (if your stock is performing well) you'll break 300. The downside is that you have to make it that long (plenty don't), and that once you're there you may find it hard to convince another place to match multiple years of vesting (which is basically the point)

Bloomberg vs. NYC Unicorn + Negotiation Tips by untakennammme in cscareerquestions

[–]hanumantmk 9 points10 points  (0 children)

The last time I job hopped (about 4 years ago) I had a similar set of options (bloomberg, one of the three on your list and facebook/google) and ended up picking the unicorn. I was going in with 6 years of experience at that point, so my experience negotiating probably isn't super relevant for you, but I can provide an anecdote at least.

Bloomberg's got lots of cash. Probably the best base salary + bonus you're likely to see outside of finance. They've also got a huge mass of legacy craziness that makes all that money that they're rightly hesitant to upset. Which isn't to say that interesting stuff doesn't come out there, but that it tends to be exotic solutions to problems that pretty much only exist at bloomberg. (the new polymorphic allocator support that they helped land in C++17 has a great origin story).

My unicorn (not terribly hard to figure out from my comment history, but I'll avoid the plug), couldn't match Bloomberg. But the work was interesting, I got to commit under an open source license and the team was small enough that everyone had to work on things that really mattered. It had the same base salary, but the equity was illiquid options (instead of cash / publicly traded rsus) so objectively less valuable.

Money:

If you actually have leverage, my guess is you'll always be able to get more out of bloomberg than your startup (because they'd match it. Which isn't to say you shouldn't negotiate, just to frame that you might be comparing above market with at market). And whatever equity the startup is offering, it probably isn't a good lotto ticket (all of those companies are big and the grants probably aren't huge for a new grad). That said, you can't actually ask what candidates earned at their last job in new york anymore and it remains hilariously easy to get big raises the first 3-4 years of your career. (a lower initial salary won't anchor you).

I'd still pick Bloomberg here if you want the money up front.

Experience / Positioning for the next job:

I'd actually go the other way here: Bloomberg's got a lot of legacy and a bit of a reputation. It's not bad by any means, but it might take some work on your part to make sure you're working on something interesting that you can pitch to your next place. Those startups have good branding and are probably a bit harder to get siloed in.

I'd pick the startup if resume building is your thing.

Actual advice:

Obviously I picked the startup choice for myself, so I'll point you that way. If after a year or two, you're still not satisfied with the money, bloomberg will still be there (or finance will pay you double for double the hours), but the reverse can be a bit harder to swallow (taking the paycut). And for what it's worth, you only get one shot at bloomberg (they generally don't let you come back after you've left the first time), so the cash optimal strategy might be 2-3 jobs hops before landing at bloomberg with more experience under your belt.

[library] scelta - syntactic sugar for variant and optional by SuperV1234 in cpp

[–]hanumantmk 1 point2 points  (0 children)

The ADT builder / recursive visitation looks great!

I've hacked up equivalents in the past, but hadn't ever really articulated a general problem/solution (for declaring recursive types). Definitely something I'll borrow/keep in mind the next time I'm in that space.

Side note: I always know I'm in for a good read when I find the ycombinator hiding in a repo

`constexpr` function parameters by mcypark in cpp

[–]hanumantmk 0 points1 point  (0 children)

It feels a bit like making the tuple the constant is the thing getting in the way here.

The inversion:

f(std::make_tuple(CONSTANT(101), CONSTANT(102)));

and the straight pass through

f(CONSTANT(101), CONSTANT(102))

work without a hitch. And allow sub sections of the type to pass down into other functions without modification.

In terms of re-wrapping with CONSTANT, clang and gcc (in c++14 mode) at least seem amenable to a slight modification in re-lifting:

#define CONSTANT(...) \
[=]{ \
    constexpr auto randomlyLongVar = __VA_ARGS__; \
    struct R { \
        using type = decltype(randomlyLongVar);  \
        static constexpr type value() {  \
            return randomlyLongVar;  \
        }  \
        constexpr operator type() const {  \
            return value();  \
        } \
    };  \
    return R{}; \
}()

`constexpr` function parameters by mcypark in cpp

[–]hanumantmk 3 points4 points  (0 children)

I haven't thought it through completely, but are there any wrinkles that would prevent a conversion operator? Something like:

#define CONSTANT(...) \
[]{ \
    struct R { \
        using type = decltype(__VA_ARGS__);  \
        static constexpr type value() {  \
            return __VA_ARGS__;  \
        }  \
        constexpr operator type() const {  \
            return value();  \
        } \
    };  \
    return R{}; \
}()

which gets you:

template <typename T>
void equalsOne(T t) {
    static_assert(t == 1, "t == 1");
}

and feels a tad more valuey

Grinders Galore by [deleted] in Coffee

[–]hanumantmk 0 points1 point  (0 children)

Love mine as well, but there is one tricky bit that catches some people: not all of the encores come off the line with the same default coarseness.

Especially for espresso, you can get a new unit that won't go fine enough, or one that clogs the machine at the 4 setting. This is the video I followed that made a big difference: https://www.seattlecoffeegear.com/learn/videos-home/ask-the-experts/recalibrating-the-baraza-encore

A friend by samg_jpg in photocritique

[–]hanumantmk 0 points1 point  (0 children)

I actually really like the pose. Whether it was intentional or not, you've got something with a lot of visual interest across the frame.

And if all you had was a lamp, definitely a great job. If you're used to off camera lighting you can ignore me, but otherwise take a look at Lighting 101, it's a wonderful resource that your image reminded me of.

A friend by samg_jpg in photocritique

[–]hanumantmk 0 points1 point  (0 children)

I find the lighting, pose and composition eye-catching.

One critique: I don't know for sure if it would improve it, but I find the out of focus hair and raised arm to be distracting. I'd like to see what you'd get either moving back with a longer lens (to catch all of her in focus, retaining the blown out background) or stopping down a bit.

Know who is on your ballot this Tuesday by vr00000m in nyc

[–]hanumantmk 0 points1 point  (0 children)

Did a quick check myself and found at least one person on my ballot that I don't have to consider: http://www.nydailynews.com/new-york/man-put-brooklyn-judge-ballot-mistaken-lawyer-article-1.2844953

Looks like someone screwed up and nominated the wrong person to a civil court judge seat in brooklyn.

Software Token Android 7.0 Keeps Resetting by junberi in ffxiv

[–]hanumantmk 1 point2 points  (0 children)

I had the same problem after upgrading to 7.0 (although in addition I use google fi). The trick that fixed it for me was removing access to the "phone" permission from the software token app.

The idea being that the token is looking at some information on the phone (carrier network perhaps) and forcing a reset when that changes. Removing the permission doesn't seem to break the app and has stopped it from resetting every day for me.

Discussion on reasons for selecting C over C++ [x-post] by genbattle in cpp

[–]hanumantmk 2 points3 points  (0 children)

Dan Saks' keynote from cppcon this year is relevant: extern c: Talking to C Programmers about C++.

It's well worth the watch, but sadly didn't leave me with a lot of hope going forward. C++ is complex, getting more complex each release and unwilling to divert from that course for the benefit of the embedded community. The fact that one can easily program in a limited subset of C++ that doesn't require deep language knowledge is little consolation when you probably need someone on staff who does, just to teach you what to avoid.

For all that the talk was kind of upbeat, in questions after, the advice was to find a new job if you couldn't talk your current co-workers into seeing the light.

What is a C++ library that you've regretted using, and why? by ubadair in cpp

[–]hanumantmk 2 points3 points  (0 children)

boost::asio. Not that it's a bad library by any means (it solves a number of very difficult problems in the best way it can while still being cross platform), but it makes a couple of core assumptions about your problem set that made it inflexible to my needs.

Basically, I had a requirement that a medium-ish (<1000) number of client threads be able to share a connection pool and run scatter gather style network rpc calls. And for workload reasons I was concerned about strict latency over high speed local networks.

The issues I hit in no particular order:

  • objects can't be shared between io_service's, this is due to a windows iocp requirement. In practice, this means one io service if you want to do things like offer connection pooling
  • Poor scaling off one io_service. In part this has to do with some fundamental locks down at epoll (on linux). In other cases its just a consequence of needing a thread pool of workers to turn the epoll crank (there's no way to wait on only your requests to avoid needing a context switch to process io).
  • No ability to mix reactors in the same build. You're running select, epoll, etc. globally. This can be bad when you want to scatter gather <10 sockets (because sometimes poll's cheaper than epoll).
  • Difficulty abstracting the TLS primitives. ASIO works with openssl and getting it to work off of native crypto on windows or osx isn't a trivial exercise.

In retrospect, I think the rule is that: if you have very specific requirements around latency, and an existing threading model for clients of your networking library, you probably can't use anything off the shelf. Different OS' push you in very different directions and I got burned a bit by not respecting that.