HNHacker News
TopNewBestAskShowJobs

kees99

1,024 karma · joined July 3, 2016

submissionscomments
kees99··on Cloud Computing Without Containers
Very cool tech. But ridiculously expensive. According to [1] you pay $5 per 10,000,000 requests, <10ms each. That works out to less than 27.8 hours of CPU time per month. And that's assuming near-perfect utilization of that 10ms window and ignoring upfront cost of Pro plan, which this is an add-on to.

Compare that to Linode/Hetzner/OVH/etc. where you get half-CPU for that money (i.e. 360 hours CPU time per month).

And yeah, sure. Not apples-to-apples. FaaS, infinite scalability, yadda, yadda. But computing http responses is still computing http responses. Is this FaaS magic dust really worth 1400+% premium?

[1] https://www.cloudflare.com/products/cloudflare-workers/

kees99··on Reusing Old Hardware
Older ThinkPads have a driver to limit battery charge range:

http://www.thinkwiki.org/wiki/Tp_smapi

kees99··on Facebook adding “fbclid” parameter to outbound links
I wonder why would fb move away from the well-established utm [1] link parameters to this? From the article, I can't see any functional difference.

[1] https://en.wikipedia.org/wiki/UTM_parameters

kees99··on 3D printing a programming jig and embedding pogo pins
On the silkscreen, it appears that TX (transmit) and RX (receive) are designated backwards.
kees99··on Firefox is back. It's time to give it a try
> website which is "best viewed with Chrome"

I'm stunned. Is this still a thing? Last time I remember seeing websites recommending a browser, it was late 90s with "get Netscape" gifs.

kees99··on There are real reasons for Linux to replace ifconfig, netstat, etc
When asking "what's the default gateway?", more often than not, the real question you have is "what's the gateway to IP address X", which would be:

  ip route get X
kees99··on There are real reasons for Linux to replace ifconfig, netstat, etc
I can take "mtu 1500" part, and sort-of "qdisc", but what's up with repeating obscure parameters at their default values, for each and IP address:

  valid_lft forever preferred_lft forever
kees99··on Completely Silent Computer
Pretty sure there's going to be some coil whine. Probably above 0dB.
kees99··on Wapp – a single-file web framework by the creator of SQLite
Not to disagree with you, but - what "modern" alternative would you recommend as a replacement for "wapptclsh", which is a compact statically-linked binary with wapp and sqlite libraries baked in?

Binary "wapptclsh" + your .tcl script + optionally .sqlite file, just 2-3 files are sufficient to make an app chroot/jail/container, if I understood correctly section 2.0 here: https://wapp.tcl.tk/index.html/doc/trunk/docs/compiling.md

kees99··on Ask HN: Is there something like Join.me for Linux?
My biggest gripe with Zoom is that they have tech in place to seamlessly support open-standard connections (SIP & XMPP), but make their utmost to sweep both under the rug: SIP is $49/month/user and XMPP server isn't advertised as such and wouldn't let anything but official proprietary client connect, either.
kees99··on When baby monitors fail to be smart
I have a problem with those two "vulnerabilities" listed:

- Available Serial Interface (referring to easy-to-solder console port pads on PCB, accessible once you tear device apart);

- Weak Default Credentials (referring to weak root password that is only ever accepted via serial console).

Life-span of a baby monitor is couple of years, by definition. After that, this hardware could either become a cool easy-to-tinker Linux device, or e-waste.

Researchers at sec-consult seem to think e-waste option is better, or at least it's a necessary evil to deter those pesky hackers who sneak near your child's crib, armed to their teeth with soldering irons and screwdrivers.

kees99··on Signal Foundation
In general, servers should have nothing to do with end-to-end encryption, except for not actively breaking it.

OMEMO in particular uses:

- Personal Eventing Protocol (PEP, XEP-0163) to transport key material; and

- core RFC3920/RFC6120 XMPP protocol to transport encrypted messages.

Both of which are already supported by Openfire [see JM-1122]. So, as far as I can tell, Openfire is fully capable of delivering OMEMO messages right now.

https://issues.igniterealtime.org/browse/JM-1122

[EDIT] For Adium OMEMO support, have a look at Lurch: https://github.com/shtrom/Lurch4Adium

kees99··on FlightSimLabs Alleged Malware Analysis
Unfortunately, this sort of attitude is not unheard of among proprietary software vendors - see for example FTDI bricking your hardware if they think it's counterfeit:

https://news.ycombinator.com/item?id=8493849

kees99··on $2 hardware SSH keys storage
When using this awesome piece of software, you probably want to give a miss to the "blue pill" board recommended in the README file, and go instead with ST-Link v.2 clone, which has identical hardware and pricetag, while being considerably more portable:

