Ask HN: Looking for advice, our pre-pivot model is getting traction, mid-pivot - <AUTHOR> We launched our service Fast.io around November 2019. It's simple to use CDN that pairs with your Cloud Storage. Initially, I thought the use case would be asset hosting, videos, images, app assets, PDFs. As we developed the product, my co-founder (a designer) started using it for building websites and found `syncing` changes from his laptop to a CDN to be exhilarating. It differed from Netlify in that it was a CDN down model, i.e. content is made available and cached on-demand from the CDN, where-as Netlify is a build-up model. We thought this would appeal to designers and developers.
Just before launching, we went to a JAMStack conference and realized the future of the frontend was technologies that were built and compiled on the backend. This was not what we designed our platform to do, and while we considered making a build system, there was no compelling reason why, and no problem to solve; Netlify is a sound system. We aren't sure that people hosting small websites will ever convert to subscribers either (we aren't a website builder).
Since then, We see a high number of signups, but for web hosting, despite the fact that we removed all website branding/marketing. The question we are dealing with is: do we want to shut down these use cases forcibly. They cost money in resources, but more importantly, in time; time in customer support; time in bug fixes; time in scaling use cases which I'm not sure will ever develop real value.
We do believe in our pivot, and we've seen some good indicators, but sometimes a bird in the hand is worth two in the bush. We haven't been adding any new web features, but we haven't removed any features either.
We know the conventional wisdom is to hard pivot and direct all resources towards your winning vision. In our case, our pivot uses the same technology bed and just builds on it, extends it, and doesn't necessarily exclude these users. Maybe its a bit intoxicating to have real users too. <comment><USER2> If it's promising, compartmentalize it and spin it out, even if to a subsidiary or JV. focus on your thesis

<comment><AUTHOR> Thanks for the response. We did consider that, but the nature of our platform would be spin-out or duplicate. The stack requires contracts from CDN's, which would have to be further extended, increasing burn rate, and more importantly, at the end of the day, we're only two people. So with that in mind, you're saying hard pivot, I believe. Thank you for the feedback!</comment></comment>


It's time to pay for social media - <AUTHOR> https://blog.realpeople.io/posts/2018/04/05/its-time-to-pay-for-social-media.html <comment><USER2> It would be nice to see more information about the people behind this service. The site is clearly speaking to people concerned about privacy, so knowing who is running the service is part of knowing who has access to your information.</comment>


Indonesia election: More than 270 election staff die counting votes - <AUTHOR> https://www.bbc.com/news/world-asia-48083051 <comment><USER3> So my first reaction was "Jesus, that's like the equivalent of the Sri Lanka bombings!"

But then I read the article, and it said there were 7 million people counting votes. If those deaths were over the period of about 10 days since the election, that works out to an annualized death rate of about 0.14%. I don't know what a "baseline" death rate would be for this population, but it at least adds some context.

<comment><USER4> Given the normal Indonesian death rate of 0.64%/a, one would expect, of the 7m people involved, about 123 to die every day.

So, the article really ought to have put that into context, and specify over which period they died.

(Note, as an aside, that UK, USA, and, say, Germany, have significantly higher death rates - the reason being the older population, presumably.)

<comment><USER5> I would expect people counting votes to have a below-average natural death rate. Anyone who is about to die to pre-existing conditions is probably not counting votes, and it _should_ be a low-danger job.

<comment><USER6> Young people with jobs might be less likely to count votes. At the extreme, if you believe you are about to die and want to leave maximum money to your family, counting votes was a sound strategy (due to the benefit paid to families).

And it is low danger but not as low danger as staying home. Many would commute by motorcycle in the open air, much of which is heavily polluted, and staying home would ensure they stick to routines of drinking water and resting during the hottest times.

</comment></comment></comment></comment><comment><USER7> I'm surprised to see that they pay workers to count ballots. In France ballots are counted by benevolent citizens at voting places, and I always assumed it was a necessary condition for free democratic elections.

What about your country fellow HNer, how do elections work there ?

