Why C/C++ Is My One True Love - <AUTHOR> http://blog.danlarsen.me/why-cc-is-my-one-true-love <comment><USER2> I have a hard time understanding the supposed elegance of C. I know it pretty well and use it all the time, but only because it's what the platform demands.

On the one hand, C has a tiny runtime that can be omitted or replaced. On the other, it doesn't have all sorts of things that would be helpful but not require runtime overhead.

My biggest complaint is lack of a module system. #include is a stupid ugly hack. Second would be the way it doesn't let you portably define and work with low-level data representations in a standard way. I don't count manual bit masking and shifting for this.

I would also really prefer a more advanced type system, including parametric polymorphism integrated with the module system, but not via templates.

<comment><AUTHOR> It sounds like you should take a look at go, if you haven't already :)

I'm not saying C is elegant. What I like about C, is that (in my *NIX/BSD world) it is THE language, that is always available and works the way I expect - even on old FreeBSD machine, that hasn't been touched for a decade.

It is also the language I can use for embedded computing.

In general: the more C and C++ code I have, the more systems I can create well-functioning, speedy programs for. I don't need to learn a new language's pitfalls, bugs, shortcomings, etc... I can just rely on my knowledge of C and get to know the platform I'm developing for.

That said - I recognise that some languages are more suitable for a given problem than others. I currently code a lot of Node.js (which I am starting to regret - I wish I'd chosen Go), but there is no doubt, I gain a lot in terms of not having to think about net layer (too much) and the community has made a wealth of modules of varied quality (myself included).

I think you could say, C is my favorite cordless drill! :) C is a tool that works very well for many cases - at least the once I come across. There is more specialized tools for many things, but I like simplicity.

<comment><USER3> Actually, I love C and think it is very elegant=P, especially when you read its source code. But my favorite languages are Common Lisp, Ruby and Haskell. Concerning C++, I have to agree with most part of what Steve Yegge said [http://bit.ly/1dUsZsv](http://bit.ly/1dUsZsv), although I used it on a daily basis... The only reason I am doing it is because the legacy code of the system is written in C++.

<comment><AUTHOR> I think it's very interesting to note, that there are two (or more) ways to look at languages, when talking about things like elegance.

You can look at it from the perspective of the language's source code, how it handles what is put into the compiler, how it "interprets" what we tell it to do, how it handles machine resources, locking, all of that.

But there is also the perspective of the "daily developer" \- how easy is it to organize the code, so it doesn't become one big pile of unreadable code, that no one but the original developer can grasp. How easy or beautiful, if you will, can I express my thoughts AND get a good result?

I am really not one to critisize or have a strong opinion about how well languages work "underneath"... I have spend way to little time reading compilers' source code or developing my own.

What I feel, I can have strong opinions about though, is whether I can create software, that doesn't end up in a cluttered mess, which I can easily maintain, make fast/optimized, find and fix memory leaks in. And of course, there is this final extremely subjective thing: I need to enjoy programming every day and have a feeling, that I am using a tool that helps me, instead if it being a struggle.

With all that in mind, I think I can maintain my love for C++, because I don't use half of it ;) As I have already stated, I use C++ as a "version" of C, where I can let go of handling some of all the pointer stuff, manipulate strings in a way that works better in my brain and can organize my code better, due to classes, etc. I agree, that C++ is an extremely "large" language, but that is something that seems to help some developers.

I think it is good, that we have choices as developers. We can choose a language that matches our way of thinking. I believe we should be a little less religious about our choice of language(s) and realize that some creates their best programs with Go, while others would never succeed in creating a useful peace of software, were they forced to do it in Go.

We are all developers, but we do not all think alike. Why would there be 78.341 languages (<\- I made that up ;), if we all thought alike? What we do share though, is a passion for making computers do as we command them to do.

Steve advocates the use of server-side Javascript (I just read that on WikiPedia ;), which is what I have been doing for a couple of years now. I could not disagree more... The more I use Node.js, the more I miss C++ or wish I'd chosen to try Go instead. I am REALLY not saying Node.js sucks or anything, I am just saying, the way scope and asynchronicity is handled, really doesn't fit my brain well.

It is manageable on the client, where you don't have to handle more than 1 session. You only have to think about events, callbacks, scope, etc. for 1 single person. Take that to the server and all hell breaks loose. You take what I have just mentioned, add thousands of connections and the fact that you do not get a fresh state (page refresh on the client), till you stop and start the Node.js server. In all of that, you have to be really careful about security and permissions. (For all fairness, I should mention we use websockets and build our site as a couple of single page apps.)

It is of course solveable. I personally think, we have found a nice way of never retrieving data from data sources without having valid credentials on the user requesting the data. But I have handled easier solutions than this.

Sorry... That became a rant! :)

<comment><USER3> I have to say I enjoy reading the things you wrote, and there are quite a few helpful suggestions. Thanks a lot(:

<comment><AUTHOR> Thanks a lot! It means a lot to hear! I'm glad that at least some of made sense ;)

</comment></comment></comment></comment></comment></comment><comment><USER4> I also find comfort in C/C++, it's something about that closeness to the metal that does it.

In most other languages (recently I've done a bit of Python) you feel like your walking in someone else's shoes. But with C/C++ it's just you and the machine.

<comment><AUTHOR> Totally! I read another blog post, not long ago, that describe it pretty well... He said something like: You need to know what every single line of your code does and when to clean up after yourself - in turn, you know what every single of your code does! :)

That makes the code so much more robust and you are less likely to make wrong assumptions about what a function or piece of code does.

I do a lot of JS at the moment - node.js and jQuery - what I hate the most, is all the wrong assumptions I have, when somebody makes a function called "clone" (this particulalry one copies the reference) or when jQuery has chained functions, that does not "inherit scope"...

I wish I had the time and patience to learn assembly - but then again... C or C++ is close enough and probably way faster to get anything done in :)

