Rangi42's comments

Rangi42 | 1 year ago | on: FLTK 1.4 Released

Theme author here! I designed those for a few of my C++ programs years ago, back before FLTK had high-DPI support. (I wasn't involved with porting them to fltk-rs, but I'm glad FLTK for Rust has them available!)

At 100% scaling, they look they way they're supposed to.[1] But at other scales, particularly non-integer ones, their drawing code will need updating to use the new fl_override_scale()/fl_restore_scale() API.[2] (Now that 1.4.0 is officially out, I expect to get back to maintaining those programs.)

[1]: https://i.imgur.com/A7CvKFe.png [2]: https://groups.google.com/g/fltkgeneral/c/gcqn9EeA7_A/

Rangi42 | 5 years ago | on: Ask HN: Who wants to be hired? (April 2021)

Location: New York City, NY

Remote: Yes

Willing to relocate: No

Technologies: Java, Spring, C, C++, Python, Spark, SQL, MongoDB, Angular, HTML5, CSS3, Javascript, Typescript, Git, Windows, Linux

Résumé/CV: https://www.linkedin.com/in/remyoukaour/

Email: [email protected]

Experience: 3 years full-stack fintech development; 2 years academic research; various web development; BS+MS in Computer Science

I've worked on a variety of projects in the past few years, from web app frontends and backends to an automated trading system, as well as retro assembly programming in my spare time (it's the polar opposite of Java+Spring's high-level abstraction). I'm seeking full-time employment but would also be open to short-term positions.

Rangi42 | 5 years ago | on: Std::visit is everything wrong with modern C++ (2017)

With C++17's compile-time conditionals, plus good old C preprocessor macros, you could do this:

    #define MATCH_VARIANT(x) [](auto& x)
    #define CASE_VARIANT(x, T) constexpr (std::is_same_v<std::decay_t<decltype(x)>, T>)
    
    MATCH_VARIANT(arg) {
        if CASE_VARIANT(arg, string) {
            printf("string: %s\n", arg.c_str());
            // ...
        }
        else if CASE_VARIANT(arg, int) {
            printf("integer: %d\n", arg);
            // ...
        }
        else if CASE_VARIANT(arg, bool) {
            printf("bool: %d\n", arg);
            // ...
        }
    }
(MATCH_VARIANT could be extended to allow capturing vairables, or just omit that macro, it saves less typing than CASE_VARIANT anyway.)

Rangi42 | 8 years ago | on: Ask HN: Who wants to be hired? (April 2018)

Location: New York City, NY

Remote: Willing to consider

Willing to relocate: No

Technologies: C++, C, Python, Java, PHP, SQL, HTML/CSS, Javascript, Windows, Linux, Git, GUI design, technical writing

Résumé/CV: https://www.linkedin.com/in/remyoukaour/

GitHub: https://github.com/roukaour/

Email: [email protected]

I left Stony Brook University in 2017 with a Master's in Computer Science, and am currently seeking a software development position. I'm open to contract, part-time, or full-time opportunities. I care about writing code that's not just correct, but documented for the developers' sake and designed for the users' sake.

Rangi42 | 8 years ago | on: Ask HN: Who wants to be hired? (January 2018)

Location: New York City, NY

Remote: Willing to consider

Willing to relocate: No

Technologies: C++, C, Python, Java, PHP, SQL, HTML/CSS, Javascript, Windows, Linux, Git, GUI design, technical writing

Résumé/CV: https://www.linkedin.com/in/remyoukaour/

GitHub: https://github.com/roukaour/

Email: [email protected]

I left Stony Brook University in 2017 with a Master's in Computer Science, and am currently seeking a software development position. I'm open to contract, part-time, or full-time opportunities. I care about writing code that's not just correct, but documented for the developers' sake and designed for the users' sake.

Rangi42 | 8 years ago | on: Quadratic voting (2014)

As the paper's abstract states, "Quadratic cost uniquely makes the marginal cost proportional to votes purchased". The full paper shows their proof and the assumptions behind it, such as "an individuals’ value for votes is likely to be approximately linear in the number of votes she casts so long as her utility is driven by the impact she has on the vote total, as argued by Mueller (1973, 1977) and Laine (1977)".

