HNHacker News
TopNewBestAskShowJobs

Rangi42

444 karma · joined August 17, 2012

submissionscomments
Rangi42··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··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: remy.oukaour@gmail.com

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··on Building a runtime reflection system for Rust (Part 3)
From the article:

> There's an open issue for something like this: Variadic generics[1]. But so far every attempt at an RFC has been closed or postponed.

[1]: https://github.com/rust-lang/rfcs/issues/376

Rangi42··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··on Ask HN: Dark mode for HN please?
Here's my own dark theme userstyle for HN, with the colors from Firefox's dev tools.

For news.ycombinator.com - https://pastebin.com/K1KS64KR

For hn.algolia.com (the search form) - https://pastebin.com/ksH6QcV4

Rangi42··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: remy.oukaour@gmail.com

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··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: remy.oukaour@gmail.com

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··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··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··on YouTube admits 'wrong call' over deletion of Syrian war crime videos
Sounds like the system would be doing its job in that case.
Rangi42··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··on How former professional climate change skeptic Jerry Taylor changed his mind
http://imgur.com/a/JTKqT
Rangi42··on How We Got 10M Teens to Read Fiction on Their Phones
"Chat stories" with "comic-book inspired" young-adult plots, made to be read on mobile phones... Sounds like they've reinvented Japanese cell phone novels[1]. Sci-fi/fantasy YA plots are also common to light novels [2].

[1] https://en.wikipedia.org/wiki/Cell_phone_novel [2] https://en.wikipedia.org/wiki/Light_novel

Rangi42··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··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··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··on New Ubuntu-based Precision line-up
There may still be conference rooms and auditoriums with VGA-only projectors in 2027.
Rangi42··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··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··on Nommu Linux
TempleOS already does this. ("This" being "no virtual addresses".)
Rangi42··on The P programming language
If you can rely on the developer to use gotos in clear patterns like that, then great. But if there is a recognizable pattern, it's an opportunity for the language to provide an alternative like with{} or try{}finally{}.
Rangi42··on Bitcoin Wealth Distribution
"Everything is linear if plotted log-log with a fat magic marker." — Mar's Law
Rangi42··on Facebook deletes Norway PM's post as 'napalm girl' row escalates
That's a false dichotomy, especially since they're getting more flak for deleting the controversial photo than they would have for removing it. It's pretty easy to distinguish between a historically significant photo, to keep, and 4chan-style offensive trolling, to delete. There is a gray area, but this was clearly on the right side of it.
Rangi42··on What typing ^D does on Unix (2009)
But Ctrl is easier to figure out from context, since it's a multi-character Googlable symbol that's even printed on the key.
Rangi42··on I want to motivate you to keep trying to switch to Linux
That cursor bug has bothered me on Xubuntu 16.04. I didn't realize how old it was. Is there a workaround besides "awkwardly save your work and restart using the keyboard and an invisible cursor"? (Please nobody say "stop using a mouse"; just try editing graphics without one.)
Rangi42··on Folding Paper in Half (2015)
You can even solve cubic equations with origami[1], which is what allows you to double a cube and trisect an angle by adding folding to the usual tools of compass and straightedge. (It's still not enough to square the circle.)

[1]: http://math.stackexchange.com/questions/581958/solving-cubic...

Rangi42··on PhpMyAdmin Project Successfully Completes Security Audit
> Because of the large amount of global variables... NCC Group was unable to fully determine the impact of this vulnerability.

In other words, "This project is too full of potential security holes to find the definite ones."

Rangi42··on Test your “free will” at the Aaronson Oracle
I can consistently get 60% by drumming the keys with both index fingers, not consciously picking the values but still generating them myself.
Rangi42··on Microsoft won't back down from Windows 10 nagware 'trick'
One advantage to my grandmother still using Windows XP: it won’t auto-upgrade to Windows 10.
Rangi42··on Europe nearing Google antitrust charges
If cornering 80% of the market is so terrible, the EU should make it illegal to sell the Nth Android phone that pushes past 79%, and/or make it illegal for the customer to buy such a phone.

The absurdity of such a proposed law should make it obvious that Google is doing nothing wrong by selling popular devices with a certain operating system.

Page 1 of 5Next →