Low latency tuning guide - <AUTHOR> https://rigtorp.se/low-latency-guide/ <comment><USER2> I have a hobby project that my target was following similar learning path, I could only recommend if you also work on your own server dont forget software side,perf ([http://brendangregg.com/perf.html](http://brendangregg.com/perf.html)) is a god not just kernel side, as well as your own software, as part of my build I was always checking below command:

'perf stat -e task-clock,cycles,instructions,cache-references,cache- misses,branches,branch-misses,faults,minor-faults,cs,migrations -r 3 nice taskset 0x01 ./myApplication -j XXX '

Additions I would have I have benefited:

* I use latest trimmed kernel, with no encryption, extra device etc...

* You might want to check RT kernels, finance & trading guys always good guide if you can

* Removed all boilerplate app stack from linux or built small one, I even now considering getting rid of network stack for my personal use

* Disable hyper-threading: I had a short living workers,this doesnt helped me for my case , you might want to validate first which one is best suited for your needs

* Check also your CPU capabilities (i.e. with avx2 & quad channel I get great improvements) and test them to make sure

* A system like this quickly get hot, watch temps, even short running tests might give you happy results but long term temps easily hit the wall that bios will not give a fuck but only throttle

<comment><USER3> Please don't take offense at this my friend, it is genuinely constructive criticism. Slow down a little bit and re-read what you're typing. I can't understand half of what you've written here because it is so poorly done. It is a shame because I feel like you're trying to share interesting information it's just extremely hard to parse whatever it is you're trying to say

<comment><USER4> Interesting. I found the comment rather succinct and to the point. Maybe you are not the target audience.

<comment><USER3> That might be true, maybe you could help me understand what this means:

"Additions I would have I have benefited"

<comment><USER4> I am afraid that this looks like a nitpicking. Even if you can't imagine what the original intent might be behind that sentence by the sentence alone, the contents of the bullet points make it clear what information they represent. So even if that sentence is dropped entirely, I wouldn't have had any difficulty understanding what the comment is about, and its useful information content.

</comment></comment></comment></comment></comment><comment><USER5> I know its not the exact same kind of concern as presented here, but I have recently found that one technique for achieving extremely precise timing of execution is to just sacrifice an entire high priority thread to a busy wait loop that checks timing conditions as fast as the CPU will cycle instructions. This has the most obvious advantage of being trivial to implement, even in high level languages that only expose the most basic of threading primitives.

Thinking strategically about this approach, modern server CPUs expose upwards of 64/128 threads, so if 1 of these had to be sacrificed completely to the gods of time, you are only looking at 1-2% of your overall resources spent for this objective. Then, you could reuse this timing service for sequencing work against the other 98-99% of resources. Going back just a few years, throwing away 12/25/50% of your compute resources for the sake of precise timing would have been a non-starter.

For reference, I find that this achieves timing errors measured in the 100-1000 nanoseconds range in my .NET Core projects when checking a trivial # of events. I have not bothered to optimize for large # of events yet, but I believe this will just be a pre-processing concern with an ordered queue of future events. I have found that this is precise enough timing to avoid the sort of logic you would otherwise need to use to calculate for time error and compensate on future iterations (e.g. in non-deterministic physics simulations or frame timing loops).

<comment><USER6> Yes, definitely turn off HT/SMT and use a single app thread per core with busy waiting. I'm working on a low latency application design guide exploring this more in depth.

<comment><USER5> I haven't measured this yet, but I question whether SMT would actually introduce any meaningful jitter into the timing loop. If my event is off by 10-100 nanoseconds, I probably don't care that much.

I am not actually sure how precise this approach could be in theory, so if the noise floor could be low enough for it to matter, then it's certainly a factor for some applications.

If we prove that SMT has a certain bounded impact, then it may be possible to say that for a certain range of applications you get a 2x feasibility bump because you can leave SMT enabled.

<comment><USER7> It shouldn't, that's the whole reason SMT exists. If there is detectable jitter that would be notable.

People have a bad taste in their mouth that was left circa ~2000(?) from some Intel parts with a pipeline that was too deep. Ever since that was fixed most workloads do see a 2x speedup when enabling SMT.

<comment><USER6> SMT sibling threads can definitely impact each other. It works great for common workloads. If you have a highly tuned workload with high IPC or want to trade off throughput for latency, disabling SMT can be a win. Disabling SMT also increases effective L1 and L2 cache which can be beneficial.

