HN user

Cyther606

228 karma
Posts1
Comments99
View on HN

It has a clear purpose the public can get behind, but it will almost certainly be abused for persecuting domestic political rivals, software developers among them.

Here are some entertaining thought exercises:

A cyber 9/11 is linked to Bitcoin. Can Bitcoin developers be sanctioned?

A cyber 9/11 is linked to Tor. Can Tor developers be sanctioned?

You donate to Wikileaks, which is linked to a national security threat. Can you be sanctioned?

Section 1(ii)(B) applies to _any_ individual or entity, domestic or abroad, developing or facilitating development of pentesting or related software employed against vague and faceless "national security interests". But don't you worry, because this is only applicable to the "Chinese" threat which may actually be true for the first couple of years to build political support for the eventual, predictable abuses of power.

How considerate. As if the legal system matters at all to the existence of the NSA. Wikimedia's case notwithstanding, it's abundantly clear the spy agencies can only be peacefully resisted with privacy enhancing technology. It's obvious why they've been degrading public cryptographic standards and pushing for back doors.

The Stasi controlled every aspect of life in East Germany, including the postal service and communications industry. In the US, FOIA documents reveal a history of domestic political spying on civil-rights leaders such as MLK, and on a wide variety of legitimate organizations.

Throughout history, suspicionless surveillance has been carried out by mafioso to oppress and control.

Of your suspicionless surveillance, you assert "this time is different". The assertion fails.

The Nazis could use your arguments word for word on dissenters of the Gestapo.

Barbaric methods of violating private property, kewl?

Thanks Mao, but everything is relative. Maybe what you need is a nice fat doobie. While you're lighting up next to me, know that I as a proud simpleton, find cans of _diesel fuel_ to be "technically impressive". Imagine that?

Piece by piece, you cease to exist. It takes about half an hour to vanish someone, completely.

https://news.vice.com/article/how-a-mexican-cartel-demolishe...

You can do worse than pip and virtualenv, yes, but I wouldn't call pip the cream of the crop by any means. NPM is way easier to use for starters, and Go, Rust and Nim go one step beyond NPM by compiling language dependencies down to a single binary file which can be shipped to users. It's very succinctly done.

Python really needs to step up the game to stay ahead of up and coming languages like Nim, which looks like this:

    import rdstdin, strutils

    let
      time24 = readLineFromStdin("Enter a 24-hour time: ").split(':').map(parseInt)
      hours24 = time24[0]
      minutes24 = time24[1]
      flights: array[8, tuple[since: int,
                              depart: string,
                              arrive: string]] = [(480, "8:00 a.m.", "10:16 a.m."),
                                                  (583, "9:43 a.m.", "11:52 a.m."),
                                                  (679, "11:19 a.m.", "1:31 p.m."),
                                                  (767, "12:47 p.m.", "3:00 p.m."),
                                                  (840, "2:00 p.m.", "4:08 p.m."),
                                                  (945, "3:45 p.m.", "5:55 p.m."),
                                                  (1140, "7:00 p.m.", "9:20 p.m."),
                                                  (1305, "9:45 p.m.", "11:58 p.m.")]

    proc minutesSinceMidnight(hours: int = hours24, minutes: int = minutes24): int =
      hours * 60 + minutes

    proc cmpFlights(m = minutesSinceMidnight()): seq[int] =
      result = newSeq[int](flights.len)
      for i in 0 .. <flights.len:
        result[i] = abs(m - flights[i].since)

    proc getClosest(): int =
      for k,v in cmpFlights():
        if v == cmpFlights().min: return k

    echo "Closest departure time is ", flights[getClosest()].depart,
      ", arriving at ", flights[getClosest()].arrive
And performs like this:
    Lang    Time [ms]  Memory [KB]  Compile Time [ms]  Compressed Code [B]
    Nim          1400         1460                893                  486
    C++          1478         2717                774                  728
    D            1518         2388               1614                  669
    Rust         1623         2632               6735                  934
    Java         1874        24428                812                  778
    OCaml        2384         4496                125                  782
    Go           3116         1664                596                  618
    Haskell      3329         5268               3002                 1091
    LuaJit       3857         2368                  -                  519
    Lisp         8219        15876               1043                 1007
    Racket       8503       130284              24793                  741