https://blog.danman.eu/2-usb-crypto-token-for-use-with-gpg-a...

kees99··on ESP8266 ePaper WiFi Display Kit Runs for Months on a Charge
I guess it's only matter of time before somebody will start offering supermarket e-pricetags to hobbyist:

https://theworklife.com/graham-miln/2013/12/17/e-ink-price-t...

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
> when it triggers, resync the clock with your neighbours?

Indeed. Periodic clock resync is a must here. Better from external NTP though, as neighbours have their clock badly drifting as well.

> If you wake up and nobody else seems to be awake, go into degraded mode where you continually listen for the next scheduled interval.

That'll defeat the purpose completely. Here's why:

- "Listen" consumes full 70mA;

- "wake up and no neighbours awake" will happen very, very often. Let's take simplest example of two nodes with drifting clock. When they both wake up (each by local clock), inevitably one will wake up first. That node will discover there's no neighbours awake. I a mesh, statistically this will happen to 1/N nodes each wake-up, where N is average number of neighbours. If we tighten requirement from "anybody awake" to "enough nodes awake to reach uplink" (so to make use of external NTP) probability of "not enough neighbours awake" even will come close to 100% on each wakeup.

Slightly better approach would be - when each node wakes up, it stays awake for long enough to cover worst-case all neighbour's clock drift. Average clock drift seem to be +/-2%. Let's say +/-5% would be worst case. That means, all nodes have to be awake 10% of the time just to re-sync clock so that next wake-up will be not worse off than current one.

And staying awake 10% of the time means average power draw of 70mA * 10% = 7mA, which is pretty darn high (3 weeks on a 3000mA*h Lithium cell. Even less if there is payload data transmitted on this mesh.)

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
L2 bridge of WiFi access point to anything else (like wired Ethernet, for example) "just works".

On the other hand, L2 bridge of WiFi station to anything else (including STA<->AP bridge for a repeater operation) is quite messy: it needs special "4addr mode" packets which are only sent in "WDS" mode, which should be enabled on corresponding uplink AP. And WDS is universally disabled out-of-the box. Many cheaper routers don't have WDS at all. Plus, there are different incompatible flavours of WDS. Finally, there is question of WDS/4addr mode support on ESP8266 itself - in theory, there is some support in SDK, but I haven't seen any working application code doing it.

Some in-depth discussion of WDS with diagrams:

https://wiki.openwrt.org/doc/howto/clientmode

https://www.dd-wrt.com/wiki/index.php/WDS#Note_about_WDS_and...

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
Battery would probably be a no-go here.

You can't put repeater into sleep mode[#], and in active AP+STA mode ESP8266 takes 70mA @3.3v, which is 3-4 times lower than best purpose-made wifi repeaters, but will still drain 3000mA*h battery in couple of days.