<comment><USER4> Re. JS: "Standing on the shoulders of giants" can have its perils, when the giants exhibit a different mind set about scope or so.

Re. assembly, I'm pushing 60 so I've written a lot of assembler in the days, most of it on PDP11 and AppleII. Last time I coded in assembly was 1993, so if you're not writing your own BIOS you're good without it.

Funny, though. The other day I missed something from assembler, and I'm not taking about speed or lowlevel stuff. No it was the ability to switch text segments, in C++ it would be equivalent to be able, in a single .cpp file, to switch from one translation unit to another.

<comment><AUTHOR> Re. giants - that was very well put! :) It seems like the wealth of new languages is creating a new breed of programmers, who think it is possible to know a language, after having developed in it for 1/2 a year or so...

I think that's dangerous as each language has a syntax, that is usually very easy to learn, a set of functionality and maybe some libraries, that takes some time to get used to... But then there is all the pitfalls, the bugs that you need to learn about, the need for a way to organise the code, so it doesn't become a mess...

I tend see this as "getting into the mind of the creators".

Re. assembly, I think the reason I would like to learn it, is to get a better understanding of "the metal" \- not so much actually developing in it, unless it has to do with embedded computers.

It's funny how you always seem to miss something from language x, when you are coding in language y :)

So... If you are pushing 60 - what is your thoughts on all the new languages and, in my opinion, the extremely slow progress we are making, when it comes to how we "command" computers to do stuff?

I think you have spend enough time creating DB connection libraries, web servers and other networking code, forking/threading models... It should be time to make use of existing code in way that makes it extremely fast to create very well-functioning programs.

Basically: shouldn't it be possible to (more or less) create a set of test cases and have the system create the actual program, by combining existing blocks of code? Isn't that what we are striving to do all the time, by collecting more and more base code we re-use?

<comment><USER4> Yeah, agree about learning assembly for the sake of grokking the hardware, bluescreen texts, and it helps when configuring bootloaders like Grub.

If you have a Windows XP installed somewhere, you can learn some assembler just by playing/poking the video memory with the old DEBUG.EXE program, like this:

1) Switch to fullscreen/DOS mode by running CMD.EXE and pressing ALT+RETURN. 2) Start DEBUG.EXE 3) Check you're on the right track by entering df000:0, it should display ... IBM COMPATIBLE... something 4) Fill the video memory, e.g. fb800:0 888 1 2 3 4 5 6

Try to understand what you just did :-) then try to enter some assembly code, start with the command a100

Re. our progress with computers, I think actually things have progressed rather nicely, ok maybe not so much with JS but look at Go for example, they're really trying to fulfill the old dream from the 80's of "sofware ICs". I've just written some small test programs in Go, but it's remarkable that once I've built an .EXE file, I can copy and run it on other Windows computers, no installation or other configuration necessary.

BTW, I'm testing out Qt right now, in that framework there are some great promises of code reuse.

<comment><AUTHOR> Nice! I have an XP running in VirtualBox for testing, so I just tried what you wrote - that was fun! :) I have no idea what I just did, just that it felt good, to make that impact on the screen with that little code, knowing it was done directly ;)

I will have to set some time off to understand it (better)!

Re. progress, I just have this feeling, that we are just doing the same, over and over again - then creating another language to do the same over and over again. In electronics we have components that does 1 thing, usually with different values. In the worst case, we take a standard component and program it.

I would really like to have a process, where I can architect a system and the data flow and finally code a couple of non-standard functions/classes/methods/whatever and be done :)

