Common Systems Programming Optimizations and Tricks - <AUTHOR> https://paulcavallaro.com/blog/common-systems-programming-optimizations-tricks/ <comment><USER2> "Repurposing Top Bits" \- don't do that. Honest.

The IBM 360 shipped with 32-bit addresses but only 24 bits decoded. "Hey, there's a whole byte up top that nobody's using today, let's put some stuff there!" When they wanted the address space IBM found themselves architecturally hamstrung, and the cost to dig out was significant.

The 128K Macintosh used a 68000; it had 32-bit addresses but only 24 bits were decoded. "Hey, there's a whole byte up top that nobody's using today, let's put some stuff there!" When Apple needed the address space they found themselves hamstrung by pieces of MacOS that _did_ use those bits, and many applications that did, too. The cost to dig out was significant.

It is practically guaranteed that "Hey, there's 16 whole bits up there that nobody's using today" will wind up the same, because this industry just never learns.

You can do things with lower bits and usually get away with it; many systems put GC tags and type bits down there. But those upper address bits do not belong to you.

<comment><USER3> Armv8 has an opt-in feature you can turn on to ignore the top byte: [https://en.wikichip.org/wiki/arm/tbi](https://en.wikichip.org/wiki/arm/tbi) This is also where the pointer authentication code goes for arm pointer authentication: [https://lwn.net/Articles/718888/](https://lwn.net/Articles/718888/)

On x86_64 and arm without those features enabled, the top bits of the pointer must be sign extended. This means that x86_64 by default gives you the top two bytes to play with as long as you don't use the values 0xffff or 0x0000. Attempting to access a pointer whose top 16 bits aren't a sign extension of bit 48 will fault. You can still safely play this game as long as you fix up the pointer before dereferencing it.

<comment><USER4> "Attempting to access a pointer whose top 16 bits aren't a sign extension of bit 48 will fault."

Currently. Coming soon to an Intel chip near you is 57-bit virtual addressing and 5-level page tables [1]. It would be quite a bug that would only crash on new Intel hardware on probably quite full memory maps where your pointer fix up code wouldn't restore bits 48-57 correctly.

[1] [https://www.phoronix.com/scan.php?page=news_item&px=Linux- De...](https://www.phoronix.com/scan.php?page=news_item&px=Linux- Default-5-LVL-Paging-Def)

<comment><USER5> It'll probably be quite a while before operating systems rush to turn on extra level of page walk fun, increasing TLB miss penalty even more.

If only x86 could have 64 kB pages...

Of course you're right it's not a great idea to use those bits. Eventually they will be in use, although it's probably 10+ years.

<comment><USER6> The linux kernel has patches for it submitted now, ready for when the hardware arrives [https://www.phoronix.com/scan.php?page=news_item&px=Linux- De...](https://www.phoronix.com/scan.php?page=news_item&px=Linux- Default-5-LVL-Paging-Def)

<comment><USER5> My point was that very few need more than 48 bits of virtual address space. Having extra layer of lookup will reduce page walk performance.

52-bit physical & 57-bit virtual address space is a no brainer if you have more than 128 TB of RAM installed, of course. :-)

</comment></comment></comment></comment></comment></comment><comment><USER7> For everyone that enjoyed this, there's an entire free online MIT course called Performance Engineering of Software Systems[1] where you'll learn plenty more tricks and common pitfalls like these. You'll also learn how to use tools to debug the low level performance of your programs: looking at cache misses, cpu utilization, time spent per assembly operation and so on. It's pretty cool :)

[1] [https://ocw.mit.edu/courses/electrical-engineering-and- compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-172-performance-engineering-of-software-systems-fall-2010/)

<comment><USER8> Thanks for this, first lecture looks cool!

</comment></comment><comment><USER5> Very good article, facts looked correct and it had useful advice.

I'd add, keep things local. Don't access memory (or cache) outside core (L1 & L2), NUMA region or processor socket boundary unnecessarily.

Keep networking, GPU, etc. code in same NUMA region where the physical adapters are.

Use memory like tape, stream through. CPU branch predictors love that kind of access pattern.

Oh, and perhaps most importantly: use a profiler that can access CPU internal performance counters. Do this on different system types, from low power laptops to servers with 2 or more CPU sockets.

One annoying thing, though. Remember that the fastest thing in a microbenchmark might not be the fastest thing on a real system when different code modules fight for shared limited resources, like memory bandwidth, caches and inter-core communication links.

<comment><USER9> Could you elaborate on what it means to "use memory like tape"?

<comment><USER5> Sequential access patterns, forward or backward. Repeating predictable gaps are ok, but do remember minimum unit that can be read from memory is a cache line. So if you read one byte, you'll read 64 bytes on modern x86.

</comment></comment></comment><comment><USER10> Last time this came up ([https://news.ycombinator.com/item?id=20808778](https://news.ycombinator.com/item?id=20808778)) and disappeared almost instantly, I wrote:

A discussion of systems programming optimization that doesn't start with single-writer ring buffers starts on the wrong foot.

Those other tricks are excellent, and I use all of them, in cases where they work at all. But, e.g., seeking a way not to need to take a lock at all should come before discovering a low-contention locking protocol.

Readers should note that packing spare bits into the bottom bits of suitably aligned pointers is more portable than using high bits. Any page-aligned pointer has at least 12 bits free at the bottom, and any malloc'd pointer has at least 2, more often 4.

Ring buffer counters into a power-of-2 sized buffer can be incremented without bound, enabling use of ordinary arithmetic on them, and high bits masked off cheaply on each use. [But use 64 bits!]

Probably the most neglected primitive data structure is the bitmapped set. A `uint32_t` gives you a universe of 32 elements; a byte is enough for the days of the week. The popcount native instruction is very valuable here, usually expressed as `__builtin_popcount` in source code. C++98's `std::bitset` provides Standard, portable access to it, but C++20 offers `std::popcount` directly.

[I add here that storing things in high bits of addresses is very likely to fail on systems with ASLR, and that I have learned MSVC bitsets have a very slow popcount.]

<comment><USER11> bitmapped set is one I don't remember at all. It have another name? A quick google not give me a clear idea of what is or how could be usefull...

<comment><USER10> std::bitset is one. But you can just use an unsigned int, or array of them. In C++ or C, set intersection is &, union is |, complement is ~. Cardinality is __builtin_popcount, or std::bitset<>::count(). Membership test for m is (s & (1<<m)). For a larger set, represented as an array of unsigned, it's (s[m>>5] & (1<<(m&0x1f)). std::bitset encapsulates all this, optimally. There are similarly efficient implementations for lots of other useful operations: consult HAKMEM.

Bitsets are useful in more places than you might guess, because they can be used to filter out, with typically a single instruction, a majority of uninteresting cases in searches, leaving fewer cases to be examined with more precise and expensive operations. You record interesting properties of elements of a collection upon insertion as bits in a word stored alongside (or, better, in an index); and then first check the bits during any search. It is easy to speed up an amazing variety of programs by an order of magnitude, sometimes much more, with a tiny change.

For example, you can store an int value for each of a (possibly very large) collection of lines of text, representing the set of less-common letters that appear in the line. Searching for lines that contain a string, you first check it against the set for the string. Any line that doesn't have them all certainly doesn't have the string.

Leibniz (inventor of calculus) used this method very heavily in his own work. Before computers--and even into the 1960s--it was the most important way of automating data processing. Back then, you used cards that had a row of either holes or notches along one edge, and selected matching cards from a stack by inserting a rod through the stack at a selected spot, and lifting.

<comment><USER12> >Leibniz (inventor of calculus) used this method very heavily in his own work. Before computers--and even into the 1960s--it was the most important way of automating data processing. Back then, you used cards that had a row of either holes or notches along one edge, and selected matching cards from a stack by inserting a rod through the stack at a selected spot, and lifting.

Hey, do you have a reference for that? I've been doing some research into Leibniz's calculators, and I've been finding few sources.

<comment><USER10> There is quite a lot about Leibniz's calculating machine designs on Wikipedia.

I think I found out about Leibniz's bitwise activities in Neal Stephenson's _Quicksilver_ , but he invented the modern notions of both sets and digital logic, according to Wikipedia. He would have used the cards in catalogging libraries.

</comment></comment></comment></comment></comment><comment><USER13> Good article. Basics that everyone can benefit from knowing.

Just one nit/warning... breaking coarse locks into fine-grained locks _can_ be taken too far. There is a point of diminishing returns where you end up spending increased time acquiring/releasing/waiting-for locks. At some point you want to clump together under a single lock resources that tend to often be used together, even if you often end up locking an extra resource or two unnecessarily. As always, benchmark workloads are your friends.

<comment><USER14> Taken to the extreme, ONE lock in Python. :)

<comment><USER15> I know this is a joke, but you still need locks in Python

<comment><USER16> I didn't read it as a joke, you're just operating at a different abstraction level. The CPython interpreter famously uses a single global interpreter lock to protect the language internals and runtime, so it has trouble scaling beyond a single CPU on interpreter-heavy workloads. You're saying that threads in python scripts can be arbitrarily preempted, and so locking is required to protect them against each other, which is also true.

</comment></comment></comment></comment><comment><USER17> In most cases your compiler should do the clever work of turning your division or modulo operation into easier to do bit banging... but only if you're operating on a reasonable constant. Powers of two are best but you can do other constant divisions by stringing together 1-latency operations in ways that are still far faster than division.

<comment><USER18> Yes - as long as x is unsigned, then (x % 1024) will be compiled to the same thing as (x & 1023) with any reasonable compiler.

If your hashtable dynamically resizes though, (x % size) will use a full divide. You could keep the log2 of the size around instead, and rely on (x % (1U << size_shift)) being optimised (this works on gcc: [https://godbolt.org/z/HbGnJH](https://godbolt.org/z/HbGnJH)) but (x & (size - 1)) might be easier at that point.

</comment></comment><comment><USER19> Instead of repurposing top bits you can also repurpose the Bits beyond alignment. E.g 32 bit integers are aligned to 4 bytes, so you can use the lower two bits of pointers to them instead.

<comment><USER20> As someone who's worked on old Macs and has also done lots of 32 -> 64-bit porting, this is the sort of trick that works wonderfully...until it doesn't. And then you've got a nightmare on your hands.

I'm not saying never do that (ok, maybe I am...) But definitely think long and hard about how long your code will be around before you do it.

<comment><USER21> > As someone who's worked on old Macs and has also done lots of 32 -> 64-bit > porting, this is the sort of trick that works wonderfully...until it > doesn't. And then you've got a nightmare on your hands.

That's why you hide the trick behind a zero-cost abstraction which checks at compile-time if the platform supports this

<comment><USER22> One of my favorite system programming tricks is to never believe that a "zero cost abstraction" lives up to the name.

<comment><USER23> Modern optimizing C++ compilers (especially with Link Time Optimization enabled) are pretty amazing and can _very often_ actually achieve that abstraction collapsing.. But, of course, _always_ measure.

<comment><USER22> While it's true that modern compilers are wondrous things, checking whether they're clever enough to optimize away a particular construct - and to do so correctly, and to continue doing so in the next release - still takes time. If the same optimization can be done at a higher level, such that it will apply for any _correct_ (but not necessarily clever) compiler, that's preferable. In my experience that's practically all the time. The best compiler optimizations IMO are the ones that _can 't_ be easily done at the source level.

</comment></comment></comment></comment></comment></comment><comment><USER24> > Part of why the change couldn't be enabled by default is because various > high performance programs, notably various JavaScript engines and LuaJIT, > use this repurposing trick to pack some extra data into pointers.

Does any one know if this sentence can be backed up by a citation?

I know that the NaN-tagging trick assumes that pointers have 48 bits (small enough to fit inside a floating point mantissa), but was this ever a factor for deciding whether 5-level page tables should be added to the Linux kernel or not?

<comment><USER18> 5-level page tables have actually been in the kernel for a couple of years now.

The issue listed was definitely a concern, but was worked around by having the kernel only allocate userspace linear addresses that aren't 48-bit-canonical in response to a mmap() call that supplies such an address as the hint argument. See the commit message in this commit for example: [https://lore.kernel.org/patchwork/patch/796025/](https://lore.kernel.org/patchwork/patch/796025/)

So for a program to get an address above the 56-bit limit, its memory allocator has to specifically indicate to the kernel that it supports that.

</comment></comment><comment><USER25> Interesting article. Is there a reason why there isn't a book/article that has a more comprehensive list?

<comment><USER26> I guess partially because it can quickly become very dependent on the system you work on. But if you're specifically interested in caching issues, one good keyword to look for is "cache aware algorithms" \- or "cache oblivious algorithms".

On the locking side, the counterpart would probably be "lock-free algorithms", but I still don't believe their complexity means that in most cases you shouldn't look at those :)

</comment></comment><comment><USER27> The false-sharing macro in the example expands to __attribute__((alligned(/* etc _/ )) or __declspec(align(/_ etc*/). Is there a reason these are preferred over the alignas specifier introduced in C++ 11?

<comment><USER28> I believe there's a note that recommends the use of alignas when available: [https://github.com/abseil/abseil- cpp/blob/fa00c321073c7ea40a...](https://github.com/abseil/abseil- cpp/blob/fa00c321073c7ea40a4fc3dfc8a06309eae3d025/absl/base/optimization.h#L107)

</comment></comment><comment><USER29> > Now, to support multiple processors on a single machine reading and writing > from the same memory in a coherent way, only one processor on a machine can > have exclusive access to a given cache line.

Does this also apply when multiple processors are only reading memory?

<comment><USER30> No. That's what MESI-based cache protocols are all about. Multiple cores/processors can have the same cache line in a shared/read-only state. Only writes require exclusive access.

</comment></comment><comment><USER31> > The Magic Power of 2: Division Is Slowaloo

Is LLVM not smart enough to optimize this?

<comment><USER32> Yes, for constant divisors.

However, for signed division, the C semantics (round towards zero) are different than the semantics when you apply an arithmetic shift (round towards negative infinity).

If you are fine with the latter behavior explicit shifts remove several extraneous instructions dealing with the difference.

<comment><USER18> Or you can do the division in unsigned types - reasonable for something like an array index.

</comment></comment></comment><comment><USER33> Are there any golang implantation a of high performance hash maps? Does the the standard lib do this?

<comment><USER34> Go's built-in 'map' is very good.

But "high performance" is not a single dimension - if you say a bit more about what you care about, maybe another choice would fit.</comment></comment>


How Hunch Built a Data-Crunching Monster - <AUTHOR> https://www.readwriteweb.com/hack/2010/12/how-hunch-built-a-data-crunchi.php

<comment><USER2> I do a lot of work with very large graphs (100s of millions of nodes), running similar sorts of algorithms, and also have found there's a lot of benefits to going with a single machine with lots of memory.

I'm happy to read that article, because the conventional wisdom at the moment is very much to go down the road of hadoop, and large scale parallelism; but from experience, there's certain graph tasks it just doesn't work well for.</comment>


Fuze Basic for Nintendo Switch - <AUTHOR> https://www.fuze.co.uk/nintendo-switch.html <comment><USER4> It's really annoying to me how opaque this product is and how any useful tutorials or downloads are behind a login wall.

It promises a lot but tells me very little. Same goes for their now out of stock dedicated hardware.

<comment><USER5> Not only is the download behind a login but they also force you to receive marketing material.

Other than that, I'm genuinely excited about this.

Why is it so difficult to figure out how to get the software?

<comment><AUTHOR> The Switch version at least is available on the Nintendo eShop on the Switch, fully approved by Nintendo (unlike the Ruby interpreter that shipped inside 'A Dark Room' on the eShop).

</comment></comment></comment><comment><USER6> I got this around a week ago and started hacking out a simple Asteroids clone. Sadly, it's right now super buggy and as someone else mentioned a lot of information is locked behind sign-up screens and so on... I only had my phone on me and tried to sign up but couldn't get the site to work, so I tweeted the official twitter account a few messages but didn't get a response. The showstopper issue I had was that it's hard coded to a UK keyboard layout (fair enough) and I couldn't work out how to type a | for an 'or' operator (shift-\ did not work!). Not only that, but the on-screen keyboard doesn't appear to have one! The API is fairly powerful, I hope they keep updating and ironing out some of the issues.

edit: I just signed up now and managed to log in, and I was expecting forums or at least a blog but I can't find anything. Hopefully some kind of community feedback loop is in the works.

</comment><comment><USER7> I hope someone finds a way to escape the sandbox with this, just like with smileBASIC on the 3DS.

[https://gbatemp.net/threads/release-basicsploit-primary- home...](https://gbatemp.net/threads/release-basicsploit-primary-homebrew- exploit-for-smilebasic.433920/)

<comment><USER8> Switch is already hacked in every way possible, there's no real need to do that.

<comment><USER9> From what I've heard it's getting to be difficult to find a model that can be exploited with the bootloader exploit. Given that Nintendo also bans units that have been detected playing pirated games, buying one used seems like a risky proposition too.

</comment></comment></comment><comment><USER10> > easy as BASIC, powerful like C and versatile like Python.

lol, heard that before.

> Over $1,000 worth of high-quality gaming assets

According to who?

So, is this a gamemaker being released on switch? I don't get it.

You're supposed to write code on a touchscreen switch keyboard?

<comment><USER11> The Switch supports USB keyboards and mice.

<comment><USER12> How!? I had no idea. Via some sort of USB-hub?

<comment><USER13> The Dock has USB ports

<comment><USER14> Also any old USB-C hub works for it. Not all of them can charge it, but any of them can be used for connecting a keyboard/mouse/wired controller

</comment></comment></comment></comment></comment><comment><USER15> > FUZE4 takes as many pros as we could cram in from a mix of these languages > (C, Python & BASIC to name a few) to create a language that is as easy as > BASIC, powerful like C and versatile like Python.

Is it me or has this become more and more of a theme for new programming languages? Do they even deliver on all these promises?

<comment><USER16> Those promises are "easy" to achieve for a certain interpretation of what they mean.

BASIC itself, through things like peek and poke, can give you the "power of C", and with subroutines if you create a stdlib that you inject, you can certainly make it as high-level and versatile as Python.

That doesn't mean that you get the benefits of C, Python and BASIC all at once though. You've achieved the overly-broad goals, and can say you haven't lied, but the impression the consumer has won't live up to the real world - <USER2> they're expecting the cultures and communities of those languages as well.

<comment><USER17> QuickBasic/TurboBasic, VisualBasic, Dark Basic, Gambas, etc. managed to evolve BASIC very well.

<comment><AUTHOR> So did the Blitz BASIC family. The thing that always impressed and astonished me about BlitzMax was just how many games seemed to actually get _finished_ with it. Lots of them even looked very polished. It was really cool to see at the time (around 2006ish I think is when I was following it, though not exactly sure).

<comment><USER18> That was the first programming language I ever learned - lots of fun memories spent in Blitz3D and BlitzMax trying to make "the next Skyrim" with high school friends.

The newest member of that family is Monkey 2 [0], not to be confused with Thorsten Ball's Monkey [1].

[0]: [https://blitzresearch.itch.io/monkey2](https://blitzresearch.itch.io/monkey2)

[1]: [https://monkeylang.org](https://monkeylang.org)

</comment></comment></comment></comment></comment><comment><USER19> Please allow me to clarify a few things here.

My name is Jon Silvera and I run FUZE Technologies Ltd.

First off why is this item called Fuze Basic for Nintendo Switch. The product is called FUZE4 Nintendo Switch and sorry folks but it is not BASIC.

We are an education company - we deliver coding workshops to young people around the country. We developed FUZE to help us achieve this. The results have been so positive we decided to bring it to new platforms like the Switch.

The site mentioned below being behind a login wall.. fuzearena.com is a community website to support FUZE. Due to many of our users being children we absolutely have to moderate the site and due to the sharing nature, that is using Nintendo friend IDs we must have accountability.

The out of stock hardware is an old product using old versions of FUZE BASIC (the previous product that has nothing to do with FUZE4). We hope to release new hardware with the new version of FUZE4 in the future.

I wasn't aware about forcing you to receive marketing materials - i will look into this. It should not be the case.

The software is called FUZE4 Nintendo Switch - it is available on the eShop. I don't think we could have made it any easier to get!

The release version has a few bugs, more than i would have liked. There is a patch already in the approval process with Nintendo. This fixes almost all of the known bugs and certainly gets rid of the worst ones.

This is a games console - it will always be restricted. The point is that this is a learn-to code app for users to get to grips with coding by programming games. If the users move on to Unity + C# or C++ or Python or Java for that matter then our work has been a success.

However, Windows, Android, Raspberry Pi versions will follow and if we do reasonably well then Stadia, XBOX, Playstation & Apple devices. The bulk of these will allow for a far more open landscape.

Sharing on the Switch however is perhaps not as restricted as you imagine and it is likely to improve over time as Nintendo trust the application more.

"easy as BASIC, powerful like C and versatile like Python" \- Try it! This was our objective from the beginning.

"Over $1,000 worth of high-quality gaming assets" \- you want a fight - <USER3> outside. Actually the real cost is a lot higher as many assets we're created exclusively. However if you go to Itch.io and a couple of other content sellers and combine everything we included then it comes to just over $1,200. And yes, we do have the artists approval in every single case!

The touch keyboard works really well and it is no ZX81 - I know this because i started on the early Z80s. I code using the screen a lot and whilst it won't replace a proper keyboard it is very, very usable. However plug a USB keyboard in and you're all set.

"every "coding for children" thing is fake" \- now this is a good comment and i generally agree. The problem is we spend too much time teaching kids to play at coding rather than teach them real text based stuff. The problem is that things have been dumbed down so much people have forgotten what kids are actually capable of. At FUZE we teach text based coding, always have and always will because that is what it is. Someone still has to write Scratch and so on. We teach kids from six and up - in the early years it's all LOOPS, VARIABLEs and IF THEN statements but we quickly move on to arrays, vectors, lists, structures, 3D and so on.

"Why did they write their own language? Why not just use an existing language?" \- We are teaching kids to code. Right now kids are taken from Scratch to Python - the jump is too much. FUZE is a transitional language designed to lower the barriers of entry to the real world languages.

Look folks, all we're trying to do here is provide an accessible, easy to learn coding environment to get more kids into coding. The fact FUZE is powerful enough and 'real world' enough for seasoned coders to enjoy is a bonus and it helps everyone if the pro's can help the newcomers.

Oh, someone said they thought it was freeware. Hmm.. nope. It cost over £250,000 to develops.

There will be free versions around the education channel and maybe players in the future but for now we need to recover our investments, buy flash new cars, buy a lot of drugs and go on a few crazy holidays, so just buy the damn thing!

I think I have covered everything.

But to summarise, we are trying to make a living by making an accessible learn to code platform to encourage more young people to get into coding.

It's bloody good and as such it deserves a tad more love!

Jon Silvera FUZE Technologies Ltd / feel free to email, i'm easy to find.

<comment><USER20> > There will be free versions around the education channel and maybe players > in the future but for now we need to recover our investments, buy flash new > cars, buy a lot of drugs and go on a few crazy holidays, so just buy the > damn thing!

I understand that this is tongue-in-cheek, but maybe this isn't the type of thing you want to be saying when trying to market a product for children?

<comment><USER21> He's not saying it in marketing material, though. He's saying it here. Context matters.

</comment></comment></comment><comment><USER22> I'll have to check this out.

I'm reminded of the hidden Ruby interpreter, too bad that wasn't cleared beforehand, I'm sure there would have been a way to make it work: [https://arstechnica.com/gaming/2019/05/game-with-hidden- ruby...](https://arstechnica.com/gaming/2019/05/game-with-hidden-ruby- interpreter-pulled-from-nintendo-switch-eshop/)

</comment><comment><USER23> This reminds me of Codea for iPad. For me what makes Codea so great is that there are actually games and apps in the App Store that are built with Codea.

With Fuze is it possible to make a build of the game which can be run on other platforms? If your game is really good, could you build it for the Switch marketplace?

<comment><AUTHOR> Have there been any other games besides Cargo-Not made and released with it?

I really really wanted to like Codea, but couldn't get my head around how you'd organize a big project with it. That and I find touchscreen keyboards terrible to code with.

EDIT: Found this forum thread for games and apps made with Codea, looks inspiring: [https://codea.io/talk/discussion/1983/app-store-games-and- ap...](https://codea.io/talk/discussion/1983/app-store-games-and-apps-made- with-codea)

<comment><USER8> I love codea, but a bluetooth keyboard case for the ipad is a must.

</comment></comment></comment><comment><USER24> I've been really looking forward to this for the last couple years, and am glad to see it finally released, but I must have missed the memo when they put a price tag on it, because I thought it was going to be freeware.

The only disappointments in how FUZE has evolved is that they don't seem to want you to actually SHARE anything you make. You can only share your made games with people on your friend's list. You can't publish them anywhere. Supposedly you can make external assets to push to the Switch, but without the ability to share games I've made, I'll be less likely to pay for it.

<comment><USER25> The requirements from nintendo to prevent code sharing really crippled the networking in smile basic, that was pretty dissapointing.

Of course if you've run fuse galle (or however you spell it) you can go grab a fairly complete python environment from a homebrew developer and just run that, there just isn't a decent editor you can run directly on the switch (yet.)

</comment></comment><comment><USER26> $40 on eShop

[https://www.nintendo.com/games/detail/fuze4-nintendo- switch/](https://www.nintendo.com/games/detail/fuze4-nintendo-switch/)

<comment><USER27> Surprisingly this isn't linked on the homepage for the software, which is very strange.

</comment></comment><comment><USER28> I'll go straight: every "coding for children" thing is fake and does not work. Give a kid a book on real coding when he/she is ready (in any sense) and it's done.

<comment><AUTHOR> I think FUZE is closer to a fantasy console (eg- PICO-8) than it is to a 'coding for kids' thing (eg- Scratch or Alice), since you have to actually type in code and that code is text. There's nothing wrong with 'coding for kids' things either IMHO; I find the design of them quite interesting actually (from both a language design and a UI perspective).

What do you define as 'real coding'? What kinds of things are you thinking of as 'coding for kids'?

</comment></comment><comment><USER29> I thought it would be a version of [https://www.fuze.com/](https://www.fuze.com/) for the Switch...

<comment><AUTHOR> For some reason HN changed the casing of my submission title - 'BASIC' got changed to 'Basic'.

<comment><USER30> From what I've seen, there's some software that massages titles. If you can't edit it at this point, you can email the mods using the Contact link in the footer to request a correction.

</comment></comment></comment><comment><USER31> How do you type in that language on that device? Moving on a virtual keyboard using the joystick should be supper hard way to do it.

<comment><USER32> The switch has a touch screen so it shouldn't be harder than on a phone. - form factor aside -

<comment><USER33> When you take the JoyCons off, the form factor of the screen unit is essentially a slightly bulky phablet.

<comment><USER34> You can't really grip the Switch like a phone, because the rails that the Joycons slide into are uncomfortable. And it's a bit too small for typing on a desk as I might with an iPad.

</comment></comment></comment></comment><comment><USER35> Why did they write their own language? Why not just use an existing language?</comment>


Race and sex differences in AP test results - <AUTHOR> http://i.imgur.com/gZRW8ab.png

<comment><USER2> Confusing graph. No variances shown. No explanation of the axes. No explanation why the authors chose to use the mean rather than some other statistic. Overall, without the accompanying paper, a D-.</comment>


Just made my donation to the members of truecrypt.org - <AUTHOR>

As I wanted to download the latest version of TrueCrypt today, I've seen that they are actively asking for donations. I'm using Truecrypt for almost a decade now. I think it was about time ;-) <comment><USER2> <http://www.truecrypt.org/>

"TrueCrypt 7.1 ( September 1, 2011 )"</comment>


Share HN: Weird DigitalOcean domain-IP issue - <AUTHOR>

So I recently created a new DigitalOcean droplet that has a specific IP address assigned to it. I have a domain registered which I have successfully registered with this IP.
Googling myself to check if my site shows up, I came across a weird issue. There is a totally unrelated domain that I do not even own but it is also pointing to the same exact IP that digitalOcean assigned to my droplet. So bascially when you type that domain in browser, it takes you to my website. Anyone else seen this before ? I have created a ticket with DO of course but wanted to share with HN.
EDIT: I am guess it is a IP recycling issue with DO but waiting for them to confirm. <comment><USER2> Digital Ocean can't fix this for you.

Presumably the other domain belongs to one of their former customers, and they used to have a droplet with that IP address.

(a) Contact that former customer (hopefully their contact details are in the whois) and ask them to update their dns data.

(b) Update your website to return a 400 http error when accessed via that domain name.

</comment><comment><USER3> Surely it's just that the other domain used to point at a website hosted on Digital Ocean, which has recycled the IP address?

The old user just has bothered to update their DNS records.</comment>


Ask HN: Dealing with a crush at work - <AUTHOR>

I work at and partially own a company that builds websites. My office environment is filled with photographers and designers with me being the only developer. It's easy to feel out of place in such a work environment, especially when you're the kind of person that finds it difficult to interact with others. Lately, I've found myself falling for a lady at work. She shares similar interests and we've had some long chats. Unfortunately, she works for me. It's made things difficult for me at the office and has been negatively affecting my productivity. I both loath and love going into work but not for the right reasons.<p>While we're not necessarily a tech startup, we are focused on making cool things in the digital magazine arena here in New Zealand. I feel this entitles me to post on HN and ask for some advice. Surely, we developers and entrepreneurs have faced a similar problem at work? What can I possibly do? <comment><USER2> Direct your attentions elsewhere.

Mixing business and romance is in itself very difficult to pull off without a massive explosion of drama that hurts everyone involved and spares shrapnel for those who just happen to be nearby. Add in the employer/employee dynamic, and we're talking at best a ton of work to try (and usually fail) to mitigate the power imbalance, and at worst a sexual harassment lawsuit.

You've described yourself as someone who finds it difficult to interact with others. You find yourself falling for someone in a situation where you couldn't help but interact with her. In other words, your hindbrain is screaming "take the easy way out!".

I get it... our society makes the location, selection, and courting of mates difficult and extremely high-risk for heterosexual males. It's dysfunctional, and it needs to stop. Women are trained almost from birth in a set of behaviors and expectations that hamstring you at every turn, and yet most feel powerless in a situation that can be just as frustrating for them.

Learn to be more effective in finding and wooing mates in a situation where you aren't mixing different relationship types, and do your best to step out of the expected patterns. When you aren't reacting to a self-imposed scarcity, passing attractions won't be such a big deal, they'll just pass.

\--Susan

P.S. -- Yes, I know I just made all of that sound far easier that it is. It's not easy, but it does work if you go about it right. I know this because I tend to send my male friends and partners into the world far more capable at selecting and wooing interesting women than they were when I found them. It's just another skill to learn.

</comment><comment><USER3> Hey - play it safe. Company relationships can be tough, and if you think your not the type that could maybe handle all outcomes (you know, flit if off confidently and play the game as it were) just be mindful of the consequences should things go wrong.

But look, your human, if theres a pretty girl and you guys have the same interests certainly continue to do what your doing. You'd be doing you and humanity a dis justice if you just "stopped" talking to her, or stopped any consideration of what "could happen".

I think if I was you I would wind it up to the point where you are both certain what you would like to do next, and just go with the flow.

(...or just fire her! ...joking of course!)

Enjoy

</comment><comment><USER4> You should let her know what you feel, talk about it and together decide what to do next. You only have a problem if the feeling is not mutual.

My wife is also my employee and we had no problems whatsoever.

</comment><comment><USER5> If you go further with this then one of you has to leave. Most likely her, but only because you own the company, of course.</comment>


Show HN: An Electron starter project using Parched - <AUTHOR> https://github.com/BraveNewWorldDev/parched-electron-starter

<comment><AUTHOR> I've previously posted about Parched[1], a build system that we have been playing around with at work. In usage, it is a lot like Brunch, only built upon Gulp.

It's not much use without the webapp tasks[2], which adds browserify and bower into the mix.

Most recently I've been playing with Electron after not being satisified with single-site browsers on OS X. Thus we have parched-electron-starter.

The commands are no different that standard parched:

        gulp parched-clean
        gulp parched-watch
        NODE_ENVIRONMENT=production gulp parched-build

Only you get an Electron app out of it.

(And a web app if you'd like).

[1]: [https://github.com/BraveNewWorldDev/parched](https://github.com/BraveNewWorldDev/parched)

[2]: [https://github.com/BraveNewWorldDev/parched-tasks- webapp](https://github.com/BraveNewWorldDev/parched-tasks-webapp)</comment>


IPhone 5 Wifi Nightmare - <AUTHOR> https://discussions.apple.com/thread/4322714?start=2415&tstart=0

<comment><USER2> It seems that Apple, with iOS 6, has messed up Wifi across many device somehow. I can't use the Wifi on my iPhone 4S at all after upgrading to iOS 6.0.1 - I had issues similar to this iPhone 5 post when using iOS 6.0. I upgraded to iOS 6.1 beta 2 (for Apple developers) and that hasn't resolved the issue either. I've read that people are experiencing similar issues on their iPad 2 with iOS 6.

See my previous submission: iOS 6 Kills iPhone 4S Wifi - <http://news.ycombinator.com/item?id=4811540></comment>


Ask HN: Where to find a designer for a cheap startup - <AUTHOR>

I am looking for a designer to create the site and ui elements for my startup.  I am a student with extremely limited funds although I have saved up some money to invest in a design.  Does anyone have any recommendations as to a good designer with experience in startup work? <comment><USER2> I'm another student / designer / entrepreneur. Maybe it'd be worth talking? My portfolio: <http://sicret.net>

My email is in my profile.

</comment><comment><USER3> 99designs: <http://99designs.com>

</comment><comment><USER4> i've had good luck with crowdspring <http://crowdspring.com></comment>


Inside the mind of a piano prodigy - <AUTHOR> http://www.cnn.com/2012/09/05/showbiz/benjamin-grosvener-piano-prodigy/index.html?hpt=hp_c1

<comment><USER2> The feeling of competitive pride is possibly the most precious resource in the universe. Who can achieve anything without it?

Dragon moms all over the world weep with envy over this boy.</comment>


Ask HN: How to protect yourself against keyloggers? - <AUTHOR> While I am by no means a security expert, I try to follow good security practices as much as I can. I use unique passwords with a password manager, I use SSH keys for logging in to any remote machine and I use PGP to encrypt any sensitive files on my machine.<p>However none of these will protect you against a keylogger. Ultimately your keys/passwords will be protected by a password. I understand that if your system is compromised it's pretty much game over, but what are some good practices to protect yourself against a keylogger? <comment><USER2> One reasonable practice can be to use multi factor authentication when gaining access to services that you use, MFA will allow you to take advantage of one time passwords coupled with unique passwords managed by a password manager.

</comment><comment><USER3> On a related note, what's the best way to test if my mechanical keyboard from China isn't logging everything I type and selling it to the highest bidder?

<comment><USER4> The 'best' way is to carefully log all of your network traffic and investigate any weird outbound traffic. There are automated tools that can help with this, but at the end of the day, you're going to be going through individual outbound connections and figuring out what's sketchy versus what's okay.

This gets really complicated because it's very easy for skilled people to hide data in legitimate looking data transfers.

<comment><USER5> The keyboard itself won't be able to send anything over the network. A malicious keyboard driver could, but it doesn't have anything to do with the hardware component. Well, technically the keyboard could broadcast the recorded keystrokes via WiFi or Bluetooth granted it has additional hardware built-in, but that would make things significantly more difficult for the attacker.

<comment><USER6> Then the secure behaviour would be to refuse installation of any driver but the standard ones. Is it possible?

</comment></comment></comment></comment><comment><USER7> use zero-width characters in your passwords to fool the attacker ^_^

<comment><USER8> In all seriousness I think many applications wont handle that correctly and you will probably lock yourself out a lot.</comment></comment>


Yescrypt – password hashing scalable beyond bcrypt and scrypt - <AUTHOR> http://www.openwall.com/presentations/PHDays2014-Yescrypt/

<comment><USER2> For those interested, the slides state that yescrypt is not finalized, and the finalized yescrypt may be incompatible with the current implementation.</comment>


We Need a New Deal to Address the Economic Risks of Automation - <AUTHOR> https://techcrunch.com/2017/03/31/we-need-a-new-deal-to-address-the-economic-risks-of-automation/ <comment><USER2> I disagree with the author here on UBI. The root of the issue goes deeper than deciding to prop up job markets so that there is enough supply of jobs to meet the demand. Based on the arguments in the article, this can only be a temporary fix; eventually automation will take over too many jobs for every person to have one—or at the very least, human labor is a commodity that eventually becomes so cheap that the laborers cannot survive.

The author seems to be solidly in the 'work == virtue' camp and argues that UBI decreases the incentive to work. While partly true, the REAL work we want done is not menial, but innovative, and leads to the next big breakthroughs that increase productivity and eliminate even MORE jobs. This is capitalism, no? UBI is there so everyone still survives to have a crack at it, if they want to.

This becomes an ethical question quite quickly: does being born make you worthy of survival?

<comment><USER3> Um, yes? Being born makes you worthy of survival. Where is the ethical dilemma? Otherwise I agree with your post.

<comment><USER2> It's meant to be rhetorical; of course being born makes you worthy of survival! But what if working doesn't provide you enough sustenance? And what if you don't even have the opportunity in the first place, once the demand for human labor is low enough?

<comment><USER4> We have more than enough resources. If working does not provide enough sustenance then we need to replace the government. These are political issues not economic ones. We can solve the problem of production with automation, however the problem of distribution remains and if the government is not distributing resources to you then you need to take that government down and replace it with one that does. That ultimatum hopefully makes politicians understand that they are no longer serving their corporate overlords but the people. They have been ignoring the people so long that might get some getting used to.

Most innovation done today I would say a good 99% of what constitutes the job market is trivial and can be automated away in the next 50 years. What remains is the 1% of scientists and engineers that actually make shit happen and strive to change the game. It's fine with me if these people live like kings and the rest of us have enough resources and all the free time in the world to do whatever we want and not be encumbered by trivial work. Maybe we can bring back hunting gathering civilizations or other microcosms of civilization and ways of life.

<comment><USER5> >It's fine with me if these people live like kings and the rest of us have enough resources and all the free time in the world to do whatever we want and not be encumbered by trivial work.

One problem with this that springs to mind is that historically, relative numbers of young, bored, jobless men and crime rates are tightly correlated.

<comment><USER4> Gaming. Virtual reality. Virtual reality porn. They can be hooligans there. You want somewhere to prove yourself do it there. We should in fact create a de facto virtual reality simulation to take over lots of useless social things we do with material goods and services like expensive cars, clothing, and whatnot. All the conspicuous consumption can happen in virtual reality. That's much better for the environment too. Leave the actual real world alone and focus on implementing our imaginations in the virtual world.

It's already happening: [http://www.chicagotribune.com/business/ct-video- games-jobs-e...](http://www.chicagotribune.com/business/ct-video-games-jobs- emploment-20160923-story.html)

[http://www.huffingtonpost.com/2015/07/13/gamer-prefers- virtu...](http://www.huffingtonpost.com/2015/07/13/gamer-prefers-virtual- world_n_7789168.html)

<comment><USER6> This argument ignores history, human psychology, and basic reality.

<comment><USER4> Human beings don't live in reality they live in their imaginations work to bring that imagination into the real world through technology. History is just that history, we never had this sort of tech so looking to history and saying it won't work is irrelevant. Basic psychology is that humans don't live in the real world but in their imaginations. There is already a subsection of society that's already so involved in gaming that they don't care about the "real" world any more, links on the edit above.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> As usual the chorus will be something along the lines of:

"Nothing to see here. We've had these shifts before and more jobs will be created than lost and people will transition to new jobs etc..."

To which the response is, yes that's true, however never have we seen it at such a pace. Shifts are now likely to happen multiple times in a single working lifetime, as opposed to once a generation (1960-2000 - Solid State & industrial automation) or once every third generation (1800-1920 - Industrialization).

From years 0-1800 you could expect that your children would probably do the same job you and your grandfather did (more than likely farming). From 1950's on, children would likely go into a different line of work than their parents were in. Now it's common for a parent to have multiple careers with completely different skill sets and so on for their children.

This would be all well and good if one of these options were true:

1\. People could adapt as quickly as advances in machine processes are changing (the outcome of which obviates machine efficiencies)

2\. There was flexibility in the system which would allow people the time to adapt

The only other way to keep people around and not in poverty conditions would be to decouple human needs from business processes - which is effectively what UBI is trying to do in a roundabout way. I think has interesting long term outcomes, namely that a few dominant machine organizations would feed, clothe, house and train the population.

<comment><USER8> Tiny nit: generations are measured in 20 or 25 year increments, an "average" of how long it takes one group of humans to grow up and begin reproducing themselves. I've found that the media tends to use 20 year increments, even though 25 is a bit more accurate for an "average time for two people to have two children".

This would change your figures to around 2 generations for the current automation revolution, and industrialization to between 4-6 generations.

<comment><USER7> Thanks for that. I wrestled with using generational vs life span for that exact reason, but decided it was pedantic and not worth going into. So thanks for doing that math for me :)

</comment></comment></comment><comment><USER9> I'm totally onboard with UBI if it is actually needed. The problem is people PROJECTING that it will be needed. In the current world human labor is very much in demand. Maybe people won't be able to use the specific degree that they went to school for but that just means a bit of retraining and/or a bit of mindset shift. If there is a massive outflux of jobs in America, then there are many questions that need to be answered before even approaching UBI as a solution. For example, "are all countries suffering the same job losses? If not, then why not?"

<comment><USER10> > In the current world human labor is very much in demand.

If this were the case, wages would be rising. Supply and demand is what kept unions around in the 60s, there was enough demand for labor that they could demand higher wages and better treatment. Now due to globalization and other things, the return on labor is incredibly low and still declining.

<comment><USER9> Wages are rising significantly in the China, India, etc and are catching up. Nobody really knows what will happen once all of the labor that is extremely cheap now is not as cheap. We can conjecture that their will be some upheaval, but nobody really knows what the effects will be.

<comment><USER10> Wages are rising for them regionally, but the return on labor is lower than it was before. Previously, a laborer working 9-5 could afford a middle class life with a house, car, and nuclear family. Can a laborer in India or China afford that now? I doubt it.

<comment><USER9> Well no, a laborer in India and China cannot afford that now but more people have come out of poverty in the last 20 years than any 20 year period in history. [http://www.economist.com/news/leaders/21578665-nearly-1-bill...](http://www.economist.com/news/leaders/21578665-nearly-1-billion- people-have-been-taken-out-extreme-poverty-20-years-world-should-aim)

<comment><USER10> That is great, a true testament to the wealth-creating power of globalization, but it doesn't change the fact that the return on labor is significantly lower than it used to be.

</comment></comment></comment></comment></comment></comment><comment> d--b You don't really have to speculate. Automation is going to do to the service industry what globalization did to manufacturing. Manufacturing got "automated" away by sending work to places where labor costs next to nothing.

Did the offshoring of manufacture jobs create joblessness?

Actually I'm not sure what the answer to that is. According to statistics the US is running at full employment. According to pretty much every other source of information, regions where manufacturing used to happen are devastated by joblessness, drug addiction, and violence...

I don't know why there is such a disconnect.

<comment><USER11> Because the unemployment rate is a lie. It is denominated by the "labor force", which, if one excludes those who are no longer seeking work or chronically unemployed, it's basically being dishonest with statistics. One does not have to feign ignorance as to why there is a disconnect between the statistics and the reality.

<comment><USER12> It's not a lie, it's a technical measure that people misinterpret.

If it was a lie you'd expect suppression of the further data.

[https://www.bls.gov/news.release/empsit.t15.htm](https://www.bls.gov/news.release/empsit.t15.htm)

<comment><USER11> There is no need to censor the data, as long as one can present it in a way that is favorable to a particular viewpoint. The fallacious argument being made with the unemployment rate lends itself to misinterpretation.

</comment></comment></comment></comment><comment><USER13> this guy needs a little more humility. as dan boudreaux writes:

"It's called "history." Since humans first controlled fire and carved arrows, history is a long tale of the invention and use of labor-saving techniques and devices. Domestication of oxen and horses. Pulleys. Levers. Irrigation channels. Metal saws. The printing press. Concrete. The wheel. All save labor, yet none has led to permanent increases in unemployment.

"It's true that the pace of introducing new labor-saving techniques has magnificently quickened in the past two hundred years. This fast pace continues today. Yet still we encounter no evidence that labor-saving techniques permanently increase unemployment.

"You'll reply "This time is different!" Perhaps, but I doubt it"

<comment><USER14> There are strong arguments in the "this time is different" side.

When jobs are lost because technology, the new jobs are created in fields where technology can't compete. Until now that was intellectual work.

<comment><USER13> To me, it's a lack of imagination -- not the ability to imagine the kinds of work people will be doing in 100 years (which is very difficult), but the lack of empathy/ability to get out of the here and now. In 1800's over half of US workers were in agriculture, today it's under 2%. If you were to tell a farmer that in 1900 they'd freak out, very similarly to how this guy's freaking out today.

</comment></comment></comment><comment><USER15> Automation is going to happen anyway.

There are several ways we can deal with it.

1\. We can set up a social safety net to transition displaced workers to a new trade/career.

2\. Protectionism.

3\. We do nothing.

4\. basic income

\---

Doing nothing is silly.

Basic income isn't going to pass in USA, universal healthcare haven't even pass yet.

Protectionism goes against capitalism and it doesn't help in the long run. It just extend a dying market like coals. We chose to become specialized a long time ago and not specializing is crazy.

So the most sensible thing is a safety net.

<comment><USER14> The elephant on the room, the old question that it seems nobody wants to mention is, in a totally automated economy, "who owns the means of production?".

I don't think we are going to arrive nowhere in the discussion until we face that question.

</comment></comment><comment><USER16> > UBI reduces the incentive to work, and risks stranding millions of people in > a subsistence living trap, able to just about get by, but cut off from the > opportunity for upward mobility, as this essay details well.

The claim is prima facie false, so I looked at the source provided ("this essay" is [1]) and it doesn't support that claim AT ALL.

[1] [https://www.technologyreview.com/s/601499/basic-income-a- sel...](https://www.technologyreview.com/s/601499/basic-income-a-sellout-of- the-american-dream/)

<comment><USER17> I think the reasoning goes like that:

If you give 100k people each 10k$ each month, chances are that some of them stop working because they consider it enough.

The same holds for 1k$ but to a lesser extent.

Still, UBI reduces the incentive to work.

<comment><USER14> So, they give money to people because there are not enough works and then complain because the people don't work.

I get lost somewhere in the reasoning.

</comment></comment></comment><comment><USER18> I think i've read one too many articles on the "oh no, the robots will flip our burgers. Let's make burgers that's unflippable by robots so we can keep doing it." Even people who don't mind working, maybe loves working will be okay with automating things and moving on. They will have other things in their hobby list/ bucket list/ garage that they have been meaning to work on.

I understand these articles are still needed/useful for people not yet aware about this issue so it's not a criticism of the article but of myself.

<comment><USER10> You're assuming that this is a rising tide that will lift all boats. What I'm afraid of is that the world will be split into capital owners who own all the robots, and the perpetually poor, who can't get jobs because they've all been automated and the only jobs remaining are minimum wage "service" jobs. And that's assuming there will be enough service jobs to go around.

We're already seeing this split occur in USA. The middle class is basically gone at this point, and the majority of people are either upper-middle class or lower class. This is not a just or equal society at all right now.

<comment><USER19> _The middle class is basically gone at this point, and the majority of people are either upper-middle class or lower class._

This is only true if you have some bizarre definitions that you're using. The decline of the middle class has been a few percentage points. It's certainly not "gone".

More than 50% of households in America make $25-100k. That's solidly middle- class.

[https://en.m.wikipedia.org/wiki/Income_in_the_United_States](https://en.m.wikipedia.org/wiki/Income_in_the_United_States)

<comment><USER10> $25k is really not middle class, especially in cities with higher COL.

</comment></comment></comment></comment><comment><USER20> We just need to accept Marx was right, but he got the timescale wrong. I say this as a staunch Randian. I just can't not see the obvious trend towards the future.

Pixar's WALL-E is the Marxist utopia we'll soon be living in.

No one wants for anything.

</comment><comment><USER21> "There's been downward pressure on jobs since the Industrial Revolution due to leaps in productivity brought about by human ingenuity and lucky discoveries." [citation needed] there were never more jobs

</comment><comment><USER22> Tax the robot

</comment><comment><USER23> Automation is the natural consequence of computer technology, which is a natural consequence of human intelligence. Any effort to fight or control automation is doomed.

Believe it or not, the future is gonna be much different and you either accept it, or get crushed by the power of The Machine.

<comment><USER24> Ok. What do we do during the transition while millions of blue collar workers take to blaming brown people for job losses?

EDIT - seems I could have done a better job with the satire here. There have been several reports that Donald Trump's Mexican wall is misguided and that the major driver of job losses these days is increased effeciency due to automation.

<comment><USER25> Yes, Democratic Party, please keep insulting working-class American citizens by calling them vile names. The Republican Party will be happy to receive their votes.

<comment><USER24> First, I'm a conservative though I lean heavily towards libertarian. That said, who called anyone names? Would you have felt more comfortable with my statement if I had substituted xenophobia for brown people? I don't think racism is as huge a factor as simple scapegoating and opportunism by politicians. The public is being misled and comments like the parent's ignore the very real impact automation is having on society.</comment></comment></comment></comment>


Secret Life of Machines – The Fax Machine (1993) [video] - <AUTHOR> https://www.youtube.com/watch?v=IaCfs5Xb-EI&feature=youtu.be <comment><USER2> This entire series of programs is brilliant, and watching re-runs of it on TLC (remember when they showed actual educational programming?) was one of my inspirations for being an engineer. It was produced at time which I would characterize as a technological "sweet spot" where most of the technologies and appliances we rely on today had been invented, but everything had yet to become digitized and computerized so it could still be explained even without covering digital computers in any detail (well, except the program on computers of course).

</comment><comment><USER3> Fortunately I have the full collection in my media files. I watch it often and although it dated it's the seminal TV production for "How to do something and why".

Personally my favorites are the Elevator and the Vacuum.

</comment><comment><USER4> Thanks for posting that I had a memory of the series the other day which I presumably saw 24 years ago and couldn't for the life of me remember what the thing was called.

</comment><comment><USER5> I also think my entire choice of career, and thus readship here, is due to this series. If you're ever near Lowestoft UK, Tim Hunkin the presenter has an interactive installation of many of his coin operated arcade games. [http://www.underthepier.com](http://www.underthepier.com)</comment>


All of Toyota's electric vehicle patents are now royalty-free - <AUTHOR> https://www.topgear.com/car-news/electric/toyota-sharing-its-ev-secrets-free <comment><USER2> Someone has to read the actual legal verbage. For example, to quote [https://twitter.com/Tweetermeyer/status/1092570451329441792](https://twitter.com/Tweetermeyer/status/1092570451329441792) on Tesla's free patents - "A common belief is that anyone using Tesla's patents has to give Tesla access to its patents, but that's not quite accurate. To meet Tesla's "good faith" standard, you can't have asserted an EV-related patent or IP right against ANYONE."

Start with the actual press release: [https://global.toyota/en/newsroom/corporate/27512455.html](https://global.toyota/en/newsroom/corporate/27512455.html)

which links to:

[https://toyota.jp/cmpn/gp/ma/dc/electrification- technologies...](https://toyota.jp/cmpn/gp/ma/dc/electrification- technologies_en) \- whose title is "Inquiry regarding royalty-free availability of electrification technologies up to 2030"

<comment><USER3> So in order to take advantage of Tesla patents, you can't be suing anyone else on EV-related patents of your own?

That actually sounds like an interesting and positive side-effect, or am I missing something here?

<comment><USER4> Sort of sounds like GPL, but for patents. Maybe this is the way to fix the patent system? Build huge portfolios that grant people use of them so long as they are not suing anybody for any payments they hold.

<comment><USER5> Except almost worse. You can choose to not use a piece of GPL software. You might very well accidentally invent something simple that turns out to be patented.

<comment><USER6> How is it worse than if Tesla was aggressively perusing their patents? It's the patent system itself that you have a problem with. Tesla's patent sharing scheme only makes things potentially better for other inventors.

<comment><USER7> I suppose worse is a matter of perspective, but I think the OP is right that at some scale, someone could be dragged into this good faith deal, like it or not.

Independently invent something. Turns out it's already patented, within this good faith consortium. Now the only way to use it is by participating. Normally, this kind of thing results in getting sued for royalties.

<comment><USER4> I don't think they would be dragged into it. Just don't use any of the patents in the portfolio that has this clause. You had no right to use them before the clause.

<comment><USER8> Or negotiate a royalty.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I can see a small niche for hybrids, a small, constant speed engine coupled to a charger to get you past dead spots with no chargers, but the handwriting is on the wall for IC passenger vehicles, and possibly for long haul trucks. While it is true that gas/diesel has a higher energy per tank as well as a faster tank 'fill' time, this does not make up for the far higher cost per mile for the liquid fuels, AND the complexity of thousands of small parts threshing and wearing away. Electric motors are routinely made to run for 100,000 hours and upwards, because they have rotary bearings and only torque to contend with versus the 2500 rpm of IC engines with bearing impact bangs of the IC engine many times per revolution, and the timing belts, and the tappets hammering and the valves burning away, and the muffler and pollution control gizmos rotting and crumbling away. And brakes, with regenerative braking (which wears nothing) we have already seen brake linings on Teslas and others hit 500,000 miles - more? I can see an era of polyurethane(PU) tires also good for 500,000 miles. They cost more, but they run more and are a lot tougher against road damage than rubber. Sure, any fool can burn rubber and jam on the brakes and, in effect, burn $$ to kill them faster, but I am betting that regen braking as well as more AI in the control box that has the potential to avoid almost all friction based braking, because that AI knows your route (mostly - from experience), when to slow with regen for the turns and curves. The moving hand writes, pauses, points it's thumbs down, and moves on. IC engines are in a downwards race to nowhere.

It looks like there is no lithium shortage at all. Cobalt looks like a scarcer element, which adds cost, but electrode design is improving almost monthly and less cobalt is needed. In addition, cobalt is a recyclable material and this will soon be almost 100% captured for re-use, as the growing shortage drives the reward for recycling it.

<comment><USER10> > Electric motors are routinely made to run for 100,000 hours and upwards, > because they have rotary bearings and only torque to contend with versus the > 2500 rpm of IC engines with bearing impact bangs of the IC engine many times > per revolution, and the timing belts, and the tappets hammering and the > valves burning away, and the muffler and pollution control gizmos rotting > and crumbling away.

This is why the series hybrids don't really make sense. If you have to add an engine to generate electricity then it needs a fuel tank, a cooling system, an exhaust system, etc. By the time you add all of that stuff, you might as well just use that cost and weight to put in a bigger battery.

There is no technical reason you can't use an arbitrarily large battery to get arbitrarily long range, it's just that the incremental cost exceeds the incremental benefit for most people, so the current EVs are targeting the much larger number of people who don't actually need that much range. They're also supply constrained on battery production right now, so targeting the niche that requires a very large battery doesn't make sense yet.

This is somewhat what I would expect to eventually see out of a pickup or something that competes with a Chevy Suburban. You have a large vehicle, so plenty of room for batteries in the floor, which you also need to get reasonable range when transporting heavy loads. But then if you're not transporting a heavy load, the same batteries provide much more range than a vehicle which is trying to be spry and sporty.

<comment><USER11> I think battery tech needs to be much cheaper for it to really answer peoples' needs. But I do see the situations you're describing. A half ton truck can afford a pretty hefty battery pack, weight wise. Budget wise it gets pricy quickly. I wonder what sort of battery could be afforded in a larger chassis that'd normally go for 90k, though.

<comment><USER10> > I think battery tech needs to be much cheaper for it to really answer > peoples' needs.

Yes, absolutely, which is what's happening. Lithium battery prices have been falling for years. The price today is too high for a competitive light truck. The price in four or five years time, however?

</comment></comment></comment></comment><comment><USER12> This is the real "sharing economy"! The planet is not going to be survivable for humans and many other species if we don't start cooperating. If that means one has to give up enforcing their own patents in order to take advantage of these from Toyota, then so be it.

We love Star Trek, where the "...economics of the future are somewhat different..." where "...we work to better ourselves, and the rest of humanity..." So maybe this is the actual true beginning of cooperation that will make our collective future possible...

<comment><USER13> Building more cars is not going to be anyone survive. We need to get away from individual transport.

<comment><USER14> Though that may be true from a sustainability standpoint, that is not the future that I want my children to live in. A future where everyone must like (go to) the same parks, everyone must go to the same shops, everyone must go to the workplace accessible from their home or live in the home accessible from their workplace.

Individualism is gravely important to humans. Getting away from individual transport is relinquishing all hope of individual determinism.

<comment><USER15> How about your children breathing the same air as everyone else and sharing the same planet? Cars are a small exception in the way human have been moving around.

</comment></comment></comment></comment><comment><USER16> Definitely positive, regardless of motives. One number that jumped out was 23.740 patents in 20 years! That's almost 23 patents every -week-.

Is that normal for a company Toyota's size? Do Apple, Samsung and others file the same amount in their fields?

<comment><USER17> Surprisingly, or maybe not, IBM is the company that has been producing the largest amount of patents per year by a huge margin. In 2017 they managed to get around 9000, about 25 per day.

I used to work at IBM and having your name on patents was one of the most important things in order to rise through the ranks. Past a point, you could not go higher without some significant activity in the patents realm. There were many patent groups, many talks about it, there was a 'patent score' that people had in their email signature etc. You were also rewarded financially for each one.

In my humble opinion, this was a bunch of corporate bullshit. I've interacted with many people who had an impressive amount of patents and I was always disappointed. Their average patent was something along the lines of: a different way to use the browser history, a color-based way of handling support tickets, adding a list of blacklisted websites to a broswer or similar. It's hard to remember them because they were all unmemorable. Nothing was of substance or something worth being implemented.

<comment><USER16> Thanks for explaining. Mind boggling stuff... how can things like that even be patented? By those standards I could have filed a few myself ;-)

<comment><USER17> > By those standards I could have filed a few myself ;-)

You most definitely can, but you should remember that filing for a patent is very expensive. :)

This was years ago, so I cannot remember all the details, but I did attend one or two patent workshops/talks, so I think can can weigh in on this.

Basically, there are a few criteria for a certain submission to be patentable, the most important of which was novelty. There were some others, such as not simply combining exiting technologies to create something obvious (IIRC something called 'inventive step' or something like that), but largely it revolved around it being new.

As you might imagine, the above is somewhat interpretable, so a lot of these could go through if they were a tiny bit novel in their approach. Even if your idea was not patented, your idea might still be published as a white paper just so that others could not then invent something similar. By exposing that idea to the outside world, it became public knowledge, so HP could not go and patent something similar.

I remember being told it's all about the mindset. You don't have to be particularly bright or have some 'divine' spark, you just needed to take a problem/functionality/thing and turn it fiddle with it until you get something new, then do some research (there was special software for this) to see if it already exists, get someone internal to review it (a Master Inventor, as they were called), get in touch with the internal lawyers and send it for review.

<comment><USER18> Is there a guide you'd recommend for filing a patent? I have an idea that I'd like to patent. I genuinely think its very novel and my goal is to use it in my work and license it to others.

<comment><USER17> Unfortunately, I don't know much about that. The only such guides I've seen were internal documents.

</comment></comment></comment></comment></comment></comment><comment><USER19> I can't tell what their motivation is... it cost a lot of money to file 24k patents to now just give away. Toyota isn't exactly a charity or an "open source" company.

<comment><USER20> My guess is that it's a game theory move.

No one wants to be making electric cars until everyone is making electric cars.

Everyone wants to make electric cars, but no one wants to step out in front.

Now that we're seeing Tesla succeed, I suspect the bit is being flipped, and a lot of companies are trying to convince each other that we should all jump into making electric cars now.

Opening up patent libraries lowers the barriers for others. It's grabbing the hand of the kid next to you before you all jump off the dock together to go swimming. It doesn't fundamentally change the nature of the landscape, but it makes it easier to get started.

<comment><USER21> In addition - you defacto set the standard, without ever holding a single standardization meeting.

<comment><USER22> Is there really an example that would prove that this ever happens? Aren't patents usually just clever ways of doing things, not necessarily decisions about the exact dimensions/contacts/voltages/etc. All other manufacturers could easily just take patents and make their own standards based on them?

<comment><USER23> FireWire failed for its patents from Apple. Intel didn't want to develop around a port with a $1/port royalty.

It took over another decade to move beyond 5V charging.

<comment><USER24> Intel provided another great example of this recently: Thunderbolt 3 controllers used to cost quite a bit, so they weren't included in lower-cost devices.

They saw that that didn't work out that well for them and made it royalty- free. Now it's basically the new USB standard.

<comment><USER25> > Now it's basically the new USB standard.

Not even basically. It is USB 4: [https://en.wikipedia.org/wiki/USB#USB4](https://en.wikipedia.org/wiki/USB#USB4)

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> This is a very clever move by Toyota. They are the leader in hybrid and that market segment is very small. Growing that segment by 100% or even 1000% may be possible and most of the growth will accrue with them. Certainly most of the profits as they are already positioned to deliver the most performant, economic and even more importantly trusted solution.

</comment><comment><USER27> This is great news to the extent that it includes tech for fully electric vehicles (as opposed to "electrified", a red flag word that includes hybrids as if they were on the same footing as electric cars).

The "green" halo bestowed on hybrids is really no longer justified. They still burn gasoline, pollute almost as much as any other car, and have ultra complex maintenance like any ICE car.

I hope this isn't just a feint to encourage competitors to get mired in hybrid tech... although in that case the silver lining would be Toyota trying to take a leading position in fully electric.

Regardless of any possible cynical interpretations, it does seem like a hugely positive move overall. Since renewables are now price competitive with dirty options like coal, more and more of the grid will flip over to clean energy, so all-electric vehicles are going to have a huge impact on cutting CO2 emissions.

<comment><USER28> > Hybrids ... pollute almost as much as any other car.

That's just factually and obviously untrue. You can tell by looking at the MPG figure. Any vehicle that burns more gallons of gas per mile proportionally farts out more emissions per mile.

My 2013 Toyota Camry hybrid is 6 years old now, gets 38-41mpg, and I have never charged it. It is a rock solid vehicle and I have never had to perform maintenance on any of the hybrid parts. They just work. Toyota has a reputation for producing low maintenance vehicles using last year's technology. If the battery eventually wears out later on and I don't fix it, it'll get less MPG and be more like every other carbon farting car on the road. Believe it or not, the car produces more electricity from regenerative braking than it uses up so the battery is usually mostly full all the time. The bottle-neck is in the electric motor's low top-speed. It switches from electric to gas if you ever go over 40mph and back to electric if you go under 40mph.

There isn't a big need to be so cynical with hybrids. They're quite amazing and incredible to watch and use.

<comment><USER27> A Toyota Yaris can get ~ 45mpg.

<comment><USER28> But then you have to drive a Yaris

<comment><USER27> But dude... you have to drive a Camry now. Which is... well, you should test drive a Tesla to get what I mean.

I had a Camry. They are great cars. But you should test drive a Tesla.

<comment><USER28> Hahaha yeah I'd still rather be driving a Tesla

</comment></comment></comment></comment></comment></comment><comment><USER29> I think this is a desperation move on Toyota's part. Hybrids were a hot technology a decade ago, but they are being replaced by battery electrics. And I am guessing that Toyota's management is finally realizing that its huge bet on hydrogen fuel cells is never going to pay off.

It's interesting to contrast this with the other top car manufacturer, VW. It has decided to push hard on EV's.

</comment><comment><USER30> ELI5:

You can use these patents, ostensibly, as it pertains to a design of [thing] that youre making.

However, could you use the actual componentry coming out of a tesla facility as patented and incorporate it into your [thing]:

I.e. design a car completely designed to comply with the patenet and design of the tesla sub chassis such that you can modify a 38 Ford to be placed on top of a tesla drive train system?

The reason i ask this is that i had a former boss at this architect firm where he did just this, but instead purchased a corvette Z series car which was "totalled" (fiberglass body was destroyed in a roll) three days after purchase and put a 38 ford body on top of the chassis that needed minimal repairs.

So now he had a ford on top of the latest corvette model avail at the time.

Id like to do this with teslas...

<comment><USER31> There are quite a few people taking old cars such as Porsches and electrifying them. I think they may be using some Tesla parts.

I would like to take an old car and install a small battery, a small engine, and a big electric motor. Because if you are all engine you need a big thirsty engine, and if you are all battery you need a big heavy battery, but if you just need power for say 10 seconds of acceleration, you can have a small battery, and if you just need a big enough engine for the _average_ power usage, you can have a very small engine, and if you have a powerful electric motor, you can still accelerate quickly.

<comment><USER32> Just bear in mind that large batteries have a couple more advantages

1\. More battery banks so each one has to deliver less power during acceleration 2\. More space to distribute any waste heat 3\. Less waste heat for a given current since we have less current per battery system

So, a small battery bank might not deliver the current you need for your burst of acceleration.

<comment><USER31> Small is a relative term; the comparison is to a battery that provides a couple hundred miles of range, as people are trying for these days.

</comment></comment></comment></comment><comment><USER33> Is this like how Tesla "open-sourced their patents" too?</comment>


Announcing Heroku for Logo... powered by Heroku - <AUTHOR> http://blog.heroku.com/archives/2011/4/1/announcing_heroku_for_logo/

<comment><USER2> At first I thought this was a joke - I mean, it's April fools, right?

And then I thought: those guys are so smart, I bet they really did it.

So I tried it, and it works! <http://rbcranes.heroku.com/>

I heart Heroku :-)

<comment><USER3> They are using this implementation of Logo in javascript <http://s3.amazonaws.com/heroku-logo/logo.js>

<comment><USER4> Original source seems to be <http://www.calormen.com/logo/>

</comment></comment></comment><comment><USER5> This is awesome on so many levels.

</comment><comment><USER6> Awesome...

About 25 years ago (gosh that's a long time), I had Atari Logo on the Atari 800 and was able to remember enough from then to get a filled circle:

      make "x 0
      repeat 100 [make "x :x+.01 repeat 360 [fd :x rt 1]]

</comment><comment><USER7> Oh thats right it is April 1st.

</comment><comment><USER8> This kind of joke I can stand -- it's ridiculous, but they actually did it.</comment>


HopSkipDrive raises $22M to focus on school transportation - <AUTHOR> https://techcrunch.com/2020/02/06/hopskipdrive-raises-22-million-to-focus-on-school-transportation-70-percent-of-revenue-is-enterprise/ <comment><USER2> Agree that school transportation is a solved problem. Shoving more cars into carpool lanes in schools with 2-3 kids per car (tops) instead of more efficient buses seems like a backwards step.

They did not adequately answer the trust problem either.

<comment><USER3> Not solved for the foster care system where kids are temporarily living in the wrong school district, so it doesn't make sense to move them into a new school. There is an unbelievable amount of terrible ad hoc solutions. A dispatchable service like this is really helpful. (My wife is an attorney for such kids)

<comment><USER4> How does she handle dealing with the childrens stories?

</comment></comment></comment><comment><USER5> I suspect the economics for this only work because all drivers are contractors. The founder spent a lot of time highlighting the factors that support the contractor story but with recent changes in specifically California I'd be wary; it's becoming harder to justify the contractor narrative when the market maker controls the entire supply side, ie if they set the prices and the wages ahead of time (and it sounds like they do) it starts to look an awful lot like regular part time shift work.

<comment><USER6> I'm not sure I see the justification problem here. It's not harder to justify contractors, the reasons for using them are still the same, California simply decided it knew better than the contractors and changed the law to force them to become proper employees. The problem is wholly political and not a case where it makes sense to say one side is more justified than the other.

</comment></comment><comment><USER7> The need for this in America shows how much of a market wasteland it is. School travel by bus (public and chartered), train, even in rural areas, is 100% government government funded and supported in Australia.

<comment><USER8> The same is true of nearly every state in the U.S. California, ironically, is one of the states where school districts aren't required to provide bus service to everyone. Apparently, it also varies by state in Australia: [https://www.education.tas.gov.au/parents-carers/parent- fact-...](https://www.education.tas.gov.au/parents-carers/parent-fact- sheets/travelling-to-school/)

From the Department of Education in Tasmania:

> If your child's school is not within walking distance, a bus service may be > available. This may be free or it may be a fare-charging service. Contact > your school to find out about the bus services available for your area.

And apparently even in New South Wales, the government coverage is not "100%" as you claim: [https://apps.transport.nsw.gov.au/ssts/schoolDriveSubsidy#/s...](https://apps.transport.nsw.gov.au/ssts/schoolDriveSubsidy#/schoolDriveSubsidy)

> The School Drive Subsidy is administered by Transport for NSW and is > available to NSW residents in areas where there is no public transport, to > drive an eligible student all or part of the way to school. _The subsidy is > only intended to partly offset the cost of using a private vehicle to drive > the eligible student and is not intended to cover all costs._

The subsidy is about $0.70 per km, which defrays the cost of travel, but certainly won't pay for a private vehicle for people who don't already have one.

</comment></comment><comment><USER9> School transportation is a solved problem: good cycling infrastructure and enough schools.

<comment><USER10> I have to believe that everyone who brings up "bicycles" as a transportation solution has never lived where there is significant snowfall.

My hometown got nearly 200 inches of snow in 2018 - cycling is basically impossible for at least half of the year, even for the fittest, youngest, best equipped, and most skilled riders.</comment></comment>


"HEY Going to be in $CITY_FOO, want to meet and talk about your startup?" - <AUTHOR>

Moving out to $CITY_FOO, looking to meet and network with other people working on their startups.  I represent Silicon Tally, (www.SiliconTally.com), a group of startups forming an incubator in Florida.  Looking to make friends, colleagues, and intellectual conversation combatants.
Want to grab coffee or a drink on me!?
Best, firstname.lastname@example.com <comment><USER2> I wish I had known about this while I lived in Tallahassee (05-10).

Congrats on what you're doing! I'd be interested in moving back to the area to work, so if any of you lot need a web developer...keep me posted. I was offered a job with the DOJ doing the same thing I'm doing now, but the salary was a little off base. Just finally sold my old place in Killearn a few months ago.

</comment><comment><AUTHOR> Well gentlemen, we are trying to do big things in the area with the collaboration of the universities, the private sector, and the local government. Hoping to plug into the tech stars network too.

There are definitely some opportunities to work with us either in Tally or SV (in coming months). Would love to receive your resumes and have a conversation.

Adam

</comment><comment><USER3> My dad owns Renditions, there in Railroad Square. He recently suggested I apply to TechStars. It was way out of the blue, but I wonder if your work with SiliconTally may have spurred it.

I'm not living in Tallahassee anymore, but if I were I'd definitely be interested in meeting up.

<comment><AUTHOR> Hey man, I sent you a message from the form on your website. Waiting to hear back from you. Lets talk! -Adam</comment></comment>