http://goran.krampe.se/2014/10/20/i-missed-nim/

I see Go and OCaml recommended to people fed up with Python's lack of static typing, and I just cringe. I love experimenting with programming languages, and Go seems to be picking up momentum but unfortunately for both Go and OCaml, they have this ridiculously restrictive syntax to them respectively which it makes it deeply unattractive for prototyping anything.

If you're looking for a statically typed Python that can be grokked in a matter of minutes, and compiles down to a static binary like Go does, and runs as fast as C in benchmarks, you should definitely check out the Nim compiler [1].

Code example:

    import rdstdin, strutils

    let
      time24 = readLineFromStdin("Enter a 24-hour time: ").split(':').map(parseInt)
      hours24 = time24[0]
      minutes24 = time24[1]
      flights: array[8, tuple[since: int,
                              depart: string,
                              arrive: string]] = [(480, "8:00 a.m.", "10:16 a.m."),
                                                  (583, "9:43 a.m.", "11:52 a.m."),
                                                  (679, "11:19 a.m.", "1:31 p.m."),
                                                  (767, "12:47 p.m.", "3:00 p.m."),
                                                  (840, "2:00 p.m.", "4:08 p.m."),
                                                  (945, "3:45 p.m.", "5:55 p.m."),
                                                  (1140, "7:00 p.m.", "9:20 p.m."),
                                                  (1305, "9:45 p.m.", "11:58 p.m.")]

    proc minutesSinceMidnight(hours: int = hours24, minutes: int = minutes24): int =
      hours * 60 + minutes

    proc cmpFlights(m = minutesSinceMidnight()): seq[int] =
      result = newSeq[int](flights.len)
      for i in 0 .. <flights.len:
        result[i] = abs(m - flights[i].since)

    proc getClosest(): int =
      for k,v in cmpFlights():
        if v == cmpFlights().min: return k

    echo "Closest departure time is ", flights[getClosest()].depart,
      ", arriving at ", flights[getClosest()].arrive
Statistics (on an x86_64 Intel Core2Quad Q9300):
    Lang    Time [ms]  Memory [KB]  Compile Time [ms]  Compressed Code [B]
    Nim          1400         1460                893                  486
    C++          1478         2717                774                  728
    D            1518         2388               1614                  669
    Rust         1623         2632               6735                  934
    Java         1874        24428                812                  778
    OCaml        2384         4496                125                  782
    Go           3116         1664                596                  618
    Haskell      3329         5268               3002                 1091
    LuaJit       3857         2368                  -                  519
    Lisp         8219        15876               1043                 1007
    Racket       8503       130284              24793                  741
This language deserves your attention.

[1] http://goran.krampe.se/2014/10/20/i-missed-nim/

[2] https://github.com/Araq/Nim/wiki/Nim-for-C-programmers

Gordon Duff is a Marine combat veteran of the Vietnam War. He is a disabled veteran and has worked on veterans and POW issues for decades [1].

In a video published on Liveleak, a close range “execution style” shows no blast effect or blood, from a weapon capable of devastating effect. (See YouTube demonstration of AK47 effect [2])

Ballistics experts consulted today describe videos of the French attack as “staged theatrical events.” Other than the suspicious HD video, experts have already noted that, without coming close to “conspiracy theory” dot-connecting, the weapons eject no shell casings, bullets supposedly hit concrete with no effect whatsoever, even from “point blank” range.

You see, the AK47 round, 7.62×39 is not only very powerful but typically has a steel core for penetrating body armour. When hitting concrete, an AK round throws up large chunks of debris, unseen in this event.

Preliminary analysis of the audio as well demonstrates a frequency indicating the subsonic report of a blank round. In an “urban canyon,” a supersonic round from an assault rifle creates a noticeable high frequency “crack” with a secondary “report” or echo, generally described as “crack-pop.”

It has taken only a few hours for press outlets to question perfectly timed HD video from a seemingly fearless bystander who is witnessing actors firing blanks incapable of operating the ejection system of a weapon, imaginary bullets that leave concrete pristine and blood free.