Good or bad, Apple is trying to do it in Xcode and several IDEs, give you a glimpse of this. Maybe they just create your HTML for you, but that's a step in the right direction. Of course it would be best to be able to re-use your own code, for the "automated" parts, instead of relying on someone else's idea of what HTML and other code should look like. These guys are trying to do it for Node.js: [http://noflojs.org](http://noflojs.org) I think it looks really promising. It would be great to be able to concentrate on solution specific code, rather than "everything".

Re. Go, it is my one big regret, I chose Node.js over Go, a couple of years ago. I didn't have the time to understand enough of both languages, so the choice was Node.js, due to the fact "it's javascript" and that it seem good, when I did some prototypes.

The reality is, you client-side developer, should probably never touch your server-side code! It is far from the same. Same syntax, same way of creating classes, less scope problems, there is only 1 environment, so you can remove some code. But from there, it's totally different! Which of course should make sense, since it is two completely different purposes.

Currently we are maintaining our code in a way (APIs), that ensures we can change either side without problems. So they future will probably be Go, as that seems like the best fit for multi-platform (BSD/*NIX) web-service development.

I ran into Qt years ago, when I was trying to get away from Java for a desktop app. I actually ended up with Python and Qt :) It was really a much horrible experience, than I would have thought! :) Qt just worked as supposed, with it's limitations (at that time at least), which wasn't to big of a problem. Have you tried on Mac?..... :)

<comment><USER4> (had some trouble posting on Hackernews earlier)

Re. Qt on Macs: sure, matter of fact I prefer to work with Qt on my MBP, the fonts are prettier etc.

I first tested Qt one year ago, they are really making progress, you should check out the recent release 5.2.

BTW, I've started a blog (mostly) about Qt: [http://tripleboot.org](http://tripleboot.org)

<comment><AUTHOR> I meant to write: "... A much less horrible..." :-P Nice blog post! That will come in handy, when I get the time try out Qt... And some modern C++ :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> I think you need to try [http://www.webtoolkit.eu/wt](http://www.webtoolkit.eu/wt)

<comment><AUTHOR> Wow! I didn't know about Wt! It looks really interesting! Thanks for sharing. I can't wait to check it out.

</comment></comment><comment><USER6> There is no C/C++ language today! You are talking about two very different languages with similar roots.

<comment><AUTHOR> I know they're different, but they're still close enough to use C code in your C++ projects.

And for my limited knowledge of C++, it still "feels" like an extended C.

I'm not claiming I know a hell of a lot about either - just that I know enough, for both to give me power and possibilities way beyond any other language :)

<comment><USER6> Sounds like you are more of a C++ = C with classes type of guy.

Maybe this will interest you:

[http://channel9.msdn.com/Events/GoingNative/GoingNative-2012...](http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote- Bjarne-Stroustrup-Cpp11-Style)

<comment><AUTHOR> Definitely! And I know I'm missing out on a lot... ;)

I don't get to use C++ enough, so I haven't been digging into the depths of what it's capable of.

I mostly program for embedded computers, when I get anywhere near C or C++, so not to much incentive to go digging... :-/

I still have an old copy of "The C++ Programming Language" on my shelf - unfortunately collecting dust...

Thanks for the link! I really look forward to hearing what his thoughts are on modern programming!

</comment></comment></comment></comment><comment><USER7> Lua ? How could you not fall in love with Lua ?

<comment><AUTHOR> I did! For a while at least... ;) Actually, I still like it - it just has a somewhat area of usefullnes, which is why C or C++ will always be my favorite above all other lanhuages :)</comment></comment>


Complete message templates of a blog spambot - <AUTHOR> https://gist.github.com/tdumitrescu/8554392

<comment><AUTHOR> Found in the spam folder of my Wordpress site. Clearly there was a bug in the bot code and instead of substr+interpolating it ended up dumping its entire set of template strings.</comment>


Compute Card, a Credit Card-Sized Compute Platform - <AUTHOR> https://newsroom.intel.com/news/intel-unveils-intel-compute-card-credit-card-sized-compute-platform/ <comment><USER2> I wish Intel would try to work bottom-up with the manufacturers putting IoT- class parts into their products instead of trying to push it top-down. Yeah, I get it, that's how they work. It's not going to change.

A big glossy launch at CES with no details does absolutely nothing for my project. When an NXP or STMicro rep comes into the office and shows me what's new, maybe drops off a devkit...that's useful.

<comment><USER3> Has any of this stuff taken off? What became of the "SD Card size IoT device" AKA edison? I know the dev kit is a terrible unsupported mess, but are vendors using it for anything?

<comment><USER4> Never seen an Edison or Curie in the wild.

<comment><USER5> I was never able to find an Edison, but did find a curie however it seems they have given up on it since their big marketing campaign. you can buy the dev boards but I found it impossible to find a price or supply for the soc itself. also the quark processor that powers it apparently has a segfault with the only workaround being disabling lock, which presents a lot of issues for certain scenarios, specifically multi- threading.([https://communities.intel.com/docs/DOC-22478](https://communities.intel.com/docs/DOC-22478)) Not sure if that is related to their abandoning of the product line, if that is indeed the case. No idea what's going on. also worth noting, the actual SOC itself is significantly larger than all of the marketing pictures show it. Not sure if they used an alternate, cheaper form factor for the dev kit or what.

<comment><USER6> Damn I hadn't heard about that problem with the Quark. What I had heard was that it was notoriously difficult to get a hold of low level docs so that you could do anything serious with it (or was that the Curie or Edison?), which put me off trying their line up because all of the ARM Cortex stuff is pretty much open compared to them (CMSIS makes a lot of peripherals trivial to deal with compared to some of the mess that used to exist for ARM).

<comment><USER7> I don't think it was widely reported, but it was kind of a dealbreaker because it meant that existing x86 code simply wouldn't run and therefore it was impossible to use standard Linux distros or toolchains on the Quark. Between that, the difficulty of getting chips, the rather poor performance and power usage, and the complexity of integrating it, I think it was basically dead on arrival. The main thing Intel seemed to get out of it was a bunch of very favourable articles about how they'd be part of the Internet of Things revolution. The whole thing seemed ill-conceived; it was a 486 going up against modern RISC designs with predictable results.

</comment></comment></comment></comment></comment></comment><comment><USER8> It seems like a neat idea but their use case is:

"interactive refrigerators and smart kiosks to security cameras and IoT gateways."

I can't see a strong advantage for Intel here. I don't think there's anyway a modular solution can compete with an integrated design using low cost ARM SOCs (typically <= 1USD for something capable of running Linux in China).

I was kind of hoping this would be targeted at high density server applications, which could be interesting but doesn't seem to be the case.

<comment><USER2> It's a CES launch. You have to announce that kind of stuff or nobody pays any attention.

Smart kiosks? Really? It's 2017, not 1995.

Intel can keep screwing around with this stuff while Qualcomm+NXP+Freescale slowly captures the rest of the market they don't have yet.

<comment><USER9> People pay attention to CES? I filter out every news article that pops up in my feed from that shitshow. "We put a computer in a hair brush!" Fuck off.

<comment><USER10> Obligatory CES of Shit: [https://twitter.com/i/moments/817537697535250432](https://twitter.com/i/moments/817537697535250432)

</comment></comment></comment></comment><comment><USER11> \- 95x55x5mm (credit card 86x54x0.8mm)

\- Mid 2017

\- Needs a dock to be powered and cooled

\- USB-C plus another unnamed connector, looks like this ([http://i.imgur.com/887iweg.jpg](http://i.imgur.com/887iweg.jpg))

\- Built in WiFi/Bluetooth

\- Up to 7th gen Intel vPro processor

<comment><USER12>
      Needs a dock to be powered and cooled

Cooled? Obviously no water connectors, so, what, it has to be touching a metal plate to sink the heat away?

<comment><USER13> Maybe the refrigerator is the dock!

<comment> zupa-hu lol

</comment></comment></comment></comment><comment><USER14> This seems like a much more advanced version of EOMA68, a compute card project re-using old PCMCIA connectors.

I feel like USB-C gives much more flexibility: it has a well-defined configuration enumeration protocol that's already supported _everywhere_. There's a lot more options for extensibility and future-proofing with USB-C.

With the onboard storage this is one step closer to my dream: the ability to plug a phone's compute module into a desktop to give me access to a more powerful GPU, extra storage, etc.

My big question: will this card format be an open standard, or will Intel be locking it down?

<comment><USER15> I had the same idea about the phone years ago. I don't know why we can't just take our iPhone or (more likely) Android, plug it into a docking station and use that at work as a desktop, pick it up and use it as a smartphone, or dock it to something at home.

<comment><USER16> Someone correct me if I'm wrong, but isn't that the idea behind continuum in Windows 10?

<comment><USER17> That is indeed what continuum is. Right now it's limited by the fact that you can only run Universal Windows Apps (UWP) that support ARM.

This is exactly why x86-emulation-on-ARM ([http://arstechnica.com/information- technology/2016/11/x86-em...](http://arstechnica.com/information- technology/2016/11/x86-emulation-rumored-to-be-coming-to-windows-for-arm-in- late-2017/)) is a very exciting project from Microsoft.

As mobile chips continue to improve, emulating x86 becomes a viable way of tapping into the huge Windows ecosystem of applications when not running on battery power.

I think this is Microsoft's last shot of becoming relevant in the mobile space.

<comment><USER18> Unfortunately, that ecosystem wasn't designed with small touchscreens in mind, nor battery efficiency...

<comment><USER19> Bring your own screen, keyboard, and power supply. Continuum is a weird beast, I'm not exactly sure who would get something out of it even if app support was good.

<comment><USER20> If the phone hardware was more powerful, and the win32 app support was there, it could replace your PC. You'd have a USB-C dock, with keyboard, screen and mouse, into which you plug your phone. Your phone is your PC, and when you leave you take it with you along with all your files and all your software.

You could combine it with something like a nexdock to also turn it into a laptop. Would be cheaper than getting a phone, and a desktop pc and a laptop, and it would avoid all those nasty issues with keeping devices in sync.

The qualcomm 820 already performed at core m levels, and the 835 is 25% faster, so it should be fine if paired with enough ram and storage.

<comment><USER18> Sorry, I wrote GP with an extra thread in mind without referencing it, about how phones-as-desktops hasn't happened [https://news.ycombinator.com/item?id=13333797](https://news.ycombinator.com/item?id=13333797)

The problem isn't power. Phones have been powerful enough for about 5 years (since around iPhone 4s, as a means of dating it).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> I'll never be able to say what I would have chosen to do in the moment, but at least in retrospect, Intel _really_ buffooned their investment in ISA advances by trying to go after the high end server and mainframe market with Itanium, instead of the mobile market.

I mean, they were trying to sell incremental advances in top speed to people who were buying 20 year support contracts for IBM mainframes to run their legacy COBOL code. They obviously didn't value faster computers, they wanted stability. Having to recompile was just out of the question. And x86-64 was just the thing to get them to upgrade: they could continue running their same crufty code on the same processors that their new code could run on.

The mobile and very low power market, however, will never be taken over by x86. The architecture is just too power hungry, which means batteries need to be large and heavy and more expensive. Phone manufacturers gladly pay premiums for every incremental performance boost, _as long as it doesn 't consume more power_. And the backwards compatibility problem doesn't exist. People throw their phones out every year or two anyway, and nobody has any legacy software they need to keep installed on their new phone. In other words, this market is ripe for ILP, predication, etc., that push off scheduling and branch prediction and other energy hungry tasks onto the compiler.

Funny how now they _really_ want into the very low power market, but have abandoned all the ideas that could given them an edge up.

<comment><USER22> Claims of the instruction set being power hungry compared to ARM are unsubstantiated. I understand that certain features such virtual memory consume more power, but why does RAX consume more power?

<comment><USER23> A few things:

x86 is harder to decode than arm since the instructions are anywhere between 1-15 bytes while arm instructions are 4 bytes each. It has quite an effect if you want to decode more than 1 instruction per cycle.

x86 has a stronger memory model than arm, which will come at an extra cost if implementing any sort of out-of-order execution. I'm not very familiar with how it affects the cache implementation.

The x86 instruction set is more complicated than arm, and instructions frequently decode into multiple uops. I believe that microcode is used more extensively in x86.

<comment><USER24> In reality Intel processors are more power efficient doing something useful than devices from other vendors.

<comment><USER25> I wonder how much that has to do with Intel being a node size ahead of the pack. That said, i know they have been trying to get away from the notion of TDP in recent years because they design their CPUs around the concept of "race to idle". In other words that they try to save power by getting things done ASAP and then put the CPU to sleep until there is input from the user or similar.

</comment></comment></comment></comment></comment><comment><USER26> No manufacturer wants this. They don't want to sell you updated internals, they want to sell you a new product. Not to mention no one wants to pay the Intel-tax for their embedded processors.

I wish Intel would stop creating products nobody wants and actually work on shipping their core products on-time.

<comment><USER27> >No manufacturer wants this.

>I wish Intel would stop creating products nobody wants

Those are two very different things. I, as a consumer, want this, because I would very much like to upgrade the processor in my laptops without replacing the whole device, for environmental and cost reasons. (I backed the EOMA-68 project for the same reason.)

If Intel can get a few manufacturers on board with the idea, more power to them.

<comment><USER28> There are laptops with replaceable CPU, GPU, RAM, disks, etc. I own one, a HP ZBook 15 from 2014.

However they're not common and I see how low end laptops could become docking stations for a compute card. They're going to have an internal USB hub to connect IO devices to the card USB C, disk, screen, touch, keyboard. I wonder how much that's going to degrade performances.

There's going to be a limit to the upgrade options, depending on the cooling capabilities of the laptop.

<comment> gm-conspiracy I thought you were talking about the new Macbook Pro.

</comment></comment></comment></comment><comment><USER29> If Intel wants the iot market, they need to have better support,documentation and transparency. They also need to reduce costs, but that can be done later... For example,we were going to use an Intel real sense at my startup. But despite claiming that android support was on the way (about two years ago....) we got nothing. As for transparency, real sense runs on non i7 cpus in raw mode but not the sdk. Despite asking (specifically about raw mode)the only response we got was "use i7". Turns out it worked but instead of using Intel chips,we decided to opt for arm+Logitech cameras.

</comment><comment><USER30> >\- Connection to devices will be done via an Intel Compute Card slot with a new standard connector (USB-C plus extension)

>\- USB-C plus extension connector will provide USB, PCIe, HDMI, DP and additional signals between the card and the device

That sounds pretty interesting. Hoping they don't keep these priced too far above the hobbyist price point.

<comment><USER31> Per the Ars Technica article someone else posted to HN ([http://arstechnica.com/gadgets/2017/01/intels-compute- card-i...](http://arstechnica.com/gadgets/2017/01/intels-compute-card-is-a-pc- that-can-fit-in-your-wallet/)), these are said to be the replacement for the currently available Intel Compute Stick devices ([http://www.intel.com/content/www/us/en/compute- stick/intel-c...](http://www.intel.com/content/www/us/en/compute-stick/intel- compute-stick.html)).

At least to me, that suggests that they will retail for around the same price range as the Compute Sticks: $150 to $500, depending on the model.

<comment><USER32> Gizmodo says..

There's no word on pricing, and Intel stresses that although anyone can buy a Compute Card when they're available, you will still need to build the dock to power the device and cool it, and that will likely be outside the realm of possibilities for your average tinkerer.

[http://gizmodo.com/intels-incredibly-tiny-compute-card- could...](http://gizmodo.com/intels-incredibly-tiny-compute-card-could-soon- run-your-1790826525)

<comment><USER33> The average tinkerer would just slap a heat sink and fan on it, power that fan with a 12V wall wart, and rig up the power and data connections, dock be damned.

</comment></comment></comment></comment><comment><USER34> Looks like a really cool form factor with intriguing possibilities. Only problem with Intel is most of their chips require a lot of power. That's going to be a big problem if they're trying to play in the small embedded device space that depends heavily on battery power. One thing about Intel though, they've been throwing out lots of smaller devices hoping to get some traction somewhere. Hopefully they can bring down the power on their devices.

</comment><comment><USER35> If this means that I can stop carrying my 4.5lb laptop to/from work every day, I'm sold. Assuming it has equivalent performance.

But somehow I think that the cost of this card plus a home/work dock will be more than the price of 2 laptops.

<comment><USER36> Can I ask what age group you are? I'm really confused that someone would consider carrying 4.5lbs (2kg) an issue, but I am still a long way off from middle age so that may have something to do with it.

<comment><USER37> I wouldn't call it an issue, but it was so freeing when I got the company VPN client to work on my home machine, and could just leave my laptop at work. When I leave it there, no more backpack, dongles, other junk.

I still carry it most days, though. And I don't think I'd be a whole lot happier to carry this thing. I can't really put it in a pocket; not if I intend on sitting down.

</comment></comment></comment><comment><USER38> Props for swinging at the fences. I'm not seeing what they were shooting for though. If someone posts the user stories for these things I'd love to see that.

</comment><comment><USER39> what is the price point of these devices. In india, we get 1ghz android smartphones with 1gb ram. we have built a few serial controllers using Android COSU mode and android-serial libraries. 3g and wifi are built in obviously.

this stuff costs us something like 35$.

</comment><comment><USER40> I do wish that something like this (and the compute stick) will become mainstream. My company has multiple office location and I need to commute to work. Bringing a 5-kg+ of load everyday (laptop, charger, etc) is sure hurting my back.

With this, I can just bring a card or a stick, and plug it in on my company card/stick reader and start working.

<comment><USER41> Isn't Windows To Go exactly meant for this? All you need is a certified USB drive which you can plug in at home and at office.

<comment><USER42> Yes, and it works better than I'd ever have expected. I'm actually using a regular usb3 flash drive as a keychain gaming rig. Skyrim running in 5 minutes on any PC or Mac.

Start here: [http://www.intowindows.com/4-tools-to-create-windows-to- go-u...](http://www.intowindows.com/4-tools-to-create-windows-to-go-usb-of- windows-10/)

<comment><USER43> I never really thought of that but that's pretty smart. Then you can take your games anywhere and a USB3 256GB drive is super cheap nowadays you could pack a lot of games on it and play at friends houses or really anywhere. Slick.

Granted I'd rather just have better gaming capability in a smaller, dockable device like a Surface but I see the merit for sure.

</comment></comment></comment></comment><comment><USER44> I couldn't seem to find where to order an evaluation kit. Maybe I'm not looking in the right spot but it seems odd that all they show are drawings and no actual photos or videos.

</comment><comment><USER45> I think soon enough a similar device will unlock a new wave of IoT devices. Something, a bit cheaper, much easier to install, and accessible to layman. What if such a device could easily be integrated in a couch, reading table, office chair, door handle, etc. Designers wouldn't need to re-invent X object to include a processing center, it would already exist.

I think there is a big opportunity in creating such a easy to use device. I like to think its similar to traditional services that have gone digital or transformed into web services. This would be the next step physical objects gaining digital awareness.

I remember when all of a sudden retailers needed to extend their presence into the web. Soon even furniture makers like IKEA will have connected furniture.

Why? It will be cheap and easy to implement. There are benefits that we don't consider important today. What if a smart table could keep track of its owners and use, almost like an odometer. Perhaps it could be sold or traded easier. Perhaps this would unlock a new system of trade, if objects could track their use. I wouldn't need to worry about getting a "fair" price or trade if it was more objective. Or a chair monitoring my posture and my couch recording when my dog decided to tear apart its cushion.

<comment><USER46> What purpose would solve adding a CPU to my chair?

<comment><USER47> With that device it would run faster than an ARMchair.

<comment><USER48> _clap_ _clap clap_ _clap clap clap_ _clap clap clap clap_

</comment></comment></comment></comment><comment><USER49> I would have called it Credit Crunch. This is why I don't work in marketing.

</comment><comment><USER50> Meanwhile, an ESP 8266 is a couple of bucks and has fine I/O for most "smart" hair brushes and toilet seats.

Once you get to fridge scale, a low cost tablet tacked on the front gives me better UI, more security updates, and easier upgrades than anything an OEM would put in.

</comment><comment><USER51> I thought a credit card sized compute platform is called a smartphone?

<comment><USER52> True, or _a credit card_, given credit cards have chips too.

</comment></comment><comment><USER53> Wifi or at least connectivity in general is becoming ubiquitous.

Assuming connectivity is available, storage is effectively infinite.

Power requirements are down and sources are becoming more efficient and plentiful.

Processing is becoming cheap, potentially "free" at some point.

What happens as a result? What becomes feasible that wasn't 5 or 10 years ago? What problems go away when you have massive amounts of compute capability at the point of the problem?

<comment><USER54> DDOS attacks.

Seriously.

[http://arstechnica.com/security/2016/09/botnet- of-145k-camer...](http://arstechnica.com/security/2016/09/botnet- of-145k-cameras-reportedly-deliver-internets-biggest-ddos-ever/)

</comment></comment><comment><USER55> When I was working on MAAS for Canonical, one thing I always wanted to build was a small cluster of ethernet PXE-bootable x86 nodes. Sadly, I never managed to get Galileo network-booted and Edison devices I had lacked ethernet ports (and the price of the module is a bit high when compared to desktop-sized boards).

The idea of minimum viable computer has always been attractive to me.

<comment><USER56> When I saw the form factor, my first thought was Star Trek's Isolinear chips. If there are standard backplane sizes along with software defined networking, you could scale your compute cluster pretty easily.

</comment></comment><comment><USER57> > The Ideal Processors

That sounds like they just stopped trying... This is sad, because their processors are far from ideal. For example in the area of sound synthesis CPU is still a bottleneck and people have to compromise on the quality or accuracy. I wish AMD could push the boundaries, but in terms of performance they seem to have abandoned the race as well...

</comment><comment><USER58> I was hopping for a raspberry compute module alternative rather than another PC dongle. Otherwise I would expect some very high specs(i.e thunderbolt, 4k etc) but I think it's not the case either.

<comment><USER59> Intel puts out edison (headless) and joule (4k graphics). Those are their linux capable system on module product lines.

</comment></comment><comment><USER25> I seem to recall reading about IBM trying out a concept back in the day that was effectively a dockable HDD that carried the user data. Never been able to find the article again though.

<comment><USER60> I'm sure this will eventually apply to phones. I know it's been tried a couple of times (Motorola Atrix, various Kickstarter laptop/desktop phone docks), but one day it will happen. Why should a home user need a whole separate laptop or desktop if they could just have peripherals on their desk and just dock their phone to drive them all?

All we really need is a port that can drive all the peripherals at once (we have that on most phones via OTG), the power to run a 1080p display (we have that too, phone displays are usually even higher res than that), and the ability to run common home-use desktop apps (we're getting there, as MS/Google/Apple continue unifying their mobile and desktop OSes).

The next step would be to have all that be wireless, which I'm guessing isn't too far away on the Bluetooth roadmap, or even wifi streaming like Chromecast/Nvidia/Steam.

I'm sure professional use will lag behind, but even that will catch up eventually, especially with the possibility of docks adding hardware to an existing device (like the better video card in the Surface Book's keyboard module).

</comment></comment><comment><USER61> So, should we compare this to the Raspberry Pi Compute Module?

</comment><comment><USER62> If this were actually credit-card-sized (i.e., literally fit in a credit card slot), had a smart card contact, and supported SGX, I'd be excited. Oh, well.

<comment><USER63> Are you using and/or developing for SGX? I looked into it and got put off by the need to deal with intel for licensing and signing keys, but I'd be curious to know if anyone is doing something interesting with it.

<comment><USER62> There is some work afoot to improve the licensing process. I will not develop for it under the current licensing regime.

</comment></comment></comment><comment><USER64> Is this really anything new? Surely the internals of my 2015 MacBook are similar size, once you remove the battery, shell, keyboard, mouse, screen, etc...

</comment><comment><USER65> If Intel is interested in developing IoT why did they abandon phone processors? They are both similar.

</comment><comment> jeppesen-io Intel comes up with something cool and interesting.

Come here and see top post complaining about it. Not disappointed.

</comment><comment><USER66> Same post a 2 hours before this one.... [https://news.ycombinator.com/item?id=13332858](https://news.ycombinator.com/item?id=13332858)

</comment><comment><USER67> Any word if it will run Windows IoT or just Linux?

<comment><USER68> The BBC Click demo showed it running some variety of Windows 10.

</comment></comment><comment><USER69> Sounds similar to EOMA, basically the same thing but for ARM:

[http://elinux.org/Embedded_Open_Modular_Architecture](http://elinux.org/Embedded_Open_Modular_Architecture)</comment>


Sushi Roll: A CPU research kernel with minimal noise for microarch introspection - <AUTHOR> https://gamozolabs.github.io/metrology/2019/08/19/sushi_roll.html <comment><USER2> Interesting comment from the author over on reddit[1] discussing using the research kernel to "find 0-day in software and hardware for about 2 years".

[1] [https://old.reddit.com/r/programming/comments/csfj53/sushi_r...](https://old.reddit.com/r/programming/comments/csfj53/sushi_roll_a_cpu_research_kernel_with_minimal/exftu2a/)

<comment><USER3> This kernel is just kind of a playground for projects I have. Specifically there were a few from this past year or so.

I used this kernel originally for my vectorized emulator, which is designed as a high-performance fuzzer/harness to find bugs (more info [https://gamozolabs.github.io/fuzzing/2018/10/14/vectorized_e...](https://gamozolabs.github.io/fuzzing/2018/10/14/vectorized_emulation.html)). I used vectorized emulation on Windows DHCP to find multiple RCEs (which were disclosed earlier this year), as well as one of the Intel MDS vulnerabilities (such as RIDL and Fallout) disclosed earlier this year (specifically I found "MLPDS", [https://nvd.nist.gov/vuln/detail/CVE-2018-12127](https://nvd.nist.gov/vuln/detail/CVE-2018-12127)).

I do most of my work in a personal kernel as it really gives me an edge with optimization. I'm able to use page tables directly (super fast fork()-like behavior), and write hypervisors that don't have to go through crazy call stacks to vmexit, use bleeding-edge CPU features, etc. Ultimately I just do it because it's fun, but I've found ways to justify it from time to time.

<comment><USER4> Is it a pure hobby project on the side, or do you work for a company / research lab ? That is really interesting btw.

<comment><USER3> I currently work at Microsoft, however my work and my hobby are pretty much the same at this point so I put a lot of time into it!

</comment></comment></comment></comment><comment><USER5> The exact URL/title was posted one hour earlier. [https://news.ycombinator.com/item?id=20743260](https://news.ycombinator.com/item?id=20743260)

<comment><USER6> No, matt_d's was earlier. The IDs tell all: 20736713 < 20743260.

The reason this was confusing is that we put the earlier post in the second- chance queue (described at [https://news.ycombinator.com/item?id=11662380](https://news.ycombinator.com/item?id=11662380)), which temporarily modifies the timestamps as explained here: [https://news.ycombinator.com/item?id=19774614](https://news.ycombinator.com/item?id=19774614). This confusion comes up periodically but I don't know a globally better solution than how we currently do it.

<comment><USER7> Would marking second chance submissions as such help?

<comment><USER6> Maybe, but how would we do that in a minimal way that would still be self- explanatory?

<comment><USER8> The alt-text/hover text of the timestamp would be the perfect place for it. That way it wouldn't bias anyone who doesn't go looking for it explicitly.

<comment><USER6> But then the vast majority of users will never know about it, which is not self-explanatory.

Also, out of curiosity, how does that work on mobile? I know it's a naive question but I've never figured that out.

<comment><USER7> If you stick a title attribute on an image, it will show up when you long press on it in Mobile Safari. This doesn't work with links, though, because it'll show the destination instead. Might I suggest just putting the submission time in parentheses, like "1 day ago (resubmitted 3 hours ago)"?</comment></comment></comment></comment></comment></comment></comment>


Why Firefox Is Shrinking: Mobile Browser Market To Explode  - <AUTHOR> http://www.alleyinsider.com/2008/4/why_firefox_is_shrinking_its_browser_mobile_market_to_explode <comment><USER2> i'm a firm believer that the web browser in its current incarnation isn't suitable for mobile. trying to consume desktop content on mobile screens is like drinking one tiny sip at a time: great in a pinch, but tiresome otherwise.</comment>


Falsehoods programmers believe about geography - <AUTHOR> http://wiesmann.codiferes.net/wordpress/?p=15187&lang=en

<comment><USER2> Most of these observations, even though I'm sure they're true, are only mildly interesting.

The last stated falsehood, however, is notable:

> Language codes will match the country code of the country they are > associated with

This is a very confused statement to begin with. Many languages are not "associated" with a country at all. Many languages are spoken in different countries, and many countries have multiple official or common languages.

This is why using flags or country codes as language indicators bothers me. Even for English it can be confusing: do you pick the US flag? The UK flag? It also means it is usually impossible to localise a website based on the TLD alone. In most cases you will also need a language code somewhere in the URL. Many web developers forget this.

Another important oversight is that not all inhabitants of a country might speak one of the official or common languages. Just ask any expat with an iTunes store account. It is much better to offer information in a language that can be chosen independently from a user's country, if possible.

Google Cache version here: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://wiesmann.codiferes.net/wordpress/%3Fp%3D15187%26lang%3Den&hl=en&strip=1)

</comment><comment><USER3> A lot of these are general problems that occur in many contexts, not really specific to geography.

E.g. the "multiple names" issue.

A _big_ problem with the book site "goodreads" is that they only allow a single value for many fields. Some people entering a book will use the title exactly as it occurs on the cover, others will use an English translation of the title, others will use a transliteration. All are "correct" in some sense, but interesting in different contexts. Similarly, a single author can have different names in different contexts, sometimes keyed by language, sometimes by time, etc. But goodreads cannot handle more than one entry in any of these fields, and the result is a mess, with huge inconsistencies between works, and confusing attempts to work around the limitations, e.g. multiple "authors" that are really the same person with the name slightly changed.

A good first step to fixing this would be to simply allow multiple alternatives for most fields, followed, hopefully by some way of tagging the context in which they're interesting...

</comment><comment><USER4> Surely everyone knows the last one, given that "en" does not equal "us"?

</comment><comment><USER5> My pet peeve:

Countries have postcodes (or zipcodes).

I'm in Ireland, we don't have postcodes. Stop making it a required field on delivery addresses.

</comment><comment><USER6> Scroll down to the comments and follow the Google Maps link to the crazy Belgium/Netherlands border. How does stuff like this even happen?</comment>


Quaderno.js makes your Stripe subscriptions to comply the EU VAT MOSS rules - <AUTHOR> https://quaderno.io/stripe-vat-subscriptions/

<comment><USER2> A great explanation of a fairly complex issue. Amazing tha EU authorities are imposing such a burden for small companies when what they are supposed to do is fight tax evasion by multinational gigantic entities.

<comment><AUTHOR> Thanks, Furilo! Yes, this is a big mess for small businesses. And it affects not only to European companies but to any business in the world that sells to European consumers.

</comment></comment><comment><USER3> Payments and taxes are so easily done with Quaderno. It even makes me look forward to the new VAT procedure: I'll be happy to laugh at those who do not use it already.

The guide in the labyrinth.

<comment><AUTHOR> Thanks man!! We try to do our best to fix this VAT mess.

</comment></comment><comment><USER4> Seems like a nifty service.

The github link seems to be only 2 documents, no JS file? [https://github.com/quaderno/quaderno.js](https://github.com/quaderno/quaderno.js)

PS: Also found this "NO LOG TERM CONTRACTS", guess it's supposed to be "NO LONG TERM CONTRACTS".

<comment><AUTHOR> Just include our javascript library [https://js.quaderno.io/v1/](https://js.quaderno.io/v1/). It's easier :-)

Let me know if you have any questions. Happy to help.

Thanks for the detecting the typo, btw.

</comment></comment><comment><USER5> Awesome service! thanks!</comment>


The Animalcule: A Life of Thomas de Quincey - <AUTHOR> https://www.lrb.co.uk/v39/n10/nicholas-spice/the-animalcule <comment><USER2> Shameless plug: You can read free/libre editions of _Confessions of an English Opium Eater_ and _Suspiria de Profundis_ here:

[https://standardebooks.org/ebooks/thomas-de- quincey/confessi...](https://standardebooks.org/ebooks/thomas-de- quincey/confessions-of-an-english-opium-eater)

[https://standardebooks.org/ebooks/thomas-de- quincey/suspiria...](https://standardebooks.org/ebooks/thomas-de- quincey/suspiria-de-profundis/)

I found myself agreeing with this article re. his prose style. It's flashes of beauty surrounded by overlong, overcomplex arabesques of prose. _Confessions_ is, I think, his best work, if only because I think his difficult life and the descriptions of Georgian-era drug culture make the density of the prose worth it.</comment>


Ask HN: Need help with tax strategies - <AUTHOR> find myself paying an extraordinary amount and was wanted to ask the HN community for literature/advice on personal taxes and also a small C corp that is more of a placeholder than generating much income at this point (is generating losses)<p>are there worthwhile people I should reach out to?  I've caught my CPA not recommended what I consider common sense things twice now and he seems to feel like he is in the right even though I increased my refund... <comment><USER2> Let's start with some information that could be helpful.

Where do you live? How many dependents so you have? Did you contribute to a:401k,HSA,FSA, or any other tax deferred accounts? So you own a home? Do you pay for private insurance? What is your adjusted gross rate?</comment>