HNHacker News
TopNewBestAskShowJobs

tiniuclx

1,183 karma · joined August 2, 2018

Software Engineer, Musician and Fan of Literature and Indie Games

E-mail: alex@tiniuc.com Website: tiniuc.com GitHub: github.com/tiniuclx

submissionscomments
tiniuclx··on Cascoda awarded €1.3M funding from the European Commission
To give you all some background, we are a fabless semiconductor start-up working on solving the range issue of IoT devices.

Anybody who has tried to setup a nontrivial IoT network has ran into this issue. It is very difficult to create a network which covers the entire house without relying on a plethora of gateways and routers, which significantly increases complexity and cost.

There are two ways to increase the range of radio devices: 1) increase transmit power or 2) improve the radio’s receiver sensitivity (Rx sensitivity). However, legislation in Europe limits transmit power to 10dBm, meaning the only practical way to increase range is to improve Rx sensitivity.

Cascoda has developed a disruptive 2.4GHz wireless transceiver based on a unique patent-protected radio architecture, which significantly improves Rx sensitivity, effectively doubling the range without using any external power amplifiers. This delivers the range of WiFi to provide whole-house coverage, reduces power consumption by a factor of 6 enabling years of operation from batteries, provides high security, reliability and reduces equipment costs by a factor 5 as no power amplifiers are needed.

I'm happy to answer any questions you may have :)

tiniuclx··on Become a nurse or physicians assistant instead of a doctor (2012)
Anyone can read Hacker News, it's not some sort of exclusive club! As to why someone would, there's a lot of interesting non-technical articles posted here.

Or maybe they're also a tech enthusiast in their spare time!

tiniuclx··on Show HN: I trained a deep learning model to build sites for me
I have the same issue on Firefox. It's to the right of the webpage, next to Firefox's scrollbar.
tiniuclx··on The Hottest Phones for the Next Billion Users Aren’t Smartphones
This article talks about a developing market made of first-time internet users that are buying cheap feature phones. It is interesting because this is taking place in New Delhi and because this cycle is exactly what the west went through in 2004.
tiniuclx··on Mozilla debuts implementation of WebThings Gateway open-source router firmware
Yes, you can isolate individual devices the same way you'd isolate any IPv6 device on your home network - using a firewall. Normally you would firewall away your entire home network and only open up connectivity to the devices you want.

Additionally, you can configure the firewall on the Border Router as well, which is the device that actually interfaces between Thread and other networks.

tiniuclx··on Mozilla debuts implementation of WebThings Gateway open-source router firmware
Supporting Thread in particular is an interesting choice, because as far as I'm aware Thread is one of the most open-source IoT stacks[0]. Thread isn't really used in consumer hardware, which is probably the reason it's so obscure within the hacker community, but there's a lot of buzz around it within industry groups. Companies like Google, ARM, Amazon, LG, NXP, Samsung and many others are supporting the development of Thread.

What's interesting about Thread is that it takes advantage of IPv6 to allow any device on a network to talk to the World Wide Web. Usually, you can only talk to your IoT gateway over the web, and then tell it to control its children. Thread simplifies all of that and lets you directly talk to any child via its IPv6 address[1].

Compared to some other IoT protocols, Thread also takes a strong stance on security: unlike other protocols such as Bluetooth Low Energy, you cannot create an unsecure Thread network[2], you must have the correct credentials to talk to any Thread network, and all communications are encrypted.

I believe that Thread is going to be a very important part of the future of IoT, and I'm excited to see what comes next.

[0] https://openthread.io/

[1] https://www.threadgroup.org/What-is-Thread

[2] https://www.threadgroup.org/Portals/0/documents/support/Thre...

tiniuclx··on Pen Refills Guide
Ballpoint ink is a lot thicker than fountain pen ink, and is presumably more heavily pigmented. Therefore, a ball point uses a smaller amount of ink to deliver its pigment, compared to a fountain pen. Which means that it uses significantly less ink.

Ballpoints and fountain pen deliver ink to the paper very differently! You can't really fill a fountain pen with thick ballpoint ink because it would jam the feed very quickly. Likewise, if you were to fill a ballpoint with fountain pen ink it would leak as soon as you touch its tip onto the paper.

However, thanks to fountain pen ink being thinner, you don't have to apply nearly as much pressure when writing. Like many things in engineering, it's all about tradeoffs!

tiniuclx··on Brains scale better than CPUs. So Intel is building brains
I'm not sure if this is what they're doing with this project, but in the past they've used separate chips for training and running the NN https://en.wikichip.org/wiki/nervana/nnp

I'd imagine that the actual architecture consists of a large number of neuron-like components that can be interconnected in various ways, allowing different application to run, or maybe even learn. This is a lot like how an FPGA works!

