Researchers at MIT built an 802.11 mesh network some years back. All it would take would be one or two gateway nodes in the middle of the mesh and you would have Internet at a tolerable speed. It would also save having to lay cables over your neighbours.
I think you're asking whether they optimized the rewrite, rather than just ported it from Ruby to Scala? I too would be interested to know if there is any data to this.
It was an exact port including bugs — output needed to be exactly the same as that was the best way to test the result. I wouldn't say the Scala code was any more optimized than the Ruby code was over the years. In fact, lots more effort had been put against optimizing the Ruby side (for example, the template engine was written in C for performance).
Can someone how traffic shaping reduces latency rather than simply lowering the amount of load required to cause significant latency? I understand that the aim here is to prevent the router from having to queue packets, but by doing this haven't we just shifted the queue and source at which packets are dropped from the router to the Linux box?
The problem is that the router does not drop packets (as soon as a proper traffic shaper does). It queues them up, megabytes at a time. Packets that do make it to their destination take longer and longer to get there (due to waiting in the queue).
Eventually most of the buffered packets are so late that they're considered missing/dropped, though they took bandwidth to send and caused other packets to wait behind them. Then TCP adjusts to a long series of lost packets by dropping the rate dramatically.
I think for many Europeans it's easy to forget just how big USA and Canada are. I've been on vacation (we just call it holiday) where we've driven SF -> Yosemite -> Las Vegas -> Arizona -> LA, and on another trip DC -> Virginia -> Charleston -> Savannah -> DC, and both times I've forgotten just how long it takes to get anywhere. I suspect this is why so many people fly domestic?
This is the same Microsoft that completely abandoned Windows Phone 7 users, saying phones such as the Nokia Lumia 800 would not be upgradable to Windows Phone 8. That announcement was made 2 months after I received my Lumia 800. I will never purchase another Windows phone. On the other hand, my parents iPad 2, purchased in 2011, has received dozens of software updates over the last four years from Apple.
My iPad 2 [edited] still able to get the latest update from Apple, although that iPad shows lags running the latest iOS (probably because of the new UI).
I think the major problem with Android is the unstoppable fragmentation. With low-end and high-end devices born every quarter, I find QA a nightmare. On the other end, if a bug can't be fixed after a year on a flagship device like Nexus 5 means there is something wrong with bug prioritization.
Is this not a __good__ thing for the Americans since the NSA backdoored most Cisco routers (http://www.infoworld.com/article/2608141/internet-privacy/sn...). Much better the North Koreans running Cisco routers which they have backdoored then a Chinese competitor such as Huawei, which could be much harder to attack?
Seeing as North Korea only have 3 allocated address blocks, 175.45.176.0/22, 210.52.109.0/24 and 77.94.35.0/24 they only have approx. 1530 globally reachable IP addresses. However, North Korea must have more than ~1530 hosts. Does this mean that they use some kind of NAT, or is their number of internet connected hosts just that small?
Is there any information about the intranet in North Korea? Do they have a private class A network that everyone in the country is connected to with their own DNS servers, routers, etc which are unreachable from the rest of the internet?
Only a small number of authorized persons and high ranking government officers have access to the Internet in North Korea, so I guess it is that small.
The common people have access to the Kwangmyong, which is an IP network not physically connected to the Internet.
This is an excellent paper but it does require a prior understanding of the stack, addressing, buffers, pointers, etc. It would be really nice if there was an article or blog post designed for people who want to read this paper but don't have the prior knowledge that's required to understand it. Unfortuntely I don't know of any. HN?
I've worked with code in the past where the previous developers didn't understand that there was a difference between an integer in a string (i.e. var x = '10';) and an integer (i.e. var x = 10; ). In some ways weak typing and automatic type conversion is quite dangerous because it can encourage beginners to adopt bad practice and be non the wiser.
Edit: Changed 'In some ways duck typing' to 'In some ways weak typing' as rightly pointed out below.
It's weak typing (or equivalently "automatic type conversion" as you say) that is to blame. "Duck typing" - also "structural polymorphism", "subtyping polymorphism", know in OCaml as "polymorphic variants" and adopted as a default by Go's interfaces semantics - would only enable "'10' + 10" if String type would have a method "+(x:Number)", which most likely is not there, or if it is it's explicitly laid out.
It's weak typing - ie. language trying to coerce elements of expressions to the types which make the whole expressions make sense, with implicit rules that no one ever reads - that's dangerous.
Sorry for being this pedantic, but while I'd like to see less weak typing in languages (outside of some specific domains, like AWK) I'd also would like to see more "duck typing", because it's more convenient than nominative polymorphism and exactly as safe.
Is that not because, at the time, you were much more of a beginner than you are now?
I've been studying Computer Science for the last four years (BSc and now MSc) but was coding for maybe three years before that.
Back then I was learning JavaScript and PHP from w3schools, PHP.net and some blogs. I built a framework from reading the source code for CodeIgniter. I learn't a lot about object orientated design, or the lack thereof, in that project.
By the time I finished 2nd year of Comp Sci I had a pretty good understanding of algorithms, design patterns, some theory (Petri-nets, state machines, etc..), databases, etc. Going into my MSc, there is quite a lot that you can't learn without reading papers. For example, chances are you are going to have no idea how to solve the consensus problem in a distributed system without reading Paxos.
I tried to read the Paxos paper and gave up. The Raft paper I probably could've understood, but I found it easier to understand by looking at an implementation and a less formal description of it. I don't think it's about what you know (plenty of papers have few prerequisites and are conceptually quite simple).
http://www.cs.cmu.edu/~srini/15-744/papers/roofnet-mobicom05...