1. http://www.veteranstoday.com/2015/01/15/neo-paris-terror-the...

2: https://www.youtube.com/watch?v=YLB36UxWD0M

Tor Browser is perfectly suitable for everyday browsing. When's the last time you used it for any significant period of time? It's plenty speedy and very stable.

Please, instead of bemoaning your complete lack of privacy online, do something about it for a change. Download Tor Browser right now.

Tor Browser bundle on Win/Mac/Linux: https://www.torproject.org/download/download-easy.html.en

Orweb on Android: https://play.google.com/store/apps/details?id=info.guardianp....

OnionBrowser on iOS: https://itunes.apple.com/us/app/onion-browser/id519296448?mt....

Nowhere did I state the US did this. Nowhere did I state real people didn't die. I unequivocally stated and continue to insist this police officer did not die since was he wasn't so much as grazed by a single bullet.

Show me _any_ video of a loaded AK-47 being fired, even from a _prone position_, wherein zero recoil is exhibited by the weapon. It is simply not credible to claim AK-47s can be fired with zero recoil. That is a patent impossibility unless blanks are fired. At a minimum, if the muzzle of the weapon doesn't rise, then the energy should be transferred into the shoulder of the shooter. The energy from the gunpowder being ignited has to transfer somewhere, unless there was no gunpowder to begin with. It's even more unbelievable to see a Kalashnikov exhibit no recoil while being fired by a running person _mid-stride_.

Think for yourself. Who benefits most from animosity towards radical Muslims.

Watch the raw, uncut video of the supposed police shooting for yourself, right now: http://www.liveleak.com/view?i=bc6_1420632668

You will see:

- No blood, anywhere on the scene. Zero blood from the policeman "shot" with a 7.62mm round at point blank range.

- No flinching of the policeman "shot" at point blank range.

- Zero recoil exhibited by the Kalashnikov

Cross check this video with any other AK-47 video on Youtube.

View it in slow motion: https://www.youtube.com/watch?v=v_c4IUO6h7w

I may not be active duty military and a ballistics expert but I implore you to watch this quick video of the shooting: http://www.liveleak.com/view?i=bc6_1420632668

Here it is again in slow motion, zoomed in: https://www.youtube.com/watch?v=v_c4IUO6h7w

Kalashnikov rifles chambered at 7.62mm exhibit greater than zero recoil under the best of circumstances.

It simply isn't credible to state that a Kalashnikov rifle will not exhibit _any_ recoil.

And to pretend as if a 7.62mm round fired at point blank range into a human target would cause _no_ amount of blood splatter or blowback in the target is highly suspect.

There is no visual of a bullet hitting this police officer and I will not apologize for my statements inciting controversy. Watch the video. In less than a minute you will see I am accurately describing the events as they unfold on video.

Quoting Dr. Paul Craig Roberts:

Among these purposes is bringing France back into Washington’s orbit. The French president had recently said that the sanctions against Russia should be terminated.

Hollande was allying himself with French economic interests instead of with Washington’s hegemonic foreign policy.

Another purpose is to stifle the growing European sympathy for the Palestinians and to realign Europe with Israel.

Another purpose is to counter the rising opposition in Europe to more Middle Eastern wars. The American neoconservatives have not completed their agenda. Syria, Iran, Hezbollah, and Saudi Arabia are still standing.

And there can be other purposes not apparent to me.

My recommendation is that you not believe the print and TV media, but think. The failure of Americans to think is why they are 13 years into war and live in a police state.

Dr. Paul Craig Roberts was Assistant Secretary of the Treasury for Economic Policy and associate editor of the Wall Street Journal. He was columnist for Business Week, Scripps Howard News Service, and Creators Syndicate. He has had many university appointments. His internet columns have attracted a worldwide following. Roberts' latest books are The Failure of Laissez Faire Capitalism and Economic Dissolution of the West and How America Was Lost.

http://www.paulcraigroberts.org/2015/01/11/suspicions-growin...

Because shocking attacks get the public's attention. With all eyes on the TV screen, it's the perfect time to introduce public policy changes that strip people of their rights.