<comment><USER8> The UK hires people: [https://www.mirror.co.uk/money/no-qualifications-needed- how-...](https://www.mirror.co.uk/money/no-qualifications-needed-how- you-10386006)

I forget which constituency always returns first, but they make it a point of civic pride to do so; most of the staff doing the count are bank tellers.

<comment><USER9> A lot of council staff too. Election administration is a local government responsibility in Great Britain, and so many councils use their own staff as well as temporary workers. When I worked for Darlington council there was an all-staff email sent before the elections inviting us to sign on for an extra shift of counting for a modest-but-reasonable amount of extra pay.

</comment></comment></comment><comment> red-indian > More than 270 election workers in Indonesia have died, mostly of fatigue- > related illnesses caused by long hours of work

Was that really the cause of death? Or is it just what they are saying. That seems to be an absolutely enormous number of fatigue deaths from one election.

<comment><USER10> This exactly, how does someone die of fatigue?

<comment><USER11> By working continuously for more than 24 hours. I'm Indonesian and there are stories of polling places running from 7am to 9am the next day, not counting the hours they spent setting up the polls.

The main reason it became so grueling is that we held simultaneous elections for president, congress, and provincial representatives this year. We learned our lesson and won't be doing them simultaneously next time around.

</comment></comment></comment><comment><USER12> > Indonesia's election commission plans to compensate surviving families 36 > million rupiah (£1,930; $2,500) for every deceased worker - <USER2> > equivalent to one year's pay at minimum wage, according to the Nikkei Asian > Review.

I know there is no price for human life but this seems rediculously low to me. According to [0] this is equivalent to 10 month rent in the city for a one bedroom apartment. Definitely not enough to offset the cost of the loss of a working family member for a enough time to be able to make changes.

[0] [https://www.numbeo.com/cost-of- living/country_result.jsp?cou...](https://www.numbeo.com/cost-of- living/country_result.jsp?country=Indonesia&displayCurrency=USD)

<comment><USER13> > I know there is no price for human life

Narrator: there is

<comment><USER14> Absolutely. £20-30k per year.

[https://www.bbc.co.uk/news/health-28983924](https://www.bbc.co.uk/news/health-28983924)

When I did my engineering degree I believe they said they'll spend up to £1m/life saved on safety for the rail network. I think the threshold was lower for roads.

<comment><USER13> CoL adjustment downward by 90% in Indonesia

</comment></comment></comment></comment><comment><USER15> Wow. Think they can improves the process and avoid these deaths. Compare that to India which has a much bigger scale and organizes elections in a much more organized manner without straining their workers [https://pursuit.unimelb.edu.au/articles/how-india-runs- the-b...](https://pursuit.unimelb.edu.au/articles/how-india-runs-the-biggest- elections-in-the-world)

</comment><comment><USER16> I got a totally different impression of the meaning of this story from the headline, before reading the article.

It sounded ominously like maybe those 270 people had counted the ballots "the wrong way."

</comment><comment><USER17> Sitenote:

7 million people counting & monitoring feels off. Thats one person required for every (very roughly) ~22 ballots cast (~100% turnout, pop. of 250m, +18 voting)

Especially considering the population density of the country.</comment>


Ask HN: What font do you use for coding? - <AUTHOR> I've tried several hipster fonts but I always come back to Consolas. What font do you use for coding? <comment><USER2> I've been trying out a bunch of free fonts and I keep coming back to Input Mono ([https://input.fontbureau.com/](https://input.fontbureau.com/)).

Some of my favorites include:

\- Hack ([https://sourcefoundry.org/hack/](https://sourcefoundry.org/hack/))

\- IBM Plex Mono ([https://www.ibm.com/plex/](https://www.ibm.com/plex/))

\- Input (above)

\- Fira Code (only when coding JS, the only place I like ligatures) ([https://github.com/tonsky/FiraCode](https://github.com/tonsky/FiraCode))

</comment><comment><USER3> I used to try so many coding fonts. Finally I got a 42" 4k monitor and use the default monospace font at 1.1 leading and a comfortable size and still have screen estate to spare.

</comment><comment><USER4> (Misc) Fixed, point size 7.

It's the smallest font I could find that was still very readable. It's a bitmap font too, so it's super-crisp.

</comment><comment><USER5> I use Dank Mono for a couple of years now, very happy!

</comment><comment><USER6> Can I recommend Consolas. :)

</comment><comment><USER7> Courier new

</comment><comment><USER8> Terminus</comment>


D-Link blunder: Firmware encryption key exposed in unencrypted image - <AUTHOR> https://www.bleepingcomputer.com/news/security/d-link-blunder-firmware-encryption-key-exposed-in-unencrypted-image/ <comment><AUTHOR> D-Link encrypted firmware can be easily cracked by the leaking key</comment>


How I Hired Someone On Craigslist And Quadrupled My Productivity - <AUTHOR> http://hackthesystem.com/blog/why-i-hired-a-girl-on-craigslist-to-slap-me-in-the-face-and-why-it-quadrupled-my-productivity/ <comment><USER2> Henry Moore used to live over his studio. Whenever the noise of his chisel stopped, his wife would call down and ask why he had stopped working.

<comment><USER3> Economically speaking, I'm fairly certain finding a wife is more expensive than a $8/hr freelancer though.

<comment><USER4> I don't know if you're a rich guy planning to marry down in the social hierarchy, living in a culture where where women don't work or just a misogynist but this is generally false in the west. Dual incomes with a single household is very economical compared to life as a single.

See eg. <http://www.investopedia.com/terms/d/dinks.asp> "A household in which there are two incomes and no children (either both partners are working or one has two incomes). DINKS are often the target of marketing efforts for luxury items such as expensive cars and vacations."

<comment><USER5> Except this if the wife can hear you working then it's probably not a dual income home.

Edit: Prior probabilities yada yada.

</comment></comment></comment></comment><comment><USER6> As a productivity system, this is idiotic.

As a blog post that serves as link-bait, it is GENIUS.

...which is to say, I think it excelled at the REAL goal. ;-)

<comment><USER7> It still irks me that people can tout off success as though it's guaranteed for small experiments such as this without even considering elements such as the Hawthorne effect - 'changed behaviour during the course of a study may be related to the special social situation and social treatment they received'

<comment><USER8> <http://en.wikipedia.org/wiki/Hawthorne_effect>

<comment><USER9> Thank you!

</comment></comment></comment></comment><comment><USER10> The most important thing I got out of this article isn't the productivity 'hack' but the fact that there's a program called RescueTime that lets you find out exactly how much time you spent on your computer doing what.. o_O I didn't know about that!

I have long suspected that I have an HN addiction. Time to quantify it!

For others: <https://www.rescuetime.com/>

EDIT: Haha, while setting it up I found that the rescuetime folks think that adult funsies are quite important :P

 _Ignore adult content. Data for sites we recognize as adult-themed will be rejected at our servers and no time will be logged._

<comment><USER11> I use a similar program that is called ManicTime:

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

I can't recall what I didn't like about RescueTime, but the free version of ManicTime gives me a very good breakdown for my purposes.

FWIW, I spend on average close to 2 hours a day (of 10 hours in my office) browsing the web, and only 2/3 hours of real productivity (I hate my job).

<comment><USER12> What's with the rest of the 10 hours? Daily scrums?

</comment></comment></comment><comment><USER13> "Social working" -- I always thought this was the most important takeaways from XP and agile methodologies, that the highest quality work gets done when we tell each other what we're going to do ahead of time (agile/scrum), and then collaborate in the most literal sense by sharing one screen (pair programming) to see that the work gets done in the best possible way. Granted there are surely lots of other takeaways, but those are two things I did take, and I only do one of them.

</comment><comment><USER14> This is an interesting and funny experiment, but I believe it's success lies in the fact that the author lucked out and found someone who could actually help with his work for $8 an hour.

I didn't watch the videos, but from the text it sounds like the lady was more like a good coworker, certainly better than your average minimum wage slapper.

<comment><USER15> I'm work alongside someone for $8 an hour, depending how distractable they are. I have some tasks that don't require that much focus and it's nice to do socially.

I expect I'd get a spinoff effect of being more productive myself. Wouldn't want to be on Facebook when I'm trying to keep someone else off it.

</comment></comment><comment><USER16> I've been looking for something vaguely like this -- i.e., accountability -- for my own work. I'd rather work on my own projects, solo, but the one thing that is missing from a more formal work environment (or even a startup that's just "2 people with laptops in a cafe", which I did for a while) is accountability.

I've suggested to my friends with startups that they should host "hack nights" where random people can bring their laptop and work in a shared space for a while. I think it'd also be a good recruiting tool for the company. They've already got a cool office, so why not invite people there to see for themselves, plus become known as that place where people go to hack on interesting things?

I think this is one thing that academia really got right (having worked there for a few years once): put a bunch of smart people together in close proximity, each working on their own thing, but loosely sharing with each other. Big companies, small companies, startups, coworking spaces, and cafés all get one piece of this but miss a crucial piece.

Maybe I need to start a meta-startup.

<comment><USER17> I'm just curious what you think coworking spaces get wrong? Having looked at a few (but I must note, never worked in one!) it sounds like they come the closest to what you describe.

<comment><USER16> I started writing a response but it started getting rather long, so it really deserves to be its own blog post. In the meantime, I'll pick just one thing that seems most relevant:

There's a kind of implicit tactical (minute-to-minute) accountability in coworking, because you're all there to work, but not any larger strategic accountability. I don't think anybody would hold your feet to the fire if you didn't produce anything for a week, or month.

</comment></comment></comment><comment><USER18> Slap startup people hanging out all day in Mission cafés? Hell, I'd do that job for free!

<comment><USER19> They say you should do what you love, so you are never "working" at your job.

Start a slapping startup!

</comment></comment><comment><USER20> I'm actually working on a startup that solves this exact problem but with a twist: we outsource the slapping to India and use a shock-inducing necklace that can be remotely activated through Wifi. This will enable us to bring down costs and bring this service to the masses. So far, our virtual slappers have done an amazing job and the self reported productivity of our beta customers has gone through the roof.

<comment><USER21> Shocking over Wi-Fi? Just wait until 4chan hears about it...

</comment></comment><comment><USER22> This is essentially pair-programming, and seems to be the reason he got more done -- a great idea to improve productivity.

<comment><USER23> That would definitely be extreme programming. And when your tests fail, someone from QA can slap you, too.

</comment></comment><comment><USER24> Ignoring the moronic link bait about slapping, essentially what he did was apply pair programming to writing. It would make far more economic sense to do this as well, since the level of entry to get a person to pair with to write is far lower than for a programmer, so kudos.

</comment><comment><USER25> This is such an obtuse way to meet girls that it might actually work!

<comment><USER26> It's actually not that hard to meet girls, even for nerds. But you need some practice.

<comment><USER25> This is very true. But this stunt seems to be better for meeting people than getting work done.

<comment><USER26> Yeah, it sounds like fun.

</comment></comment></comment></comment><comment><USER27> It's not quite the same but the woman who comes around every couple of weeks and does my accounts, we both acknowledge is about 80% 'slap based' productivity and 20% her specialized knowledge at this point.

When she comes around I usually 'drive' the computer the whole time, and it's great to have her advice on things like withholding tax rates, but mostly it just makes certain that particular things get done on time where if they didn't happen they would have a tendency to snowball into accounting catastrophe.

</comment><comment><USER28> The $0/hour is to redirect your most popular slack sites in (e.g. Facebook) using /etc/hosts. You can redirect them to localhost, or to something you personally find annoying. :P

<comment><USER29> It's easier to convince yourself to disable that than to face the pressure of others.

<comment><USER30> This is incredibly true for me. I blocked time sink websites (like HN ironically) in /etc/hosts for about a day, and then I constantly went back and reverted my changes. Then, I wrote a daemon that constantly checks the host file and puts the blocks back if I changed it. I tried making the installation and operation as obscure as possible and try to forget the metaphoric key. However, I eventually ended up spending a bunch of time to rediscover what I did, so I ended up disabling this script as well...

</comment></comment></comment><comment><USER31> ... and may be you don't call her a slapper in your blog posts or she may slap you for real. I would. She should...

<comment><USER32> that may be an english english expression? i wonder if the (american?) author is aware? [i guess so, it would be a rather lucky joke if not...]

<comment><USER33> Must be english. What does it mean?

<comment><USER32> a woman of loose morals, more or less. it's moderately old-fashioned, and probably originally local to east london, so it's got comic overtones.

[http://onlineslangdictionary.com/meaning-definition- of/slapp...](http://onlineslangdictionary.com/meaning-definition-of/slapper)

</comment></comment></comment></comment><comment><USER34> I think this is explained by Dan Ariely in his paper - "Procrastination, Deadlines, and Performance: Self-Control by Precommitment"

<http://pss.sagepub.com/content/13/3/219.short>

Procrastination is all too familiar to most people. People delay writing up their research (so we hear!), repeatedly declare they will start their diets tomorrow, or postpone until next week doing odd jobs around the house. Yet people also sometimes attempt to control their procrastination by setting deadlines for themselves. In this article, we pose three questions: (a) Are people willing to self-impose meaningful (i.e., costly) deadlines to overcome procrastination? (b) Are self-imposed deadlines effective in improving task performance? (c) When self-imposing deadlines, do people set them optimally, for maximum performance enhancement? A set of studies examined these issues experimentally, showing that the answer is "yes" to the first two questions, and "nO'' to the third. People have self-control problems, they recognize them, and they try to control them by self-imposing costly deadlines. _These deadlines help people control procrastination, but they are not as effective as some externally imposed deadlines in improving task performance._

</comment><comment><USER35> _> Want a bicycle, but you'd rather not buy stolen bikes from the corner of Market and 7th? To Craigslist we go._

Ironic, since Craigslist is infested with stolen bike listings :(.

<comment><USER36> It's been my experience that it is a lot easier to ask for a paper trail on craigslist from prospective sellers than it is on the street from some boiler- room type operation.

</comment></comment><comment><USER37> I like this concept, I laughed.

However, don't put a popup in my face while I'm reading your stuff to join whatever site it is. And don't bloat the side of the page with "share" stuff. If I like the content, I will share and/or signup, or at least bug me once I reach the end but not while I'm in the middle of reading and on a mobile device this is even worse. /rant

</comment><comment><USER38> The problem with these kind of articles is that they focus only on the "one- time off" and then never talk about how sustainable the productivity increase really is. If this is to be a social experiment, it needs to be done on a longer term like a month or something. Anything less that is just anecdotal.

</comment><comment><USER39> Do it with a shock therapy device: [http://www.djspyhunter.com/teapot/2005/11/buzztrainer-usb- sh...](http://www.djspyhunter.com/teapot/2005/11/buzztrainer-usb-shock- therapy-gadget.html) So we could see if it's the social aspect or the punishment that improves the productivity.

</comment><comment><USER40> The social element works. I've experienced big productivity gains by having someone I connected with on Hacker News call me every night at 10:00pm and ask me 4 Yes/No questions that I wrote. The pressure to not say no provides extra fuel to stay on track and get more done.

</comment><comment><USER41> This is no mystery to most of the third world, you just set up your own personal sweatshop.

</comment><comment><USER42> I would suggest reviewing the title of this position. In certain parts of the Anglosphere, 'slapper' has an entirely different meaning, and telling people you have hired one will spark a flurry of raised eyebrows

</comment><comment><USER43> one of my friends did something very similar [without the slapping] and had the same results. he is a high stakes poker player and paid somebody just to sit next to him and make sure he didnt surf the web, chat on aim, etc while playing poker. it let the "attendant" watch a skilled player at work, and it kept the player focused and earning more money.

is it best to will yourself to not get distracted? of course, but we all know thats easier said than done and for people with high hourly rates, it is often going to be worth it to just pay somebody to help ensure compliance.

</comment><comment><USER44> I think it's a neat and creative idea, but I wonder about its long-term effectiveness as they get to know one another better. It's easy to be embarrassed when making mistakes in front of someone you don't know at all, because there still exists that social awkwardness between the two. But get to know someone well enough and it's much easier to shrug off. Maybe he should just hire someone new every few weeks to keep things fresh?

<comment><USER45> The most productive time I've had in home projects was when I pair programmed with my friend.

I actually think when you know the person watching you and value her/his opinion it works better.

</comment></comment><comment><USER46> This reminds of of pair programming, or pair _everything_ like they do at Menlo Innovations [1]. I took a tour there recently and it was pretty eye opening. People are now even paying to learn the "Menlo Way"

[1] [http://www.menloinnovations.com/our-method/founding- practice...](http://www.menloinnovations.com/our-method/founding-practices)

</comment><comment><USER47> I am the author of this piece. I used the same techniques that I talk about in this post until today---but without the slaps. The power is in the pair, having an accountability partner is important. One good tactic is to have two friends plan out joint Pomodoro sessions --- sit down, set a timer for 25 minutes, and ask each other how you did.

</comment><comment><USER48> Guilt (or at least empathy) can work in a similar way. My girlfriend is in grad school right now and always has a ton of work to do at night. I feel bad spending my nights goofing off or watching TV while she's hard at work, so I've been really good at getting real work done on my projects while she's doing homework.

</comment><comment><USER49> I like the idea in theory, but, if I hired someone to help me stay on task from craigslist they (probably) wouldn't undertand various programming tasks I was working on... so most likely they would not be able to stay on task at keeping me to stay on task ;)

</comment><comment><USER50>
      Do or do not, there is no try. - Master Yoda

And, this link seems very appropriate to link now:

4# @ [http://iqtell.com/2012/01/what-master-yoda-can-teach-us- abou...](http://iqtell.com/2012/01/what-master-yoda-can-teach-us-about-goals/)

</comment><comment><USER51> I think this guy has a thing for slapping... [http://hackthesystem.com/blog/how-to-get-slapped- by-50-colom...](http://hackthesystem.com/blog/how-to-get-slapped- by-50-colombian-women-and-do-pushups-on-a-mountain-side/)

</comment><comment><USER52> Thanks for recommendation for RescueTime - just installed, lets see what happens.

</comment><comment><USER53> That graph/chart is REALLY throwing me off. I can't even process the post. Where do you get that chart?? I can input numbers into a graphical chart generator, too. How do you measure that shit and I know it's not BS?

</comment><comment><USER54> Who wants to slap my face whenever I browse Hacker News?

<comment><USER55> ___slap_ __

</comment></comment><comment><USER56> It's called the <http://en.wikipedia.org/wiki/Hawthorne_effect>

</comment><comment><USER57> And this, kids, is why pair programming WORKS.

</comment><comment><USER58> Okay... maybe I should hire someone to do the same when I go on HN and post comments like this one ;o).

</comment><comment><USER59> This slapapp has few advantage: a. wont need update b.No advertises

But one disadvantage a. might quit one day

</comment><comment><USER60> "Hiring a slapper off Craigslist" has quite a different meaning in British English...

<comment><USER51> Got a good chortle out of it.

</comment></comment><comment><USER61> i finally blocked reddit in my /etc/hosts/ file and i am wasting way less time.

</comment><comment><USER62> SDD (Slap Driven Development)

</comment><comment><USER63> his Math skills didn't improve tho, 98% is hardly 4 times more than 38%

</comment><comment><USER64> This is why entrepreneurship is a collective process.

</comment><comment><USER65> Wow, I'll try one of these tactics in the future~~

</comment><comment><USER65> this is awesome interesting...

</comment><comment><USER66> thats bdsm

</comment><comment><USER67> I just look at the pile of overdue bills for a moment and the harsh slap of reality gets me right back to work.

</comment><comment><USER68> wouldn't a service where people can watch what you do on screen be as useful?</comment>


I don't make New Year's resolutions, I create processes (and so should you). - <AUTHOR> http://elemental.co/post/71997507751/i-dont-make-new-years-resolutions-i-create-processes I spent 6 and a half years studying chemical engineering at the University of Florida and the University of Colorado at Boulder, writing out flow charts for industrial processes. Much of my time was spent thinking about oil rigs and pharmaceutical companies.
Earlier this year, while talking to a professor friend of mine, the thought occurred to me that my chemical engineering background has trained me to think about problems in a unique way.
Prediction models can help us recognize early signs of systemic failure and develop methods for managing risk more effectively. These models can be applied to prevent everything from blackouts to oil spills to the spread of infectious disease.
So why not think of your life as just another complex system? <comment><USER2> Scott Barry Kaufman is a psychologist, not a physiologist. Bad autocorrect is the only explanation I can come up with for such a mistake on the author's part..</comment>


Python's missing string type - <AUTHOR> https://maltheborch.com/2014/04/pythons-missing-string-type

<comment><USER2> Do you want to experiment with rope-style data structures containing variable length encodings of characters? Fine, but please don't confuse efficient data structures with correct Unicode handling, which is a major improvement in Python 3 even if you resent it. Metaphorically speaking, what do you prefer to have: a painful scar or undiagnosed skin cancer? Assumptions about input encodings are the latter.

Ropes might or might not perform better than current array-based str and bytes implementations, but attempting to unify the two data types is just wrong. For example, would you count lengths and offsets in bytes or in characters? You need two data types to get the two possible behaviours.

<comment><AUTHOR> I would count lengths and offsets with respect to characters (codepoints). Note that for fixed-length encodings such as "raw", "ascii", or "latin-1", this always means bytes.

</comment></comment><comment><USER3> This is a neat little optimization which can help you avoid needing to convert everything into utf-8 underneath the hood - leaving things in their raw/encoded forms. This may help in certain cases but would probably also make the C-api slightly more complex.

The real problem with Python2 is that it attempts to auto-decode bytes into unicode by guessing the encoding. This actually works most of the time, but not always. Unfortunately the fact that it works at all causes people to ship code that they think is fine... until later when a byte-string comes along with a non-standard encoding and it blows up. Python3 fixed this by making it blow up every time.

<comment><AUTHOR> I think HTTP request and response headers make a great example.

You read a raw stream of bytes line by line (8-bit fixed), and split on newlines.

In this protocol we know that each string is "latin-1", so we can extract and decode each header with this encoding. At virtually zero cost, because we don't copy, or transcode the actual string data.

And what's more, we stay true to the protocol. These headers were never unicode-encoded (any variant), so it is awkward to suddenly have unicode strings to deal with in the rest of the program.

The alternative would be bytes, but in Python 3, those are simply impossible to work with as strings.

Why is Python 3 unpopular? It's because it does not really advance Python as a language. It's a bit cleaner around the edges, but the cost was very high for very little gain.

</comment></comment><comment><USER4> Better than that.

Use a rope type that's entirely (modified) UTF-8 throughout, but with the wrinkle that every character in a node must take the same number of bytes per character. (Use overlong encodings internally where appropriate, namely where you have (for example) 1 one-byte character in the middle of a long run of two-byte characters.)

You can even combine that approach with this.

<comment><AUTHOR> I can see how that could be a useful optimization for nodes already in UTF-8, but in my scheme, the rope would have to accommodate fixed-width codecs such as "raw" and "latin-1", too.

For instance, if you read bytes from a file with no encoding specified, then the resulting rope would be comprised of only "raw" nodes.

If it's PNG image data, then it wouldn't make sense to decode them as UTF-8 :-)

<comment><USER4> Well, yeah. The above approach just means that you can (almost) always index in O(log(n)) time or better.

If you want to handle multiple encodings, you drop the length field entirely: you have an encoding field, with the different lengths of variable-length charsets internally being expanded out to different encodings.

(So, instead of having UTF-8, you have UTF-8-1-byte, UTF-8-2-byte, UTF-8-3-byte, and UTF-8-4-byte (as well as plain UTF-8). Probably internally mapped to a 16-bit enum or something. Again, this is all internal: to write out to a file or something you map it back to the underlying encoding.)

</comment></comment></comment><comment><USER5> I don't think your suggestions would work very well as stated. However, I hope soemthing will be in Python 3.5 to add a second string type that helps make it easier to port old libraries to Python 3 AND helps make it easier to use Python 3 in use cases that are currently more complicated than they need be.

Practicality bearts purity.

<comment><AUTHOR> The Zen of Python claims "There should be one-- and preferably only one --obvious way to do it."

I think multiple string types go against that. It is the simplicity that makes it practical; not an argument of purity in my opinion.

To me what's important is that handling of encoding happens on the I/O barrier, and not anywhere else.</comment></comment>


Responding to Beggars - <AUTHOR> https://stallman.org/articles/responding-to-beggars.html <comment><USER2> I take the same policy, especially after moving to the city I'm in now, where I encounter a lot of panhandling.

It started one night when I was beginning to tell one guy who approached me, "No I don't have any--" he interrupts and says, "Naw man I just want some food." I make more money than I need, so we go to a nearby Chinese place (his idea) where they seemed to know him. They wanted him to wait outside, but I sat out there and listened to him ramble while he waited for his meal. He talked about how his girl had been pestering him to marry her for 17 years, and how people will betray you and such.

I was late to meet my friends for dinner, but the experience had an effect on me and helped reset my worldview a bit.

</comment><comment><USER3> I strangely don't have the same policy - but it does depend on my safety. Home in Trondheim (Norway), I regularly give to one particular beggar when I see him. The begging is in general organized (the police know, and refuse to do anything because folks aren't agressive). He generally just smiles and says hi to folks. Others, I give occasionally. Never to anyone agressive, and never that much. I have to admit, however, that sometimes I think the folks earn it simply for sitting outside for hours in the wintertime. I'll occasionally grab some change when I know I'm going to the center of town for that reason.

In Amsterdam, I'm cautious, especially if I'm traveling alone. I'm female, and though I know security is there, some people are pretty agressive anyway. I've given a cigarette here and there, but nothing more.

When I lived in the states, it would depend on the situation. I assumed most folks were lying, but would give change or a dollar or two occasionally, depending on attitude. I've occasionally bought a cheap meal for folks, or coffee.

I figure overall, a few folks really needed the money or were really appreciative, so it all works out. I'm not giving anything that takes food or anything away from myself, so I'm not losing anything either. I wish no one needed to do such things, or lie about their situation or be able to earn more begging than with a normal job - but that's not the world I live in right now.</comment>


WaveNet implementation in Keras - <AUTHOR> https://github.com/basveeling/wavenet/ <comment><USER2> The most interesting thing here is the note at the bottom regarding computational cost: "A recent macbook pro reaches about 5 samples per second."

This shows how far this model is from realtime usage. However I'm sure Deepmind researchers are already looking into how to make this blockbased or some other optimization strategy.

<comment><AUTHOR> And I should add that this was measured using a downsized model (just two blocks of dilated convolutions and a sampling rate of 4khz). Deepmind's paper does not report how many stacks are used to generate the samples, but I assume it's quite a bit more.

<comment><USER3> They (deepmind) reported it took 90 minutes of processing to generate 1s of speech via tweet. Hopefully this comes down in the future.

<comment><USER4> Do you have a link?

This implementation says: "A Tesla K80 needs around ~4 minutes for generating a second of audio at a sampling rate of 4000hz", which is significantly faster.

<comment><AUTHOR> 90 minutes for 1s of audio was reported by someone from Google on twitter, but the tweet has been deleted. I've clarified in the readme that my measurements are for a much lighter/smaller model than Deepmind's :).

</comment></comment></comment></comment></comment><comment><USER5> I was very impressed with the TTS examples in the original DeepMind article ([https://deepmind.com/blog/wavenet-generative-model-raw- audio...](https://deepmind.com/blog/wavenet-generative-model-raw-audio/)).

Can someone elaborate on the usefulness of this implementation for Text-to- Speech?

I'm keen to experiment with voice synthesis. I want to create dialog, from multiple voice sources, for some characters in a VR application that I'm working on.

Perhaps this lib is a better option for TTS:

[https://github.com/ibab/tensorflow- wavenet](https://github.com/ibab/tensorflow-wavenet)

I guess I could do with an ELI5 on how I'd approach this with either of these libraries. I'm not familiar with any deep learning frameworks. But I am pretty handy with Python and have implemented SciKit stuff.

Also thinking this will give me a reason to try Azure K80 instance vs the AWS GPU instances I've been using for other stuff. That said, is a Tesla K80 the only option for WaveNet? I'm guessing I could run it on other GPU's but had read that memory might be an issue on some cards. If so what the lowest card I can run it on and will one of the AWS GPU instances suffice? I also have a GTX 970 at home, but I'm guessing that won't cut it.

<comment><USER6> Short answer: Don't use this for practical purposes. It takes 90 minutes to generate 1 second of audio.

Here's a good TTS system:

[http://www.cstr.ed.ac.uk/projects/festival/](http://www.cstr.ed.ac.uk/projects/festival/)

<comment><USER5> But does anyone know if it's possible to do TTS with the recently released libraries?

Thanks for the links, but to my ear the samples on those links don't hit the mark. The Wavenet samples in the original article cross the threshold for me. So I'd like to try some short length dialog tests, especially as I've read elsewhere that 1 second only takes 4 minutes on a K80.

Any light anyone else can shed on this would be great.

<comment><AUTHOR> Afaik none of the released libraries support the TTS experiment described in the paper. Deepmind used pre-computed linguistic features to guide the system in generating natural sounding speech, so your output will probably depend on the quality of those features. For the sake of not spreading misinformation; the 4 minutes was measured using a small model with a sampling rate of 4khz, this would not generate something sounding like the samples from Deepmind.

<comment><USER5> Thanks for the clarification and for spotting the 4khz error. This is fascinating stuff.

Looks like I'll have to concede that voice acting is much more practical, for now at least.

</comment></comment></comment></comment></comment><comment><USER7> Slightly off-topic question about WaveNet:

In the paper, they say that they double the dilation factor up to a limit and then repeat: 1, 2, 4, ..., 512, 1, 2, 4, ..., 512, 1, 2, 4, ..., 512

The doubling of the dilation factor makes sense to me, but what is happening with the "repeat" part? I don't understand what they are trying go do. Wouldn't make more sense to continue doubling?

<comment><AUTHOR> My intuition is that the doubling up to 512 does increase the receptive field, but you're essentially building a non-linear convolutional filter with a kernel size of 1024. The network benefits from stacking multiple of these groups, because each group can again convolve over the previous outputs at every temporal distance, which allows for learning deeper/higher level features. It is similar to the stacked 2d convolutions used for images, where every subsequent convolutional layers learns more abstract and higher level features/attributes of the data. This is just intuition though, there is no evidence yet that this holds for wavenet's architecture.

</comment></comment><comment><USER8> Tangentially related, but was not aware of the python package sacred that they used. Seems pretty useful for organizing data science runs.</comment>


New York City sees extraordinary leap in whale sightings - <AUTHOR> https://www.theguardian.com/us-news/2019/jun/03/new-york-city-whale-sightings-increase <comment><USER2> We saved the whales! This is excellent. I didnt even know that whales around NYC were a thing. I'm glad they are!</comment>


The Pirate Bay Returns With Guns Blazing - <AUTHOR> http://torrentfreak.com/the-pirate-bay-returns-with-guns-blazing-090825/

<comment><USER2> I've been wondering about distributed solutions to torrent indexing for a while - maybe some of you know some good discussions on this topic?

What I noticed is that .torrent files are essentially weird, JSON-like dictionaries. It would be trivial to place some metadata in there (ID3 tag info, DublinCore or even just a link to imdb) and this could be indexed very easily. Even easier: turn the parts protocol into a microformat and place some invisible part listings in your HTML files. I feel like such approaches would reduce the need for centralised torrent search sites like tpb/mininova/etc.

<comment><USER3> BitTorrent already uses a distributed hash table for tracking. A search index can be built on a DHT by using normalized search terms as keys, as with e.g. <http://www.faroo.com>

This effectively results in individuals being responsible for specific words in the index. I would assume that this becomes a weakness if particular search terms are staggeringly popular or carry liability, though I'm no expert and there may be solutions to this using redundancy and flux in the allocation.

</comment></comment><comment><USER4> "I supported the Pirate Bay and all I got was this lousy T-shirt"

<comment><USER5> I prefer what's on their front page right now:

"I spent months of time and millions of dollars to close down The Pirate Bay and all I'll get is this beautiful t-shirt!"

</comment></comment><comment><USER6> "Showing strength in the face of oppression" Long live the Pirate Bay!

</comment><comment><USER7> Also it's much zippier than it was. I wonder if it's the new hosting arrangement or just that they've been down and have less traffic at the moment...

</comment><comment><USER8> What's the point, won't the sale kill them anyway?

<comment><USER9> The Pirate Bay is not only a website, it's also a political statement. Showing strength in the face of oppression just makes the Pirate Party look stronger. Slumping over and saying it's not worth the trouble just for a few days makes them look weak and uncommitted.

Plus, this is great "free" publicity for them.

<comment><USER10> > Showing strength in the face of oppression

I think that _oppression_ is a bit strong of a word here. 'Adversity' might be better term to use. When you stand up to a bully on the playground no one says that you're "overcoming oppression."

<comment><USER11> From TPB's point of view it is oppression. In this context, (asking why the sale isn't the end) that seems to be what is relevant.

That aside, I agree with you that calling this oppression is too much.

<comment><USER12> I suppose it probably never looks like oppression to people who aren't being oppressed until a bunch of people not in the original oppressed class die. (I was going to say "until someone dies" until I remembered all the people who died for the "war on drugs" in the US, and how it seems like most people still think it's a good thing.)</comment></comment></comment></comment></comment>


Paper Token: Gutenberg's version of One Time Passwords - <AUTHOR> http://www.quuxlabs.com/blog/2010/09/paper-token-gutenbergs-version-of-one-time-passwords/

<comment><USER2> I used a similar paper-based system in Norway to access the state services portal online (health care, etc.).</comment>


The Polygons of Another World: IBM PC - <AUTHOR> http://fabiensanglard.net/another_world_polygons_PC_DOS/index.html <comment><USER2> The EGA color situation isn't as bad as the author described.

CGA had a 16 color palette. In text mode, every character could be rendered with the background and foreground of any of the 16 colors. In graphics mode, you had to select one of two horrible combinations of 3 colors, and could pick any color to be the fourth color. It was awful for games, being mostly oriented around having brightly colored text on a black background.

TGA's graphics mode had 4 bit color, which gave it the complete 16 colors of CGA. It was less terrible, but still pretty garish as you can see from the screenshots in the article. It inherited the overly bright colors designed for differentiating text on a black background.

I believe that both CGA and TGA used the a digital connection to the monitor, and they were compatible with each other. There were on/off RGB lines and a half bright line that made stuff half as bright, with additional logic for another independent grey instead of duplicating another black.

EGA had 4 bit indexed color into a 6 bit palette. I honestly think its 6 bit palette is passable for the darker, moodier environment of Another World, unlike the CGA palette. But relatively few games used it. Most games (including, apparently, Another World) used the CGA palette, because then you would still be compatible with CGA monitors. IMHO the developers would have done their users a favor by making a third EGA only palette.

I don't recall how EGA's cable worked, whether it was analog like VGA or used a six bit digital scheme not unlike CGA.

<comment><USER3> Oh shit, did EGA have a different cable? My first PC had VGA, and since the DE-15 cable ruled for a decade until DVI, I had just assumed that CGA and EGA cards and monitors used the same cable...

It's always so crazy how creative and bespoke all the early PC tech was, because the hardware limitations were crippling, in every single dimension. And that in turn makes it so fascinating to read these articles, because the limits of the hardware was so well-known, that you could do things like counting actual cycles and basing your timing off of that or similar.

<comment><USER4> I think they all had different adaptors and cables back then. Until the NEC multisync, different monitors too! The article isn't wide enough to need to mention the whole world of semi-compatible and non-compatible clones, such as the Tandy mentioned (that I think was a semi), others were from HP, Apricot (who were quite successful for a while, and at least one of their machines had a switchable semi mode, and a "better" Apricot non-compatible mode. Different stuff ran in each), Tulip and probably dozens of others I forget. Some ran DOS, had a x86 and all the other toys, but wouldn't run certain software, others deviated in hardware rather more to try and do something "better".

The whole PC market was a bloody confusing, incoherent mess for a while. A quagmire for a not fully clued up buyer.

<comment><USER5> It also meant that if you waited long enough, replacing a computer part triggered a cascade of hardware updates, that in the end you would be better off just buying a new computer.

<comment><USER6> True, but it's how I learned a lot about PC assembly and setup as a teenager. Prior to then, I had a Commodore 128 which, while pretty cool, was mostly a box that did what it did.

I had an old PC (I bought it used from some guy advertising in the local paper) and when that fancy new Windows 95 came out, I wanted to upgrade the old 486 processor.

There wasn't any Microcenter at the time and I didn't know about any of the catalog sales companies like TigerDirect yet. What I did know was that summer there was a "Computer Show and Sale!!" at a local event space so I took what meager cash I had on hand to see what I could buy.

Knowing nothing about CPU sockets or brands, I was happy to find a shiny Cyrix 6x86 CPU that was clearly like a Pentium, but better (because Pentium was 586 so 686 is more 86's obviously). 133Mhz was double what my 486 ran at! Plus this thing was so much cheaper than the other stuff they had for sale. Got that and a compatible motherboard and headed home to work on my new amazing PC (holy crap Doom and Dark Forces were gonna look so good!)

So, you can imagine my disappointment when I got home and found that I could no longer slot my video card or internal modem into the new motherboard. I was so disappointed. It would be another month or so before I managed to save up more money to buy a compatible video card from some other guy selling parts. I forget what I did about the modem.

I'm also surprised I didn't need new RAM as well but the old stuff worked for the time being. Before it was all said and done, I'd at least learned what to research (and that it even needed to be researched) before upgrading anything again.

It's gotten so much easier to research online, part out a desktop PC, and drive 20 minutes to Microcenter where I can be back at home assembling everything that afternoon. I don't have to do it very often anymore as they remain useful for a lot longer (although it helps that I have more than a couple hundred bucks to spend now). But it's still useful to know how it all fits together when some friend or family member wants a basic workstation or something to edit family photos/videos on.

I can't justify upgrading my current i7 3770k system yet because the damn thing still just works as well as I could ask after 7 years, but sometimes I secretly wish it would crap out in some minor way so I could have an excuse to build a new one.

</comment></comment></comment></comment></comment><comment><USER7> As someone who played it on the PC back in the day, the visuals were nothing short of amazing. Why? The whole experience was both _different_ and _beyond_ what other titles delivered. What made it so memorable for me? Consistently smooth animation even with large sections of the screen being updated from frame to frame. Its polygon graphics which were solid-fill and not wireframe, which was a big leap. They're right. Ordinarily, the early PC was a real turd when handling full-screen animation.

The sound wasn't ahead of its day, but it was still quite good, even with the PC speaker rendering music, alien language, and effects in a better-than- average rendition. Nobody had high expectations for PC-speaker output.

Only a few years after its release, it was sad to look back and not find that any new action games using similar methods. Did I miss any good knock-offs over the next few years of its PC release, or was it just as much ahead of the curve for years to follow?

<comment><USER8> A lot of the 3D games I played back then used a HUD to fill a lot of the screen.

Another World was different in that it was carefully made to not blit too many polygon scanlines over the background. In that way, it had more in common with the Sierra/Lucasarts adventure games of the day.

In terms of gameplay, Flashback or Prince of Persia are probably the most similar.

But nothing really matches the art style other than 2016's Hyperlight Drifter, which is excellent.

Formula 1 Grand Prix, 1988: [https://www.youtube.com/watch?v=jLVkS7TMl9I](https://www.youtube.com/watch?v=jLVkS7TMl9I)

And Grand Prix, 1992: [https://www.youtube.com/watch?v=U4fC9CAjJPE](https://www.youtube.com/watch?v=U4fC9CAjJPE)

Gunship, 1986: [https://www.youtube.com/watch?v=fCZUc0d8ol8](https://www.youtube.com/watch?v=fCZUc0d8ol8)

Mechwarrior, 1989: [https://www.youtube.com/watch?v=iuxySqjb5X8](https://www.youtube.com/watch?v=iuxySqjb5X8)

Although to be fair, I played these games on an XT with monochrome Hercules CGA emulation at 10 fps, so I don't know what they were supposed to run like on a computer modern enough to have EGA or VGA.

Weirdly, Return of the Obra Dinn captures that 3D CGA emulation motif in a way I never expected to see.

<comment><USER9> Blackthorne is a slightly later game in the same vain (more similar to Flashback than to AW or PoP).

</comment></comment></comment><comment><USER10> "Out of this World" was my second ever PC game as a child, after I believe Blockout[0] or perhaps Mixed Up Mother Goose[1], all of them on DOS via some weird blue menu driven entirely by the F-keys. I remember when we had to drop out of the menu to get to the command prompt because the menu couldn't load a program from another drive. We used to stay up late with my dad taking turns. We never realized at the time we were playing such a classic.

Such nostalgia. The UX was horrid but we didn't know any better back then.

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

[1] [https://en.m.wikipedia.org/wiki/Mixed- Up_Mother_Goose](https://en.m.wikipedia.org/wiki/Mixed-Up_Mother_Goose)

<comment><USER11> I believe that blue menu is doshell

<comment><USER10> Maybe. None of the screenshots I could find via Google seemed to match my recollection. It was accessed by typing "menu" at the command prompt and was basically blue-on-blue with no mouse support.

</comment></comment></comment><comment><USER12> I picked this up for Switch out of nostalgia. Plays well on that platform. Well, the game does, I'm still terrible at it.

<comment><USER13> It's really more like a puzzle than something to be good or bad at.

</comment></comment><comment><USER14> I first played Another World (Out of this World) on the SNES. Even on SNES the game stood apart from the competition. Since then I've played it on many other platforms including PC and PS Vita. It never gets old.

<comment><USER15> Did any other version have the sound of the SNES? That was my first experience with the game and love the sound effects and musical score. I believe the PlayStation or the Sega CD version had a technically higher quality score, but sounded completely different which was off-putting to me.

The drawback of the SNES version is there are a few parts where it suffers from slowdowns. I wonder could they somehow be addressed in an emulator.

<comment><USER16> The person who ported the game from the Amiga to the SNES made a video about the experience:

[https://youtube.com/watch?v=tiq0OL8rzso&t=2m](https://youtube.com/watch?v=tiq0OL8rzso&t=2m)

More stuff along those lines: [https://www.reddit.com/r/TheMakingOfGames/](https://www.reddit.com/r/TheMakingOfGames/)

<comment><USER15> Really interesting thx. I feel a little bad for complaining about the speed after what she went through. I could understand them wanting to drop the fX chip version, but they used slower ram to save on 50 cemts a cart. I appreciate the optimisations she put in but at the end of the day, it does suffer from slowdowns. Again, maybe an emu can address them.

</comment></comment></comment></comment><comment><USER5> > Soon after the PC market was flooded with PC clones. IBM attempted to fork > into a new standard using a copyrighted MCA bus. When this effort failed, > IBM effectively lost control and quickly gained an overpriced reputation.

Indeed, had IBM been successful at this and the "computer as appliance" would already been settled during the 90's, as the OEM PC market got to be the exception to how everyone else was doing home computers.

</comment><comment><USER17> 'In March 1983 Compaq introduced an "IBM PC compatible" called the "Compaq Portable"' .. but Columbia Data Products got there first in June 1982.

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

<comment><USER18> Thanks for the input, I will fix the article ASAP.

<comment><USER7> Since you're here, I was curious about what you knew of the Atari 8-bit (Atari 800) ...tech demo? ...aborted conversion? ...fan creation?

It looks someone painfully down-converted a series of scenes from early in the game. The original sound seems completely thrown out. The system required trickery (usually hand-crafted) to gain more than 4 colors at once in high resolution. It's been a while since I looked at it, but I seem to recall the use of independently colored player-missile graphics (sprites) to bring more fidelity to the main character?

For reference: [https://youtu.be/PCa_0nXvfDg?t=6](https://youtu.be/PCa_0nXvfDg?t=6)

<comment><USER19> That looks like it's hardly the same game… less port, more total rewrite. I imagine Éric Chahi didn't like it?

</comment></comment></comment></comment><comment><USER20> Just a shout to the site design. Clean and sharp, nice on mobile, good font and no funny business.

<comment><USER21> And moreover, it's a deliberate decision: [http://fabiensanglard.net/bloated/](http://fabiensanglard.net/bloated/)

</comment></comment><comment><USER22> The Digital Antiquarian had a good article on this game in 2018: [https://www.filfre.net/2018/06/another- world/](https://www.filfre.net/2018/06/another-world/)

</comment><comment><USER19> The table in the article claims the MDA had 16 colours, which seems suspect.

</comment><comment><USER23> Is it me or are some of the SVGs in the article broken in Firefox?</comment>


Open Sourcing the Stupid-Simple Messaging Protocol - <AUTHOR> https://www.aerofs.com/blog/open-sourcing-the-stupid-simple-messaging-protocol/ <comment><USER2> The stupid-simple messaging protocol is interesting. However, I would prefer the use of something like D. J. Bernstein's netstrings rather than NL terminated strings. Netstrings have the advantage of having an explicit length field and thus allowing the receiver to allocate buffers of the appropriate size without the complications of receiving NL terminated data. Examples of protocols using netstrings are SCGI and QMQP. Netstrings are easier to handle and are still easy to debug if verbs are expressed in ASCII while still handling arbitrary binary data equally well.

Netstrings are so brilliantly simple, see the wikipedia page: [https://en.wikipedia.org/wiki/Netstring](https://en.wikipedia.org/wiki/Netstring)

This is what DJB says about the netstrings [1]:

> The famous Finger security hole may be blamed on Finger's use of the CRLF > encoding. In that encoding, each string is simply terminated by CRLF. This > encoding has several problems. Most importantly, it does not declare the > string size in advance. This means that a correct CRLF parser must be > prepared to ask for more and more memory as it is reading the string. In the > case of Finger, a lazy implementor found this to be too much trouble; > instead he simply declared a fixed-size buffer and used C's gets() function. > The rest is history.

> In contrast, as the above sample code shows, it is very easy to handle > netstrings without risking buffer overflow. Thus widespread use of > netstrings may improve network security.

[1] [http://cr.yp.to/proto/netstrings.txt](http://cr.yp.to/proto/netstrings.txt)

BTW, see Aaron Swartz's blog post on DJB, [http://www.aaronsw.com/weblog/djb](http://www.aaronsw.com/weblog/djb)

<comment><AUTHOR> Netstrings look neat although I find the use of a redundant comma delimiter somewhat confusing.

Buffer overflow concerns are not applicable to SSMP however, as the spec explicitly restricts message size to a maximum of 1024 bytes.

<comment><USER3> Which for some reason is not in the abnf spec, and thus will be ignored up until somebody tries to implement this and fails a compatibility test.

Please put it in your abnf spec. People use them, you know.

Yes, it's hard to specify. The problem is that you have both an uncapped ID and an uncapped PAYLOAD in the same message. I recommend giving ID a max length of, say, 32, and PAYLOAD then has a max length of 951 if I'm counting right.

Or you could consider that an IPv6 path MTU is at least 1280, and use that (or 1232) as your per message bound instead of 1024. You're sending a packet, might as well get full value.

<comment><AUTHOR> A very valid concern. We will work on this.

</comment></comment></comment></comment><comment><USER4> I like what I see in the grammar. Very compact and clean. It's actually smaller than the table of contents of XMPP Core spec lol. That's the kind difference that might make an ultra-robust, efficient implementation a bit easier. ;)

Note: Reminds me when I was illustrating Oberon-2 complexity for C and C++ programmers by comparing Oberon-2 BNF to their specs same way. Good way to do prelim assessment of protocol/language complexity and whether it's worth the trouble.

</comment><comment><USER5> Also, since SSMP is completely text-based, does that mean the only way to send binary data is to base64-encode it? Or does it support a length header or chunking similar to HTTP?

<comment><AUTHOR> base64 is the preferred way but any 8-bit encoding that doesn't use LF would also work.

There is no support for a length header or chunking as SSMP is designed with small messages in mind.

<comment><USER6> Why wouldn't you just include a length field on strings/bytes, allowing the protocol to be "binary clean" and avoid the base64 problem entirely?

This is one of the most annoying things about XMPP (even sending contact photos hits this!), so if replacing XMPP ...

<comment><AUTHOR> A big advantage of LF-delimited over length-prefixed messages is netcat/telnet-friendliness. That was more valuable to us than being binary- clean as our use cases do not involve sending large binary messages.

<comment><USER7> I think you might want to make a distinction between a stream packet and a completed message.

If you're going for telnet compatibility then you'll want to terminate packets in CR+LF, but possibly expect to see only CR or LF from the client (ASCII mode).

Your stream could either be stateful (a message is always sent complete and in order, even if it takes multiple stream packets) or stateless* (different messages might have stream packets consecutively).

It would be more future proof if you started with a message grammar and then defined your protocol on top of that.

</comment></comment></comment></comment></comment><comment><USER5> Neat but it's not clear how client authentication is handled in SSMP. I have used XMPP in the past and built-in identity was one of the biggest plusses of the protocol.

<comment><AUTHOR> Client auth is explained in more details in the spec: [https://github.com/aerofs/ssmp](https://github.com/aerofs/ssmp)

Our most common use case is client certificates but there are provisions for alternate auth schemes.

</comment></comment><comment><USER8> Sorry for being dense but what are the prime use cases for this? Is it for Jabber-style text messaging? Or inter-app MQ-style messaging?

</comment><comment><USER9> Reminds me of an idea I had: [https://github.com/runvnc/pubsub](https://github.com/runvnc/pubsub)

</comment><comment><USER10> Cool work. Any plans for an IETF submission?

<comment><AUTHOR> Not currently but we'd love to do it if there's enough interest to justify a more formal standardization.

</comment></comment><comment><USER11> What do you think about telehash ([http://telehash.org](http://telehash.org))? It might have been useful for your situation. Was it among your options?</comment>


5G Phone Won't Hurt You. But Russia Wants You to Think Otherwise - <AUTHOR> https://www.nytimes.com/2019/05/12/science/5g-phone-safety-health-russia.html <comment><USER2> Professor Preobrazhensky[1] said once "whatever you do, don't read the Soviet newspapers before dinner".

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

</comment><comment><USER3> LA Times, 3 years ago: "Is 5G technology dangerous? Early data shows a slight increase of tumors in male rats exposed to cellphone radiation"

[https://www.latimes.com/business/la-fi- cellphone-5g-health-2...](https://www.latimes.com/business/la-fi- cellphone-5g-health-20160808-snap-story.html)

There's only a slight increase in tumors but otherwise it's completely harmless!

</comment><comment><AUTHOR> Just wondering: are there russians trolls paid to react to every comment about Russia ?

</comment><comment><USER4> Im sorry, but all the fear media i'm seeing about 5G is instigated by the head of GCHQ, amplified by the BBC, and distracted by NYT.</comment>


Free housing in SF for talented hackers - <AUTHOR>

Hi all, We are a group of Thiel Fellows - paid $100,000 by paypal founder peter thiel to drop out of college (http://www.thielfellowship.org/). We're working on a variety of very cool projects, and are starting an exciting program in our house. We are offering free housing for talented hackers that want to get involved with our projects, and potentially become founding team members/ lead engineers in the near future. There will be an informal application for this program. If interested, feel free to leave a comment/reply, and we can get back to you with more info. <comment><USER2> Hi,

Not sure who this is, assume this is the house in the Castro with Brackin and others? Really would love to, I'm working on Chakra ([http://angel.co/chakra](http://angel.co/chakra)) as a side-project, and would love the opportunity to hang around the area. I write Rails, and have experience in a plethora of front-end JS frameworks (D3.js, Backbone, etc).

Able to relocate immediately, and applying to the Thiel Fellowship so it'd be great to meet current fellows.

tommaxwell95 at gmail [dot] com

</comment><comment><USER3> I am a full stack developer and currently live in Santa Clara. I would like to get in touch. My email is umar[dot]mughal2[at]gmail[dot]com

</comment><comment><USER4> i am a full stack php/nodejs/python developer with nearly 8 years experiences ... currently working on my own cool product.

i am really interested and would love to share ideas with you guys ... my issue that i am out of the states , from jordan just let me know if you ready to hear from hackers outside the US.

<comment><AUTHOR> Cool do you have an email address where we can contact you?

<comment><USER4> this is my email firstname.lastname@example.com

</comment></comment></comment><comment><USER5> Im a designer and maybe interested... Email me Rmena123 @ g m a I l . Com

<comment><USER5> I will also be at the startupschool meetup this coming 19th.

</comment></comment><comment><AUTHOR> Please leave us your email address if interested

</comment><comment><USER6> Interested, email is in profile. I am experienced in C, Java, and some web development. In Mountain View and can relocate immediately.

<comment><USER6> (This is probably fake but it's still worth a try.)

<comment><AUTHOR> no this is real, whats the point of this being fake?</comment></comment></comment>


HP's touchpad was bound to be a flop - <AUTHOR> http://www.nytimes.com/2012/01/02/technology/hewlett-packards-touchpad-was-built-on-flawed-software-some-say.html

<comment><USER2> Headlines like _"H.P.'s TouchPad Tablet Was Bound to Be a Flop, Some Say"_ are a blight on journalism, and it's another dent in the reputation of NYT to feature something that reads like that.

Everyone can see that the touchpad is a major flop, so it's easy to just write some hindsight fluff piece about it. It's ridiculous to write about the inevitability of the device's failure after the fact; the only way to write in this tone is to write the article before the fact, unless you intend to revel in someone's failure.

Even so, they use weasel words like "... some say", which they no doubt will use to hide their snipe piece behind. In other words, as certain as it seems that the touchpad was a complete and utter dud, and how ever epimethean and arrogantly the piece reads in its hindsight and rationalization, they still waffle on arguing their point rigourously and confidently.

I can only hope Brian Chen himself didn't write the headline, because that would at least serve to redeem the intention of the article.

<comment><USER3> They appear to have changed it, at least online. Now I'm seeing "In Flop of H.P. TouchPad, an Object Lesson for the Tech Sector"

</comment></comment><comment><USER4> A strange article. The only winning strategy was not to read it.

Regarding the Pre being slow, I for one never felt it was slow. I returned mine for two reasons, each of which had kept me on Treo and prevented me from moving to iPhone, each of which were horribly botched by Palm, and thus destroyed any barriers to switching I had. First,the keyboard on the Pre was terrible, just incredibly awful, and that was one of its big differentiators, and a huge reason I liked my Treo. Second, I had at that time many critical Palm apps that I'd spent a good deal of money on, as did most of Palm's existing customers, and absolutely NONE of them ran on WebOS, nor was there any upgrade plan in place.

The phone didn't feel slow, and on the contrary, the UI was way above its competitors.

This may be true:

"a former member of the WebOS app development team said the core issue with WebOS was actually Palm's inability to turn it into a platform that could capture the enthusiasm and loyalty of outside programmers. There were neither the right leaders nor the right engineers to do the job, said this person, who declined to be named because he still had some ties to H.P."

At the time, IIRC, JWZ was very enthusiastic about the platform, but he could make almost no headway into writing apps for the damn device, but the failure seems to be one of Palm's leaders who didn't see the need to evangelize and recruit developers.

<comment><USER5> JWZ also complained about the calendar app taking 20 seconds to launch, and being unable to buzz people into his building due to the extremely sluggish phone app.

And of course, their dev kit was a mess, and their "App Store" a joke.

WebOS was a Hail Mary attempt by Palm to save the company after the failure of Palm OS 6, which was under development for 5 years before being canned. In a panic, they took a Linux kernel and WebKit and spat out an OS in a matter of months. It's no surprise it was a failure, but it does show how clueless HP is, and how blind the faithful can be.

Here you have the actual WebOS engineers taking about what a turkey the platform is, yet there are people who still refuse to believe it.

<comment><USER6> Your Hail Mary comment got me thinking: is there an example of Hail Mary working in the tech biz? I've seen it happen in football enough to know it's at least worth a shot. But launching a product with all kinds of problems into a competitive market?

<comment><USER7> The original iMac. Same crap in a prettier package, and it saved Apple.

I was surprised that Google Apps caught on, but I'd underestimated Microsoft's lethargy - they had reportedly developed a web version of Office 2003 but decided to sit on it.

Perhaps also the Nintendo Wii.

<comment><USER8> I would actually reckon that the NES was Nintendo's original successful Hail Mary. The games market was dead, introducing a new game console at that point was suicide. They coasted through the SNES due to a lack of real competition (Genesis being the only threat) and name recognition. They flopped the N64 and Gamecube for being more of the same. They've always had innovative ideas in the marketplace; The gameboy, the Virtual Boy, the Famicom Disc System, the Satellaview, the SuperFX chip, rumble paks, minidiscs, etc.

The Wii was just returning to form in fabulous style. They weren't hinging the success of their entire company on a low-chance market like they were with the NES, or Apple did with the iMac. Nintendo has (and had) plenty in reserves and a handheld that printed money if the Wii failed.

</comment></comment></comment></comment></comment><comment><USER9> When the Pre came out, both my brother and sister bought one. They both liked iPhones, but couldn't get them because they were on Sprint. I had an iPhone 3G.

They didn't like the keyboard, and the fact that I could grab the top and bottom half of the phone and twist them at least 10 degrees relative to each other was rather worrying. The Touchstone was fantastic, and I assume the only reason no one else has done it was because it's patented. However since the Touchstone cost $70 the only person I know who had one got it for free when their phone (when they were given away at some sales conference long after it was clear the phone was dead).

I though WebOS was very nice, and my siblings liked it. I did just a teeny bit of development for it, and thought it was a decent environment. I liked the documentation, and it was pretty easy to do. The simulator, which ran on VirtualBox (IIRC), was slow as hell. The phone liked to use gestures to trigger things, which was a bit unintuitive and was very difficult to trigger in the simulator.

However, I thought the card metaphor was fantastic. At the the time the iPhone didn't allow any multitasking at all. I still think the card metaphor is elegant. My mother has had an iPhone for two years and still doesn't know about the multitasking or how to close apps if she wanted to. They Apple or Google could buy just the card metaphor patent for a few million, I would say "do it".

But I always thought the main failing was apps. By the time the Pre came out the iPhone app store was already huge and _the_ reason to get an iPhone. After a few months, Palm finally announced an app store and... nothing happened. It took months and months before they actually opened the store and let people download things. After it was open, only one or two apps would come out each month. The ones that did gave the impression the internal developers were making them as demo apps. If Palm had paid a few big app developers to port their apps, it would have gone a LONG way.

From the end user's point of view, the app market situation was a fiasco. The time between the announcement of the store and starting to get any recognizable apps was eons.

It doesn't surprise me that HP didn't fix things. The Touchpad was nice, but overpriced. The fact the first thing HP said was "We're putting it on our printers" wasn't reassuring in any way.

<comment><USER10> Agreed. I had an iPhone 4 for about a year when the Touchpad went to fire sale, and stayed up fairly late to order one online. I had heard great things about webOS, and the Touchpad looked like a bargain.

And it's great for reading Hacker News (overlooking that it is incapable of parsing the single quote char correctly on HN) and the odd Kindle book(on the beta Amazon webOS app that is unlikely to ever see another update). But all it really has done for me so far is validated that I will utilize a tablet device and made me want to buy a supported device. I want to do things like play higher end games, use Evernote, and watch Hulu/Netflix.

But oh well, maybe one day the open source effort will yield fruit. After I get a tablet that hasn't died yet, I will try putting Ubuntu on my Touchpad. I still really like webOS, and it does some things very well, better than my iPhone. But right now I don't see any light at the end of the tunnel.

</comment></comment><comment><USER11> As a long-term webOS user, I could not disagree with the conclusion of this article more. WebOS did not fail because of a decision to use WebKit, it "failed" (in marketing and commercial terms, not in technological terms) because of a lack of decent hardware, which is still the case today.

My own personal feeling is that the decision to put a web interpreter at the heart of webOS was inspired, I mean as an app developer what would you rather code in?

1\. iOS - objective C.

2\. Android & RIM - Java.

3\. webOS - HTML5/CSS/JS.

webOS the platform is fantastic, but has never been seen on decent hardware (with the exception of the Pre3 which is an amazing phone, but was never officially released outside of a limited European release). If the open sourcing of webOS leads to decent hardware manufacturers like Samsung or HTC releasing devices, it still stands a chance.

<comment><USER12> But you can do 3 on iOS, as Safari is a WebKit browser. But for when that's not enough, you can do 1.

<comment><USER13> It's always enough on webOS, and in the rare case when it's not, you have C/C++ instead of Objective-C.

<comment><USER10> You do have C++/SDL (roll your own UI!), but if I recall correctly you DO NOT have native UI APIs anywhere near what Cocoa is.

<comment><USER14> Because the 'native' UI is ... HTML/CSS/JS. There is no non-HTML 'native' UI on webOS.

Don't want to implement RSA in javascript? Create a 'hybrid' webOS app using a C lib, but 'native' HTML UI.

The 'native' Mojo or Enyo frameworks may not be as rich as UIKit, but the web UI ecosystem you can leverage to extend them is massive, and the source for both is all there for you to read and extend.

</comment></comment></comment></comment></comment><comment><USER15> I wouldn't trade my touchpad for an ipad. The only advantage of the ipad is that it has more apps (that you probably don't use anyway). I think the multitasking / cards approach from WebOs is awesome.

<comment><USER16> Same here except my Touchpad is running Android :) <http://i.minus.com/iVYidLWciBgsJ.png>

</comment></comment><comment><USER17> > But Mr. Mercer insisted that WebKit would still leave WebOS underpowered > relative to Apple's software. "If the bar is to build Cupertino-class > software in terms of responsiveness and beauty," he said, "WebKit remains > not ready for prime time, because the Web cannot deliver yet."

This sums up how I feel--I should make it my motto.

<comment><USER18> The same thing happened with SUN NeWS, a PDF-based rendering system, some 10 years or so ahead of OS X. It was beautiful, but slow.

Give it time, even as an iOS programmer, in my opinion I'd think that HTML/CSS/JS is _long-term_ , the better way to go, simply because it's open.

Let's hope openness wins in the end.

<comment><USER19> NeWS was also _very_ hard to program. Just try to write a spreadsheet in PostScript...

<comment><USER12> The NeXT OS used Display PostScript, and I believe that is still the core of OS X Quartz, is it not?

Are you saying that there was not a good API for drawing on the display? You had to spit out raw PS?

<comment><USER20> It was more than that, you wrote your entire UI in NeWS's Postscript-with- knobs on, and communicated asynchronously with the server side of your app. Think of writing a desktop app as a tiny web-server with the UI in a browser, only all the UI is in PS rather than HTML/CSS/JavaScript.

</comment></comment></comment></comment></comment><comment> guard-of-terra It seems that neither journalists nor HP understand software platforms. Former is not surprising but latter is painful.

You groom platform for a several years and only then you harvest fruit, but once you do, you have a huge preference over those who didn't invest in one.

It demands patience. Apple understand platforms. MS does. Google sort of. HP do not have the required guts. Mindset costs 0$, is a main asset and they haven't got it.

That's the reason software companies always win and hardware companies always help them to win while being barely profitable themself.

They expected to make a huge push of a new platform to market and make a top sale right away. I can imagine people at e.g. MS laughing.

</comment><comment><USER21> I am a big fan of webOS, so my views may be off. I am not a developer, just a consumer, so my comments may even be irrelevant to the OP.

webOS definitely had its rough edges. The phone app will be sluggish (what jwz was referring to, try answering a phone call by tapping "pick up" several times without any response as the phone keeps ringing), in USB mode the phone shuts down and directs all voice calls to voicemail, the entire OS does not have a position indicator to tell you how long and where you are in the page, etc.

However, all initial releases of software are buggy. As someone already mentioned in this thread "I think instability is less a sign of architectural problems than of simple failure to iron all the bugs out". I think everyone at Palm expected to be able to release updates and get the OS up to speed.

However, Google started cranking up on Android and left everyone (including iOS) in the dust. I am not talking about UI here. I am talking about sheer speed in the software turnaround cycle. In seemingly no time, Android had Cloud syncing, Maps with Navigation, features in the photo app like red eye removal etc. etc. They just blasted away with these updates. To me it is astounding that a complex mobile OS used all over the world can be developed in such speed. After this effort, webOS just had no chance.

You need apps for the tablet but without a successful phone ecosystem, the touchpad was definitely a tough sell. HP thought their "channels", "marketing" would amount to something. It just wasn't. A CEO wanting to get out of the consumer space finally stopped the bleeding. Maybe if HP had been going for another 6 months and risked another $1 billion (I feel stupid just typing that clause :) ), webOS could have gotten lucky.

</comment><comment><USER22> I'm an outsider to whom webOS appealed a lot to. I was an iPhone 2G user, and to me webOS was a totally new approach to mobile UI. The Cards-based multitasking model was (for a mobile OS) at that time revolutionary.

But I can understand how and why it flopped, Palm was haemorraging money like anything. Its investors were doubtful at the best. And the lack of backwards- compatibility (or a planned roadmap to implement it) forced the Palm faithful to take their business elsewhere.

I would argue that webOS and Palm in the greater sense failed because of mismanagement, and maybe not so much due to technical issues/inabilities. The fact that the Phone app (the most important part of a smartphone OS) wasn't stable when the product was out the door casts some serious doubts on QA. Palm has handled the one product that might've saved them from extinction with a "Ship it, then fix it" mentality.

Palm has had their focus all over the place. They wanted to out-do Apple, which given their finances was the one approach they shouldn't have taken. They could've focussed their resources on the core product, the OS and the phone itself. Rather than on accessories and creepy marketing campaigns.

Questioning the technical ability of the team seems unfortunate, but an inevitable outcome of the product being flawed. If the developers, architects, evangelists of webOS knew what they wanted they would've settled on a set of objectives before beginning to work on an entire Operating system. And clearly if they were opinionated they would've nudged the h/w team in the right direction.

Articles like these make me wonder if webOS might've had a totally different fate had it ended up with a company like Facebook which has had a huge success in developing and nurturing one of the largest platforms on the web.

</comment><comment><USER23> I owned an original Pre and was never much bothered by it being slow. But having to reboot it every night to make it less likely to crash while I was using it was a drag.

Oh, it did take forever to boot. Bad combination, that, frequent crashing and slow booting.

I think instability is less a sign of architectural problems than of simple failure to iron all the bugs out. I guess they were too busy adding features.

<comment><USER24> > _frequent crashing and slow booting_

That was the combo that made me ditch my BlackBerry (8900 Curve, great phone at the time otherwise) and move to the iPhone 4. At the mall, take out the phone to snap a picture, and whatdya know, the camera program crashes taking down the whole system with it. Reboot? I'll be lucky if it's back up and running by the time I get to the car.

EDIT: Yeah, obviously I'm lying out of my ass and should be downvoted. Because, you know, BlackBerry's still doing super-hot, and is clearly impeccable. There's no way _anyone_ had problems with their BB and switched to Apple.

</comment></comment><comment><USER25> I agree that WebOS has a good ambition. But maybe that they should have updated their software stack more often. If you look at the software versions, such as Webkit, V8, node, you find that their collection of tools are heavily outdated. That's completely against the nowaday web standard of fast updating.

</comment><comment><USER12> _Ms. Whitman said 600 employees were still working on WebOS_

Clearly that number includes more than the engineers... but wow.

<comment><USER26> The webOS org had about 1200 employees before 600 hardware product people were cut.

</comment></comment><comment><USER27> ...some say.

Title fix?

<comment><USER13> Seriously, the title here is not even close to what the actual article covered. It sounds more like someone offered this as justification for why they felt the Touchpad was doomed to fail.</comment></comment>


Zig Ziglar dies at age 86 - <AUTHOR> http://www.ajc.com/news/business/motivational-speaker-zig-ziglar-dies-at-age-86/nTHSM/ <comment><USER2> If you are ever depressed I highly recommend listening to some of his tapes.

<http://www.youtube.com/watch?v=cRMogDrHnMQ></comment>


Ask HN: How much of Techcrunch's reporting is just re-blogs of stories from HN? - <AUTHOR>

Is it just me or are other people noticing that a lot of TechCrunch's content showed up on HN several hours before it shows up on TechCrunch?<p>Which leads me to wonder, how much longer will mainstream media outlets be relevant?  And is TechCrunch really that much different / better than a "content farm" like ehow, which they seem to dislike so much? <comment><USER2> You can't really expect much from them, their job is to move ad inventory and HN is willing to throw large amounts of traffic at them for many things. I think their days are numbered for two main reasons:

1) At some point (if not already) it will be more beneficial to launch your startup here directly and get 100% of the HN traffic instead of losing most of it on a TC page.

2) There's no space on TC for startups who don't have an a-list cast of founders and/or investors.

HN is probably going to be what makes TC irrelevant which is ironic because they pour so much energy into securing this audience.

Are they better or worse than a content farm? I think the line is blurred a little but in TC's favor. They write news, some of it's pretty mediocre and a lot of it makes you wonder when they'll come out and admit they're Engadget and Tuaw's ugly green bastard child, but it's news and it's now, not generic content tailored to suck search engine traffic for years.

</comment><comment><USER3> It's actually 2 ways street. I've seen many articles from TechCrunch on HN.

</comment><comment><USER4> The net echoes.

</comment><comment><USER5> 16.8%</comment>