tiniuclx··on It’s time to move on from OOP?
http://archive.is/yAPEC
tiniuclx··on YouTube was launched as a dating site
Check your inbox :)
tiniuclx··on Rust async-await status report 2
Thank you for your reply, that was exactly what I was trying to show when I linked the Actix Web example in one of the child comments below!
tiniuclx··on Rust async-await status report 2
Actix-web actually makes things a little bit easier. Here is their "Hello World" example https://github.com/actix/examples/blob/master/hello-world/sr...

The HTTP Handler (the index function) returns some plaintext and prints to the server's console. Removing the print makes the function simpler than the one in the main article.

Actix Web was designed from the get-go to be a highly concurrent HTTP framework, and I think it is the most mature Rust web framework.

Of course, the boilerplate main still needs to be written, and the way it does things is a bit more profound. But at a high level, I believe it is quite clear that it is handling logging, URL routing and connecting to a port.

tiniuclx··on Rust async-await status report 2
Would a novice to the language implement a highly concurrent HTTP service as their first ever task? I don't think so, most people start with "Hello world" programs.

To understand the entirety of that first signature you need to grasp is:

1. The Result type, which returns the result of a successful computation or an error.

2. The Box container, which is basically just a safe pointer to some memory

3. Rust's way of doing polymorphism.

These are indeed some complex topics but I doubt most people start at that level. Sure, an absolute beginner would be dumbfounded by this, but working through even the first few chapters of the Rust book gives you enough knowledge of Result and Box to let you figure out what is going on.

tiniuclx··on GCHQ/Gaffer: A large-scale entity and relation database
For those who are unfamiliar, GCHQ is the UKs signal intelligence and security agency, similar to the NSA. They have open-sourced Gaffer, a graph database framework which provides fast queries across a large number of nodes and vertices.

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

tiniuclx··on Announcing Rust 1.36.0
I can second the suggestion for actix-web, it is a joy to use and I believe it is the only HTTP framework that has reached version 1.0 :)

Have a look at the sort of things you can do with it https://github.com/actix/examples

tiniuclx··on Ask HN: Was My Post Stealth Banned?
I have also vouched for this post. Hope that sorts it out, you seem human enough :)
tiniuclx··on Ask HN: Was My Post Stealth Banned?
It shows up as [dead] on my end, as does this thread. You might want to contact the moderators and convince them you're not a spammer. Your most recent links all seem to be promoting your own content, so maybe that's what they took issue with.
tiniuclx··on Level Design and Shaping a Roguelike Experience
While I haven't played CDDA, I can talk a little bit about what makes Cogmind unique compared to the rest of the genre.

Cogmind is classless - you always start the game with the same set of items and abilities. Your build is defined by what parts you find or salvage from enemies, as well as certain events that give you permanent upgrades.

The most obvious difference is the combat system: each and every item you equip can be damaged and destroyed. Items also have a 'coverage' statistic which is proportional to how likely the item is to absorb a shot. For instance, armour in Cogmind isn't really special under this system - it's just an item with high health and coverage.

Cogmind is also mostly based on ranged combat, though melee is an option for both you and enemies. Therefore, the tactics you must use are slightly different.

tiniuclx··on Level Design and Shaping a Roguelike Experience
The original title of this post is "Level Design and Shaping a Cogmind Experience," but I felt that the HN audience would be more familiar with the name of the genre than the game itself.

If you're one of the lucky 10,000, Roguelikes are a type of video game that has remained virtually unchanged since Rogue, which was released in 1980 for Unix mainframes. Most games are based around procedural generation and dungeon crawling.

Cogmind is a modern, Sci-Fi take on the genre and possibly the most user-friendly Roguelike out there.

tiniuclx··on Many-valued logic
This sounds a lot like the abstraction that SystemVerilog uses to describe the electronic states that a piece of wire can be in. Namely, SystemVerilog uses 0 for a wire driven by a low voltage, 1 for a wire driven by a high voltage, Z (high impedance) for a wire that is not being powered at all, and X (unknown) for a wire that is driven by a 0 and a 1 at the same time.

X is highly contagious, if you connect any wire to one with an X value, the result will be X. On the other hand, Z wires have their value overwritten by anything (a 0 connected to a Z will result in a 0). However, Z is not a valid _input_ to a logic gate: 1 AND Z = X.

Z is usually used for buses which consist of multiple inputs and outputs connected to the same wire. When nobody is transmitting, the value of the bus is Z. When one device transmits, the bus takes the value of the transmission. And finally, if more than one device attempts to transmit at a given time the result is X and you get what is known as bus contention :) ~

tiniuclx··on Hashtag Propaganda. Secret UK govt tactics for post-terror planning
This is a dangerous article. It seems to be engineered to produce a knee-jerk anti-government reaction, as can be seen in this comment section. The article does not seem to provide any sources for any of its claims. Furthermore, I have never heard of middleeasteye.net before and it would be safe to be skeptical of any claims posted by them.