[#] ...unless whole sensor network has scheduled "data upload" internals, something like 1-minute window twice a day. But even that is going to be very tricky due to notoriously poor precision of ESP's real-time clock - see for example https://github.com/micropython/micropython/issues/2724

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
5mbps is about the best case (all 3 nodes on the same table). In more realistic deployment, it'll be much less.

So, why so slow?

TL;DR: Too little RAM on ESP8266.

WiFi is half-duplex, i.e. in basic scenario (no MIMO; all stations close enough that each can hear at least some other), only one node can transmit at a time. [CSMA/CA] protocol is used to enforce this limitation. This protocol is susceptible to [Hidden node problem], which absolutely will be present for wifi repeater. Meaning that data in a single burst is transmitted fast, but any switch-over of who's transmitting is going to be really slow, with collisions, pauses, etc. In turn, that means that to achieve any decent throughput, WiFi repeater should buffer as much data as possible to minimize number of transmitter switch-overs. And that requites RAM - say to buffer half-second data burst at 54Mbps you'll need 3.5MB of RAM. Alas, ESP8266 only has 96KB of data RAM, out of which just 32KB is used as packet buffer with standard SDK.

[CSMA/CA] https://en.wikipedia.org/wiki/CSMA/CA

[Hidden node problem] https://en.wikipedia.org/wiki/Hidden_node_problem

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
"Mesh" (in thick air-quotes) here is just a way for self-organizing for shortest uplink hop count.

Strict uplink-downlink hierarchy still stays regardless of whether "manual uplink" or "mesh" mode is in use. Each repeater doing Source NAT still stays. Lack of "sideways" connectivity still stays (unless you configure manual DNAT which is incompatible with "mesh" mode to begin with).

I.e., if you have 3 of those ESP8266 repeaters with two clients connected to different repeaters, there is no (easy) way to have those two clients talk to each other. Let's say this is our network diagram:

        {The Internet}----[Cloud Server]
              |
          [Wired AP]----[Local Server]
              |
         [ESP8266-R1]
           |      |
  [ESP8266-R2]  [ESP8266-R3]
        |            |
   [Clinet 1]    [Client 2]
...then, we have two options how to make Client 1 and Client 2 talk to each other:

- each client talks to the same server (local or cloud) and server takes care of passing the message;

or

- we configure static destination NAT (option portmap add) on both ESP8266-R2 and ESP8266-R3, and disable "mesh" mode (i.e. manually configure uplinks for all 3 repeaters);

...and arranging 1000 of those in a single string and routing a single packet through that is better avoided. "Mesh" mode helps a lot with this, by selecting shorter path to the internet and bringing topology closer to a tree, where possible.

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
Dynamic routing is the hardest part of mesh network. By using NAT martin-ger has side-stepped need to have routing altogether (it's just default gateway for each node like that). But that of course comes at cost - reaching your device from "outside" becomes much harder.

Also, ESP8266's official SDK doesn't support IPv6.

kees99··on ESP 8266 Wi-Fi Repeater with Mesh Networking
Two limitations here are worth keeping in mind:

- Throughput is not stellar (less than 1 mbit/s in a realistic setup);

- This is not a real IEEE 802.11s mesh, but rather some clever mechanism on how a node can select an "uplink".

kees99··on Fast nnn file browser v1.6 released

  > avoid div instructions in favour of floating point multiply.
  > Is this still faster on recent CPUs?
NB - >>[Taking this question out of context]<< - looks like the answer is "no". From a quick test:

- intel Broadwell: 64-bit integer div is fastest, float div is 69% slower, float mul is 50% slower;

- AMD Ryzen: 64-bit integer div is fastest, float div is 47% slower, float mul is 60% slower;

- ARM11 (Raspberry Zero): 64-bit integer div is fastest, float div is 138% slower, float mul is 159% slower.

quick-and-dirty test used: https://pastebin.com/raw/4XqnuXL5

kees99··on Fast nnn file browser v1.6 released
There is this (much older) piece of software that does much of what nnn/noice do, and more:

https://en.wikipedia.org/wiki/Midnight_Commander

kees99··on TP-Link firmware sends six DNS requests and one NTP query every 5 seconds

  firmware sends six DNS requests and
  one NTP query every 5 seconds
  (...snip...)
  TP-Link has hardcoded the following non-configurable
  NTP servers and server pools in their firmware:
  (...snip...)
  au.pool.ntp.org, nz.pool.ntp.org
Wait... so TP-Link is effectively DDoSing NTP pool?

Also, as pointed out in another thread here, vendor using country prefix instead of applying for their own prefix is a violation of:

http://www.pool.ntp.org/en/vendors.html

..which was put in place as a reaction to incidents just like this one:

https://en.wikipedia.org/wiki/NTP_server_misuse_and_abuse#No...

kees99··on Hands-on with the PocketBeagle: a $25 Linux computer with lots of I/O pins
Dimwit #-2: Hey, we already have a microcontroller on this board, and it happens to have plenty of free flash/ram/10mA-sink-gpio. Specify a regular LED and an extra timer in RTOS.
kees99··on Can I erase sensitive data on an old hard drive with Neodymium Magnets?
Most likely mechanism for this incident was:

1) external magnet messed up heads movement closed control loop (internal drive's magnets + voice coil + positioning marks on the platters), and as a result head actual position became different from what controller thought it was.

2) control loop tried to correct itself, repeatedly failing, all while head kept moving across the platters, while controller was still thinking it's elsewhere.

3) controller was writing to disk, so it overwrote data in highly irregular tracks that followed erratic head dance. some of that overwrote positioning markers.

4) when recovering, even though 99.9% of data was still there, controller failed to position the head on erased markers, so reported "unreadable sectors"

kees99··on Evidence that ancient farms had different origins than previously thought
Obligatory plug when discussing early/primitive human tech:

https://primitivetechnology.wordpress.com/

kees99··on Systemd port for OpenBSD
Positively a joke. From Makefile:

  COMMENT = init replacement that does not suck

  MAINTAINER = Lennart Poettering <torvalds@osdl.org>

  # if you redistribute this you have to give your first born to Lennart
kees99··on Malta – Alphabet X’s latest grid-scale energy storage technology
> In the first half of this year, California tossed out more than 300,000 megawatts

That doesn't sound right. According to [0] that is 2/3 of total electricity generated, from all sources, in the whole of US.

[0] http://www.wolframalpha.com/input/?i=average+electricity+gen...

← PreviousPage 8 of 9Next →