All the better if I can defend my statements by inciting a sense of nationalism or publicly shared responsibility for preventing future heinous crimes.

This is the raw video of the shooting of the French policeman: http://www.liveleak.com/view?i=bc6_1420632668

Here it is in slow motion, zoomed in: https://www.youtube.com/watch?v=v_c4IUO6h7w

We are told this is footage of a 7.62mm round fired into a target at point blank range.

With no recoil exhibited by the rifle, no blood present anywhere on the scene, and no violent head or body movement on part of the person "shot" at point blank range, it's very possible that blanks were fired and that this is yet another deep event meant to mislead the public into accepting a hidden agenda.

Snowden steered the conversation towards the US political establishment's _massive_ hypocrisy. At the time, the US was wagging their finger hard at Chinese tech companies, as if to say US tech companies would never stoop to the level of backdooring consumer hardware or spying on their users and handing that data over wholesale to government spies.

In addition to embarassing the American political establishment, Snowden revealed JTRIG; he revealed acts of industrial and political espionage; and he revealed the undermining of public cryptographic standards by government henchmen. This to me is the big one, and it's why it's so unlikely for Snowden to be a limited hangout.

Prior to Snowden, if you weren't being paranoid, you were just sticking your head in the sand. You would be exposing yourself to the risks of parallel construction, backdoors in hardware, sabotage of public cryptographic standards, and the manipulation of online discourse if Snowden hadn't given people like me the power to credibly parry critics who are all too quick to discredit with terms like "troll" and "conspiracy theorist".

Snowden showed James Clapper to be a criminal, too. And the IRS claiming its own electronic paper trail of criminality could be somehow "lost" in this age of pervasive surveillance lends credibility to the idea of there being a clear divide between those who are above the law, and the rest of us. The Rulers and the Ruled.

Having seen multiple young open source projects, like Nim, play themselves out over the course of my many years in the Bitcoin space, I expect the savviest developers at this point to benefit most from Nim by establishing themselves as core contributors.

The devs who got into Bitcoin on the ground floor in 2011 and 2012 are three years later on the most sought after venture backed teams, with the whole world hanging onto their every last word. Young and profoundly promising languages like Nim offer a similar opportunity if you're willing to risk it.

It could very well be better to use the myriad of other, more mature and stable languages to solve truly pressing issues. Nim is very young, and the risk:reward ratio is skewed more towards contributors than users who can't risk bugs.

As reasonable as that is, "if you build it, they will come", is a myth. Say you have an excellent product, and I would absolutely say Nim is excellent. With priority #1 out of the way, you have to speak up for yourself.

Nim is like writing C at the speed of Python, and running Python at the speed of C.

If you took Python but made it perform blazingly fast, and made it suitable for the most demanding of embedded and systems programming applications, in addition to game dev, you'd get Nim.

If on the other hand you're satisfied with Python, then keep using it. It was trivial for me to port a Python elliptic curve implementation to Nim. I'd certainly recommend it over Cython, because Nim is simply designed as one complete system built for writing high performance applications with a sane syntax.

Statistics (on an x86_64 Intel Core2Quad Q9300):

    Lang    Time [ms]  Memory [KB]  Compile Time [ms]  Compressed Code [B]
    Nim          1400         1460                893                  486
    C++          1478         2717                774                  728
    D            1518         2388               1614                  669
    Rust         1623         2632               6735                  934
    Java         1874        24428                812                  778
    OCaml        2384         4496                125                  782
    Go           3116         1664                596                  618
    Haskell      3329         5268               3002                 1091
    LuaJit       3857         2368                  -                  519
    Lisp         8219        15876               1043                 1007
    Racket       8503       130284              24793                  741
https://github.com/def-/LPATHBench/blob/master/nim.nim

https://github.com/Araq/Nim/wiki/Nim-for-C-programmers

For a Python-like core language with an expressive type system that is simple, clean and immediately absorbable, you're really looking for Nim, not Go.