Even if the allegations are true, is it such a bad thing after all? Terrorist attacks leave people vulnerable and afraid. Those feelings can easily turn into violence against those who are perceived to be the "cause" of the attack. Taking preemptive, albeit underhanded action to ensure mass violence does not occur seems like a good thing to me.

tiniuclx··on Announcing Rust 1.33.0
Ah thank you, that makes a lot of sense! It's good that this sort of stuff can be made explicit... a lot of C++ compile-time evaluation optimisations feel like magic to me.
tiniuclx··on Announcing Rust 1.33.0
I have been paying attention to Rust for the past year or so and I think it'll be the next language I will end up learning. I do have a question: what is const fn supposed to be used for? Is it for denoting pure functions? That would be really nice, considering that not many non-functional languages explicitly recognise pure functions.
tiniuclx··on Level Design and Shaping a Roguelike Experience
The original title of this post is "Level Design and Shaping a Cogmind Experience," but I felt that the HN audience would be more familiar with the name of the genre than the game itself.

If you're one of the lucky 10,000, Roguelikes are a type of video game that has remained virtually unchanged since Rogue, which was released in 1980 for Unix mainframes. Most games are based around procedural generation and dungeon crawling.

Cogmind is a modern, sci-fi take on the genre and possibly the most user-friendly roguelike out there.

tiniuclx··on The Very Rich Indie Writer (2011)
World Anvil is what you're looking for.

https://www.worldanvil.com

tiniuclx··on Ask HN: What are some of your favourite technical blogs?
https://cstack.github.io/db_tutorial/ I found this blog to be quite interesting because it deals with something I don't really spend time thinking about: the internals of a database engine. It's fascinating to see how the sausage is made.

https://lwn.net/Articles/250967/ - 'What every programmer should know about memory' is a very in-depth series of articles mostly about RAM, but also CPU Cache and general performance. While it is 10 years old, memory technology hasn't kept up with CPU speeds, and it is often a bottleneck - perhaps making the articles even more relevant today.

http://paulgraham.com/articles.html - I feel like every reader of Hacker News must have come across this at some point, but it's still worth bringing up. Paul Graham writes about start-ups, LISP, about technology in general, and sometimes about society.

tiniuclx··on Programming Paradigms for Dummies: What Every Programmer Should Know (2009) [pdf]
You do have a point, adding exceptions to C++ does impact the language in many ways. They must be used responsibly: being able to jump to a completely different point of the program at any time is dangerous.

However, exceptions do simplify some situations, such as when an unrecoverable error happens at the bottom of a deep call stack. Exceptions make it simple to inform the user/system that an error has occurred without adding error checks to every function in the call stack. I believe this use-case justifies the feature, especially if you can tolerate the performance loss which might not even be that bad [0].

Having the compiler check error codes is one of the reasons I enjoy Haskell so much: the type system makes you handle failure (amongst other things).

[0] http://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf - Section 5.4.1.2 - the table approach to exception handling has no run-time cost during normal (non-exceptional) program flow.

tiniuclx··on Programming Paradigms for Dummies: What Every Programmer Should Know (2009) [pdf]
An interesting point raised by this paper is that when a program requires pervasive modifications (e.g. checking the error code returned by C functions), adding a new concept to the language (e.g. C++ exceptions) can systematically make these changes unnecessary, therefore simplifying the program.

Perhaps this is how programming language designers ought to vet language ideas: do the proposed changes make certain patterns redundant? Looking at Rust through this lens makes it clear that it aims to eliminate C-style manual memory management.

However, it does make me wonder: How do languages such as JavaScript and Python stand out from their predecessors, and what problems do they uniquely solve?

tiniuclx··on Typed Functional Programming and Software Correctness
I'm sure you've all heard Haskell programmers say that if their code compiles, you can be sure the program is correct. I'd found that hard to believe until I tried building something in Haskell: the type system lets you describe the properties of your data and behaviour. When you compile, the theorem prover inside GHC verifies that your code obeys the described properties.

This article does a good job of showing some flaws within the development experience of mainstream languages as well as showing how a typed functional languages can address them.

It does make me wonder why FP isn't more popular. Is it because of the high level of abstraction? Sure, you need to learn what a monoid, or an functor is. But once you do that, you can use the interface and behaviours described by these categories to interact with _any_ other monoid / functor, no matter who wrote it or what it achieves.

tiniuclx··on Haskell's kind system: a primer
Open/Closed would still conceptually act as properties, but by promoting them to types you enforce the property at compile time rather than runtime. Note that they are not used on their own, but to describe a `Connection`. This lets you statically enforce the fact that you must only send data through an open connection, for example.
← PreviousPage 5 of 6Next →