Rangi42 | 8 years ago | on: Quadratic voting (2014)

If merely 100 less-wealthy voters out of the whole population couldn't coordinate to buy a few extra votes—and they wouldn't even have to explicitly communicate, it would just take 100 people who individually hear about the issue and decide to vote more—then how important can the issue really have been to them?

I believe this is what is meant by "the collective decision rapidly approximates efficiency as the number of voters increases".

Rangi42 | 8 years ago | on: What about cartesian programming?

That translates fairly well into Python, with its set type and list/set/dict comprehensions.

    def setrange(first, next, last):
        return set(range(first, last+1, next-first))
    
    fizz = setrange(3, 6, 100)
    buzz = setrange(5, 10, 100)
    fizzbuzz = fizz & buzz
    fizz -= fizzbuzz
    buzz -= fizzbuzz
    num = setrange(1, 2, 100) - fizz - buzz - fizzbuzz
    line_map = dict({n: "Fizz" for n in fizz}.items() +
        {n: "Buzz" for n in buzz}.items() +
        {n: "FizzBuzz" for n in fizzbuzz}.items() +
        {n: n for n in num}.items())
    for i in range(1, 100+1):
        print(line_map[i])
Some SETL features Python lacks:

• No ellipsis notation for ranges; must use the "range" function and add one to the maximum value, or define a custom "setrange" function

• Can't concatenate dictionaries; must concatenate their "items" lists and convert back to a dictionary

• No consistent map-lookup notation; collections are indexed with brackets, but functions are called with parentheses

Rangi42 | 9 years ago | on: Five world map styles

From the Google Maps & Earth Help Forum[1]:

> Why does Google maps use the inaccurate, ancient and distorted Mercator Projection?

> Maps uses Mercator because it preserves angles. The first launch of Maps actually did not use Mercator, and streets in high latitude places like Stockholm did not meet at right angles on the map the way they do in reality. While this distorts a 'zoomed-out view' of the map, it allows close-ups (street level) to appear more like reality. The majority of our users are looking down at the street level for businesses, directions, etc... so we're sticking with this projection for now.

[1]: https://productforums.google.com/forum/#!topic/maps/A2ygEJ5e...

Rangi42 | 9 years ago | on: Zerocoin implementation bug

Apparently those are names for 50 and 100 BTC.

From this presentation[1] or the source code[2]:

    1 Lovelace = 1 Bitcoin
    1 Goldwasser = 10 Bitcoin
    1 Rackoff = 25 Bitcoin
    1 Pedersen = 50 Bitcoin
    1 Williamson = 100 Bitcoin
But yes, those are meaningless names in themselves. Metric prefixes like "hectobitcoin" would be better.

[1]: https://sar.informatik.hu-berlin.de/teaching/2013-w/2013-w%2... [2]: https://github.com/Zerocoin/libzerocoin/blob/master/Coin.h#L...

Rangi42 | 9 years ago | on: How Do I Declare a Function Pointer in C?

"Unambiguous" is not the same as "trivial". C code generally reads left to right, so a trivial syntax for declaring, say, an array of const pointers to functions that take a const pointer to a char and return a const pointer to a char, would have tokens for those things in that order.

Rangi42 | 9 years ago | on: People's underestimation of AI

I'm all for some kind of social support system to help people through automation. Unemployment benefits, basic income, subsidized retraining, those have their merits. But how does giving someone a do-nothing job, where everyone (including the worker) knows they're dead weight, respect their dignity?

Rangi42 | 9 years ago | on: Reflecting on the Right to be Forgotten

Effectively legal? It is legal. I can privately crawl the web for all references to "John Doe", "johndoe.com", "/u/johndoe28", etc, and save them, because it's all content that John Doe chose to make publically available, whether on his own website or on forum posts or Facebook or what.

There's probably some point at which the ways I use that data can be classified as stalking or harassment, but simply collecting it is allowed.

Rangi42 | 9 years ago | on: Nommu Linux

TempleOS already does this. ("This" being "no virtual addresses".)
page 1