The following produces a single binary with native code generation via compilation to C, no VM:

    import rdstdin, strutils

    let
      time24 = readLineFromStdin("Enter a 24-hour time: ").split(':').map(parseInt)
      hours24 = time24[0]
      minutes24 = time24[1]
      flights: array[8, tuple[since: int,
                              depart: string,
                              arrive: string]] = [(480, "8:00 a.m.", "10:16 a.m."),
                                                  (583, "9:43 a.m.", "11:52 a.m."),
                                                  (679, "11:19 a.m.", "1:31 p.m."),
                                                  (767, "12:47 p.m.", "3:00 p.m."),
                                                  (840, "2:00 p.m.", "4:08 p.m."),
                                                  (945, "3:45 p.m.", "5:55 p.m."),
                                                  (1140, "7:00 p.m.", "9:20 p.m."),
                                                  (1305, "9:45 p.m.", "11:58 p.m.")]

    proc minutesSinceMidnight(hours: int = hours24, minutes: int = minutes24): int =
      hours * 60 + minutes

    proc cmpFlights(m = minutesSinceMidnight()): seq[int] =
      result = newSeq[int](flights.len)
      for i in 0 .. <flights.len:
        result[i] = abs(m - flights[i].since)

    proc getClosest(): int =
      for k,v in cmpFlights():
        if v == cmpFlights().min: return k

    echo "Closest departure time is ", flights[getClosest()].depart,
      ", arriving at ", flights[getClosest()].arrive
Statistics (on an x86_64 Intel Core2Quad Q9300):
    Lang    Time [ms]  Memory [KB]  Compile Time [ms]  Compressed Code [B]
    Nim          1400         1460                893                  486
    C++          1478         2717                774                  728
    D            1518         2388               1614                  669
    Rust         1623         2632               6735                  934
    Java         1874        24428                812                  778
    OCaml        2384         4496                125                  782
    Go           3116         1664                596                  618
    Haskell      3329         5268               3002                 1091
    LuaJit       3857         2368                  -                  519
    Lisp         8219        15876               1043                 1007
    Racket       8503       130284              24793                  741
Not only is this syntax far more approachable for anyone who likes Python, as opposed to Go, Nim is actually suitable for systems and embedded programming. Optional GC and manual memory management makes Nim one of the few up and coming systems programming language that ventures into C territory while still being safe and pragmatic enough for general usage.

http://goran.krampe.se/2014/10/20/i-missed-nim/

https://github.com/Araq/Nim/wiki/Nim-for-C-programmers

I agree, shipping the dependencies in a single binary is the easiest way to package software. Nim is the same as Go in this respect: native code generation via compilation to C without a VM. And for me, Nim's Pythonic syntax is hands down more pleasant than Go's or even D's. It's the only systems programming language I've come across where it feels like I'm coding at the speed of thought.

A year ago I wrote an article trying to round up new languages since year 2000 and what I think of them by just… glancing at them, or otherwise playing with them. I ended up sifting out the 5 most interesting in my not so humble opinion - Go, Rust, Dart and Julia. Now a year has passed and…

I discover that I missed Nim!

Nim was born somewhere around 2006-ish and is clearly a very serious language to consider, but is going suspiciously under the radar. Having reviewed this language more closely (and still doing so) I can safely say that for me it actually easily tops this list.

http://goran.krampe.se/2014/10/20/i-missed-nim/

Sum Types in Go 12 years ago

As another illustrative example, let's say we want to create a library for working with mathematical expressions such as x^2 + 5*x. It's natural to define our data types like this:

    type
      FormulaKind = enum
        fkVar,        ## element is a variable like 'X'
        fkLit,        ## element is a literal like 0.1
        fkAdd,        ## element is an addition operation
        fkMul,        ## element is a multiplication operation
        fkExp         ## element is an exponentiation operation

    type
      Formula = ref object
        case kind: FormulaKind
        of fkVar: name: string
        of fkLit: value: float
        of fkAdd, fkMul, fkExp: left, right: Formula
Nim's enum [1] is an old-school typesafe enum, as in Ada, without any fields. To avoid name clashes, it's common to prefix the enum values with a two-letter abbreviation. The case part in the object declaration introduces a checked union. So the access of f.name will raise an exception if f.kind != fkVar.

[1] http://goran.krampe.se/2014/10/20/i-missed-nim/