H.265/HEVC vs. H.264/AVC: 50% bit rate savings verified - <AUTHOR> http://www.bbc.co.uk/rd/blog/2016/01/h-dot-265-slash-hevc-vs-h-dot-264-slash-avc-50-percent-bit-rate-savings-verified <comment> ju-st VP9 vs H264 vs H265:

\- Next-gen codecs provide 50% bitrate improvements over x264, but are 10-20x as slow at the top settings required to accomplish such results.

\- Normalized for CPU usage, libvpx already has some selling points when compared to x264; x265 is still too slow to be useful in most practical scenarios except in very high-end scenarios.

\- ffvp9 is an incredibly awesome decoder that outperforms all other decoders.

[https://blogs.gnome.org/rbultje/2015/09/28/vp9-encodingdecod...](https://blogs.gnome.org/rbultje/2015/09/28/vp9-encodingdecoding- performance-vs-hevch-264/)

<comment><USER3> One downside of VP9: the VP9 spec is still under NDA from Google. There is no publicly available spec. As far as I know, the only people that have written a software VP9 decoder are either Google employees (libvpx) or ex-Google- employees who worked on VP9 when they were there (rbultje, who wrote ffvp9 with Clément Bœsch).

<comment><USER4> Which "spec" are you referring to?

The bitstream spec is definitely public.

<comment> TD-Linux I have never seen a spec, do you have a link?

<comment><USER5> This, perhaps? [https://tools.ietf.org/html/draft-grange- vp9-bitstream-00](https://tools.ietf.org/html/draft-grange-vp9-bitstream-00)

It's only a draft, and two years out of date, but it is public.

<comment> TD-Linux It's a good overview of VP9, but it's certainly not enough to implement a decoder, or call it a "spec".

</comment></comment></comment></comment></comment></comment><comment><USER6> Interestingly, the place I've seen the most widespread adoption of HEVC is China: Android-based set-top boxes with hardware H.265 decoding are widely[1] available[2], and a number of the major IPTV services (both authorised and unauthorised) are using it, including for live content.

I was quite surprised to find I was able to stream a very high quality 1080p movie on a random unbranded Chinese IPTV box at ~2mbps that looked every bit as good as what Netflix streams at 5mbps.

<comment><USER7> Could be because they don't care too much about patents and licensing issues?

<comment><USER6> They don't, but they've been getting hit hard from both domestic and international rightsholders. There's also been a push against IPTV services offering foreign content/live channels on 'national security' grounds in recent months, and quite a few companies have disappeared or gone deep underground.

The big players—LeTv, Tencent—have been fairly diligent about getting proper licenses for content over the last year or so. LeTv just scored rights to the Premier League, for example.

</comment></comment></comment><comment><USER8> I wonder if the choice of encoder has an impact to the results; on a quick glance they appear to use Fraunhofer reference encoder for H.264 whereas afaik x264 is the state of art wrt subjective quality.

In my unprofessional opinion 8 Mbps sounds quite low for 4k h264 encoding, I would expect that sort of rate for good quality 1080p encoding (Blu-Rays being in the 20 Mbps range afaik)

<comment><USER9> The choice of the encoder has huge impact on the results - e.g. hardware H.264 encoders in phones will hardly produce anything watcheable at 5Mbit@720p while x264 produces watchable output at 2Mbit at same resolution.

Same goes for those other encoders - they vary hugely in quality and used CPU at same bitrate and resolution.

</comment></comment><comment><USER10> It's a shame the royalty-free VP9 wasn't also included in this comparison.

<comment><USER11> You might find this an interesting read (PDF): [http://infoscience.epfl.ch/record/200925/files/article- vp9-s...](http://infoscience.epfl.ch/record/200925/files/article- vp9-submited-v2.pdf)

<comment><USER12> tl;dr vp9 is competitive with h.264 but not h.265

<comment><USER13> It seems a lot closer to h.265 than h.264, but still worse than it in all trials here. Give them another revision or two, they can probably beat it.

<comment><USER14> How do the complexity requirements compare? H.265 decoders have memory for lots of previous frames, but VP9 could be at a handicap if the format limits backward references to just a few frames.

</comment></comment></comment></comment></comment><comment><USER15> Related : OpenCL based encoder for VP9. [http://www.businesswire.com/news/home/20160112005093/en/Itti...](http://www.businesswire.com/news/home/20160112005093/en/Ittiam- enables-OpenCL-based-VP9-Encode-Mobile)

</comment><comment><USER16> wonder how Daala is coming along. no news in a while but there is code happening:

[https://github.com/xiph/daala](https://github.com/xiph/daala)

<comment><USER17> This is the progress for the past year:

[https://arewecompressedyet.com/?r[]=master-2016-01-01-082473...](https://arewecompressedyet.com/?r\[\]=master-2016-01-01-0824738&r\[\]=master-2014-12-10T16-13-14.342Z&s=ntt- short-1)

Select "Entire curve (old method)" to see BD-rate numbers (the new method requires data overlap in all three bitrate ranges in order to work, which the old curve does not have).

<comment><USER18> TL;DR: It is now slightly better than x264, but quite far from x265, as measured by SSIM.

</comment></comment></comment><comment><USER19> If you look at the latest movie/TV torrents, HEVC is gaining popularity, and the files are indeed half as big.

<comment><USER20> But they usually skimp on quality , it's rare/complex to find videos without artifacts.

<comment><USER21> I think this is the fault of the users who encode them. They don't do the bitrate calculus right. That's why I mostly avoid HEVC releases.

<comment><USER22> I don't think there's a Scene Standard [1] for HEVC yet. Even the one for x264 is a few years old and might not represent state-of-the-art.

If you're talking about P2P groups - all bets are off. There's even major groups of regional cappers who still use XVid... as a hobbyist archivist this makes me very sad.

1: [https://en.wikipedia.org/wiki/Standard_(warez)](https://en.wikipedia.org/wiki/Standard_\(warez\))

OT: personally, TV shows ripped off Blu Rays being 2GB / episode seems ridiculous

</comment></comment></comment></comment><comment><USER22> This is completely offtopic, but I'd love to do some encoding tests, except that the canonical test clips seem to be from Big Buck Bunny - <USER2> encodes differently than live-action video.

Does anyone know of some Free-as-in-speech clips from a wider range of sources/cameras that I can use without being sued into oblivion? Australia doesn't really have Fair Use provisions.

<comment><USER23> Australia doesn't have Fair Use provision because it doesn't need it.

Australia allows use of copyrighted material for research/teaching purposes (up to a % limit). As in it isn't against the law at all. Where as Fair Use Provision is a defence, when you are charged with breach of copyright (much like "self defence" in an assault charge).

(This is how even in Australia, Teachers are allowed to photocopy material for classes, and Journalists can report on other materials without being sued). The Copyright Agency tries to police and charge royalties if applicable.

<comment><USER22> Right. Looks like the first item in [1] under the 1968 Act protects me, but If I'm wrong, [2] will see my computer destroyed.

I'm not able to find anything regarding DRM, but I think that's what they mean by decoder.

IANAL.

1: [http://www.austlii.edu.au/au/legis/cth/consol_act/ca1968133/...](http://www.austlii.edu.au/au/legis/cth/consol_act/ca1968133/s40.html)

2: [https://www.comlaw.gov.au/Details/C2006A00158/Html/Text#para...](https://www.comlaw.gov.au/Details/C2006A00158/Html/Text#param128)

</comment></comment></comment><comment><USER24> Wasn't it supposed to be 75% savings. When HEVC first came out the claim was that 4K HEVC encoded video would have the same bitrate as 1080p AVC encoded video.

<comment><USER25> In fact quadrupling the number of pixels does not result necessarily in a 4x multiplication in bitrate, much less in general. That is because a movie recorded for example at 4K resolution is not at all the same as 4 different/independent 1080p movies that you would stick together in the same 4K frame. There are correlations/statistical properties that are exploited in the first case by the encoder and that does not exist in the second case. I have seen somewhere (though I can't find the reference) a back of the enveloppe calculation using Fourier analysis that showed that to multiply by 4 the number of pixel you only needed to multiply by 2 the bitrate. So, if HEVC has 50% bitrate savings that would explain the claim that 4K HEVC could have the same bitrate as 1080p AVC. Of course there is much more happening in HEVC than just a Discrete Cosine Transform (motion compensation etc.) so I don't know how this really applies in practice, and I haven't done the tests myself...

<comment><USER26> The 2x factor reason is pretty intuitive if you understand that video compression is still fundamentally representing superpositioned signals from 2D Fourier Analysis and that multiplying by 2x the number of pixels in each direction is no different for perception than if we doubled the DPI. Double the DPI yields up to 2x the possible frequencies needing to be represented up to the Nyquist frequency that would cover each possible interpolated pixel. This is part of why noise in film or audio makes representation much tougher - noise is typically higher frequency and rather random (although distribution depends upon brown, white, pink, etc. noise).

<comment><USER27> 4x number of points in real space -> 4x points in Fourier space, the Fourier space is still 2D. I don't get your reasoning.

OTH if you increase the DPI you bring in higher frequency components that are not that important for perception, so you can compress them more heavily.

<comment><USER26> I was confused with a different concept, disregard that part. FFT is by definition reversible for a discrete signal like a quantized image so each pixel must be reversible, so it has to be 4x total space used with no further operation, correct.

Quantization and filtering are the more important parts of the encoder than the FFT / DCTs since the transform is 1:1 reversible. Compression isn't just the mathematical accuracy of a signal when it comes to lossy algorithms as you know. A 720p video upscaled to 1440p should theoretically be exactly the same size for the sake of effective quality but encoders don't care about just the math and apply perceptual filters because simply doubling pixels looks really bad perceptually it turns out.

</comment></comment></comment></comment></comment><comment><USER28> I think that the encoding time needs more attention too, as it's crucial for livestreaming.

<comment><USER29> For livestreaming, NVIDIA (I believe AMD as well actually) graphics cards offer NVENC, which is a hardware HEVC encoder that can easily meet most people's needs.

<comment><USER30> The problem with livestreaming using hardware encoders is that the quality is _utter garbage_ compared to software encoders, which means that given the bitrate available to you it may in fact be so ugly to be unwatchable.

A typical home DSL connection does not have enough bitrate to produce a quality mid-to-high resolution stream using NVENC, and even if you have a good connection, Twitch caps out at 3500kbps. The gap between something like NVENC/QuickSync and x264 is _enormous_.

At the very least, HEVC's huge bitrate/quality advantage over H264 will help it here, but when it comes to GPU encoders they will just be attempting to catch up with what you can get _right now_ using x264.

Live streaming _quality_ aside, though, you are right that the hardware will make it possible for people to do live streaming in scenarios where they previously would've been unable to, because you can combine a hardware HEVC encoder with a low bitrate connection and at least get something watchable.

<comment><USER29> Do you have data to back that up? I've found that when comparing SSIM and PSNR, NVENC's H.264 encoder is able to quite handily beat x264 for quality while targeting the same bitrate and encode speed. This was using a Gen 2 Maxwell GPU and comparing to a mid range Xeon.

<comment><USER30> It's possible software is the problem here. I have certainly never seen a way to get acceptable quality out of NVENC in common consumer game streaming software like OBS, and I've tried at length including adjusting profiles and tuning settings. It doesn't help that NVENC's documentation is atrocious.

NVENC also mishandles color spaces considerably (full vs limited range), which is a big handicap to begin with.

SSIM and PSNR aren't really the question here either, the issue is totally perceptual. I do not doubt that on a speed basis NVENC is competitive or outperforms, the question is simply whether you can deliver something watchable that hits under the user's upstream cap. If you look at average twitch streams of even mundane video games, many of them are borderline unwatchable - this is a pervasive problem :-) Kicking butt on image-wide SSIM and PSNR won't be much use if all the text in a story-driven game is unreadable due to artifacts.

<comment><USER29> Ah, that might indeed be it. I was working with ffmpeg so the configuration was rather easy and transparent.

</comment></comment></comment></comment></comment></comment><comment><USER31> Hopefully ffmpeg will get speed improvements for H.265/HEVC, last time I checked it was way to slow to be used.

<comment><USER32> It's usually the case with new generations of software encoders.. I remember how long DVD rips would take in 2000... And remember how slow h.264 was when it became more common.

</comment></comment><comment><USER33> How soon will Daala + Thor (with some new name) shape up into something ready for production?

Also, does anyone know what is the situation with DASH? It seems that MPEG-LA cartel tried to create some FUD about it being patent encumbered.

</comment><comment><USER34> Can H265 benefit from Quick Sync hardware acceleration or is it just for H264?

<comment><USER35> Skylake has H.265 Quick Sync but previous generations don't.

<comment><USER36> Quick Sync also isn't exactly what I'd call a high-quality encoder, it is useful for things like realtime streaming or screencast recording, but if you are encoding movies or TV shows you will want a "real" HEVC encoder.

</comment></comment></comment><comment><USER37> Does one need to pay to use this new codec?

<comment><USER35> Yes, you have to pay these people: [http://www.mpegla.com/main/programs/HEVC/Pages/Intro.aspx](http://www.mpegla.com/main/programs/HEVC/Pages/Intro.aspx) and maybe also these people: [http://www.hevcadvance.com/#licence](http://www.hevcadvance.com/#licence)

</comment></comment><comment><USER38> No one discuss the patents and licensing problem of HEVC?

Would you have to pay for those patents if you 1\. Use Software Encoder / Decoder? 2\. User FPGA / OpenCL accelerated encoder / decoder?</comment>


Mini, Micro Funds for App Developers - <AUTHOR> http://www.iphonedev.in/iPhone/Mini-Micro-Funds-for-App-Developers.html

<comment><USER2> The iPhone craze right now reminds me a lot of the rush in summer 2007 onto the facebook platform. After the initial success of the FB apps, didn't a lot of VCs also start up funds for facebook apps.

Of course, there are differences since for iphone apps, an app sold is a few dollars for the dev.

Look at where facebook apps are at now today. Do you think that the deluge of apps for the iphone will cause apple to implement similar system as facebook to control the quality of apps that goes into the store?

<comment><AUTHOR> The app review at Apple is already under stress and criticism. But contrary to your facebook example, Apple recently started even being more lenient with app acceptance policy.

It seems they really want to scale the platform to the PC level as more apps on App Store means more iPhone sale as well. And the future is also towards the small form-factor, wire-free, intelligent UI based companion device for all one's information, communication and entertainment needs.</comment></comment>


QGtkStyle now part of Qt - <AUTHOR> http://labs.trolltech.com/blogs/2008/09/05/qgtkstyle-now-part-of-qt/ <comment><USER2> Excellent. It always stunk that Qt tried to look like a first class citizen on Windows and Mac OS X but not the dominant Linux desktop.</comment>


Making friends at the world's largest hackathon - <AUTHOR> http://blog.dormroomfund.com/2013/09/26/making-friends-at-the-worlds-largest-hackathon/

<comment><USER2> Actually the headline's wrong. It used to be the world's largest hackathon, it just got surpassed by mHacks last weekend.</comment>


Show HN: LeetDeals – Price Tracking for PS4 Games - <AUTHOR> https://leetdeals.com <comment><USER2> How are you getting updated pricing from Target? Do they have an API, or are you scraping?

I've thought about adding Target prices to my website [0], but Amazon's API is so nice, and scraping is a frustrating alternative.

[0] [https://unitprice.org](https://unitprice.org)</comment>


Bombly – Keep Talking and Nobody Explodes Robot - <AUTHOR> https://github.com/thebarbershopper/bombly <comment><AUTHOR> Here's a video of it in action: [https://www.youtube.com/watch?v=ydQEb6zyAuE](https://www.youtube.com/watch?v=ydQEb6zyAuE)</comment>


Unmortgage scores £10M seed round to offer 'part-own, part-rental' housing - <AUTHOR> https://techcrunch.com/2018/09/09/unmortgage/ <comment><AUTHOR> How unmortgage will get profit by in investing with people's to buy house?</comment>


Why We Find Self-Driving Cars So Scary - <AUTHOR> https://www.skynettoday.com/editorials/why-self-driving-scary <comment><USER2> I personally find human drivers even scarier. Our society pushes us to multitask and paradoxically we need to stop multitasking while driving (ie avoid texting/phone calls/ etc...).

In a not-so-distant future, kids will be flabbergasted to hear humans used to be the one driving on roads.

<comment> xkcd-sucks That's because you're comparing a abstract, idealized self-driving cars to real-world human drivers</comment></comment>


Ask HN: Facebook down? - <AUTHOR> <comment><USER2> No

<comment><AUTHOR> My computer connects to this host:"edge-star-mini-shv-01-frt3.facebook.com (Ip: 126.96.36.199)"</comment></comment>


Ask HN: Retrospective Revelations - <AUTHOR>

Share your stories and anecdotes of "Retrospective Revelations".<p>I would be interested to hear about any developments/ideas that you made in your work/life that were initially considered a minor aspect or feature but looking back you see that these were key decisions. Things that ended up being your key differentiator or selling point but were at the time of implementation "just another" thing to do. <comment><USER2> YC was originally going to be just the three of us (Robert, Trevor, and I) doing occasional angel investments in the usual way. We stumbled on most of the distinctive features of YC after we decided to begin with a summer program for college students.

</comment><comment><USER3> The pandering-but-truthful answer is that I once started the world's most trivial software project out of a desire to afford video games without deferring student loan repayment.

On a more practical note, it turned out that the software project had one really, really useful facet: it sat on top of (and allowed) a nearly infinite variety of easily templatable content creation tasks, for which the Internet's existing answers were uninspiring to say the least. At the time I was not exactly a naive babe in the woods about SEO, and I knew that would be helpful, but I had _no clue_ the extent of how helpful. I don't know if I would have failed but for that marketing hook, but it was huge for me in my early days and still represents a major chunk of my business.

</comment><comment><USER4> This one will probably be obvious but everyone seems to enjoy it when I tell it:

I was hired out of college to work for a NYC-based startup called 'Games Media Properties' that ran a video game tournament called the World Series of Video Games (both horrible names, I didn't come up with them).

We spent roughly 300-400k per event to throw these huge productions, then another 1-2 million to film a TV series about it. There were 7 events, 3 in the US and 4 international.

The business model was a mix of ticket sales ($80 competitors and $5 spectators paying to come in), and ad sales (pay and be a sponsor).

Each event attracted around 30,000 attendees and we were asking for $1 million to be a 'title' sponsor of the series.

You can do the math on your own, but it essentially equated to $1 million to reach 30,000 people (assuming there was 1 title sponsor per event).

At the same time, we were building a few websites around the tournament. One for news coverage, one an actual 'tournament' site, etc. We had the idea to sell ads for our online sites with a near-inverse value proposition: Spend $30,000 to reach 1,000,000 people.

Needless to say, we stopped doing tournaments about two years in once all the advertisers flocked to the online model.

That company is now called Giant Realm and is an 18-34 male-focused ad sales organization that was recently acquired :)</comment>


Ask HN: What do you think will be the next big thing in software architecture? - <AUTHOR> <comment><USER2> Distributed cloud and DApps</comment>


Ask HN: Royalty based compensation for software engineers? - <AUTHOR> Relevant article - https://www.eetimes.com/document.asp?doc_id=1143972#
What are your thoughts on teams getting paid for software per use? Something similar to how artists are paid on spotify (only better).
Recently Tim Cook made some statements about how a college degree is not needed for getting a programming job. While taking such an approach would be convenient for big tech companies (more, cheap, disposable labor), it would be decidedly inconvenient for those who have spent considerable time and effort in getting their education (and building systems for tech companies to profit from).
The value of all that engineering effort is 'locked-in' in an ip owned by the company to make profits in perpetuity (Or as long as the company decides to keep the line of products alive) - while the engineers can with their degrees and knowledge have to make do with salary, bonuses etc.
Stocks is one way of doing it; but there are vesting schedules to deal with and number of stocks awarded do no take other metrics like usage into consideration. Also stock market prices are subject to 'market conditions'.
Do you think engineering teams should demand more share for the use of their software in light of companies wanting more fungible teams/resources? <comment><USER2> I think when you say "use of their software" you run into issues that need to be better defined.

If you're getting paid a salary to create something the finished product is not yours. It belongs to the person or company that paid you to make it.

I used to build custom cars. No one ever paid me to build a car for me, or paid me when they drove the car I built for them.

I can't imagine why building software for someone should be any different.

I could have built a car and offered to rent it to others, and in essence that is what building a web app and offering it as a subscription service is, and I do that now, and so can you.

<comment><AUTHOR> How to identify which piece of software to choose for royalty -> Software IP definition is a contentious and thorny issue. This is something that does need to be better defined and I agree with that part.

However the car analogy is not correct.

'If you're getting paid a salary to create something the finished product is not yours. It belongs to the person or company that paid you to make it.' -> Yes, ownership lies with the employer. I am not talking about engineers "owning" the entire finished product, or even important components within within them; but that their efforts in developing these core parts should be acknowledged in terms of royalty payments other than salary (depending on usage of those components). Also note that I am talking about royalties for teams, not individuals.

'I can't imagine why building software for someone should be any different.' -> It depends on what kind of software you are building. if your team does build a software that makes a ton of money for your company, why shouldn't it be made part of those proceeds as well? In fields like hardware design which relies on IP based models, this way of compensation does exist (the EE times article). This is true for life-sciences too. In fact some EU countries also have laws for it.</comment></comment>


Sid Meier's Civilization Inspired Budget - <AUTHOR> http://alexrecker.com/our-new-sid-meiers-civilization-inspired-budget/ <comment><USER2> I definitely like it. Because I like Civilization, and because I like when you think about the direction and velocity of your (net worth, savings, call it what you want) rather than "what rules should I put in place and follow?"

I've been tracking my spending (cash not withstanding) since 2003, and my favorite part is looking at net worth changes per month, and how they change over time. For example, if I look at 7 years, I see that I've got a rate of $xxx but if I just look at the past 12 months it's now a much better rate of $xxxx! Occasionally, a single day looks awful... every three months I track changes to investment values and dividends paid out. And the past year and a half or so has been negative almost every time! Those days "suck" but I can still look at "how it's going in the big picture" and know we're doing alright. We're headed in the right direction.

I hope more people try approaches like yours.

<comment><USER3> Unless your dealing with leveraged investments, day to day swings mean very little. Occasionally the market has a huge drop, but right after a big drop tends to be the best times to invest in the stock market. However, mentally people feel the need to double down when it's up and take money out when it's down which can quickly destroy decades of growth.

PS: If you can see a 60% drop and think, yay! great time to invest then feel free. Otherwise, checking once a year is probably fine.

<comment><USER4> I was initially an overly conservative investor, really couldn't accept any risk or loss (I'm young), but tracking day to day swings helped me quite a bit. Something about seeing changes every day, many of them negative, really hit home the meaningless of those changes given timescale I was operating on. I am now a much healthier investor.

<comment> finance-geek This is one of the big points Ben Graham makes in the classic book The Intelligent Investor -- [https://en.wikipedia.org/wiki/The_Intelligent_Investor](https://en.wikipedia.org/wiki/The_Intelligent_Investor)

Essentially -- _unrealized_ losses don't matter unless they are _uncover-able_ losses.

</comment></comment></comment></comment><comment><USER5> I actually have a pretty similar approach. (To be honest, Civilization's economic system is not exactly novel.)

Except I combine the daily rate with a running treasury (each day starts with the previous day's ending balance). All expenses must be paid out of the treasury, so if I want to purchase something I have to save up for a while.

Importantly, the 'treasury' is separate from my actual savings, which are deducted at a constant rate from my daily income.

The really fun part comes with estimation: I have several years of data now, so I've been able to develop a pretty complex spreadsheet which predicts my network over time. Every month I compare where I thought I was going to be and where I'm at, adjusting estimates to get more accurate over time. It's gotten to the point where I can pretty reliably predict my net worth to within $100. (One time, I even got it right down to the cent, from 6 months out.)

<comment><USER6> How much time do you spend each day doing this? I'd love something similar but the commitment concerns me. Also what if you miss a day (or two) and don't remember all purchases?

<comment><USER5> Maybe 5 minutes a day? I actually automatically download most purchases from my credit card's website, so no effort is put into those.

Then I spend probably an hour at the end of the month doing a retrospective on how accurate my estimates were.

</comment></comment></comment><comment><USER7> This has been a fun read given that we came up with similar methods but from different directions. Mine wasn't Civilization inspired although I played a lot of Meier's Alpha Centauri back in the day. :) I thought more along easily tracking daily transactions on the goal like cashiers or accounts do with a ledger. No online integration, forecasting, etc. Fairly simple addition, subtraction, arbitrary values if needed, and daily/monthly reports.

I also divided my expenses by the day but also the week: paid weekly. Had to make sure I never went passed the minimum I needed for bills. Also, made sure I had enough in the account for my largest, non-rent bill as splitting it by day didn't guarantee the amount would be there. Far as ledger, I went with MoneyWise app for Android. Just loaded it, typed in description/amount, hit save, and done. Can set to an arbitrary balance which gave me starting point (or occasional reset). Then, remove amount for day at the beginning or at least once I woke up haha. Then, just continue tracking expenses.

Might try your method at some point as it's interesting.

Note: Originally posted in Disqus on the page. Reposted here for anyone else's benefit.

</comment><comment><USER8> I always like seeing people find new ways to manage their money, but you seem to take issue with estimation and categorization, which are (IMHO) the fundamental pieces of a budget that actually create behavior changes.

The point of estimating your expenses is to cause surprise and provoke thought when your estimates are terrible. The point of categorization is to aggregate expenses into larger groups to help find places to cut. Maybe you don't see "$40 for dinner" as a crazy expense but summed over a month it turns out "$1000 on food" is crazy.

</comment><comment><USER9> Also a fan of Civ5 and all turned based games. Another extra thought:

In Civ you will know that building such Monument will take X turns or making some other technology progress will consume Y science points. I was thinking that it would be cool to be able to track when and how long someone will be able to afford something. It would be extra cool if this could factor in stock options you received in a company or any other assets so that you can draw a projection of the 10 year finance based on current earning/churn.

<comment><USER4> I do this in a little spreadsheet just for major items, one-off items — think plane tickets, hotels, wedding gifts, etc. A rough estimate of income and expenses per month gives me a good idea of "how long" those things cost. The extra time dimension is helpful when evaluating and considering other choices.

</comment></comment><comment><USER10> Turn it into a book, sell it, and see your money per day REALLY shoot up!

Seriously, that's very clever, and you have the same complaints about existing systems that I do. As a fellow Civ V fan, I'm eager to give this a shot.

</comment><comment><USER11> I like the idea as a way to track daily averages, and I'm going to definitely try it for myself. But it doesn't help me with what causes my nose to be buried in Quicken every Sunday: bills don't get paid little by little daily. They come at fixed times in the month (or year). This system doesn't help with the tactics of making sure there's the right amount in your checking account at the right time. Ive had many close calls where my paycheck is every two weeks but bills are monthly, and 2x2 weeks ≠ 1 month.

I think I'd like a service that let me get paid 1/14th of a paycheck every day and also pay [1/28 | 1/29 | 1/30 | 1/31] of my bills every day. Then, your day-to-day finances are literally an exercise of making sure there's always a small balance and that the pay-bill spread always remains positive.

<comment><USER12> YNAB has the concept of a "buffer", which is just the idea that you have enough in your checking account to pay for an entire month on the first of the month. That way, your bills come out of your buffer and your paychecks replenish it.

This is separate from the idea of an emergency or rainy day fund, which should be an additional 3-6 months expenses in an easy-to-access account, like a linked savings account.

I realize that if you're currently living paycheck-to-paycheck this can seem daunting. Definitely check out the video lessons on the YNAB site, and think about buying the software. There's probably a way to implement it in Quicken, but I have no idea.

[https://www.youneedabudget.com/support/training-and- educatio...](https://www.youneedabudget.com/support/training-and-education)

<comment><USER13> I was writing something longer, but essentially +1 YNAB. The videos you refer to also go over how to build up that buffer while you're living paycheck to paycheck.

Some might be turned off by having to manually input charges, by having to plan a budget each month, by being offended that they "could do the same thing in a weekend with Excel", but it's the best solution I've found for my wife and I. Not automated enough that we get disconnected from finances, but smart enough that we can easily see where we stand and run a few reports on our spending.

The system is pretty flexible, there's no need to categorize every stick of gum you buy, just use your best judgement and try not to cheat yourself.

</comment></comment></comment><comment><USER14> I have a personal Rails site that does something like this. There's an Expense model and a Expenditure model. Also a PayEvent model that's kinda the opposite of Expense, could probably roll them into one model. The Expenses are averaged out by month. An expense can be 'tracked', that means when I'm adding an individual expenditure, I can list it as that expense. My dashboard tells me at a glance how much I've spent on those expenses. If it's not tracked, it is factored in automatically.

It is multi-user, though I'm the only user at the moment. If anyone wants to give it a whirl, shoot me an email which you can find in my profile.

My philosophy is to avoid the banking APIs by putting in expenditures manually. I would love to integrate with OFX, but I don't have the time to maintain it.

</comment><comment><USER15> Reading through the blog post, it just seems more and more obvious that this is _the right_ approach. Very nice work, and I'll definitely try to set up something similar for myself.

<comment><USER16> Author here. Thanks, I really appreciate it. I'm so pumped that people are feeling this - I did not expect it to get so much attention.

I am definitely considering turning it into a solution that everyone can use. I have plenty of work to do on it and the weekend can't come fast enough.

<comment><USER17> Yeah this seems like the kernel of a project that could eventually be a product. I don't know if you're up for that, but if you are I'd encourage you to chase it. Bootstrapped businesses are great!

</comment></comment></comment><comment><USER18> I love this, and did something similar.

If you haven't thought of it already, some estimations are probably worth considering - electricity and water can be more or less stable, and you might benefit from taking those baseline costs out of your calculation.

Also, it might be useful to add metadata in the form of tags or tag-groups in your spreadsheet; this will give you a bigger/more nuanced dataset if/when you have a hankering to analyze your behavior.

Less usefully, it would be cool if it _looked_ like Civ.

</comment><comment><USER19> This makes me really happy to see. For whatever reason analyzing finances is enjoyable in a Civ-ish way though I never would have made the connection.

A couple of things I've noticed as I've done something similar:

1) Categorizing the little things as you go along was way too tedious for me too - even in really stripped down form. I really like the idea of categorizing All The Things though. How I dealt with this was to download 90 representative days worth of credit card history into LibreOffice and remove all of the "still gets paid even if I'm cryogenically frozen" payments. I then manually categorize everything that is left (quick because the categorization is batched up and auto-complete works wonders), divide by 90 and generate a pivot table that shows the daily sum of each of the categories. Where I think we diverge though is that rather than trying to keep this snapshot up to date, I just make a mental note of it as "Okay, I average $XX/day on everything else".

As long as you know your starting CC balance then it's pretty easy to figure out how you are doing for the pay period. Just a matter of $start + $daily_cc * $days.

2) Kinda similar to the web app (in spirit if not functionality), I set up a little Python CLI tool that simulates my recurring expenses (along with my recurring $XX "all other crap" fund from above). Once you've set up the recurrence relations you can step through two weeks at a time, pausing to change state, transfer money, etc. It's basically like using a debugger which is an enjoyable way to test out various ideas you have that's a little bit more freeform than a spreadsheet where its hard to see how various ad hoc tweaks layer on top of one another over time.

<comment><USER20> It's interesting, I religiously categorize everything in Mint, but now that I think about it, I basically never use those categories for anything.

Maybe I should just categorize everything as "spending" and get over it.

(I can imagine ways that granularity should be helpful, like if one area got out of control, or for tax reasons if I ran a business or had a HSA, but they've just never come up.)

</comment></comment><comment><USER21> I've always wondered why finance continues to run on a monthly cycle. Why isn't that kind of tracking more continuous? It seems to introduce artificial and harmful effects, like people trying to "game their numbers" at the end of a month.

It seems like reporting ought to be continuous and instantaneous.

I imagine there are historical reasons why things have worked that way, since it was inconvenient for humans to compute aggregations any more frequently. However, now we have computers. Why report on a month or quarter or year? Why not look at the report every day, or as often as needed?

<comment><USER8> The point of doing a budget on a monthly cycle is that most bills are monthly bills. I also have days where I spend half a paycheck and days where I spend zero dollars, so how much money I gained or lost in a day is of almost no relevance.

</comment></comment><comment><USER22> This is absolutely fantastic. I'd pay for something that hooks into my bank account and spits out a daily number for me, no problem (especially since it doesn't suffer from the mess of housekeeping and categorizing that something like Mint does, which is my biggest complaint about that kind of software).

If you don't build it, I'll probably wind up hacking it together for myself. :)

<comment><AUTHOR> I think you're either going to use Mint or Yodlee for the API as they have partnerships with the major banks, while the banks themselves don't provide the APIs, I believe.

<comment><USER23> Or Plaid - I think partnered with Intuit (Mint) to get support for smaller banks. They have a very simple yet great api.

</comment></comment></comment><comment><USER24> > I was tired of trying to assess how we were doing financially while our > account balance was jumping around so dramatically month to month. I wished > instead that money could come in and go out more consistently - like water > draining from a faucet.

Congratulations, you've independently invented double entry accounting. Beware that applying it to PF is highly addictive ^_^

</comment><comment><USER25> Great post. I love your thinking, and the code that goes with it!

But in the end, this seems exactly like normal envelope method accounting software, but without bank integration and with a daily view. You just have one big envelope for "Daily spending" which can be anything. You still keep an envelope for each bill, and you still keep an envelope for each irregular bill and big ticket item.

A system like YNAB could eclipse this by simply adding a daily view, and reinforcing their point about keeping your estimated spending categories few and broad. You could switch to YNAB (or whatever) seamlessly, and have your bank transactions pulled in automatically.

Am iImissing something?

</comment><comment><USER26> Another term for 'estimations' in this article is accruals. That is, putting away some expected spending for a future expense.

For managing expenses, Excel is sufficient.

</comment><comment><USER27> Great work, awesome how finding a system for you can really get your finances under control.

Now you just have to determine how long it will take you to hurry "wonders"... ie. buying a house, retirement, etc.

Also, have you looked into your financial institution to see if there's an API for automatically pulling your purchases? The only problem with your system now is it require constant vigilance to keep adding purchases.

</comment><comment><USER28> Very cool. I like the way the short feedback loop is materialized. My wife and I have our own home-brewed flavor of budgeting that takes a more introspective approach to the feedback... spending is tagged with circumstantial and behavioral traits (impulsive, well-planned, unexpected-guests, etc...) with the idea of tuning (and perhaps more importantly) aligning our mutual decision making process.

</comment><comment><USER29> The Daily/Weekly/Monthly/Yearly summary is interesting.

These are all rates, so presumably they're the same order of magnitude, right?

Have you tried making a plot of all these values by day? eg see that your weekly rate for the last few days has been diverging down from your monthly rate, so maybe you should start to slow down after that binge last week and recover.

</comment><comment><USER30> As a person who is always looking for better ways to budget, I really loved your method. I dont think I can apply it, though, as I work as a freelancer and there is not concept of regular paycheck which I can use to get an estimate daily income..

</comment><comment><USER31> I just set up the first spreadsheet shown in the post, and having that _magic number_ of net daily recurring income is very...elucidating.

I feel like I suddenly have a much better grasp of actually how much money I make.

</comment><comment><USER32> I read his wife's name and had to go check that Marissa Meier, wife of Sid Meier, is not the same person as Merissa Meyer, CEO of Yahoo.

<comment><USER13> Presumably his wife's name is Marissa Recker, seeing that the author is Alex Recker.

Sid Meier, on the other hand, is a gaming legend[0].

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

<comment><USER32> Right, duh. I know who Sid Meier is, but I got confused as to his precise association with this article.

In any case, I think we have conclusively determined that neither Sid Meier nor Alex Recker is married to the CEO of Yahoo.

</comment></comment></comment><comment><USER33> What's a "checking balance"?

<comment><USER34> The balance in someone's checking account. A checking account is the bank account that written checks take money from, as opposed to a savings account.</comment></comment>


Stolen From Apple - <AUTHOR> http://folklore.org/StoryView.py?project=Macintosh&story=Stolen_From_Apple.txt <comment><USER3> This type of thing was also commonly done in hardware back in the day. For example, DEC VAX microprocessors sometimes had etchings that taunted Soviets reverse-engineering their technology (src: <http://micro.magnet.fsu.edu/creatures/pages/russians.html> ).

</comment><comment><USER4> This was a common practice back in the days of easily-copyable ROM firmware and boards that were mostly off-the-shelf TTL chips. Companies could copyright the firmware, but not the board design (which is how companies like Franklin and Compaq got to survive).

A lot of arcade videogames have similar things, like the ones that were in Robotron:2084 and Sinistar. Popular arcade titles were counterfeited all the time, this was done as a safety measure if it ever came down to a courtroom verification of the code.

[http://forums.arcade- museum.com/showthread.php?t=87198&h...](http://forums.arcade- museum.com/showthread.php?t=87198&highlight=easter+egg)

</comment><comment><USER5> There were similar techniques for pirated games.

Konami for example saw that pirates usually erased their logo from the boot sequence so what they did is insert some code that detected when this happened and modified the game accordingly.

One case was the TMNT game for the NES which when pirated set itself in a ultra-hard mode that was impossible to beat since the final boss keep replenishing its energy.

<comment><USER6> The most evil anti-piracy measure in any game:

[http://earthboundcentral.com/2011/05/earthbounds-copy- protec...](http://earthboundcentral.com/2011/05/earthbounds-copy-protection/)

The article claims that it would only happen to experienced ROM hackers, but I could easily see some lazy bootleggers only fixing the first copy protection check without completely testing the game and selling the half-broken result to some hapless kid.

</comment></comment><comment><USER7> Atari (old Atari, pre-layoff days) had an 8 byte sequence that they copyrighted, and that we were supposed to embed in our games. The idea was you could find the sequence in a pirated ROM and ask in court, "What does this do?" Since the bytes weren't executable code, or useful data, it'd be hard to support their presence in any technical way.

<comment><USER8> I heard a story from the days of the Game Boy Advance, which supposedly had a similar feature.

Physically, custom carts could easily be made. To prevent this (from a purely legal standpoint) Nintendo made it so the GBA internal ROM was looking for specific data (validated by hash of sorts) on the cart, or it would reject it and refuse to boot. This data happened to be the (copyrighted) logo displayed on boot, hence it made unapproved carts either unbootable or illegal.

<comment><USER9> Reminds me of how, back in the day, software would look for the letters "IBM" at a specific ROM address (it was in their copyright message) in order to identify the video card as a VGA card (or maybe it was back in the EGA days, can't remember). One of the clever clone card manufactures put in the ROM "There are various pieces of software that expect the letters IBM to appear here".

<comment><USER10> Or how a game would make you answer a question that you would only know know if you had the manual to accompany the game.

"What is the fourth word from the second paragraph on page 13?"

Presumably you didn't have access to a copy machine if you were stealing software back then...

<comment><USER11> IIRC some games came with a data booklet printed in black on very dark brown, or similar, to foil potential photocopying.

</comment></comment></comment></comment></comment><comment><USER12> My father bought a Franklin Ace and we used it for 5-6 years. It was a great computer (better than the Apple IIe) but mainly because I was running CP/M on the Z80 adapter card that came with it. Why use the Apple's 40 character mode when there was the CP/M 80 character mode handy? And CP/M had WordStar!

In any case, thanks for reviving some great memories!

</comment><comment><USER13> Microsoft did something similar in BASIC, and for the same reason: <http://www.pagetable.com/?p=43> The link contains the asm code and explains the obfuscation.

</comment><comment><USER14> This is remarkably like the Underhanded C contest. <http://underhanded.xcott.com>

I imagine hardware manufacturers similarly incorporate some form of identifying macros these days. Of course, most people who buy clones wouldn't really care, but at least the publishers of those clones would be wise to avoid bringing too much attention... Unless they're in a country that has very lax copyright enforcement.

</comment><comment><USER15> Open /System/Library/Extensions in OSX and you'll find "Don't Steal Mac OS X.kext" :-)

<comment><USER16> Not sure if this is still present, but the first intel release had this mapped into ever process's address space:

$ cat dsmos.c

main() { puts(-16 * 4096 + 0x1600); }

$ gcc -o dsmos dsmos.c

$ ./dsmos

Your karma check for today: There once was was a user that whined his existing OS was so blind, he'd do better to pirate an OS that ran great but found his hardware declined. Please don't steal Mac OS! Really, that's way uncool. (C) Apple Computer, Inc.U??VWS?5P

From the excellent:

<http://www.osxbook.com/book/bonus/chapter7/binaryprotection/>

<comment><USER17> → ./dsmos Segmentation fault: 11

On Mountain Lion.

<comment><USER18> compile for 32bit.

</comment></comment></comment></comment><comment><USER19> The only thing I really "got" from this article was that there are _way_ too many Steves at Apple.

<comment><USER20> They should make an iSteve app.

</comment></comment><comment><USER21> ah, folklore.org. Great site, I think I must have read every story on there by now. You don't have to be an apple fan to enjoy them either.

<comment><USER22> I wasted an entire day at work there a few years ago.

</comment></comment><comment><USER23> Not sure what they stole as the site won't load, but maybe they should steal some bandwidth or hosting services...

<comment><USER24> I too had to load the Google cache. Here it is in case the site doesn't come back online soon.

[http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Ffolklore.org%2FStoryView.py%3Fproject%3DMacintosh%26story%3DStolen_From_Apple.txt&aq=f&oq=cache%3Ahttp%3A%2F%2Ffolklore.org%2FStoryView.py%3Fproject%3DMacintosh%26story%3DStolen_From_Apple.txt&aqs=chrome.0.57j58j60l2.3436j0&sourceid=chrome&ie=UTF-8)

<comment><USER23> Thanks, just what I was looking for!

</comment></comment></comment><comment><USER25> <http://www.nycresistor.com/2012/08/21/ghosts-in-the-rom/>

</comment><comment><USER26> Macintosh SE Easter Eggs (via EEVblog): <http://www.youtube.com/watch?v=y6OTAG1Ersw>

</comment><comment><USER27> I enjoy stories like this that capture the mindset of the era. It was a different time, and very close to the iron.

</comment><comment><USER28> Since page is not loading, full text:

In 1980, a company called Franklin Computer produced a clone of the Apple II called the Franklin Ace, designed to run the same software. They copied almost every detail of the Apple II, including all of its ROM based software and all the documentation, and sold it at a lower price than Apple. We even found a place in the manual where they forgot to change "Apple" to "Ace". Apple was infuriated, and sued Franklin. They eventually won, and forced Franklin to withdraw the Ace from the market.

Even though Apple won the case, it was pretty scary for a while, and it wasn't clear until the end that the judge would rule in Apple's favor - <USER2> argued that they had a right to copy the Apple II ROMs, since it was just a "functional mechanism" necessary for software compatibility. We anticipated that someone might try a similar trick with the Macintosh someday. If they were clever enough (which Franklin wasn't), they could disguise the code (say by systematically permuting some registers) so it wouldn't look that similar at the binary level. We thought that we better take some precautions.

Steve decided that if a company copied the Mac ROM into their computer, he would like to be able to do a demo during the trial, where he could type a few keystokes into an unmodified infringing machine, and have a large "Stolen From Apple" icon appear on its screen. The routines and data to accomplish that would have to be incorporated into our ROM in a stealthy fashion, so the cloners wouldn't know how to find or remove it.

It was tricky enough to be a fun project. Susan designed a nice "Stolen from Apple" icon, featuring prison bars. Steve Capps had recently come up with a simple scheme for compressing ROM-based icons to save space, so we compressed the icon using his technique, which not only reduced the overhead but also made it much harder to detect the icon. Finally, we wrote a tiny routine to decompress the icon, scale it up and display it on the screen. We hid it in the middle of some data tables, so it would be hard to spot when disassembling the ROM.

All you had to do to invoke it is enter the debugger and type a 6 digit hexadecimal address followed by a "G", which meant execute the routine at that address. We demoed it for Steve and he liked it. We were kind of hoping someone would copy the ROM just so we could show off our foresight.

As far as I know, no one ever did copy the ROM in a commercial project, so it wasn't really necessary, but it did create some intrigue for a while. We let it slip that there was a "stolen from Apple" icon hidden in there somewhere, partially to deter people from copying the ROM. At least one hacker became moderately obsessed with trying to find it.

Steve Jasik was the author of the MacNosy disassembler/debugger, which could be used to create pseudo-source for the ROM. He found out about the "stolen from Apple" icon pretty early on, and became determined to isolate it. He lived in Palo Alto, so I would occasionally bump into him, and he would ask me for hints or tell me his latest theory about how it was concealed, which was invariably wrong.

This went on for two or three years, before he finally cracked it: I ran into him and he had it nailed, telling me about the compressed icon and the address of the display routine. I congratulated him, but was never sure if he figured it out himself or if someone with access to the source code told him.

<comment><USER29> So, basically, this achieved bugger all.

"As far as I know, no one ever did copy the ROM in a commercial project, so it wasn't really necessary"

Not to belittle the work, but this is exactly the sort of response I expected of Jobs.

As you say "It was tricky enough to be a fun project" so kudos to all but, really, this smacks of paranoia.

<comment><USER30> This comment ^ shouldn't be in gray.

It's a cute story, but if a cloner was dumb, he'd copy the the ROM as is and wouldn't care if the icon was hidden or not. A smarter cloner would tweak the code and the resulting ROM image would've likely had different offsets, so typing "<hex-address> G" in front of a judge simply wouldn't work. It doesn't really smacks of paranoia, but it does look like something Steve Jobs would've insisted on.

<comment><USER31> I guess the Apple engineers would have prepared the demo and analysed the copied ROM, before going to the court. Then, they would have found the routine (somewhere else, as you point it out) and easy to activate.

<comment><USER32> Absolutely.

I could see a really compelling demo where they bring out the machine still in the shrinkwrapped box, open it in front of the court, turn it on, and hit the register.</comment></comment></comment></comment></comment>


Should I use interfaces? - <AUTHOR> http://shiroyasha.io/interfaces-in-ruby.html <comment><USER2> have you read up on the new rave of having all your public interfeces declared bassed on a CRUD setup, and move all implementation details in the private parts.

For example if you have a subscription functionality , instead of doing

def subscribe , you would do it like:

def create_subscriprion.

This in turn is advocated on the bases that it will improve readability and lessen confusion amongst programmers. What are your thoughts on that?</comment>


Installing 4.3 BSD on your phone - <AUTHOR> http://worldofvax.blogspot.com/2010/08/compiling-simh-emulators-for-android.html

<comment><AUTHOR> Clearly, this is beyond old school. It's building an old school inside of a new school. With a middle school.</comment>


Local area network push notifications - <AUTHOR> https://thomask.sdf.org/blog/2020/07/01/local-area-network-push-notifications.html <comment><USER2> Fond memories of Novell Netware's BROADCAST command... I discovered it as I was exploring the (then unknown to me) Netware client on Microsoft Windows 3.x, I tried something like BROADCAST "Nuclear strike inbound". Then, in the university's computer lab, I saw some puzzled heads rise and some look askingly at their neighbor... The command had performed as designed: Netware had beautifully, and to my horrified stupefaction, sent the message to the whole network of a large university, with a pop-up on each workstation... I grabbed my bag and got the hell out of there - in the hallway I crossed a sysadmin running in the opposite direction... For a few weeks I made myself very discreet and avoided the computer labs - the sysadmin of course knew and asked me if I had done or noticed anything unusual, which I stupidly denied but he was kind enough to let it pass.

<comment><USER3> I came a bit later than you I suspect but I had a similar experience in my middle school computer lab with NET SEND.

[https://ss64.com/nt/net-send.html](https://ss64.com/nt/net-send.html)

<comment><USER4> Ah, NET SEND. The first time I ever got in trouble at school. For punishment they made me start an after school computer club, run by the IT admin who I'd embarrassed.

</comment></comment></comment><comment><USER5> I believe this is misunderstanding how the entitlement works. My belief is that you submit the list of SSIDs to Apple at the time of app review and it can only be changed with an update. I don't think there's any support for a dynamic list.

<comment><USER6> The article explicitly says the SSIDs need to be written in code and that there is no dynamic mechanism.

<comment><USER5> It does say that it has to be in code, but then it goes on to talk about copying in an ssid at runtime and commenting on typing in an ssid even in the last sentence.

I was hoping to make it clear that it is not actually in code (ie swift or objectives), it is an entitlements file which is a block of unchangeable data created at dev time and signed by Apple before it goes on the App Store.

</comment></comment></comment><comment><USER7> My brain jumped to "net send" \- in the good old times, it was not restricted to the LAN but also possible to tell someone over the open internet, they were sending out viruses via email. I think that was still possible with Windows 2000.

<comment><USER8> "net send" is also supported on Windows XP, but it's disabled by default since SP3.

</comment></comment><comment><USER9> We at Home Assistant will be applying for the entitlement for our (open source) iOS app.

</comment><comment><USER10> So this is maybe (probably?) unrelated, but when touching down on an airplane, I always start getting push notifications even before joining the local WiFi etc. What's going on there? Am I imagining this or does it actually happen?

<comment><USER11> Google and Apple push notification services are often whitelisted in WiFi networks so they work before you "sign in" to the network.

<comment><USER12> (I work for a company that provides guest WiFi services in public spaces.)

It's usually not that those specific services are whitelisted, but that a number of hostnames have to be whitelisted for the user experience. Sometimes, those hostnames include those types of services, depending on the phone, OS, carrier, etc.

</comment></comment></comment><comment><USER13> "While I haven't tested the beta myself, it appears it gets to run the whole time you're on that SSID and it can implement whatever protocol it wants to talk to your proprietary server."

I'm currently in quarantine in a Singapore hotel and the government forced me to install a location tracking app on my phone.

For several reasons that I won't go into, I've come to think that they have issues where the app is being killed by iOS for a lot of people.

It sounds like this would solve that 'problem'.

<comment><USER14> Although iOS background killing is obscure, it's well known that background service would definitely get killed(at max ~3 mins?), the behaviour is same across all devices and different OS iterations.

But in Android, apart from default doze, battery optimisation feature, each manufacturer implement their own aggressive app killing services and so managing background tasks becomes very hard. At least in recent versions of Android, app developer can navigate the user to disable battery optimisation for their app if needed, which would affect default system behaviour but out of luck if the manufacturer implements their own app killer.

Unfortunately, I didn't see any of the contact tracing apps of several countries explicitly asking users to disable battery optimisation/app killers or whitelist bg task permission for their apps and I think that's one of the main reasons for the supposed failure of contact tracing apps.

<comment><USER13> The app doesn't get killed that quickly because it has location services on in the background. It's the same reason that Google Maps doesn't get killed in the background when it's giving you directions. iOS prompts for permission, but the authorities gave us instructions to grant such permissions.

That being said, it is thee case that if you open sufficient apps (especially memory hungry ones) the app will be killed regardless.

I've resigned to manually bringing the app to the foreground every now and then in an attempt to reduce the number of phone calls I get from the government to a minimum (currently 1-2 per day).</comment></comment></comment>


Your new smart TV is so cheap because it's collecting and selling your data - <AUTHOR> https://www.businessinsider.com/smart-tv-data-collection-advertising-2019-1 <comment><USER2> Conversely, when you pay top dollar for an expensive Android phone or a Windows 10 Pro license, you can be sure your privacy remains intact. /s

</comment><comment><USER3> The crazy thing to me is it's so hard as a consumer to know exactly what data they are selling. I wish they had to be transparent about what they were selling.

<comment><USER4> I think it's pretty easy -- they're selling (or selling access to) every piece of data they have access to.

<comment><USER5> But how can you know what exactly they have access to? Simply the channel you are watching, or the height and number of people standing in the room using (for example) something like this: [https://motherboard.vice.com/amp/en_us/article/a3aaqp/mit- de...](https://motherboard.vice.com/amp/en_us/article/a3aaqp/mit-device-uses- wifi-to-see-through-walls-and-track-your-movements)

<comment><USER6> Assuming that they're going for cheap with a good rate of return, I'd be more inclined to go with "screenshots of whatever you watch and when you watch it". Of course, you can do all sorts of interesting analysis on this (when is this person home, what hours do they probably work, what demographic do they belong in given what they watch and when they watch it, etc). I don't think you need cutting-edge research based stuff to get some seriously creepy invasion of your privacy.

<comment><USER5> True, I was just trying to point out that as a regular consumer, it's very difficult to know what data they have access to. With a little creativity, they could have access to _a lot_ of data. Much more than most people probably realize.

</comment></comment></comment></comment></comment><comment><USER7> Considering I have a set-top box (AppleTV) I usually don't connect my televisions to the network. Surely that means they cannot send whatever they collect back home?

<comment><USER8> Your TV could send telemetry via 3G - you'd never know.

Or the manufacturer cuts a deal with your broadband provider and gets a backdoor out via your WiFi hub, if you use the standard one they gave you. Or a hidden app on an Android phone that the Android TV chats to when it's nearby.

IP over HDMI is also a thing.

I am never connecting our Sony smart TV directly to the Internet, like you we have an AppleTV but it's only a matter of time before you won't be able to buy an unconnected TV at all.

</comment></comment><comment><USER9> And to add to that, it's next to impossible to buy a new dumb TV without knowing the keywords you need to be looking for.

<comment><USER10> Would buying a smart-tv and never connecting it to Wifi work?

Or would it be constantly scanning and looking for an open access point, and get online once a neighbor leaves his open for a few minutes?

<comment><USER11> I'd want one with hardware kill switch for any network connectivity. I wouldn't trust them not to do something stupid like automatically connect to open access points, connect to mesh networks like google wifi or use 4g as a fallback (anyone do smart TV teardowns?) for small but valuable data.

Aside from stupidity like that, having wifi on might be susceptible to vulnerabilities in the network stack or otherwise pollute the local airspace.

<comment><USER12> But you'd trust that their hardware kill switch was actually hooked up to something?

</comment></comment></comment></comment><comment><USER13> I had to pause my Ad blocker to read this article.

<comment><USER14> Irony aside, the Business Insider ad-blocker popup is easily removed from dev tools FYI, its just deletion of a single DOM node(modal) and removal of a few classes.

</comment></comment><comment><USER15> Ironic that this site won't let me look at the article because I have an ad blocker installed !!

</comment><comment><USER4> No, it's not, because I don't have one. And won't ever have one.</comment>


Chinese tech firm [Xiao-I] goes ahead with Apple suit - <AUTHOR> http://global.chinadaily.com.cn/a/202008/04/WS5f28b594a31083481725dfbb.html <comment><AUTHOR> [https://en.wikipedia.org/wiki/Xiao-i](https://en.wikipedia.org/wiki/Xiao-i)</comment>


How to Know When Products Actually Use AI - <AUTHOR> https://blog.ycombinator.com/how-to-know-when-products-actually-use-ai <comment><USER2> "If the vendor can only process data in the cloud, you should evaluate the product with a massive amount of data to be sure that it's impossible to process by analysts."

So much this. I've seen this, humans doing the work being sold as AI, its fascinating in a sense but very bad.

</comment><comment><USER3> > AI can't become real AI without big data; this would be like a human > surviving without oxygen.

Wait, what? Did this article use a buzzword to serve as evidence that a term isn't a buzzword?

It's very possible to build AI/statistical models for most contexts with limited datasets; it's just harder, but people have been doing it for years before "big data". Data augmentation/bootstrapping/cross-validation helps a bit.</comment>


Belly.io – Curated List of Programming Coding Streamers - <AUTHOR> https://belly.io/programming <comment><USER2> This is a great resource.

Programming has always been a second-class citizen on Twitch and has quite the fabled history. It started with people uniting under specific games when nothing other than gaming was allowed. A "Game Programming" category was eventually added as a special exception. Then Twitch launched Creative as the first non-gaming category. There was initial hype, Game Programming slowly died as a result and Programming was eventually made a sub-community of Creative (i.e. not visible in the directory). Then IRL launched, proceeding to lobotomize Creative and therefore what was left of Programming. When IRL got out of hand, Twitch broke it down in multiple categories and for a glorious 14ish days, there was a full-blown Programming category visible in the directory. It was too good to be true though and the recently launched and anemic Science & Technology (as part of the IRL break-up) needed to be saved from the embarrassment it was so they deleted Programming and told people to stream there instead. We are back to people thinking there is no programming content on Twitch.

Sad because it's a solid category with a lot of good content that no one can find. Never understood Twitch's stubbornness in not exploring it as decent vertical to develop.

Another resource worth checking out even if the formatting is a little jarring is [https://github.com/bnb/awesome-developer- streams](https://github.com/bnb/awesome-developer-streams). There is a lot of overlap but it lists what people do on their channels.

</comment><comment><AUTHOR> I just got done with this morning's stream [1]. I've been streaming my open source work for a few months now and it's been fantastic. Having people come and help work on the code with me and contribute commits that I can review with them on the stream is amazing. Having dedicated, scheduled time to work on the projects has been great too. But really, getting to know and interact with the users of the software in real time is like nothing I've experienced before online. We even just released v0.5 of HomelabOS today, in no small part thanks to the help of my twitch viewers/channel[2]!

[1] [https://www.twitch.tv/videos/429158038](https://www.twitch.tv/videos/429158038) [2] [https://gitlab.com/NickBusey/HomelabOS/tags/v0.5](https://gitlab.com/NickBusey/HomelabOS/tags/v0.5)

</comment><comment><USER3> Twitch employee here. I've forwarded this up the chain. Maybe we can (finally) get a "Programming" category.

<comment><USER4> I am new to Twitch (via this submission) and I was trying to navigate the Twitch site to find more coders but came up dry.

 _Please_ make programmers more discoverable!

<comment><USER5> DEVELOPERS, DEVELOPERS, DEVELOPERS!!!

</comment></comment></comment><comment><USER6> That's so odd. I can't imagine coding with an audience. Half of the time I'm not even coding; at work I'm often writing up little tests in Jupyter to make sure things do what I think they do. (Granted, this is porting straight Python to Numba, which is subtly different and has a lot of limitations.)

Has anyone done this? Is it easier to focus or harder?

<comment><USER2> I have done it for about 1.5 years straight, 24+ hours a week. Currently on an extended break to recharge my batteries but I'm definitely going back. It's slightly addictive and you come to miss it. The best part is you eventually end up knowing the other programming streamers which builds a sense of community.

In my personal experience, the productivity hit is overstated. It's absolutely harder to focus because of chat and the discussions that come with it, yes, but at the same time you have a camera pointed at your face and your screen is shown to the world. Whatever you normally do to distract yourself and procrastinate... I can guarantee you don't.

You also build a resistance to interruptions over time, which is an amazing skill for a programmer to have. I didn't believe it to be possible, but it eventually became so easy to pause what I was doing, interact with chat for a few minutes and instantly resume where I left off after.

To go even further, it's a great way to put in consistent work and keep motivation up for large, long-term projects. I have built the entirety of the Serpent.AI Framework ([https://github.com/SerpentAI/SerpentAI](https://github.com/SerpentAI/SerpentAI)) while live on my Twitch channel and I'm not sure I would have ever shipped it otherwise. The interactive nature of live streaming can give you that nice push on days you don't quite feel like it.

Streaming programming is not for everyone but I still recommend to give it a try. The experience is hard to put into words. I've had a blast and got to know great people.

<comment><USER7> How do you get into it? I think it'd be neat to try, but have no idea how I'd get going.

The Twitch "getting started" docs are surprisingly anemic. (Do they even have a growth team? This seems like table stakes.)

For someone who hasn't ever watched Twitch, and really just wants to focus on coding in a streaming context, do you have any "start looking here" suggestions?

<comment><USER2> Not really a guide. Just a few bullet points.

Start messing around in OBS ([https://obsproject.com](https://obsproject.com)) and get as comfortable as you can using it. You can compose scenes, transition between them, set up your audio and video encoding and preview everything without streaming. You can make local recordings test things like volume levels and audio sync. It's fantastic software and it's how you will operate your stream.

For programming, things are as simple as they come: Have a main scene that does display capture and perhaps overlay a camera. You can add more bells and whistles if you want; the tools are pretty intuitive. I recommend also making scenes for "Starting Soon", "BRB" and "Stream Over". Having a browser in guest/incognito mode is a good idea. Be mindful of stuff like API keys, secrets, passwords and personal information.

Once you are ready to make the leap, you can link your Twitch account to OBS and when you press "Start Streaming" you'll be live shortly on your channel.

Before you do though, you'll want to spend a little time in your Twitch dashboard to set up stuff like titles, categories, tags etc.

There is a lot more to it that you'll figure out along the line. Live streaming is an iterative process and a skill / hobby that you perfect over time. Have fun!

<comment><USER7> Oh, solid. Thank you!

</comment></comment></comment></comment></comment><comment><USER8> I've been streaming on Twitch for about a year, before pausing it. It was a lot of fun as I'm a very talkative person, but in my opinion requires a lot of discipline. Sessions were sometimes subnormally unproductive because I was constantly distracted by the chat and getting pulled into complex conversations. Setting a timer for myself to ignore the chat for 20 minutes helped a bit though.

Pros:

      - meeting new people, sharing ideas
      - if you're lucky and have a lot of experienced people in the chat they can help you out and spot bugs, potential mistakes, etc.

Cons:

      - can be highly distracting and productivity-lowering

There might be more, but those are the most prominent things I can think of right now.

</comment><comment><USER9> I think it's not a new thing it's long been around and called Peer Programming.

The only difference though there are more peers and sometimes it can become a brainstorming, which is cool although it depends on the streamer because some of them engage with viewers very less.

But in general, I think it's more beneficial than watching tutorial to see how we can we approach a problem rather then solving it directly.

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

</comment><comment><USER10> I can see myself making streams like "scikit-learn from scratch" live at regular intervals. Is twitch all the tooling you need? Is twitch.com "safe for work"?

<comment><USER11> > _Is twitch all the tooling you need?_

You'd need streaming software (OBS Studio is generally recommended) as well as a good microphone and optionally camera. Of course you'll want to have a tab or two open to Twitch in order to monitor chat and your stream status.

> _Is twitch.com "safe for work"?_

I would err on the side of caution and say that Twitch is NSFW. Yes there's `Twitch Creative` and `IRL` and `Just Chatting`, but the site is very much centered around games. Every workplace is different though, so exercise your own judgement.

Also, it's [https://twitch.tv](https://twitch.tv), but it looks like they've got a redirect in place.

> _I can see myself making streams like "scikit-learn from scratch" live at > regular intervals._

If you want to actually build up a following, you will need to be very regular. Having a schedule is one of the most important things you can do to have any level of success.

</comment></comment><comment><USER12> This is pretty cool. Reminds me of the live webcam feeds that were popular for a while (and probably still are).

Only problem is it sporadically fails to refresh, resulting in a white "Oh Snap!" says-nothing-helpful browser error that forces me to reload the page manually.

</comment><comment><USER13> is it just me or is the page down?

<comment> ta-run Can access the site itself but can't navigate to either /programming or /food.

<comment><USER14> I can't even get to the base page. nginx gateway error.

</comment></comment></comment><comment><USER15> Does anyone knows sysadmins who stream like this?

Topics like setting up deployment, servers, more complex server setups...

Or did someone tried to do streams on this topics?

I imagine this would be much cooler than defined tutorial videos..

<comment><USER16> Not a lot, I've seen the odd thing on twitch, but it's definitely not common

</comment></comment><comment><USER17> I did some streaming on youtube. Any way to list youtube streaming programmers?

</comment><comment><USER18> 502

<comment><USER19> Can confirm Edit: seems to be back up

</comment></comment><comment><USER20> i dig it</comment>


Show HN: A directory of hypergrid worlds - <AUTHOR> http://opensimworld.com/?r=hn

<comment><USER2> Awesome Site! I've been thinking about building something like this for a good while now. I'd love to see a markups are on each region page so people can make their own "world pages" like on Kitely.</comment>


The Internet of Things Is Still a Privacy Dumpster Fire, Study Finds - <AUTHOR> https://www.vice.com/en_us/article/gyzjym/the-internet-of-things-is-still-a-privacy-dumpster-fire-study-finds <comment><USER2> Why would we ever expect the Internet of Things to _change_, when things are as they are now?

> Vizio, for example, settled a $17 million lawsuit last year for secretly > tracking and selling the usage habits of sixteen million Vizio owners for > around three years.

$1/user may be your fine, which can still allow you to turn a profit whilst doing absolutely everything the wrong way.

Why would they spend more development on security or privacy? The incentive isn't there. Your device being hijacked into a massive botnet swarm doesn't mean that you as a company get hurt. People still buy your toy at a huge markup, and the regulations in place won't even put a dent in your profits.

These aren't companies intending to go out and do things the right way, they're companies that churn.

The good players get left behind because they don't have a new shiny product every 3-6 months, and the bad players can quickly and seamlessly change their name and registration and just keep churning out horrible security- compromising hardware and software.

The consumers aren't cautious or knowledgeable enough, the regulations don't offer carrots or sticks that can make behaviour better. No part of the current state of things can encourage anything to change... So why would it?

<comment><USER3> I own a Vizio, I think an E Series, 3 or 4 years back the thing received an 'update' and bricked the tv for nearly 48 hours. There was nothing I could do with the TV until Vizio sent out a patch. I never connected it to a network again after that. Just another 'feature' to smart tv's...

</comment></comment><comment><AUTHOR> Here is the link to they study.

[https://moniotrlab.ccis.neu.edu/wp- content/uploads/2019/09/r...](https://moniotrlab.ccis.neu.edu/wp- content/uploads/2019/09/ren-imc19.pdf)

The findings are multi-layered and complex. But it is clear that some products/devices actively share data about consumer behavior to 3rd parties for analytics. It is part of the product design (and revenue stream). TVs appear to be worst offenders. Most consumers of TVs don't have the wear-with- all to understand the impact to their privacy and make effect product choices based on that criteria. Much less the motivation: Consumers want the latest technology at the best price.</comment>


Why are U.S websites so ugly? - <AUTHOR>

<comment><USER2> by U.S websites do you mean government websites?</comment>


Sale of Kodi 'fully-loaded' streaming boxes faces legal test in UK - <AUTHOR> http://www.bbc.co.uk/news/technology-37474595 <comment><USER2> For some context, here's a blog post from the Kodi devs about "Fully Loaded" boxes from earlier this year: [https://kodi.tv/the-piracy-box-sellers-and- youtube-promoters...](https://kodi.tv/the-piracy-box-sellers-and-youtube- promoters-are-killing-kodi/)

</comment><comment><USER3> What I don't understand is who runs the actual streams? They require loads of bandwidth and are easy for law enforcement to target. They seem to be just standard HLS endpoints.

<comment><USER4> The Kiss network store their videos on googlevideo.com.

Other common places to store these things are on vidlocker.

I believe the business model is that the video service provides no search, making it hard for rights holders to be proactive, while 3rd party uploade and curate videos under the guise of "since it was on this other network we believed that license was taken care of (just like how YouTube tend to be responsible for licensing and not you, when you link to YouTube)

<comment><USER5> From what I read on a forum, the Kiss network rotates their videos across a large number of Google accounts. It's quite amazing how they manage that kind of infrastructure. What's more impressive is that when Google catches whiff of them, which they have done multiple times now, they're usually back up in a few days.

If any of the Kiss devs are reading this, you should commercialize your stack, and aim it at people who want high availability personal video storage.

<comment><USER6> Back when I used to host pirated videos on Google, I used Picasa. I had a server with a GUI installed that I would download stuff onto, then drag into Picasa and upload it. After that I'd just use a bunch of proxy servers to request the stream from Google, and set up a redirector to send my users to the proper endpoints. Not that hard, just very labor intensive. AFAIK there are no automated bots / scripts that do this, just lots of people that drag&drop videos via VNC.

</comment></comment></comment></comment><comment><USER7> >Middlesbrough trader Brian Thompson is accused of selling equipment that "facilitated the circumvention" of copyright protection measures.

If this is all they are accusing them of, I don't see how they have a leg to stand on. As far as I can tell they just download content that is freely available. The circumvention of copyright protection measures happened before that.

<comment><USER8> He is the one making the profit though, I mean that is why he is being targeted for prosecution, not that it is a reason to target him.

However his facebook ads were openly promoting the fact that you could access paid for programming for free, this was his pain selling point, and I think that is much more likely the reason he was targeted.

<comment><USER9> Correct. The UK legislation which defines what kind of infringement (or enablement thereof) constitutes a criminal offence [0] uses the language "In the course of a business ... otherwise than in the course of a business to such an extent as to affect prejudicially the owner of the copyright."

The second is a very high barrier.

[0] [https://www.gov.uk/government/publications/intellectual- prop...](https://www.gov.uk/government/publications/intellectual-property- offences/intellectual-property-offences)

</comment></comment></comment><comment><USER10> Mixed feelings. Kodi itself is a _completely_ legal bit of software and a great one at that but:

The videos sections of Kodi rely on you feeding it files. Yes there is free media and there's a PVR plugin but, they're not the main pull. The unspoken truth is people are downloading and ripping and feeding it into the app. You can see that reflected in the regexes that parse filenames.

The legal status of plugins like BBC iPlayer and YouTube are strongly debatable too; they're not official plugins and both services have snotty TOSes.

DVD/BR ripping is illegal in many countries (including the UK).

So one could argue Kodi has only ever really served pirates.

Kodi could also be better at protecting their trademark. Ebay is still FULL of people selling devices that sell Kodi as some sort of dark portal to an unlimited cinema. They have said they're starting to work on that but without much success in 6 months.

I think Kodi has to tread very carefully now. They're a couple of cases away from their name being dragged through the mud. Ironically, things that used Kodi's code (Plex, Boxee) have done much better at getting official support from content providers. They need that now more than ever.

</comment><comment><USER11> What is the difference between someone loading it for you or for example a school that teaches you skills to do it on your own?

<comment><USER12> The skills are general and could be applied to other tasks, the device is very specifically being sold for an illegal task (even if the seller is being shady about telling the buyer the legal implications).

Also Kodi itself is not illegal, so someone teaching you to install Kodi and its plugins generally is different to someone teaching how to install (or doing for you) Kodi and anti-anti-piracy measures.

</comment></comment><comment><USER13> I recently looked into buying one of these at a smaller (little bit shady) computer shop. The guy offered me an IPTV subscription package for $15 that contained tons of premium channels (HBO, NBA TV, etc) which in Canada would cost ~$60. The quality was very nice HD. The weird part was that it used some 3rd party 'emulator' app to run with a clipart icon. I wasn't sure if this was legal. Does anyone know more about this type of TV streaming?

</comment><comment><USER14> Details are a bit scarce, but this seems to be about distributing add-ins that stream pirated content from somewhere, presumably "popcorntime" or similar?

<comment><USER15> No, but close. Seems to be about the sale of boxes that comes preloaded with addons that can stream and play copyrighted material.

<comment><USER4> Every media box ever has been able to play copyrighted material.

You play copyrighted material everytime you play a dvd, stream Netflix or listen to the radio.

<comment><USER16> Indeed, all media is copyrighted by default in the United States, and this includes any media you legally own or are legitimately licensed.

<comment><USER17> That applies to all Berne Convention countries I think. Actually it is a relatively recent idea in the US.

</comment></comment></comment></comment></comment><comment><USER18> Poor title - it's the sale of fully loaded boxes that is being challenged, not normal Kodi boxes.

<comment><USER19> Looks like the mods have fixed it. The BBC article title is also OK. What was the original title of this post?

<comment><USER20> The BBC like to change the page title after the initial posting of the article, especially if the story is still developing.</comment></comment></comment>


Ask HN: Why Do We Fight Fevers? - <AUTHOR> Fevers are supposed to help us to fight infections. However, we normally take medications to reduce or remove the fevers when able.<p>If somebody catches Covid-19, why or why not attempt to reduce fevers? <comment><USER2> Fevers beyond a certain temperature damage the body almost as much as they damage the virus or bacteria. They can even cause brain damage or death.

For bacterial infections that we can treat with antibiotics, it's often worthwhile to just skip the fever entirely. For viral infections, the goal is to keep the fever at a level that the body can more reasonably recover from.

<comment><USER3> Are you a doctor?

<comment><USER2> Are you?

<comment><USER3> No, and I'm also not one to give medical advice on internet forums.

<comment><USER2> Fair enough.

Disclaimer: The above is not medical advice. If you have a fever, ask a doctor what to do.

</comment></comment></comment></comment></comment><comment><USER4> the french health minister recommendation is to not take ibuprofene against covid 19 as it hinders the inflammation response of the body against the disease:

[https://www.theguardian.com/world/2020/mar/14/anti- inflammat...](https://www.theguardian.com/world/2020/mar/14/anti-inflammatory- drugs-may-aggravate-coronavirus-infection)</comment>


Facebook retires its troubled Facebook.com email service - k-mcgrady http://www.theverge.com/2014/2/24/5443454/facebook-retires-its-email-service

<comment><AUTHOR> I remember when this was first announced and tech blogs were making it seem like it'd be the next big thing, a universal inbox. Just goes to show you that even huge successes like Facebook often have trouble launching, and releasing new features. (See also the Facebook Poke application)</comment>


Hour-long video interview with Leslie Lamport (March 2010) - <AUTHOR> http://channel9.msdn.com/Shows/Going+Deep/E2E-Erik-Meijer-and-Leslie-Lamport-Mathematical-Reasoning-and-Distributed-Systems

<comment><USER2> Wow. very very insightful. I was hoping he would talk in more detail about his famous solutions (Bakers etc), but hey then again it is a 55 minute talk. Hope to see plenty more of these!</comment>


Molinillo: a dependency resolution algorithm - <AUTHOR> https://github.com/CocoaPods/Molinillo/blob/master/ARCHITECTURE.md <comment><USER2> From what I recall, Molinillo is used by both Bundler and Cocoapods. It always struck me as a nice example of good collaboration between two major open- source projects.

</comment><comment><USER3> What are the advantages/inconveniences compared to a standard topological sort algorithm ?

<comment><USER4> The problem of resolving a set of dependencies is actually NP complete. One can reduce the SATISFIABILITY problem to it. Russ Cox provides a good introduction to the problem [1,2]

What's challenging about dependency resolution is handling the versioning constraints. For example, you may state that your project is dependent on the following packages {"A:1.0", "B:[2.0,)", "C:3.2"}. Resolving a dependency is simply selecting one version of each package. At first glance this is easy. However, you need to consider the transitive dependencies of each package. Meaning, A:1.0 will have set of dependencies you need to resolve. Then B:2.0, B:2.1, etc will have their own set of dependencies. In some cases you may find that there is simply no means to resolve the dependencies.

For example, if A:1.0 depended on C:2.1, there would be no way to resolve your transitive dependency graph.

Currently, most package managers use a heuristic based backtracking approach. However, there has been a recent push to using SAT solvers. It's a fascinating and messy area.

[1] [https://research.swtch.com/version- sat](https://research.swtch.com/version-sat)

[2] [https://news.ycombinator.com/item?id=13167446](https://news.ycombinator.com/item?id=13167446)

<comment><USER5> How are these recent approaches different from OPIUM[1] from 2007? 0install is based around this algorithm. Also as far as I know Debian and FreeBSD both offer options to resolve dependencies using SAT solvers.

[1] [http://www.cjtucker.com/opium.pdf](http://www.cjtucker.com/opium.pdf)

<comment><USER6> Also there is zypper, the package manager of OpenSUSE and SLES. That's where I first heard about this usage of SAT, around 10 years ago. [https://en.wikipedia.org/wiki/ZYpp](https://en.wikipedia.org/wiki/ZYpp)</comment></comment></comment></comment>


Textmate To Vim: 100 Textmate keyboard shortcuts translated to VIM - <AUTHOR> http://www.jackkinsella.ie/2011/09/05/textmate-to-vim.html

<comment><USER2> I found NERTree really akward and was one of the reasons why I originally had trouble switching to VIM from textmate.

Its best to use something like PeepOpen, command-t, fuzzyfinder to open files. If you want tree structure I just use terminal and aliased:

      alias l='ls -AlGFh'

Or use the vim directory navigation.

VIM also looks much nicer with just a single file open. The left panel for NERDTree looks hacky.

<comment><USER3> I use NERDTree and quite like it, but I never keep it open. I have :NERDTreeToggle mapped to <Leader>f, so if I need to open a file I can quickly press `,f`, find the file and then press `,f` to close NERDTree. One thing I find annoying about this is that in MacVim, NERDTree creates a scrollbar in the left hand side of the window that I can never seem to get rid of.

Once the files are open, I tend to use buffers, splits and tabs to navigate between them. NERDTree is just used to load a file into a Vim buffer. Also note that the NERDTree explorer replaces the default vim file explorer.

I heard good things about Command-T though, maybe I'll try that and see if it works better with my workflow than NERDTree.

<comment><USER4> You can remove the left hand scrollbar by setting this command:

        " This removes the left hand scrollbar from the current guioptions.
        :set guioptions-=L

Check out :help guioptions for more. I've set up my vim so I don't have any scrollbars.

</comment></comment></comment><comment><USER5> Is there somewhere to suggest comments? The information is quite useful but I think there may be some more idiomatic shortcuts in certain cases. For example, isn't :w FILENAME the equivalent of "Save As"? And perhaps it would be good to show commands that are OS-agnostic like :tabnew for a new tab?

Regardless, I think this is a useful resource and I'd love to have a cheat sheet with it. Thanks!

<comment><AUTHOR> If you suggest improvements here I will make the modifications. I just changed :saveas filename to :w filename

OS-agnostic methods are outside the scope of the guide, which is only intended for those coming from Textmate, implying that they are on a Mac. If I were to accommodate everyone it would get too messy to fulfill its primary purpose. The single responsibility principle applies equally to tutorials.

<comment><USER6> :w FILENAME will save a file without changing the filename of the current buffer, while :sav FILENAME will update the filename (so that future :w will go to the new file, rather than the old one). I think :sav is the right one for that shortcut.

<comment><USER5> Interesting! Thanks for the clarification and I definitely agree that :sav FILENAME is a more accurate Save File As... than :w FILENAME.

</comment></comment></comment></comment><comment><USER7> If you are going textmate to Vim you should really just go straight to Vico. It's essentially the perfect editor ( for me ): Textmate look/feel/bundles but vim keybinds down to the most esoteric corners.

<http://www.vicoapp.com/>

</comment><comment><USER8> a couple of mistakes and comments:

* "File>new" can be done by ':enew'

* top of the file is 'gg' and not just 'g'

* bottom of the file is 'G' and not 'GG' ;)

* in addition to ':20<CR>' you can use just '20G' to go to line 20

* to sort all of the file use ':%!sort<CR>', no need to use '0,$'

<comment><AUTHOR> Thanks for the feedback; I've just made the improvements. The gg G mixup was a nasty little typo.

</comment></comment><comment><USER9> Sorry, off topic. But the red design of the tables is awful.

<comment><AUTHOR> I'm happy to modify it if you can suggest improvements. I don't have the greatest eye for design.

<comment><USER9> I am not a design expert either. But red tables on dark background feel uncomfortable for eyes when you are in a dark room. I'd suggest to make them darker (which will also add some contrast to the white text) and to use a more neutral color.

<comment><AUTHOR> You're right; the red was too loud.

I changed the background to a light purple and switched to plain black text. Do you find it easier to read?

<comment><USER9> Yes. I think this is better.

PS Unfortunately, now the contrast between table cells is almost lost. Don't know if it was intended.</comment></comment></comment></comment></comment>