</comment></comment></comment></comment></comment><comment><USER8> On application side I recommend using an instrumenting profiler that will let you know down to sub-microseconds what the code is doing. Tracy is a good choice ([https://github.com/wolfpld/tracy](https://github.com/wolfpld/tracy)) but there are others, e.g. Telemetry.

<comment><USER9> I can't tell what Tracy does because the documentation is so poor. Check out XRay for an older but still actively developed function tracing tool that generates traces which can be viewed in the Chrome trace viewer.

[https://llvm.org/docs/XRayExample.html#debugging-with- xray](https://llvm.org/docs/XRayExample.html#debugging-with-xray)

<comment><USER8> Did you see the pdf manual? I would actually have preferred something online for docs, but there is not a lack of documentation for Tracy.

</comment></comment></comment><comment><USER10> This page [1] describes additional tuning parameters. In particular adjusting /proc/sys/kernel/sched_rt_runtime_us can be beneficial.

[1] [https://access.redhat.com/documentation/en- us/red_hat_enterp...](https://access.redhat.com/documentation/en- us/red_hat_enterprise_linux_for_real_time/7/html/tuning_guide/real_time_throttling)

<comment><USER6> For lowest latency applications I void avoid using RT priorities. Better to run each core 100% with busy waiting and if you do so with RT prio you can prevent the kernel from running tasks such as vmstat leading to lockup issues. Out of the box there is currently no way to 100% isolate cores in Linux. There is some ongoing work on that: [https://lwn.net/Articles/816298/](https://lwn.net/Articles/816298/)

</comment></comment><comment><USER9> One that seems rather important but missing is NIC receive coalesce. The feature delays frames to reduce the number of interrupts, thus increasing latency. Usually you want to turn this down as far as possible, but don't set it to "1" because many NICs interpret that setting to mean "use black-box adaptive algorithm" and you don't want that either.

It's also quite helpful to run your Rx soft interrupts on the core that's receiving the packet, but flow steering isn't mentioned.

<comment><USER6> For a truly lowest latency in software application you need to avoid all context switches. Using interrupt driven IO adds to much overhead. You need to use polling and busy waiting. I'm working on a guide for this type of application design. If you are indeed using the Linux network stack, then yes adjusting NIC interrupt coalescing and interrupt affinity is useful.

<comment><USER9> True, but you have to rewrite your application to switch to a receive queue polling model, whereas "tuning" is stuff you can get for free with your existing program.

<comment><USER6> I've always been using kernel bypass for low latency networking. You can also use SO_BUSY_POLL with the Linux stack. I should at least mention this in the guide.

</comment></comment></comment></comment><comment><USER11> This is a cool article in the sense that it gives an idea of tuning that can be done on one extreme. While most applications won't need this level of tuning and some of them might be hurting if one isn't CPU bound, it is great to know which options exists.

Does anyone have further articles exploring the topic of os tuning for various types of applications? Maybe also for other OS, BSD/Win?

<comment><USER6> I have another article on virtual memory: [https://rigtorp.se/virtual- memory/](https://rigtorp.se/virtual-memory/)

</comment></comment><comment><USER12> You know you're doing low level stuff when the guide mentions things like

> Also consider using older CPU microcode without the microcode mitigations > for CPU vulnerabilities.

I don't think I even know where to find older microcode for my particular CPU.

<comment><USER13> Using older microcode is just a matter of preventing your OS from uploading newer microcode during the boot process, and not updating the motherboard firmware to a newer version that bundles newer CPU microcode. Rolling back the motherboard firmware is usually not a supported option, and sometimes is actively prohibited by the system.

<comment><USER12> So how would I acquire a processor without the mitigations at this point? Presumably all the new ones are sold with them already installed.

<comment><USER13> CPUs do not have non-volatile memory for storing microcode updates. It has to be uploaded from the motherboard during the boot process, and the OS can optionally upload a newer version as part of their boot process. So the difficult thing is finding a matching _motherboard_ that's running an old enough firmware version, or that can be rolled back to an older firmware version.

</comment></comment></comment></comment><comment><USER14> > _Don't create any file backed writable memory mappings_

If you have to create a writable file-backed memory mapping, open it in /dev/shm or /dev/hugepages. You can mount your own hugetlbfs volume with the right permissions.

Creating a big-ass single-writer ring buffer in a series of mapped hugetlb pages is a great way to give downstream code some breathing room. You can have multiple downstream programs, each on its own core, map it read-only, and start and stop them independently. Maintain a map of checkpoints farther back in the ring buffer, and they can pick up again, somewhere back, without missing anything.

<comment><USER6> I don't consider that file backed since they pull memory from the same pool as anonymous memory and not the page cache. The Linux kernel docs makes the distinction between file backed and anonymous memory. I think a better term would probably be page cached backed memory vs anonymous memory.

</comment></comment><comment><USER15> Would love to see a version of this but for ARM64 .. I'm assuming a few of these tips will be applicable, but I bet there's some ARM-specific things to be learned.

<comment><USER6> Most of these tips apply to all architectures. The only x86 specific parts are regarding CPU power management and turboboost.

</comment></comment><comment><USER16> This is a good list, but it seems to blur latency and jitter. For example, turbo modes can cause significant variability, threads running on other cores can cause your core to downclock, etc.

Reducing kernel scheduler interrupt rate can cause strange delay effects (presumably due to locking). Running it faster, but only on some cores, has been more beneficial IME. Depends on the latency vs jitter requirement of your computation I guess. If you're using SCHED_FIFO there is a complicated interaction with ticking being sometimes enabled (while theoretically tickless) at 1kHz to let kernel threads run...

Multithreaded apps should consider cache contention and CPU/memory placement. This does not always mean place all cores on the same socket, because you might need to get max memory bandwidth. Cf lstopo, numad/numactl, set_mempolicy(2). Making sure no other process can thrash the L3 or use memory bandwidth on your real time socket can also help. Node that numad(8) does page migrations, so it can cause jitter when that happens, but also reduce jitter for steady state.

<comment><USER6> With the right cooling setup I've been able to get Xeons to run permanently in turbo mode, kind of a back door overclock. You would have to experiment.

For lowest latency applications I void avoid using RT priorities. Better to run each core 100% with busy waiting and if you do so with RT prio you can prevent the kernel from running tasks such as vmstat leading to lockup issues. Out of the box there is currently no way to 100% isolate cores in Linux. There is some ongoing work on that: [https://lwn.net/Articles/816298/](https://lwn.net/Articles/816298/)

Oh yeah, the whole NUMA page migration stuff is not well documented. You'll also proactive compaction to deal with in the future: [https://nitingupta.dev/post/proactive- compaction/](https://nitingupta.dev/post/proactive-compaction/)

<comment><USER16> If you can make sure something else won't emit watts (other cores, something using AVX) then yeah turbo can work.

You can patch the kernel thread creation to not use specific CPUs... IDK of anyone publically maintaining a patchset, but look at [https://github.com/torvalds/linux/blob/master/kernel/kthread...](https://github.com/torvalds/linux/blob/master/kernel/kthread.c) line 386.

We've only been using SCHED_FIFO on Linux, which is basically busywaiting if you only have one thread scheduled. Though I am interested in trying the SCHED_DEADLINE.

I hope someone adds a kcompact processor mask / process state disabling compaction.

<comment><USER6> There was also this recent patch [https://lwn.net/Articles/816211/](https://lwn.net/Articles/816211/) to deal with kthread affinities. Even with isolcpus I find I still need to run pgrep -P 2 | xargs -i taskset -p -c 0 {} and deal with the workqueues.

Have you tried "A full task-isolation mode for the kernel": [https://lwn.net/Articles/816298/](https://lwn.net/Articles/816298/) ?

Running only a single thread per core, I see no difference between SCHED_FIFO vs SCHED_OTHER. Except SCHED_FIFO can cause lockups if running 100% since cores are not completely isolated (ie vmstat timer and some other stuff).

Yes, it's annoying you cannot disable compaction. There is also work on pro- active compaction now: [https://nitingupta.dev/post/proactive- compaction/](https://nitingupta.dev/post/proactive-compaction/)

<comment><USER16> I like the Tosatti/WindRiver/Lameter patch. (Except the naming: _possible is the same meaning as _available, but they mean different things here depending if kthreads or user threads?) Just needs a proc interface.

With a patch like this you can force bottom half (interrupts), top half (kthreads) and user threads to all be on different cores.

The 'full task-isolation mode' seems wierd, because why should you drop out of isolation because of something outside your control like paging or TLB? Anyway, mlockall that. Its fine to be told I guess (except signals take time) but why drop out of isolation and risk glitches in re-isolating? It doesn't seem very polished.

Something else occured to me: you still have to be careful about data flow and having enough allocatable memory. E.g., a lot of memory local to core 0 will be consumed by buffer cache, it can be beneficial to drop it (free; numstat -ms; sync; echo 1 > /proc/sys/vm/drop_caches; free; numastat -ms).

I find it bizarre that all this THP compaction stuff is for workloads that are commonly run under a virtual machine, i.e. another layer of indirection.

<comment><USER6> As I understand 'full task-isolation mode' will prevent compaction, completely disable vmstat timer etc. So it provides additional isolation. Since you already switched into kernel mode, might as well deliver a signal to let you know it happened. If the signal is masked there should be no overhead at all except a branch to check the signal mask.

</comment></comment></comment></comment></comment></comment><comment><USER17> _> The term latency in this context refers to ... The time between a request was submitted to a queue and the worker thread finished processing the request._

Since this is a tuning guide, I would have liked to see a separation of 3 attributes:

* Service-time: The actual time taken by the thread/process once it _begins_ processing a request.

* Latency: The time spent by the request waiting to get processed (ex: languishing in a queue on the client/server side). This is when the request was _latent_.

* Response time: A combination of Service-time + Latency as recorded by the server. From a client's POV, this would additionally include the overhead from the network media etc.

Most performance models seem to isolate these separately to get a deeper sense of where the bottlenecks are. When there's just a single queue for everything then it makes sense to make the service-time as short as possible. But if you have multiple workload-based queues then you can do more interesting things.

<comment><USER6> This guide pretty much tells you how to make the Linux kernel interfere as little as possible with your application. How to instrument and what to measure would depend on the application.

I agree that measuring queuing delay and processing delay separately makes sense.

</comment></comment><comment><USER18> threadirqs cmdline option might also make a difference:

threadirqs Force threading of all interrupt handlers except those marked explicitly IRQF_NO_THREAD.

It helped with my bluetooth issues and it's recommend for low-latency audio setups but unfortunatly I lack the knowledge about the tradeoffs. You also probably need to assign a higher priority to threads: [https://alsa.opensrc.org/Rtirq](https://alsa.opensrc.org/Rtirq) \- not sure if it's applicable besides audio.

<comment><USER19> Hint for web designers: subtle drop-shadow on text is a great way to simulate astigmatism. Thankfully, Firefox's Reader View simulates eyeglasses.

<comment><USER20> TIL I have astigmatism from an HN comment. Now the headlights + traffic lights thing at night makes sense too...

</comment></comment></comment><comment><USER21> Another technique to dynamically manipulate task isolation is through the kernel's 'cpuset' interface ([https://www.kernel.org/doc/html/latest/admin- guide/cgroup-v1...](https://www.kernel.org/doc/html/latest/admin- guide/cgroup-v1/cpusets.html)). Coupled with threadirqs, and RCU 'kthread- ification' with rcu_nocbs, can wield a large amount of flexibility in organizing real-time workloads. The userspace interface to cpusets via 'cpuset' makes it even more accessible ([https://documentation.suse.com/sle- rt/15-SP1/html/SLE-RT-all...](https://documentation.suse.com/sle- rt/15-SP1/html/SLE-RT-all/cha-shielding-model.html))

</comment><comment><USER22> This is an excellent article. It is comprehensive and has simple explanations.

</comment><comment><USER23> Great info.

You might also want to look into or write about DPDK, which achieves further speed-ups using polling mode drivers (instead of interrupt) and having the application directly process packets from the NIC (bypassing the kernel, which can be a bottleneck).

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

</comment><comment><USER24> The author states:

>"Hyper-threading (HT) or Simultaneous multithreading (SMT) is a technology to maximize processor resource usage for workloads with low instructions per cycle (IPC)"

I had actually not heard this before regarding SMT. What is the significance of low IPC type in regards to the design of SMT? How does one determine if their workload is a low IPC workload?

<comment><USER6> HT share most execution units in the core. If your workload stalls a lot due to branch misprediction or memory access (low IPC) these units can be shared effectively. The Linux perf tool can be used to check IPC.

</comment></comment><comment><USER25> I would never seriously consider overclocking in a production environment.

There is probably buffer tuning you can do in the NIC driver also.

<comment><USER6> Many organisations run water cooled overclocked servers in production. I have not yet heard of any production use of sub-ambient cooling, but that would be awesome!

<comment><USER14> Liquid nitrogen cooling is a thing, where maximum per-thread performance is needed, but it provides at best 2x. There are a lot of other things to do first.

<comment><USER6> Yes and also subambient using heat pumps, but I have never seen it deployed in a data center. How would you deal with condensation?

<comment><USER16> With a small heater to blow hot air over it.

<comment><USER6> That would work with a heat pump setup. Liquid nitrogen cooling is usually done by evaporating into the air directly on the processor package (as far as I know). So you would always have condensation inside the server case. Hmm, I guess a isolated duct for evaporated nitrogen to escape and heating the outside of that duct to ambient temp.

</comment></comment></comment></comment></comment></comment><comment><USER26> > Disable mitigations for CPU vulnerabilities

This begs a questions, which type of applications that are ok to disable mitigation?

<comment><USER27> For the majority of applications that follow this guide (or need to), the OS mitigations don't matter anyways:

1\. They're running only trusted code.

2\. L1 cache attacks aren't relevant if there's only one thread ever running on a given core.

3\. Kernel-bypass networking means there are no system calls in the hot path anyways, so the OS mitigations won't even run in the first place.

If you're already doing all this it may be easier/better to look at using FPGAs instead. The advantage of this approach is that you don't need to procure a card with enough LUTs to house your design, and it allows the Ops team to contribute to performance.

<comment><USER28> If you've reduced the number of syscalls, the mitigations almost don't matter. Turning off the mitigations is more important if you're using the kernel stack for something like a tuned HAProxy installation which is mostly syscalls.

</comment></comment></comment><comment><USER29> Can someone ELI5 why you'd want to do line rate packet capture in a low- latency way? Wouldn't you risk losing packets because you are trading off processing capacity for latency?

<comment><USER16> Measuring network delay, or just doing kernel bypass processing. Generally you know you won't loose packets because the rate is much lower than you can process.

<comment><USER29> Btw, for timing a lot of nics and yheir drivers (eg Intel) support hardware timestamps.

</comment></comment></comment><comment><USER30> NO_HZ_FULL only works on Fedora and RHEL/CentOS 7+ unfortunately. Not sure why Debian derivatives haven't enabled this feature in the kernel.

<comment><USER14> If you are serious, you build your own kernel, and it doesn't matter what Debian or Red Hat does or doesn't.

But not everybody is so serious, and ease of deployment often matters. CentOS 7 is very old now. I hope you are not still using 6.

<comment><USER31> The "+" meant to indicate "or later", Centos 7 or later

And not building your own is less about ease of deployment (you could rebuild packages and add your own repo).

Building your own disconnects validation and maintenance. So maybe you don't build your own _because_ you are serious.

<comment><USER14> It doesn't take much courage to field 7. CentOS 8 was released several months ago.

Persuading customers to run your special kernel is harder than getting them to run your program, so stuff that works with a stock kernel is an easier sell. Getting them to insmod your custom module is often possible when deploying a custom kernel isn't.

</comment></comment></comment></comment><comment><USER32> What Linux distro are you using? Couldn't find any of the util tools in Ubuntu's packages.

<comment><USER33> (Ubuntu 18.04) tuned-adm is in tuned, cpupower and perf are in linux-tools- common, irqbalance was already installed for me, and I also don't see tuna.

</comment></comment><comment><USER34> Surprised to not see swappiness as a part of this guide.

<comment><USER16> Does anyone use swap on a system with real time response goals? Just disable swap.

<comment><USER34> Agreed, but it is worth mentioning.

</comment></comment></comment><comment><USER35> My two additions:

* Unikernels * Intel clear linuxOS</comment>


WIP HTML5, Canvas, Node.js MMORPG - <AUTHOR> http://thomashunter.name/blog/cobalt-calibur-html5-canvas-node-js-game/

<comment><USER2> None of the graphics loaded for me. I could see the goblin/reaper names, the player name & the chat box, but no graphics. Just a black screen</comment>


Ubuntu "Raring Ringtail" hits beta - <AUTHOR> http://arstechnica.com/information-technology/2013/04/ubuntu-raring-ringtail-hits-beta-disables-windows-dual-boot-tool/

<comment><USER2> What was removed, Wubi (the "Windows Ubuntu installer"), isn't a "Windows dual boot tool", its an installation tool for Windows boxes that lets you install/uninstall Ubuntu through Windows Add/Remove programs and have your whole Ubuntu root filesystem in what appears as a giant NTFS file.

It doesn't really do anything for the dual-boot experience, it just changes the installation experience. Dual booting on Windows machines installed through the normal Ubuntu installer has always had pretty much the same experience as dual booting something installed through Wubi.

</comment><comment><USER3> Very misleading title.</comment>


Russia's 'Right to Be Forgotten' Bill Comes into Effect - <AUTHOR> https://www.rt.com/politics/327681-russia-internet-delete-personal/ <comment><USER2> Countdown to when these provisions are used by the Russian state to "disappear" people and completely remove them from the last place where their mark on the world previously couldn't be easily expunged?

<comment><AUTHOR> "Disappear" people by a court decision? Whaat?</comment></comment>


PhpBB's site hacked - <AUTHOR> http://www.phpbb.com/index.php

<comment><USER2> Here's some more information:

[http://area51.phpbb.com/phpBB/viewtopic.php?f=71&t=29973...](http://area51.phpbb.com/phpBB/viewtopic.php?f=71&t=29973&sid=9d7cb17a409f8ca8bcc62c35748a52af)

<http://community.mybboard.net/thread-44513-page-1.html>

 _phpBB.com website was hacked through a vulnerability in an outdated version of a third-party script called PHPList. PHPList is used to manage the Mailing list on phpBB.com (the website). The hacker got in and compromised the rest of the server through that vulnerability including the phpBB.com forums. Information about this vulnerability and the security update that patches it is here:<http://www.phplist.com/?lid=274> If you or anyone you know is running PHPList, it is vital that you notify them of the security update immediately. It is important to note that the phpBB.com website was not hacked through a phpBB(3) vulnerability and there are still no known vulnerabilities within phpBB3. phpBB.com is back online which explains this in summary. (If you previously visited phpBB.com, you may need to refresh your DNS cache to see the site)._

Except that it isn't back online yet.

</comment><comment><USER3> This sucks. I've been a fan of phpBB for a while now as a free bulletin board, and it always sucks when some asshole hacks your site and screws stuff up for a while.

I know they should've kept the installation up to date, but you could probably say that about tons of other companies.

<comment><USER4> The attack took place on January 14th, per the blog. The patch was released on January 29th, per this:

<http://www.phplist.com/?lid=274>

Based on that, they very well could have been up-to-date when they were hacked. As such, to chide them on it seems inappropriate.

</comment></comment><comment><USER5> I'm pretty surprised it wasn't hacked via a vulnerable installation of phpBB.

<comment><USER6> Contrarily, I would have surprised had it been hacked through a vulnerability in PHP. For two reasons.

1) as the custodian of the forum software, I wouldn't expect them to keep a vulnerable edition of the software in the production server.

2) PHPBB3 is assumed to have come of age compared to the notoriety that PHPBB2 was.

</comment></comment><comment><USER7> I ended up shutting down my phpBB forum because it took too much time to weed out all the porn and spam. Forum is now a yahoo group and have had no problems.

<comment><USER8> phpbb2 and phpbb3 are worlds apart.

A forum I 'run' for a client used to get up to 200 spam users a DAY with phpbb2, but since upgrading to phpbb3, it's not had a single one.</comment></comment>


Ubuntu With Linux 3.16 Smashes OS X 10.9.4 On The MacBook Air - <AUTHOR> http://www.phoronix.com/scan.php?page=article&item=apple_osx1094_ubuntu&num=1

<comment><USER2> While this is welcome, the benchmarks neglect my number one reason for having an MBA: battery. Now, if advancements in 3.16 yield battery life comparable with OSX 10.9, sign me up. Would love to see someone do a proper set of benchmarks on that front.

</comment><comment><USER3> OS X is slow, I already knew that and have experienced it first hand.

What is more interesting is the performance boost with Linux 3.16 instead of the stock Ubuntu 14.04 Linux kernel. Can anyone explain why this is the case?

<comment><USER4> Probably includes drivers with optimizations for Intel Haswell chipsets...

</comment></comment><comment><USER5> Pretty cool results. I wish I could use linux as my main OS but OSX is everything linux is and more. UI and UX is better also so I'll take the trade off any day.

<comment><AUTHOR> Well package management is not as good on OSX, though.

</comment></comment><comment><USER6> Smashes battery life too I bet.

Also, why XFCE? Wouldn't Unity be closer to Aqua in terms of resource (ab)use?

<comment><AUTHOR> Well it's not XFCE that makes a difference since the benchmark shows it's the latest kernel that drives the performance increase.</comment></comment>


Book Review – Writing Interactive Fiction with Twine - <AUTHOR> https://www.youtube.com/watch?v=8gNKhqDr6pg&feature=youtu.be <comment><USER2> I saw this book in a book store and thought it looked interesting. It seems like it would be fun. Growing up Choose Your Own Adventure books and other print based interactive fiction games really inspired me to read. I wonder if interactive fiction will eventually be recognized in the literary community as an extension of the novel.</comment>


Nextcloud (the continuation of ownCloud) - <AUTHOR> https://nextcloud.com <comment> stp-ip Seems like 9 of the top 10 contributors in addition to the project founder and the lead security engineer are pushing this effort. Good foundation to fork and support users.

Let's hope this brings the transparency, openness and community awareness owncloud/nextcloud always needed.</comment>


Yik Yak's Founders on the Value of Anonymous Apps - <AUTHOR> http://techcrunch.com/2015/05/05/yik-yaks-founders-on-the-value-of-anonymous-apps/

<comment><USER2> Having used the app, if this is the future of discussion then I don't want it. There are innumerable ways to trip concealed content filters that then deceptively remove posts in a way that makes it look like community action rather than top-down content moderation. Some of these filters are great for preventing liability for their app, but make the app worthless for useful discussion. I can't wait until they implement their natural language filters so that mentioning suicide or a gun generates an automated community check or police visit, or it's just impossible to violate opaque ideological norms set by app creators in a high-tech version of manufactured consent.

Using modern social apps for me is starting to feel like navigating a Kafka- esque bureaucracy. I don't know the right thing to do to be heard, I don't know the wrong thing to do to not bring down sanctions on me, and I often struggle to navigate the app because I don't know the invisible use patterns behind unlabeled buttons and hidden swipe menus, dot-replies, etc. Am I shadow-banned? Does the app hide my replies until I pass some invisible commenting threshold? How do I page through replies? Are my posts being seen by a few people or everyone, and by what criteria? All invisible.

<comment><USER3> Yeah, it's the classic tension between anonymity (also, security) and utility...this morning, a prominent part of Stanford's campus was closed off due to a memorial service for Dave Goldberg. Someone asked what was going on and someone attempted to reply...I don't know what the replier posted, only that it apparently got deleted, so the replier just settled for posting "whatever, just google surveymonkey"

I figure there's some kind of NLP entity recognition for names/proper nouns...and perhaps the mechanism/policy is set to be more safe-than-sorry (in favor of deleting content). I just can't see how this will translate into a valuable community, though. I go to YikYak whenever I want to know the kind of things that are going on but aren't covered in a news source, but factual/substantive discussion is effectively discouraged by the content policy. How long until the general userbase just gets bored of seeing ripped- off memes and shower thoughts?

(on the other hand, maybe it doesn't need to depend on a userbase that's not in college...every year, YikYak can count on getting a fresh userbase to replace the graduating seniors who end up quitting the app)

<comment><USER2> Yes, there is an automated system in YikYak that artificially applies downvotes on a timer if you make a post with an anglophone name in it, faking natural downvotes.

I admit there's a tension there, but a large part of my complaint is that it's intentionally opaque to the point of actively trying to hide itself. Ethical, human-friendly moderation systems have at least some degree of transparency.

</comment></comment></comment><comment><USER4> Just went to install this app. Asks for identity, Location (understandable given the nature), photos, media, files, device ID and call information, and wi-fi connection info.

No thanks. How can you call your app anonymous and require my identity and contents of my device?

<comment><USER5> On iOS, it asks only for location data.

<comment><USER6> May it be that iOS quietly gives everything else to the app?

<comment><USER5> iOS permission requests happen in-app rather than at install time, and they're definitely not "quietly given". Each permission gets a separate dialog, Apple's review process rejects requests that aren't tied to functionality, and iOS doesn't allow access _ever_ to device ID, call information, etc.

</comment></comment></comment></comment><comment><USER7> Pseudoanonymous or unilateral anonymity, since I'm almost certain that Yik Yak keeps track of post and users and with the current state of machine learning it is trivial to later pinpoint a person with said posts. Don't like the word anonymous being thrown out there and making users think that they have true anonymity, to me it almost feels like false advertisement.

<comment><USER8> "anonymous flavor" or "anonymous style" apps

</comment></comment><comment><USER9> "For instance, Secret's failure to quickly address the bullying on its network eventually led to its downfall." \- this is pure conjecture being presented as fact...

</comment><comment><USER10> _For instance, Secret's failure to quickly address the bullying on its network eventually led to its downfall._

I didn't get that from the secret shut-down at all. From all the talk here after the shut down it was largely a factor of 1. low quality secrets being gamed to get to the top and thus not interesting and slowing growth and 2. it's rebranding making it dull.

</comment><comment><USER11> It sounds cool, but it appears to be full of bored stoner comments ("waaaassssup" etc.) and people just being obscene. There are also very few updates in my fairly populated area. It's going to be hard to create a community

I'm also fairly sure I could just spoof the location of my rooted phone and view and post to whatever region I liked.</comment>


Lisp Wins (Steve Yegge article) - <AUTHOR> http://steve.yegge.googlepages.com/lisp-wins <comment><USER2> I don't accept that his particular verbose version of doing things in java is acceptable. Just because dynamic language x does x things hidden behind a bunch of code means that you have to emulate the exact same things in another language to achieve the same result.

It's bad smalltalk to emulate C while your programming for it, and similarly it's bad C to emulate smalltalk with it. It's like I would take his original java version and made it into perl, insisting that the perl script HAS to be in a class definition, and HAS to be in a main method, I MUST define the resultset in a static class list, and output with separate methods. Saying that perl couldn't reproduce my 'reusable object' java functionality with doing that is just pedantic.

He should of just extracted a real example where it's impossible to do something in a short amount of code due to the lack of a specific feature, or being chained to java's static typing. Like converting a JDBC ResultSet to an int[]. (5 lines of code, 15 if you don't compress the curly brackets)

A real life implementation of his example: public class Out { public static void main(String args[]){ for (int i = 0; i < 6; i++) { System.out.print(''+i*i+' ');} System.out.println();}

Also just because a language is succinct, doesn't mean it's productive. Just look at SML. It's many, many restrictions act as a straitjacket to do simple things, yet also keeps things succinct. It's would be better to say that because of intentional restrictions x (static typing) or lack of feature y (first class functions), it makes it that doing some simple thing z is forced to used workaround a. Because language b has this feature set, this leads to general bureaucratic overload.

Java isn't bureaucratic just because of the language alone, Sun & apache contributes a lot of this itself in how they've programmed their standard libraries and their love affair with XML.

<comment><USER3> Can you give a few examples of SML's "many, many restrictions"? The only things I can think of that fit that description are the value restriction and lack of first-class polymorphism, but neither of these should have a serious effect on productivity.

<comment><USER2> When I was given assignments for SML, I was constantly running into x or y restriction whenever I tried something. Maybe my prof knew how to setup his assignment for maximum frustration using SML, and normal usage is not so bad (after you gain some skill in it), I don't know. But consensus from my class & some people on the net is that it shouldn't take hours to get a 10 line program working. Principle of least surprise is something SML does not follow. Also there's a lack of a support network & decent documentation for it compared to more popular languages out there. I'd rather use lisp than the traumatic experience SML was. At least the syntax isn't much to learn.

</comment></comment></comment><comment><USER4> _"Note: although I came to the conclusion in this article that Lisp beats Java hands-down as a language, more research has got me thinking that Java beats Lisp hands-down as a platform..."_

These days (article is from 2004) we have the luxury of being able to use expressive languages within a large library ecosystem by using implementations of them in the giant platforms that have been built by Sun and Microsoft. Personally, I'm using Clojure, a Lisp dialect on the JVM, for all my explorative programming. Yegge himself seems to be working with Rhino (JavaScript on the JVM) these days.

<comment><USER5> In 2004 I had already been using Kawa Scheme on the JVM in my day job for 4 years. That's also the year I began OurDoings using the same technology.

<http://ourdoings.com/2004-08-24>

<comment><USER6> Are you also familiar with Clojure? How would you compare the two?

<comment><USER5> I'm not familiar with Clojure, but as I understand it's a new language. Kawa is R5RS Scheme except it can't capture continuations. Kawa has the advantage of being a fast compiler. SISC is an interpreter, but it is more completely standards-compliant Scheme.

</comment></comment></comment></comment><comment><USER7> That 0.5 million line java game of his must be really something. I saw some screenshots and it reminded me of things I played on Windows 3.1. Dollars to donuts he's going some wtf-worthy stuff in there.

ED: Oh, yeah, reading through the article, I see it must be true. His "print the squares" example is pretty bad. If I did it (using some home[green]spun libraries) it would look like this, more or less:

      List squares=Util.makeList(Util.makeList(1,2,3,4,5),Util.class,"square");
      System.out.println(squares);

(Reflection is being performed, with "square" being a static method from Util.class) Really, I would need a Util.makeRange(1,5) function to get closer to perl.

</comment><comment><USER8> this is not true is it? there must be a way to make this shorter, otherways that is completely ridiculous.

"""" The equivalent code in Java, as reasonably compressed as I could make it, is:

import java.util. _;

public class Fugger { public static void main ( String[] args ) {

        List numbers = new ArrayList();
        for ( int i = 0; i < 5; i++ ) {
          numbers.add ( new Integer(i) );
        }

        List squares = new ArrayList();
        Iterator it = numbers.iterator();
        while ( it.hasNext() ) {
          int i = ((Integer)it.next()).intValue();
          squares.add ( new Integer(i * i) );
        }

        Iterator i2 = squares.iterator();
        while ( i2.hasNext() ) {
          int i = ((Integer)i2.next()).intValue();
          System.out.print ( i );
          if ( i2.hasNext() ) {
    	System.out.print ( " " );
          }
        }

        System.out.println();
      }

} """"

and his example in python: ' '.join([`x _ x` for x in range(1, 6)])

rofl...

<comment><AUTHOR> Interestingly, the author didn't show that program in lisp ... which do you think is better style:

(mapc #'(lambda (x) (print (expt x 2))) (list 1 2 3 4 5))

or

(loop for i from 1 upto 5 do (print (expt i 2)))

interestingly, they are both longer than python/perl ...

Not to turn this into a game of Golf, but is there any shorter way?

<comment><USER9> If you just want to print the same output, you can be ever so slightly shorter than his Perl/Python:

(dotimes (i 5) (print (expt (1+ i) 2)))

This doesn't follow his semantic steps, so it's kind of cheating, though in a real program I have a bunch of utility functions to help me out so it's about the same:

(join " " (mapcar #'sq (range 1 5)))

I think the point is not that Lisp is shorter for any given toy problem, but that Lisp allows you to build such abstractions. Even if you had join() and range() and sq() in Java, what's Java for (f x (mapcar #'g (h y z)))?

</comment></comment></comment><comment><USER10> Lisp is as good as you are good at programming language design. Otherwise Lisp will result in an incomprehensible code. The fact is there are not so many good language designers.</comment>


Universities lead the way in developing UK start-up firms - <AUTHOR> http://www.guardian.co.uk/business/2010/aug/29/university-business-start-up-firms

<comment><USER2> Though they're not mentioned in the article, Cambridge Enterprise generated £10+M for the university. They're the Cambridge equivalent to Imperial Innovations, which is mentioned in the piece, but I think it's still owned by the university.</comment>


Shift+Cmd+R and Cmd+R always returning different results? (Chrome and Firefox) - <AUTHOR> This is the weirdest error I've had regarding cache. On browsers in which I've previously
visited the website, there's some sort of "forced" cache that, no matter how many times I do Cmd+R, it still loads a cached version of an index.html file.
Also, if I do Shift+Cmd+R it correctly loads the new version (on Firefox), but if I do Cmd+R again, it loads the old cached file again!
Weirdest thing is that in Chrome, Shift+Cmd+R ONLY works if the dev console is open. Any ideas as to what can be happening here?
I'm sending a `Cache-Control: no-cache` header which only shows up on the "Shift+Cmd+R" cases. Shouldn't the file be re-cached once Shift+Cmd+R has "correctly" worked (i.e. loaded the new file)? <comment><USER2> I don't understand cache fully, but I do know that if you open Dev Tools in Chrome and long-press the Refresh button, it will give you a drop down with the option "Empty Cache and Hard Reload", and also shows you that Shift+Cmd+R is just Hard Reload without emptying the cache. Sometimes I need to do this, but I don't fully know why or when.</comment>


A Black Hole Is 'Almost on Our Doorstep' - <AUTHOR> https://www.theatlantic.com/science/archive/2020/05/closest-known-black-hole/611188/ <comment> java-man TL;DR: at a distance of 1000 light years.</comment>


Ask HN: Cheap Internet marketing for bootstrapped Shopify app startup - <AUTHOR>

I've just created a new app for Shopify. What I really want to find out is if there is a cheap internet marketing company that can do the marketing for me. I think it basically needs forum posting etc. I'm not trying to promote my app here, I just need some marketing advice on how to get some users!
My app has some competitors but also has some real differences that will add value to eCommerce type businesses and is the only app that provides those features.
Any marketing advice would be fantastic, but I really would prefer to pay someone to do it for me. <comment><USER2> What have you already tried? How can people get in contact with you?

<comment><AUTHOR> I've only tried the Shopify forums, creating posts, replying to people. Was thinking about starting a facebook ad campaign but I don't know how effective that would be.</comment></comment>


Xeround: Elastic MySQL service in the cloud - <AUTHOR> http://www.xeround.com/

<comment><USER2> After some hunting and pecking this seemed to answer some of my questions: <http://www.xeround.com/developers/faq.html>

\- It runs on EC2.

\- For performance, they store data in memory (backed up on disk). So it should be faster than regular mysql (but use more memory).

\- It's a drop-in replacement for MySQL (it's a storage engine). Your code doesn't have to change at all. (ie. you can use PHPMyAdmin etc...)

\- It scales up and down quickly, supposedly (although I couldn't find many details on how).

<comment><AUTHOR> They also say they plan to add other cloud providers later.</comment></comment>


Uber to quit Colombia after judge says it doesn't compete fairly - <AUTHOR> https://www.bloomberg.com/news/articles/2020-01-10/uber-to-quit-colombia-after-judge-says-it-doesn-t-compete-fairly <comment><USER2> As someone whose business is based in Colombia and has lived here for two years, this article and the comments section are totally out of touch.

In Colombia, the ride-sharing app market is competitive. I personally prefer EasyTaxi and Beat over Uber here.

The former works with the existing taxi system, and the latter is similar to Uber, except that the cars aren't universally 30 years old and also it's legal.

It's as if the world outside of Silicon Valley startups just doesn't exist in the minds of ~~Uber PR~~ Bloomberg and Hacker News commenters.

Maybe it's a broader part of American media messaging to imply that the world will suffer badly if a US corporation were to fall. But in an ideal, healthy economy companies should be exiting markets regularly.

<comment><USER3> I disagree with you. The article says the truth about taxis in Colombia. "Millionaire ride" has been a thing for decades, and it still happens.

The competition from Uber made taxis improve so much, that I fear a return to the norm, before Uber, where taxis would ask 50k COP for a ride that should only cost 20k COP and so on.

Also, Beat are next in line for these lawsuits.

<comment><USER2> I've been ripped off by taxis twice in Bogota, though never in any other city and never one of these boogeyman "millionaire rides"

The first time was my very first taxi in Colombia: I arrived at the airport and naively thought the guy asking me if I needed a taxi was being helpful. Little did I know, that was code for "are you new around here" and then he not only charged me 70k for a 23k ride, but also stole my harmonica and then came back 15 mins later having "found" it and asking for a reward. I was blindsighted.

The second time, the guy took me from the airport though some ridiculous route around the city and when he arrived asked me for about 3x the actual cost. I gave him what the ride should have cost, he followed me into where I was going and I just ignored him; he left.

I've had bad taxi experiences in other countries, but I concede Colombia, or at least Bogota (I lived in Medellin over a year and never had a problem) has some very unethical drivers.

OTOH, I have never had, nor heard of, any problem with a driver that came via EasyTaxi, Beat, or any of the other apps that compete with Uber.

I also think it's in the country's best interests to push foreign rent-seeking companies out of the country.

If Beat gets hit with these lawsuits my opinion will change.

</comment></comment></comment><comment><USER4> It's said to see Uber go, I really liked using it in Colombia (taxis as well, when it was more comfortable for me).

I just wish that 20 year old cars would be banned from being used as Uber/Taxi cars there.

A taxi tried to rob me in Santa Marta, but luckily the girl I was with knew that if the driver asks me to lock my door and leaves the front right door open, it's a sign that he wants to rob us.

<comment><USER5> >asks me to lock my door and leaves the front right door open, it's a sign that he wants to rob us.

How does that work?

<comment><USER6> Probably by using the child lock you can't get out the back but someone else can come in the front and stick you up.

<comment><USER7> If it was a child lock, why did the driver need to ask to lock the door?

<comment><USER8> 20 year old cars did not have electronic child lock, this is how the mechanic child lock worked

<comment><USER9> Child lock isn't electronic, it's a mechanica switch you can only access when the door is open that prevents you from opening the door from the inside of the car. Locking the doors does nothing, if the door is going to open it'll automatically unlock if you pull the handle from the inside.

<comment><USER8> That's not how my old car (Mondeo 97) works.

<comment><USER9> I see in the US requirements that the rear side door lock has to disable both the exterior and interior handles. Odd.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I recently honeymooned in Colombia and my wife and I used Uber in Bogotá. If I recall correctly, it was never exactly 'legal' but still quite common and cheap.

I wouldn't be surprised to see another local company (Rappi perhaps?) try to enter the ride hailing market there in response. Unfortunately for taxi drivers, I don't know if protectionist policies will do anything but prolong their slow decline.

<comment><USER11> It's been the same situation in Ecuador for a while. In some cities it's tolerated, in others the police have cracked down by calling Ubers and handing out large fines when the car arrives.

I'm sympathetic to the taxi drivers.. but Uber is considered significantly safer. There's also InDriver and Cabify but they are less popular.

<comment><USER12> And Beat and Didi. But the reputation system on Uber is better, both for drivers and for riders. I'm sad to see it go.

</comment></comment></comment><comment><USER13> Anyone knows any details of the ruling? This article mentions nothing about the actual court case.

<comment><USER14> It basically boils down to Uber considering themselves a tech company while Colombian law sees them as a transportation company that must obtain licenses and oblige to regulations around ride fees and such.

More detailed article in Spanish [https://www.eltiempo.com/tecnosfera/apps/taxistas- demandaran...](https://www.eltiempo.com/tecnosfera/apps/taxistas-demandaran- tambien-a-beat-cabify-y-didi-446406)

<comment><USER15> They tried the same trick as anywhere else, then. And it is unsurprising that they failed.

<comment><USER14> We will see. To me what Uber is currently doing smells a bit like a PR stunt. Especially with all the appeal to emotion in their communication to the users and trying to get them riled up on social media.

e.g. [https://twitter.com/Uber_Col/status/1215681583253991424](https://twitter.com/Uber_Col/status/1215681583253991424)

All while, their appeal to the order from December is still pending a decision from a higher court.

<comment><USER12> The judge ordered them to stop operating.

<comment><USER14> Did they? I honestly don't know since I don't use them.

To my knowledge the ruling to stop was mid December and the decision of the higher instance is expected within weeks.

<comment><USER12> I'm no longer sure. I'm looking at this passage:

"Así lo cree Nicolás Alviar, el abogado representante del icónico caso contra Uber ante la Super Intendencia de Industria y Comercio, que en primera instancia ordenó el cese de operaciones de la aplicación de movilidad compartida en Colombia."

Either that says the Super Intendencia ordered the service shut down, or it says that Alviar (the lawyer playing offense) caused it to happen.

[https://www.eltiempo.com/tecnosfera/apps/taxistas- demandaran...](https://www.eltiempo.com/tecnosfera/apps/taxistas-demandaran- tambien-a-beat-cabify-y-didi-446406)

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Of any country I've visisted, Uber is the least necessary in Colombia. The taxi system is extremely fair and safe, albeit cash only right now. It's highly regulated and you can count on predictable, transparent, fair rates.

When I took an Uber at the Medellin airport, a guy saw me waiting at the curb and called my name, explaining that he would drive me to my actual Uber. I hopped in, and he drove me a mile or two outside the airport to a lot where all the real Ubers were waiting. We switched cars, and presumably he got some small kickback, then returned to the airport to smuggle people to their Uber. It was a pretty interesting experience; the police at the airport readily fine Ubers that pick up passengers and know the cars by license plate.

<comment><USER17> The posted article directly contradicts you. It says most Colombians are afraid to take taxis because of how unsafe they were.

<comment><USER18> I've visited Colombia several times on several cities and unless you're taking illegal cabs you never feel unsafe. The legal cabs are pretty clearly marked.

Uber could give you an extra layer of safeness as you're basically recording your ride, but that does not mean the cabs are unsafe there. Having said that, if I had to take a taxi to take me to my Uber, I will really feel unsafe.

<comment><USER12> How do you distinguish legal cabs? I live here, and locals tell me half of Bogotá's 40,000 taxis have fake taxi licenses. Nobody's ever told me you can tell them apart.

Even the police and politicians here use Uber.

</comment></comment></comment></comment><comment><USER19> Uber is essentially a Bring-Your-Own-Hardware for taxis. It's sort of "decentralizing" the taxi service, if you will. And laws seem to be antiquated for such a model. I wonder how decentralization of the tech industry, next, would play out if the laws are not written with that in mind. How do you tax a platform that offers, say, AWS but with commodity hardware? How do you ascertain data privacy laws in such a case?

</comment><comment><USER20> If the nation weren't Colombia, would the headline have been "...judge rules..." or even "...court rules..."? "Says" is a pretty low-status verb. I don't suggest that Colombian judges should get more respect from headline- writers, but I would suggest that they should get the same respect as North American judges.

<comment><USER21> No.

I went to news.google.com and searched "judge says". While the article above was one of the top results, all the other of the top ten results were stories in various parts of the US, with "judge says" used in the same way.

It seems that to the extent the neutral verb "says" shows any respect, Colombian judges do get the same respect as North American judges in the eyes of headline writers.

<comment><USER20> I'm not so certain. A _slightly_ more empirically valid investigation than yours disagrees [0]. Whatever, I'm glad all the "anti-PC" reflexive downvoters had a chance to do their thing.

[0] [https://trends.google.com/trends/explore?geo=US&q=%22judge%2...](https://trends.google.com/trends/explore?geo=US&q=%22judge%20says%22,%22judge%20rules%22)</comment></comment></comment>


Mari0 - Super Mario Bros. + Portal - <AUTHOR> http://stabyourself.net/mari0/

<comment><USER2> For a previous rendition of the same concept, Dorkly made a similar video, that I think is much more enjoyable (as Mario himself takes humor out of his having the gun); although , the Dorkly version didn't attempt to make the game play "work" (this version from Stabyourself actually looks like something that, if built, could actually be played; the Dorkly one is "just" machinima).

[http://www.dorkly.com/video/14583/dorkly-bits-mario-with- a-p...](http://www.dorkly.com/video/14583/dorkly-bits-mario-with-a-portal-gun)

</comment><comment><USER3> One additional difficulty in making Portal 2-dimensional is the loss of a relative frame of reference, which can cause control problems. If you hold down the left key to enter a right-facing portal, and exit through another right-facing portal, do you start moving right even though you are holding down the left key? Massive kudos if they can find a intuitive way to solve this.

<comment><USER4> Since we're having a bit of fun, my suggestion would be to horizontally flip the level entirely. I suspect it would rapidly become more intuitive than you'd think; a shock the first couple of times, but just "how it works" after that.

Further edit: I have no idea why, but in my head the color palette shifts when the screen is reversed, like all the colors get 20% darker. (Perhaps I'm analogizing with A Link to the Past's "Dark World", which isn't really the same thing, but you are welcome to explain that to my subconscious at your leisure.) It doesn't seem like there's a good reason for that from a Portal point of view, but it would offer a subtle hint that you're supposed to be going the other way now.

<comment><USER5> Would you have the controls also be reversed (left becomes right and vice versa)? I'm not sure what makes most sense. Maybe you'd get used to it after a while.

<comment><USER6> What I am planning to do is make it like in games that have fixed cameras: When the camera changes, the character keeps walking into the same direction unless the player presses in another direction.

</comment></comment></comment></comment><comment><USER7> I like the idea, but the levels would have to be entirely redesigned if you wanted to preserve good gameplay. Having a portal gun tacked on to Mario, with no need for it in the game and levels not designed around its use, would just kind of suck.

<comment><USER8> Sure, that would be the case if we hadn't all played the game 20 years ago. But we have, so instead it looks like a fun trip down memory lane.

<comment><USER9> Even funnier if half way the level or something, Mario "escapes" and then we get the fun portal oriented levels.

</comment></comment></comment><comment><USER10> If you enjoy this, or even the idea of game mash-ups I can't recommend Tuper Tario Tros enough!

<http://www.newgrounds.com/portal/view/522276>

Like the afore linked Super Mario Crossover, I see this and wonder, "how did they NOT make this?"

</comment><comment><USER11> This reminds me of Portal: The Flash Edition <http://portal.wecreatestuff.com/>

<comment><USER12> And Asciiportal: <http://cymonsgames.com/asciiportal/>

</comment></comment><comment><USER13> Surely the Mario version should shoot orange and blue pipes?

<comment><USER14> Fun fact: In the forgettable geography game _Mario Is Missing_ Bowser used a network of pipes called the Portably Operated Remote Transport And Larceny System, or PORTALS, to invade the world's cities and steal their artifacts.

</comment></comment><comment><USER15> I very much like Portal in 2D. A similar game, with much simpler graphics (actually just ASCII) but much more challenging, is ASCII Portal.

<http://cymonsgames.com/asciiportal/>

</comment><comment><USER16> If the diversity of hazards was ramped up this could easily be very fun, a much more intense and fast-paced arcade take on Portal. Never mind the classic sprites and music, the format of Super Mario is just different and would amount to a different Portal.

But as of now, most of the enemies in Mario were designed to be adequate hazards for a character who can only walk and jump, the matchup becomes pathetic if he's suddenly equipped with a Portal gun. From the video it seems the game-makers will have to be more creative with how Mario can be killed (Great heights, ranged attacks, time-trials, as opposed to just touching a mushroom/turtle/pipe plant)

</comment><comment><USER17> At first I thought it was just plain stupid, to combine these 2 concepts. But after watching the video I can really believe that it will be a lot of fun! Kudos for that idea!

</comment><comment><USER18> Cool idea, but it looks like the resulting game would be way too easy.

<comment><USER19> Possibly, but the goal looks more to be novelty in a classic environment, like the Super Mario Crossover game.

<http://www.newgrounds.com/portal/view/534416>

<comment><USER20> You just ruined my entire night. Good find. There's an updated version at [http://www.explodingrabbit.com/games/super-mario-bros- crosso...](http://www.explodingrabbit.com/games/super-mario-bros-crossover) with more features/characters.

<comment><USER21> I have no idea how I have never run into this.. This is pure awesomeness!

</comment></comment></comment></comment><comment><USER22> Now just make a kick butt flash implementation and you'll get $1M internet dollars!

No but seriously, this is super cool.

</comment><comment><USER23> I know nothing about Portal, but that is really amazing.</comment>


Dwolla realtime payments - <AUTHOR> http://blog.dwolla.com/register-for-beta/

<comment><USER2> Are funds across all users still co-mingled in one "real" account at a credit union that isn't FDIC insured?

<comment><USER3> I'm trying to figure out what your number one concern is?

Is it co-mingled funds?

Is it lack of insurance?

Or is it lack of the FDIC?

You won't find any credit union insured by the FDIC. Credit unions are insured by the NCUA.

<comment><USER2> My primary concern is that its a financial institution that is trying to pretend its only a payment processor, with no recourse for getting your funds back if things go sideways.

Its great what they're doing; it'll show real banks how to catch up.

</comment></comment></comment><comment><USER4> Anyone considering doing business with Dwolla should read up on how they treated their customer TradeHill. (Google it). The internet has a long memory.</comment>