CDC map quietly confirms the Haitian cholera epidemic started by UN peacekeepers - <AUTHOR> http://www.slate.com/articles/news_and_politics/foreigners/2016/04/what_caused_haiti_s_cholera_epidemic_the_cdc_s_museum_knows_but_won_t_say.html <comment><USER2> I'd just like to point out that the CDC itself has published papers detailing the origins of the Haitian cholera strain: [http://wwwnc.cdc.gov/eid/article/17/7/11-0059_article](http://wwwnc.cdc.gov/eid/article/17/7/11-0059_article)

As another example, Lee Katz, CDC's chief bioinformatician for the labs that study diseases like cholera (Who, full disclosure, used to work with my lab on Vibrio stuff): [http://mbio.asm.org/content/4/4/e00398-13.short](http://mbio.asm.org/content/4/4/e00398-13.short)

There have been articles by other groups directly addressing the introduction of cholera by aid workers. The CDC also talks about this issue directly during conferences and presentations as an event that we need to learn from.

<comment><USER3> Well that seems to completely invalidate the article's premise. Thanks for this.

Now I just need somewhere else to direct my armchair rage...

<comment><USER4> Here's the actual quote from the CDC report linked above:

"Meille village hosted a MINUSTAH camp, which was set up just above a stream flowing into the Artibonite River. Newly incoming Nepalese soldiers arrived there on October 9, 12, and 16. The Haitian epidemiologists observed sanitary deficiencies, including a pipe discharging sewage from the camp into the river. Villagers used water from this stream for cooking and drinking.

On October 21, the epidemic was also investigated in several wards of Mirebalais. Inhabitants of Mirebalais drew water from the rivers because the water supply network was being repaired. Notably, prisoners drank water from the same river, downstream from Meille. No other cause was found for the 34 cases and 4 deaths reported in the prison.

On October 31, it was observed that sanitary deficiencies in the camp had been corrected. At the same time, daily incidence of cholera tended to decrease. Afterwards, incidence rose again to reach a second peak on November 10 "

</comment></comment></comment><comment><USER5> FWIW, I work in Haiti, have numerous friends in the UN mission here, and they have long acknowledged this is true. Certainly Haitians know what happened. Talk radio is a big thing here and they've been talking about it forever.

I think the article is probably technically correct in terms of the highest levels of the CDC and UN being sensitive and slow-rolling the news...but I wouldn't say it's as pervasive a cover-up as the article implies.

<comment><USER6> I was surprised to even see the article posted because I didn't think there was a lot of doubt about this. I have no special knowledge of or interest in cholera, Haiti, or the UN, but I've known since around this time last year that the most recent outbreak was likely caused by UN peacekeepers improperly handling sewage. I stumbled upon this knowledge by... reading about it on Wikipedia. I wasn't even studying Haiti or the relief mission, I was just _bored._ If there was a cover-up going on, it was apparently the worst cover- up in history. Personally, I would bet on some knee-jerk untruths on top of a heaping pile of incompetence rather than a real organized hush job, based on having skimmed Wikipedia again to refresh my memory[0]. For instance, the relief mission initially denied responsibility because they have sanitation standards. I personally would have checked to make sure those standards weren't being ignored before I used them as an excuse so a reporter couldn't find out for me, which is exactly what happened (Note: MINUSTAH is the acronym for the UN relief mission, it makes sense in French):

>MINUSTAH officials issued a press statement denying the possibility that the base could have caused the epidemic, citing stringent sanitation standards. The next day, October 27, reporter Jonathan M. Katz of the Associated Press visited the base and found gross inconsistencies between the statement and the base's actual conditions.

Later, they took groundwater samples ("despite UN assertions that it was not concerned about a possible link between its soldiers and the disease") and announced they tested negative. Lying about test results definitely sounds like something you'd do during a cover-up, except apparently the tests weren't even done right:

>However, an AP investigation showed that the tests were improperly done at a laboratory in the Dominican Republic with no experience of testing for cholera.

I poked around the article that quote cites[1], which claims the tests were conducted at a regular hospital (with a surprisingly spiffy website: [2]) by an obesity specialist. Apparently you'd want those tests run somewhere more specialized because cholera is tricky and you get false negatives all the time. I'm not sure how available those facilities are, maybe there legitimately wasn't a better option, or maybe there was and somebody is just really bad at their job. If there was a deliberate, coordinated deception involved, I'd hope the conspirators would at least find a medical facility that would give their story more credibility.

Attributions to malice or incompetence aside, it's definitely clear that the relief mission and friends have not handled this event very well. There were some amounts of stupefying incompetence and bald corruption, and they should be held accountable regardless of what the proportions were. This extends beyond the current cholera situation, we could just as easily be talking about something like Cité Soleil, a large shantytown outside Port-au-Prince with a history of extreme poverty and armed conflict. That said, the other side of the story is that Haiti is an incredibly troubled country with a history of natural disasters, unstable government, and terrible epidemics. Any country would struggle with one of those, but Haiti wrestles with all of them at once. An earthquake wipes out infrastructure, which allows disease to spread unchecked, which hamstrings the economy, and so on. The relief mission is there because Haiti sorely needs it, even if it sucks and Haitians deserve a better one.

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

[1]: [http://www.nbcnews.com/id/40280944/ns/health/t/un-worries- it...](http://www.nbcnews.com/id/40280944/ns/health/t/un-worries-its-troops- caused-cholera-haiti/)

[2]: [http://www.cedimat.com/en/](http://www.cedimat.com/en/)

</comment></comment><comment><USER7> It would be a tragedy if this cholera outbreak was the only cause of many poor people in Haiti. The UN have been killing people over there for many years:

[http://www.democracynow.org/2005/7/11/eyewitnesses_describe_...](http://www.democracynow.org/2005/7/11/eyewitnesses_describe_massacre_by_un_troops)

[http://haitiaction.net/News/HIP/1_21_7/1_21_7.html](http://haitiaction.net/News/HIP/1_21_7/1_21_7.html)

</comment><comment><USER8> Bit of a major screw up there. If they'd been open about the source they probably could have fixed it. Even now googling Cholera prevention it mostly seems to be sorted by chlorinating the water supply and using bleach on cholera contaminated stuff - not rocket science and could probably be done without $2bn. When I'm 3rd world travelling I tend to figure if the tap water smells of chlorine you're ok.

Funny seeing the London map. My flat's on that. Thankfully we have less cholera these days. I remember being struck in Nepal about 20 years ago by seeing some guy crapping directly on the river bed of the main river in Kathmandu which was probably being used for water by villages downstream. Again some of this stuff is not rocket science.

<comment><USER9> It's been widely known that the UN peacekeepers originated the outbreak for years now. The issue isn't closed source data, it's the UN being organizationally incapable of holding people responsible for fuck ups.

EDIT: Recent example - [http://www.nytimes.com/2016/03/20/opinion/sunday/i-love- the-...](http://www.nytimes.com/2016/03/20/opinion/sunday/i-love-the-un-but- it-is-failing.html)

<comment><USER10> So if you come to a bar with the flu and get me sick should I hold you responsible for fuck ups? Or maybe the bar? What if one of their workers is the one with the flu?

I'm not sure it's comparable, flu only kills 4x more people as cholera and honestly I'd personally like it if I could sue people for getting me sick by going out to public places when they know they are sick. (A friend of mine just gloated on twitter that he probably got 100 people sick by attending a meetup with the flu.)

That said, since most people don't seem to agree with me and just take it as normal that sicknesses get passed on with a ¯\\_(ツ)_/¯ type attitude I guess I'm unsure how to hold the UN any more responsible.

<comment><USER11> > honestly I'd personally like it if I could sue people for getting me sick by > going out to public places when they know they are sick

You definitely can do this. They'd need to have something more serious than the flu. Forcible quarantine for severe communicable diseases is a feature of US law.

> flu only kills 4x more people as cholera

How many people have the flu, vs how many having cholera?

<comment><USER12> He'd only need to sue for damages because they violated reasonable self- quarantine principles and put him and others at risk - not force the state to actually quarantine them.

And he could definitely sue. USA!

</comment></comment></comment></comment></comment><comment><USER13> A few Nigerian peacekeepers spread HIV in Cambodia which had been previously relatively free.

<comment><USER14> This is a huge concern, but it seems like a broader problem than Nigeria:

* Not much is known about the prevalence of HIV among peacekeepers, because the UN rejects mandatory testing.

* In 2000, a US Intelligence Council Report estimated an HIV prevalence rate of between 10 and 20% among the armed forces of the Ivory Coast and Nigeria, and an even higher prevalence of 40–60% among the militaries of the war-affected countries of Angola and the Democratic Republic of the Congo.

* Surveys of Dutch personnel suggest that 45% routinely had unprotected sex with sex workers in Cambodia during a tour there.

[http://journals.lww.com/aidsonline/pages/articleviewer.aspx?...](http://journals.lww.com/aidsonline/pages/articleviewer.aspx?year=2003&issue=01240&article=00027&type=fulltext)

<comment><USER8> That's pretty bad. Just testing a bit and leaving the HIV infected ones at home could fix things. That's a lot of Cambodians they are killing to save some embarrassment.

<comment><USER15> is the UN's decision motivated by the UN's embarrassment, though?

I assumed it was more about the UN's fear of major dropoff in volunteer rates from countries/orgs that would be embarrassed about their infection rates. After all, the UN only _exists_ because of the participation of all the member countries. They are right to fear hurting participation rates...

I'm not defending the spread of HIV, just noting that it's a nuanced challenge.

</comment></comment></comment></comment><comment><USER16> Each year all the sophomores at my high school take an 11-day wilderness trek in the Great Smokey Mountains. One of the many things we learn is not to shit near water. I probably remember this particularly well because when someone in my troupe fucked this up, we got an angry lecture from our guide.

I like to be gracious but I can't imagine how the UN fucked this up

<comment><USER17> The answer is easily.

UN troops are simply troops rented by the UN from member countries. They are no less or better trained nor less corrupt than their fellow soldiers back home who are not wearing blue helmets.

Renting troops to the UN is a racket that nets a lot of money. Countries have even been known to cheat the UN by pretending they have more troops or equipment deployed than is actually the case so they earn more.

Think of them as Pakistan, French, Australian or Nigerian etc. troops wearing blue helmets, they are nothing more than that.

<comment><USER18> > _UN troops are simply troops rented by the UN from member countries. They > are no less or better trained nor less corrupt than their fellow soldiers > back home who are not wearing blue helmets._

At least in my country (Finland), the troops who volunteer to UN duty get specific training for it.

The training is not very long, but on the other hand, there is a selection process that means that by no means everyone theoretically eligible gets to go, so we can well argue that the troops in blue helmets are better trained (and much better paid) than the average conscript, and the process to select them also impacts who gets to go.

<comment><USER19> Agree. There is a huge difference between them.

I try to get them to tell any time I speak to any of thise veterans and what I hear is scary.

Example: one Danish officer had to go so far as to tell UN soldiers from another country that they would be shot if he took them for buying kids again.

Another story: painting endangered turtles UN blue and shoot at them just for fun. Can't say for sure who did but I have a hunch this one was Scandinavians.

</comment></comment></comment></comment><comment><USER14> Aside from its own cholera epidemic, along with water, health, and disaster relief crises, in 2014 Nepal had a lower per capita GDP than Haiti.[0,1]

I appreciate the desire to make the UN a truly global effort, but maybe there should be some filter where peacekeepers only help at home or in countries worse off. Otherwise, we're not only raising the risk of incidents like this and other peacekeeper scandals, but also taking soldiers away from vulnerable populations at home that already need their help.

[0] [http://www.tradingeconomics.com/nepal/gdp-per- capita](http://www.tradingeconomics.com/nepal/gdp-per-capita)

[1] [http://www.tradingeconomics.com/haiti/gdp-per- capita](http://www.tradingeconomics.com/haiti/gdp-per-capita)

<comment><USER20> Is there any evidence that the deployment of the nepalese soldiers had any ill effects at home? That their absence handicapped responses to those crises?

On the other hand, deploying the nepalese soldiers equips them with practical experience (some of which might well have come in handy after the 2015 quake), and I assume they are fairly well paid on a UN mission too. Injecting some cash into Nepal is not a bad thing.

<comment><USER21> From the UN website it looks like poorer countries stand to make a (small) profit on deployment:

>Peacekeeping soldiers are paid by their own Governments according to their own national rank and salary scale. Countries volunteering uniformed personnel to peacekeeping operations are reimbursed by the UN at a standard rate, approved by the General Assembly, of a little over US$1,332 per soldier per month. [http://www.un.org/en/peacekeeping/operations/financing.shtml](http://www.un.org/en/peacekeeping/operations/financing.shtml)

<comment><USER20> Obviously, salaries aren't the full cost of a military, especially not on deployment, but US$1332 is ~140k Nepalese rupees, which is 4x the national average salary.

[http://www.salaryexplorer.com/salary- survey.php?loc=151&loct...](http://www.salaryexplorer.com/salary- survey.php?loc=151&loctype=1)

I would suspect this is fairly lucrative.

</comment></comment></comment></comment><comment><USER22> The interventions in Haiti post-earthquake are an embarrassment and a tragedy. The massive outpouring of money was largely sucked up by the salaries and comforts of the administration of parasitic NGOs, governments' main provision was armed troops, and imported food aid decimated local agriculture.

Here are years of too much detail:

[http://cepr.net/blogs/haiti-relief-and-reconstruction- watch/](http://cepr.net/blogs/haiti-relief-and-reconstruction-watch/)

edit:

 _The group's failures went beyond just infrastructure.

When a cholera epidemic raged through Haiti nine months after the quake, the biggest part of the Red Cross' response — a plan to distribute soap and oral rehydration salts — was crippled by "internal issues that go unaddressed," wrote the director of the Haiti program in her May 2011 memo.

Throughout that year, cholera was a steady killer. By September 2011, when the death toll had surpassed 6,000, the project was still listed as "very behind schedule" according to another internal document.

The Red Cross said in a statement that its cholera response, including a vaccination campaign, has continued for years and helped millions of Haitians.

But while other groups also struggled early responding to cholera, some performed well.

"None of these people had to die. That's what upsets me," said Paul Christian Namphy, a Haitian water and sanitation official who helped lead the effort to fight cholera. He says early failures by the Red Cross and other NGOs had a devastating impact. "These numbers should have been zero."_

How the Red Cross Raised Half a Billion Dollars for Haiti and Built Six Homes

[https://www.propublica.org/article/how-the-red-cross- raised-...](https://www.propublica.org/article/how-the-red-cross-raised-half- a-billion-dollars-for-haiti-and-built-6-homes)

</comment><comment><USER23> I can actually understand the impulse to keep this quiet. Lack of trust in Aid missions or Peace Keeping missions is already hurting a lot of people.

<comment><USER24> These days, fucking up seems to be everything the UN peacekeepers are known for, though. The number of sexual assaults committed with impunity is staggering.

I don't recommend googling it, because some of it is so heinous beyond your wildest imagination.

<comment><USER25> Bad peacekeepers should be imprisoned. And a special place in hell is reserved for people who cover up abuse. That said, "what they're known for" may say more about the controversy-obsessed nature of media that anything. "Peacekeepers keep peace" will not sell, will it? And there are of course certain groups who would rather all authority be removed from the UN so they can operate freely.

<comment><USER20> > That said, "what they're known for" may say more about the controversy- > obsessed nature of media that anything

Yeah, they're a lot like Blackwater that way.

Snark aside, I find it deeply fascinating just how broad a benefit of the doubt UN peacekeepers get, compared to anything that has to do with the US military, or, heaven forbid it, Blackwater. Especially considering that most of what we hear about those organisations is filtered through the very same "controversy-obsessed" media.

<comment><USER26> > I find it deeply fascinating just how broad a benefit of the doubt UN > peacekeepers get, compared to anything that has to do with the US military

Yes, it's really hard to imagine why UN peacekeepers have a bigger benefit of the doubt than a foreigner invading troop. Very hard. \s

</comment></comment></comment></comment></comment><comment><USER27> ..."started by" or "(was) started with"?

Regardless of origination locale, can we (HN) try to be more universal with our topics?

<comment><USER28> I had to laugh! It's Friday.</comment></comment>


Show HN: Travitious – A better way to spend free time - <AUTHOR> https://www.travitious.com <comment><AUTHOR> Hi there,

My name is Kristaps and I'm a co-founder of an early-stage startup called Travitious.

Here in Latvia, (a small country in Europe near Baltic sea) alternative tourism is gaining real popularity. Mostly on holidays, people are willing to spend some quality time in nature but all the tourist known places nearby been visited gazillion times already and don't excite as it did before.

Travitious offers alternative tourism in combination with adventurous and mysterious problem-solving challenges. You can do the challenges by yourself or form a larger group to get the most out of teamwork. After signing up for a challenge, you will unlock the first clue and further instructions to get to the first location. Every location will allow you to explore some new places or gain a new perspective for already known ones, and take you one step closer to complete a challenge and who knows - maybe finishing at the top compared to other teams.

We would appreciate your feedback. Would you be engaged to use Travitious?

Have a good one, Kristaps from Travitious</comment>


Tech Startups Documentary - <AUTHOR> https://vimeo.com/54167947 Day Job is a film that follows the grueling process of five startup teams in Toronto's Extreme Startup Accelerator. Day Job tells the stories of these teams going through the 12-week accelerator program and explores the hardships and sacrifices every individual makes to build their ideas.<p>On top of that, it's also a raw and realtime documentation of our process of creating Day Job and building our own startup. We've turned the camera on ourselves to capture the hardships and obstacles we face everyday to make this film happen. <comment><USER2> I'm the UX/UI designer in one of the companies that is being filmed, super stoked about this coming out.

+1</comment>


Ask HN: How would you develop this? - <AUTHOR> Few stats from yesterday first deployment of https://www.openstartuplist.com/
1. 120 newsletter subscribers. 2. 2.1k page views. 3. 3 more startups added. 4. interviewed for a tech magazine.
My thoughts were that this can only go one direction - become a content platform with interviews and such. However Maybe I'm missing something? I also know the web is filled with such content/interview websites like indie hackers / starter story / failory / etc..
I don't think the web needs another interview/content platform, plus it's a great deal of work to build all that content as a side project. what are your thoughts on it? <comment><USER2> I saw Open Startup List this morning and thought that this might be the start of some standardization across open startups. That could transform this movement into something a little more serious. It could, in effect, create a new type of "public" company - companies that are transparent with key indicators but still independent. The impact could be huge on how funding and investment work.

Comparable figures across different startups in the same markets or industries would also be awesome for understanding markets and how growth work. Eventually, these figures might give other startups the ability to benchmark and understand how they are doing compared to other similar startups.

Starting with an aggregation of the different data available might be a good start, perhaps with some data visualizations. You might be able to influence what some of the key metrics companies are exposing are. You're probably already thinking about putting together more detailed guide for how new startups could start exposing their metrics. That could easily transition to a standard set of metrics these companies should expose.

If you could standardize what an Open Startup is, that could really change the game.

<comment><USER2> If you collected enough data you could become a funding platform with a good data-driven approach to risk. Startups could publish their figures through your platform to get access to appropriate funding. It could become a crowdsourced funding platform similar to Kabbage or Funding Circle but for higher-risk startups. This could disrupt VCs - that would be truly awesome.</comment></comment>


An 'in' operator for Ruby - <AUTHOR> http://rubyhacker.com/blog2/20151202.html <comment><USER2> Rails implements this as `in?`

[https://github.com/rails/rails/blob/d61baee52adcd1baebe15f10...](https://github.com/rails/rails/blob/d61baee52adcd1baebe15f1065a0805857571f19/activesupport/lib/active_support/core_ext/object/inclusion.rb#L10)

You're welcome to try and merge that into Ruby core itself. That said, "I like whitespace" isn't a good reason to add a new operator over a method. Ruby is object oriented, meaning you are calling methods on objects.

<comment><USER3> Then why have 2 * 4 when you can write 2.multiply_by 4...

What I love about ruby is its focus on making programming delightful rather than adhering to weird ass rules like 'Ruby is object oriented, meaning you are calling methods on objects.' that people pretend are laws of physics when really you can break them anytime you want, unlike laws of physics.

Similar to the way you can write

      def foo
        "bar"
      end

instead of

      class Kernel

        def foo
          "bar"
        end

      end

<comment><USER4> The difference here is that ` _` literally maps onto a method called `_ ` in Ruby. I find this aspect of Ruby delightful and it's not something I willingly chip away at.

Generally speaking, Ruby eschews syntax that invokes a protocol behind the scenes for a consistent 1:1 mapping between method syntax and the methods they invoke.

</comment></comment></comment><comment><USER5> I actually found it more interesting that Ruby hashmaps ("hashes" :S) preserve insertion order and guarantee predictable insertion.

I was taught to never trust the ordering returned by iterating over keys of hashmaps because it can be a source of bugs as you move between architectures or interpreters. If you need a guaranteed ordering, keep (and pay for) the appropriate auxiliary data structure.

Has this lesson become obsolete? Perhaps "computers are fast" so now Ruby can afford to use ordered hashmaps everywhere. On the other hand, I know Go chose to randomize iteration order of keys on purpose so developers cannot rely on them.

<comment><USER6> It's a side effect of their implementation and you should continue to not trust their default ordering.

<comment><USER5> It appears that since Ruby 1.9 they guarantee insertion order: [http://ruby- doc.org/core-2.3.0/Hash.html](http://ruby-doc.org/core-2.3.0/Hash.html)

I guess there are two approaches to solving the problem of people using your data structures the wrong way.

Edit: wrong link

<comment><USER7> As opposed to Go [0]

> When iterating over a map with a range loop, the iteration order is not > specified and is not guaranteed to be the same from one iteration to the > next. Since Go 1 the runtime randomizes map iteration order, as programmers > relied on the stable iteration order of the previous implementation.

[0] [https://blog.golang.org/go-maps-in-action](https://blog.golang.org/go- maps-in-action)

</comment></comment></comment></comment><comment><USER8> When I was first learning Ruby, having to invert my natural thought process in order to use `include?` was one of the most frustrating things I had to get used to. I think that's more a testament to how amazing Ruby is at imitating natural language patterns when that was my biggest complaint.

Having said that, I don't agree that it needs to be an operator over a method. I agree that it would be prettier, but methods provide additional benefits like being easy to override or pass as arguments to other methods (like :respond_to?). If you're ok with a method, you can easily monkey patch ruby to support an `in` (or `in?`) method yourself.

</comment><comment><USER9> One of my favorite aspects of Ruby is that everything is an object with methods. Adding global operators/functions like this would only complicate the language.

> But we also -- perhaps more often? -- ask questions like "Is this item part > of this group?" We are asking a question _about the item_.

Here we are actually asking the group a question about itself. An item would not know a group's contents.

<comment><USER10> If we're talking about the natural language question, "Is Bob part of the Physics Department," then sometimes we conceptualize "groups" as more like tags. Like, Bob has a tag that says, "->physics-dept." And so we ask Bob if he has that tag. He doesn't need to know the entire list of people who also have that tag in order to answer that question authoritatively.

</comment></comment><comment><USER11> > if item not in collection # travesty!

> if ! (item in collection) # ok

Riiiiiiiight. No more language suggestions from you, thanks ;)

<comment><USER12> Agreed

> if item not in collection

reads quite nicely. I don't see what the problem is there? Anyway, I don't think his one gripe with this is enough reason to throw the rest of his argument out.

<comment><USER13> unless item in collection

Obviously is the best choice

<comment><USER14> Yes, and it's the idiomatic Ruby one.

</comment></comment></comment></comment><comment> luiz-pv9

      if x.in? my_set   # very ugly

I guess we disagree there. This is arguably more readable than most languages with `in?` being still just a method.

<comment><USER15> I agree, I quite like it as a method as it keeps its congruence with .include? as an opposite of .in? (what .in? does should have been what .include? did from the get go).

Perhaps another way of doing this is calling the method .within?

<comment><USER16> Seconded. One of the ways in which I prefer Ruby to Python is the way that it always favours "plain methods" over "syntax that maps to special methods under the covers".

<comment><USER17> But that's not true, as far as I can tell. Ruby does allow you to write 5.+(8), but as far as I can tell most people prefer 5+8. Ruby also has special syntax for <, == and indexing arrays. What things does Python have special syntax for that Ruby doesn't? Off the top of my head I can only remember "in".

</comment></comment></comment></comment><comment><USER18> This would go against the ruby style of using predicates for this sort of thing (think `include?`, `empty?`, `nil?`).

I personally wouldn't be in favor of it.

Addition: Arguing that "Ruby isn't English" and then stating conformity to mathematical notation as a benefit seems hypocritical. Programming languages (besides APL, maybe) do not use strict mathematical notation, and we shouldn't want them to.

<comment><USER19> .include? isn't really a predicate, as predicates are typically unary. Rather, it's the 'member of' relational operator written in the wrong direction. Since we don't have '∈' in ascii, the author is proposing using the word 'in' instead.

I do disagree with the author on one point: 'not in' should also be a valid operator, representing '∉'.

But I don't use Ruby; I mostly use Python, which has these operators.

<comment><USER20> It's not a problem using non ASCII method names in Ruby: [https://gist.github.com/bhaak/91428b9aee88ac50dd1d](https://gist.github.com/bhaak/91428b9aee88ac50dd1d)

I can't think of any modern programming language that isn't unicode aware even though for the standard library methods, there are very good reasons not to use them (I know, Perl 6 does but even in this case there are ASCII fallbacks).

You should also have very good reasons to put methods on the root class of your class hierarchy.

<comment><USER21> > It's not a problem using non ASCII method names in Ruby

Making it easy for people to type them, on the other hand...

<comment><USER20> > Making it easy for people to type them, on the other hand...

That's a problem of the code editors people are using. ;-)

I'm often surprised with how dysfunctional editors people are programming.

For example if all editors would show tabs and spaces (or whitespace in general) in a reasonable way, we wouldn't have had that much pointless discussion about the correct indentation whitespace character.

</comment></comment></comment></comment></comment><comment><USER22> As for programming languages, I've always wondered how languages would've looked if computers, and as a result programming languages, had been invented in non-english speaking countries.

An immediate example that comes to mind is Python's use of None, rather than null (like in Java/JavaScript). I remember speaking in Dutch about Java in college was always slightly awkward, because it was easy to confuse "null" with 0 (or "nul"). I wonder if Guido (being Dutch) called the Python void type "None" on purpose, to avoid awkwardness when speaking about it in Dutch.

</comment><comment><USER23> I understand the perceived benefit of compositional eloquence that this may add (pretty much borrowing from Python) but as others have pointed out, this is incongruent to the design of Ruby as a language and how it treats the relation between objects and their methods. Additionally, you lose any compositional elegance you may have gained when you decided _not_ to use:

      x not in y

and instead propose:

      !(x in y)

Seems like a zero-sum addition to the language to me.

<comment><USER24> I find `not in` highly dubious - it makes the expression grammar awkward and harder to parse. Is `not in` a two-token operator? Or is `not` an adverb in this context? What else resembles this?

To cite an alternatice, in Tcl, `in` is an operator and its negation is `ni`. A cute pun and echo of Monty Python that I'm disappointed Python didn't follow :).

<comment><USER25> You should be happy, as Python 3 would have renamed it to _" Ekke Ekke Ekke Ekke Ptang Zoo Boing!"_

As to the "what else resembles this"? I would turn it around and ask what else could resemble this. I'm not sure the conclusion would be that "not in" is a good thing, but not sure of the reverse, either:

      if x not = 3

looks weird, but I think I could grow to like it.

<comment><USER19> Well, shell has the '-ne' operator, which is 'not equals' in a terser style.

Really '!=' is just an attempt at rendering '≠' using only ASCII characters. They're a bit like digraphs and trigraphs in C/C++, except everyone is used to them.

I wonder if Unicode is ubiquitous enough now that you could write a language where the real maths operators were used instead. What would that look like?

<comment><USER26> Haskell allows unicode in operators and there appear to be packages that implement aliases for the default ASCII versions.

[https://wiki.haskell.org/Unicode-symbols](https://wiki.haskell.org/Unicode- symbols)

</comment></comment></comment></comment></comment><comment><USER27> If it's this importing why not propose it: [https://bugs.ruby- lang.org/](https://bugs.ruby-lang.org/)

Ruby has a place for this sort of thing and they'll answer you.

<comment><USER28> It was proposed in 2010 and rejected by Matz in 2012: [https://bugs.ruby- lang.org/issues/3845](https://bugs.ruby-lang.org/issues/3845)

<comment><USER29> something went wrong between

Matz: I am neutral for this proposal.

... ...

Matz: This proposal is only for cosmetics. I don't want a new operator that does not introduce something new.

[I personally disagree and think the 'in' operator should be added]

</comment></comment></comment><comment><USER30> Could be worse, consider testing for inclusion in Javascript with Array#indexOf, where you don't even get a boolean value back.

The fact that the Ruby method is called include? and not includes? is annoying though.

</comment><comment><USER31> >Ruby isn't English

because it's Japanese [https://www.new-bamboo.co.uk/blog/2010/12/17/learning- japane...](https://www.new-bamboo.co.uk/blog/2010/12/17/learning-japanese-the- rubyist-way/)

</comment><comment><USER29> One day we will have a 'no-awkward'™ english like syntax: [https://github.com/pannous/english- script](https://github.com/pannous/english-script)

<comment><USER32> AppleScript tried to do just that:

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

It doesn't work out very well in practice. Inevitably the syntax diverges, and then it's pretty confusing for the novice user: why do some sentences work but most don't?

<comment><USER29> from my experience Apple's problem with AppleScript was not so much diverging syntax but constant undebuggable crashes

</comment></comment></comment><comment><USER33> Yes! Do it.

</comment><comment><USER34> /me Comes to this thread, upvotes all the comment mentionning `.in?`

</comment><comment><USER35> so.. is 10 'in' 10..100? is 100?

<comment><USER30> 10..100 is a Range in Ruby. 10..100 does include 100 (it includes both bounds). On the other hand 10...100 (note the three dots) does not.

<comment><USER36> > On the other hand 10...100 (note the three dots) does not. reply > On the > other hand 10...100 (note the three dots) does not.

To be clear, 10...100 includes 10, but not 100. So, it includes one bound: the one mentioned first, the lower bound.

      (10...100).to_a
      => [10, 11, 12, 13, ... 98, 99]</comment></comment></comment>


Using the same blogging software for 20 years - <AUTHOR> http://boston.conman.org/2019/12/04.1 <comment><USER2> > I gave up on dealing with link rot years ago. If I come across an old post > with non-functioning links, I may just find a new resource, link to The > Wayback Machine or (if I'm getting some spammer trying to get me to fix a > broken link by linking to their black-hat-SEO laiden spamfarm) removing the > link outright. I don't think it's worth the time to fix old links, given the > average lifespan of a website is 2½ years and trying to automate the > detection of link rot is a fools errand (a page that goes 404 or does not > respond is easy—now handle the case where it's a new company running the > site and all old links still go a page, but not the page that you linked > to). I'm also beginning to think it's not worth linking at all, but old > habits die hard.

After about nine years of writing, I've concluded something similar: my existing reactive approach ([https://www.gwern.net/Archiving- URLs](https://www.gwern.net/Archiving-URLs)) is not going to scale either with expanding content or over time. Fixing individual links is OK if you have only a few or aren't going to be around too long, but as you approach tens of thousands of links over decades, the dead links build up.

So the solution I am going to implement soon is taking a tool like ArchiveBox or SinglePage and _hosting my own copies_ of (most) external links, so they will be cached shortly after linking and can't break. The bandwidth and space will be somewhat expensive, but it'll save me and my readers a ton in the long run.

<comment><USER3> _So the solution I am going to implement soon is taking a tool like ArchiveBox or SinglePage and hosting my own copies of (most) external links, so they will be cached shortly after linking and can 't break. The bandwidth and space will be somewhat expensive, but it'll save me and my readers a ton in the long run._

Wouldn't a more ideal solution be archiving via a variety of external (or internal, I guess) sources the first time a link appears on your site, and then after a year automatically switching all links to archived versions? This would kill link rot in its tracks while preserving a lot of the value of links for the people you're linking to, and would cost less in bandwidth costs given the curve of access on old content.

<comment><USER2> > Wouldn't a more ideal solution be archiving via a variety of external (or > internal, I guess) sources the first time a link appears on your site, and > then after a year automatically switching all links to archived versions?

Yes, by 'shortly' I meant something like 90 days. In my experience, most pages won't change too much 90 days after I add them (I'm thinking particularly of social media-like things), but it's also rare for something to die _that_ quickly. 365+ days, however, would be perilously long. My main concern there is balancing between delaying so long to snapshot that the link dies (thus generating the manual linkrot-repair problem I'm trying to avoid) and being too eager to snapshot and archiving a version which is not done and would mislead a reader.

(I also went through all my domains and created a whitelist of domains that my experience suggests are trustworthy or where local mirrors wouldn't be relevant. For example, obviously you don't really need to worry about Arxiv links breaking, or about English Wikipedia pages disappearing - barring the occasional deletionist rampage.)

> This would kill link rot in its tracks while preserving a lot of the value > of links for the people you're linking to, and would cost less in bandwidth > costs given the curve of access on old content.

My traffic patterns are different from a blog, so it wouldn't.

</comment></comment></comment><comment><USER4> > My PageRank is still high enough to get requests from people trying to leach > off from it.

One of his guesses for this is because he doesn't try to game the PageRank system. I hope he's right.

I've argued with other people that the best way to score well on Google is to create the best website you can and forget about SEO games. The specific example we were talking about is recipe websites. They all seem to have pointless essays about _the first time the author tried ossobuco when they were an exchange student_ or something else irrelevant. The theory is that the essay is for Google and not for the poor schmuck trying to make dinner.

<comment><USER5> The essays at the top of recipes are about creating "romance", and often are intended for people as much as (or more than) SEO. They are intended to create empathy from the recipe reader toward the writer and establish certain bonafides, most of which are inconsequential to the recipe itself but help separate one recipe website and/or one recipe author/collector/distributor from another. It's actually something that goes way back in recipe books, where a lot of classic, well respected recipe books for centuries have always put the work into an introduction chapter describing the author, what their passions are, how they approach recipes. It helps sell recipe books and helps aspiring and/or home chefs see things like "oh, this author is just like me" or "if this person can make this recipe, so can I". It's just that on the internet when you are looking for one specific recipe that "introduction chapter" starts to have to move into every single recipe because people aren't going to pick up your website or blog like a book, they are going to go straight to a single page. Though even that isn't entirely unique in the world of cookbooks: there are also old traditions of narrative recipe books that treat the cookbook as a diary of sorts laying out the author's discovery and interest in every single recipe. Sometimes people want a story to go with your dry lists of ingredients and otherwise boring step-by-step directions.

It emphasizes the _art_ in cooking, that it isn't just boring "food chemistry", but that it is a way for people to connect to each other. Even if it didn't help with SEO, there are probably lots of recipe bloggers that would do it anyway because it shows passion, love for the art, narrative hooks for the reader to explore who they are, their creativity, and/or their other interests outside of just their kitchen.

<comment><USER4> What works in one medium isn't necessarily the best choice for a different medium. Books and web pages have unique constraints and use cases. Everything you've described sounds like the experience I want from a great cook book. It's something I will browse and spend time with. On the web I just want information. I got there with a specific search and I'm not there to learn about the author.

The essays probably wouldn't bother me if they would put the recipe first. If you have a great story about why sage is your favorite herb put that after the recipe. I don't care, but I suppose somebody might.

<comment><USER6> I agree with you. I wish I didn't. I enjoy the romantic side that WorldMaker points to, but the fact is that when I'm looking up a recipe on the web I'm just trying to make it. All I want talked about is whether or not it's authentic or (say) made differently for American tastes, possible substitutions, etc.

I'm not proud that this is what I've become.

</comment></comment></comment></comment><comment><USER7> Really interesting read. With the current trend of revitalizing personal sites/blogs, I hope to see more of them stick around for even 10+ years. Everyone should have their own personal piece of the web.

</comment><comment><USER8> I admit I'm mostly amused/fascinated by the list at the end of the feed types the blog supports, ranked by popularity. Gopher being more popular than Atom is a quirk specific to this blog -- it's not like many other sites these days support it, right? -- but it's the quite new JSONFeed being at top that was most surprising. Possibly also a quirk specific to this blog, but I'm not as sure of that as I am about Gopher.

<comment><USER5> My impression is that because it is the same RSS discovery process that finds both traditional RSS, Atom, and JSONFeed, knowing which one your Reader application favors and/or is using is sometimes difficult. I'd off-hand heard that many of the big, strongest web-based Readers had started favoring JSONFeed, but this is the first evidence I've seen of it. It's also why I assume Atom is so low on the list, in that those same readers likely would prefer Atom to RSS, but have switched to JSONFeed today, and RSS has the long tail of longevity and legacy reading software.

It could also just be that since it is apparently request count (rather than unique origin or such) that possibly JSONFeed tools simply request it more often than the others.

</comment></comment><comment><USER9> I must confess I have probably spent more time trying out blogging software than actually blogging. Reading that OP has his entries as HTML has given me food for thought. I am using Hugo but not being a front end developer I battled (most probably due to my lack of knowledge, time and application) so much to get my theme simple that I find myself hesitant to blog again. Moral of the story use what you understand.

</comment><comment><USER10> Love it. I've been blogging for 16 years myself. Find it a wonderful way to share knowledge and see myself changing over time. I've tried keeping a diary but it never works for me.

</comment><comment><USER11> Currently have been running essentially the same PHP + plain text files stack on my website for about 10 years. No more complex than it needs to be.

</comment><comment><USER12> I've been using the same blogging infrastructure for fifteen years. I write HTML, then run an offline script to create a static website (rss feed, tag indexes, extracts for home page). I rewrote most of it once, switching from parsing the html with regexps to using an actual html parser, and taking the time to clean up some especially ugly parts.

</comment><comment><USER13> I've been using the same WordPress installation for seven years now. I thought it was longer but I guess I was mentally counting the years before that when I just had a modified version of a gallery script (Singapore) shoeing my art and no actual text blog. I'll probably be using it for years to come.

Does what I need it to, works for the amount of traffic I get, no need to change.

</comment><comment><USER14> 20 years! That's awesome. Makes me wish I didn't replace 7 years of history on my blog in 2013.

<comment><USER3> The front page of your blog has been archived a few hundred times since 2006. I'm pretty confident you can recover most of your posts, if you want:

[https://web.archive.org/web/20060801000000*/pointlessramblin...](https://web.archive.org/web/20060801000000*/pointlessramblings.com)

<comment><USER5> At one point I downloaded my site's Wayback Machine Archive curious what I could recover. It didn't feel like enough because particularly in the regions of time where I lost the most blog posts my front page mostly only had synopses or excerpts of posts and the full posts themselves were on a follow- up page that the Wayback Machine didn't archive.

</comment></comment></comment><comment><USER15> Reading the article, it says he hasn't been using the same software, because he's rewritten all of it, since, much of it multiple times. The only thing that's the same is the content and the file format.

"You have an ax. You replace the handle. Later, you replace the head. When did it stop being the same ax?"

"When I replaced the handle."

<comment><USER2> You know, in DC ([http://dresdencodak.com/2015/05/18/dark- science-46/](http://dresdencodak.com/2015/05/18/dark-science-46/)), the character who gives that answer is turning into a villain.

<comment><USER15> Good catch!

But her brain is her superpower.

RADNAR

By the stone of Daggoth!</comment></comment></comment>


This Animated Data Visualization of World War 2 Fatalities Is Shocking - <AUTHOR> https://vimeo.com/128373915 <comment><USER2> I knew Russia lost a lot of people, but I didn't know the difference compared with other countries was so drastic including military and civilians.</comment>


Can We Trust the Libraries We Use? - <AUTHOR> http://bytes.com/topic/c/insights/961541-can-we-trust-libraries-we-use

<comment><USER2> I think this is a very interesting and important question and is very similar to one that I've considered a number of times without any real answer.

My question boils down to "can we trust compound knowledge". I'm defining compound knowledge as knowledge that builds on other knowledge. It's kind of like proofs in math, once you have learned a proof you often learn a shortcut for that proof that might not make a ton of sense at a glance and almost like "magic". Similar to using libraries that "just work", someone already figured out the hard stuff and they've abstracted it so you can easily use the concepts at a high level.

Things like frameworks are amazing tools and give 1000's (and often many more) man-hours of work for free. However just like math proofs if you don't understand what it's doing under the hood you can get tripped up when you try to do something that "looks" like it should work but actually doesn't.

I'm not advocating that we all must know what every library we use does under the hood, for most higher-level languages JS/PHP/Python/Ruby/etc this would be impossible (not just knowing what, for example, a php library does with PHP but what's happening in C to make that happen, you can take that even further and go down to machine code). We have to make some assumptions but I don't think/know if there is a hard line on how low we need to go.

Personally I stay as high level as I can until there is an issue then I will dig deeper, I'm sure there is a whole spectrum of developers ranging from ones like me to ones that read every line of a library before they include it in their project.

I don't have the answers, like I said this is something I think about a lot. Take a look at the NodeJS/npm ecosystem, you can easily see when you run 'npm install' that you are installing Library A that makes use of Library B and C which makes use of Library D and E.... So on and so forth. It's one of the best things about OS software development, you can build on what already exists instead of always re-inventing the wheel. But that comes at the cost of having to make assumptions about the code you are using. I always worry that I'm building a house of cards that will come tumbling down and even worse if it all comes tumbling down in a library I use so it's not as easy for me to fix it directly.

Again, I don't have any answers, this is just me rambling about a concept I bat around in my head all the time.

<comment><USER3> Compound knowledge works in maths, because of the solidity of proofs. You don't wake up one day and find that you need to update all your existing proofs to Axiom Of Choice 11.3.5 in order to fix a critical security bug.

Programming has weak versions of this: if all your libraries typecheck, then you can write a typecheckable program with them.

Functional languages get a lot closer to reliable composition, but things that modify state are a lot harder to reason about because the state space just explodes. And you can of course write in Coq or do formal verification in Z - it's just much more time-consuming. As an industry we'd rather get to market first than get the product 100% reliable.

<comment><USER2> > Compound knowledge works in maths, because of the solidity of proofs

Yes, I didn't mean to compare them 1 to 1 but more of in concept.

> As an industry we'd rather get to market first than get the product 100% > reliable.

Very true and as long as security isn't core focus of your app I think this is just fine.

</comment></comment></comment><comment><USER4> Absolutely, no, but the interesting question is whether we can trust them as much as or more than stuff we roll ourselves.

</comment><comment><USER5> No, we can't. And no, we don't have a choice to trust them anyway.

And what's the alternative? Write everything yourself? Besides investing a lot more work and time for the same functionality of your end-user software, you're still stuck with code that may be broken, contains bugs or security problems.

</comment><comment><USER6> One of the interesting parts of this is the distinction between different types of applications: safety critical and otherwise. If, as other commenters are saying, no we can't trust libraries, but yes we have to anyways, then a library may be good enough for non-safety critical applications and get all the adoption and work. Then you come along with your safety critical application for which this library isn't trustworthy enough (by assumption). What are you to do here?

I'd love to see a bigger ecosystem of safety critical code floating around. Libraries in it would be less full-featured and optimized than their less trustworthy counterparts with wider adoption, but it's a niche I really hope to see develop as code takes over the world.

</comment><comment><USER7> To the extent that we can trust our testing methods of those libraries.

</comment><comment><USER8> Where I work, in .NET we use various static analysis tools: StyleCop, CodeAnalysis and CodeContract. Warnings fail the build. And we are using a statically typed language of course. Oh... and gated check-ins.

It takes a few more minutes to write some code that build but it sure avoids a lot of silly bugs. Code contracts especially so!</comment>


No Time for Car Shopping? Click 'Print' to Make Your Own - <AUTHOR> http://www.nytimes.com/2014/09/28/automobiles/no-time-for-car-shopping-click-print-to-make-your-own.html

<comment><USER2> So,hypothetically, if in the future we do get household 3d printers, large ones at that, and we can 'print' out our cars. And that whole "You wouldn't download a car." becomes a very real thing. Do you think we would be able to come up with a way to prevent 'Car Piracy'?</comment>


Predicting location of one hop proxy users - <AUTHOR> http://deadhacker.com/2011/03/13/predicting-location-of-one-hop-proxy-users/

<comment><USER2> If anyone is interested in this stuff, I recommend taking a look at "How Much Anonymity Does Network Latency Leak?", by Hopper, Vasserman, and Chan-Tin, published in ACM Transactions on Information and System Security. (There's a PDF link listed on <http://www.freehaven.net/anonbib/>, which is a very large and comprehensive list of papers about these kinds of things.)

The second half of the paper deals with an attack very similar to the one described here. They're trying to do it against multi-hop proxies like Tor though, and so what they have to do is a lot more complicated. Some of the multi-hop proxy stuff is on (in my opinion) somewhat shaky ground since it relies on an older published attack that's only been verified to work when there were ~15 Tor routers on the network (now there are ~2500), but other than that it's a very solid paper.

(My background: I've been doing research related to attacks on Tor since my sophomore year, and I'm now writing my senior undergrad thesis on that research.)</comment>


Ask HN: Difference between comments/discuss? - <AUTHOR>

On my list of submissions I see each story has a link that to the comments section of the submission, sometimes the link is "comments" and sometimes the link is "discuss".
Does anybody know why that is?
Example: https://news.ycombinator.com/submitted?id=scottcha <comment><USER2> As far as I am aware, the link to the comments section appears as 'discuss' until there are one or more comments, at which point it changes to 'x comments'.

<comment><AUTHOR> Check out entry number 1, 2 and 7 of <https://news.ycombinator.com/submitted?id=scottcha>

1: discuss, no entries 2: comments, entries 7: "1 comment", entries</comment></comment>


Spotify reportedly has 1.4 million members—and 13 percent of them pay - <AUTHOR> http://venturebeat.com/2011/08/08/spotify-reportedly-has-1-4-million-users%E2%80%94and-13-percent-of-them-pay/

<comment><USER2> I'm a member, and I just introduced three of my friends to it. I'm more surprised that the number is as low as it is.

The ads are very, very well done: They're intrusive enough to be an incentive to pay, but they're not annoying, like some of the ads that come up on other sites. They're for reputable products from recognized companies, and probably at least half of them are for "Did you know that Spotify does X? Just click ..." or "My name is Artist X, here's a sample of my new album...check it out on Spotify."

To play audio ads in my house, and not get muted (or rather, have the volume turned all the way down - the player detects when you mute it, and pauses the ad), you have to be pretty good. Spotify makes the cut.

If I had a compatible mobile device (my 1st gen iPod Touch doesn't make the cut), I'd definitely pay for it. If my girlfriend had uncapped internet, she'd have it as well.</comment>


Balancer Battle – Load testing HAproxy, Nginx and HTTP-Proxy's WebSocket support - <AUTHOR> https://github.com/observing/balancerbattle

<comment><USER2> > nginx and haproxy were really close, it's almost not significant enough to > say that one is faster or better then the other. But if you look at it from > an operations stand point. It's easier to deploy and manage a single nginx > server instead of stud and haproxy

From an operations standpoint, haproxy has other features (failover, cli management, clustering) that actually makes it a much better load balancer. I usually install all three haproxy, stud, nginx because they are each very good in their specific niche. As for the simplicity of installation, that can be handled with a configuration manager.

<comment><USER3> In fact, I've often used nginx in front of haproxy as an easy ssl offloader (this was before stud was as stable and complete as it is now).

HAProxy also has a raw tcp mode, which is great when you have to balance non- http services.

</comment></comment><comment><USER3> As a simple reverse proxy for small setups, there is almost no difference between the two, especially when running on a VM. You do miss many of the advanced balancing features in haproxy, but again, this config was a basic reverse proxy, not really load-balancing anything.

I haven't worked on these in a couple years, but on real hardware, haproxy could push _much_ more bandwidth. We could saturate 10Gb ethernet fairly easily at the time, which wasn't possible at all with nginx.

<comment><USER4> +1 to your second paragraph. I've previously carried out what I considered a pretty fair benchmark: real hardware, realistic server setup, well-informed configuration of both nginx and haproxy, etc... HAProxy had significantly bettter performance in my results. Not questioning their results, just surprised.

<comment><AUTHOR> I'll be more then happy to see if my configurations can be tweaked. And I was surprised as well, but it seems that it always boils down to the configuration files a small change can sometimes yield great results as seen with a specifying ciphers for SSL.

<comment><USER3> Like I said, running as a simple reverse-proxy, they should be pretty close. The added latency is really the differentiator when going to a single backend, and that's about all you're measuring. You're control itself is still <400rps.

Now add dozens of backend servers, and start throwing a couple orders of magnitude more traffic at it, and the differences will really start to show.

Please note: I'm not saying your numbers aren't useful. Many people will be using a setup like this, and would like to know what the differences would be, if any.

<comment><AUTHOR> Thanks for you feedback, I did do some testing with multiple backends (4 different servers) but it didn't show any substantial changes. I'll see if I can do some in depth in a while.

</comment></comment></comment></comment></comment><comment><USER5> It would be interesting to see the difference with HAProxy if this line was removed: [https://github.com/observing/balancerbattle/blob/master/hapr...](https://github.com/observing/balancerbattle/blob/master/haproxy.cfg#L13)

What the option does is close the connection between the proxy and the backend so that HAProxy will analyse further requests instead of just forwarding to the already established connection.

To be fair, I don't know what nginx does - whether connections are kept open or shut down - so I'm not sure that it'd be a fair comparison.

Also interesting are the HAProxy built in SSL times. I'm surprised they're so slow. Perhaps the cipher is also the culprit. The cipher can also be specified in HAProxy.

      bind *:8080 ssl crt /root/balancerbattle/ssl/combined.pem ciphers RC4-SHA:AES128-SHA:AES:!ADH:!aNULL:!DH:!EDH:!eNULL

<comment><AUTHOR> The `http-server-close` option did not change anything. But by adding the ciphers it was able to squeeze out the same performance as Nginx. I'll update the tests accordingly. Thanks for the heads up!.

<comment><USER5> Thanks for testing these. I'm glad HAProxy passes muster with regards to SSL as we're currently moving to 1.5-dev18 from apache SSL offloading.

</comment></comment></comment><comment><USER6> How many requests are made per connection? In order to better gauge performance we need a 3-axis plot, where the response rate is measured against various request-per-connection values and connection rates.

<comment><USER7> Before each test all WebSocketServer is reset and the Proxy re-initiated. Thor will hammer all the Proxy server with _x_ amount of connection with a _concurrency_ of 100. For each established connection one single UTF-8 message is send and received. After the message is received the connection is closed.

source: <https://github.com/observing/balancerbattle#benchmarking>

</comment></comment><comment><USER8> > I had the wrong ciphers configured. After some quick tweaking and a > confirmation using openssl s_client -connect server:ip

Is this in the nginx config? Can anybody elaborate a bit further? Here is what I am currently using in my nginx config for ssl:

        ssl_session_cache shared:SSL_CACHE:8m;
        ssl_session_timeout 5m;

        # Mitigate BEAST attacks
        ssl_ciphers RC4:HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

<comment><AUTHOR> Are you referring to the cipher verification? I used:

      openssl s_client -host localhost -port 8082

Which is a openssl command. These settings were used for testing SSL: [https://github.com/observing/balancerbattle/blob/master/ngin...](https://github.com/observing/balancerbattle/blob/master/nginx.ssl.conf#L41-L47)

See <https://gist.github.com/3rd-Eden/5345018> for the output of the openssl s_client for those ciphers. You'll see that `cipher : RC4-SHA` is used here. Which is one of the fastest if not the fastest cipher available.

</comment></comment><comment><USER9> Is it just me, or are all these latency numbers terrible? For a local echo server I would expect mean latency at or below 1ms.

<comment><AUTHOR> It's not a `local` server. The proxy, websocket server and the benchmark utility are all on different servers.

<comment><USER9> I meant "local" as in "not on the other side of a continent". Here's me pinging a nearby DNS server that's 40 miles away from my desk:

      % ping -c 10 -A 220.127.116.11
      PING 188.8.131.52 (184.108.40.206) 56(84) bytes of data.
      64 bytes from 22.214.171.124: icmp_req=1 ttl=56 time=3.24 ms
      64 bytes from 18.104.22.168: icmp_req=2 ttl=56 time=2.88 ms
      64 bytes from 18.104.22.168: icmp_req=3 ttl=56 time=2.95 ms
      64 bytes from 126.96.36.199: icmp_req=4 ttl=56 time=2.90 ms
      64 bytes from 18.104.22.168: icmp_req=5 ttl=56 time=2.95 ms
      64 bytes from 188.8.131.52: icmp_req=6 ttl=56 time=2.91 ms
      64 bytes from 126.96.36.199: icmp_req=7 ttl=56 time=2.90 ms
      64 bytes from 18.104.22.168: icmp_req=8 ttl=56 time=2.87 ms
      64 bytes from 18.104.22.168: icmp_req=9 ttl=56 time=2.94 ms
      64 bytes from 126.96.36.199: icmp_req=10 ttl=56 time=2.94 ms

      --- 18.104.22.168 ping statistics ---
      10 packets transmitted, 10 received, 0% packet loss, time 1806ms
      rtt min/avg/max/mdev = 2.875/2.952/3.247/0.112 ms, ipg/ewma 200.705/3.019 ms

I can't imagine why a local websocket echo service should be 5x slower that this.

</comment></comment></comment><comment><USER10> I'd like to see Hipache tested against these as well. Hipache <https://github.com/dotcloud/hipache>

<comment><AUTHOR> hipache is build on top of http-proxy. That's why I haven't included it in the tests. They have seem to have switched to a fork of http-proxy but there aren't big (if any) performance modifications as far as i've seen from the commits.

</comment></comment><comment><USER11> Even though RC4 is fast you really shouldn't be using it: <http://www.isg.rhul.ac.uk/tls/>

<comment><USER5> There aren't a whole lot of other options yet. [https://community.qualys.com/blogs/securitylabs/2013/03/19/r...](https://community.qualys.com/blogs/securitylabs/2013/03/19/rc4-in- tls-is-broken-now-what)

You can enable TLS 1.2 ciphers, but there is a large percentage of clients unable to use them, so the fallback is RC4.

> At the moment, the attack is not yet practical because it requires access to > millions and possibly billions of copies of the same data encrypted using > different keys

So we have some time.

</comment></comment><comment><USER12> Why do people always benchmark on virtual machines running on someone else's server, and expect meaningful results?

<comment><AUTHOR> Because we people obviously don't have a datacenter in our own basement. And the common mistake people make when benchmarking is running the servers on their own machine and then use the same machine to benchmark the server it's running.

You need to have multiple (powerful) machines for this. And also, spinning up machines in the cloud is quite easy to do and allows people to reproduce the same test results because you have access to exactly the same environment.

<comment><USER12> You can reproduce them? So you can match the loads running on all the other VMs on the same host then?

<comment><USER13> You could use cluster compute instances which use hardware virtualisation, and I think gives you the whole machine. With spot pricing, you could run them for about 21¢ an hour.

</comment></comment></comment></comment><comment><USER14> Where is Varnish in this mix?

<comment><USER15> Varnish is slow as hell, see: <http://todsul.com/nginx-varnish>

<comment><USER14> And, yet, running the same test on my own varnish server yields 33k requests/sec with 50 concurrent requests and 28k requests/sec with 200 concurrent requests.

Something tells me that perhaps Tod Sul is doing something wrong.

<comment><USER15> Absolute numbers are useless. Different hardware will produce different numbers.

<comment><USER14> <http://bit.ly/14XPD3O></comment></comment></comment></comment></comment>


Apple Announces Mac OS X 10.11 El Capitan - <AUTHOR> http://techcrunch.com/2015/06/08/apple-announces-mac-os-x-10-11-el-capitan/

<comment><USER2> "dragging windows to the sides of your desktop will auto-fill that side of the screen, saving time spent on re-sizing windows to fill unused space."

I've gotten so used to this feature from Windows and various Linux desktops, I think I would be pretty lost without it.

<comment><USER3> I love it so much in Windows, I'm sometimes annoyed when I forget on my Linux work machine and drag windows to the side only to have it flip to another desktop instead of fill the side of the screen.</comment></comment>


Lazarus 2.0 RC3 – Delphi-compatible cross-platform IDE - <AUTHOR> http://forum.lazarus-ide.org/index.php/topic,43665.0.html <comment><USER3> I love the idea of a WYSIWYG IDE that's integrated with the language like this, or like VB used to be, but personally I just can't stomach the whole "have to learn yet another language to use it" problem. From what little I've played with Lazarus and FPC it seems really nice though, and I might make use of it for some smaller projects at work in the near future. I'm sick of trying to make web apps and all the ridiculous nonsense with that process.

One wonders why we don't have a more generic form of this sort of thing. And no, I don't mean the various "GUI builders" that are out there that produce code you then have to merge with your program, or an XML descriptor that you have to parse with your program, because those are still specific to having bindings for your chosen language.

There really isn't a reason I can think of that I shouldn't be able to throw together a GUI in a WYSIWYG editor and maybe define some basic behavior, then give it one or more programs it should run in the background and pass messages back and forth. Or even let me just tie events to a command pipeline and dump the result into another widget, basically just letting a GUI be part of the composable toolset following the UNIX philosophy.

<comment><USER4> > There really isn't a reason I can think of that I shouldn't be able to throw > together a GUI in a WYSIWYG editor and maybe define some basic behavior, > then give it one or more programs it should run in the background and pass > messages back and forth. Or even let me just tie events to a command > pipeline and dump the result into another widget, basically just letting a > GUI be part of the composable toolset following the UNIX philosophy.

Sure, you can do that, but you need a protocol/interface/API between the GUI and the program(s) it interacts with, and then you need to either manually consume that in the language those programs are in or have a library that handles the interaction, and the problem ends up being essentially equivalent to language bindings directly to the API.

<comment><USER5> As I view the problem, what's lacking is a _GUI markup standard_ roughly comparable to HTML. HTML browsers were not originally meant to build full-on GUI's in, but the industry has accepted the habit of forcing them to "do" GUI's using convoluted tricks and giant JavaScript libraries.

By the way, the "GUI markup language" doesn't necessarily have to be XML-only. Maybe JSON or CSV versions can be defined also. However, XML is a good start: learn to walk before you run.

As far as how interaction and screen changes could be handled, see: [http://wiki.c2.com/?GuiMarkupProposal](http://wiki.c2.com/?GuiMarkupProposal)

I particularly dig the 3-type "update" technique that uses "Attribute", "Tag", and "Delete" scope. (It's about half way down in the document.)

<comment><USER6> Weren't XAML and XUL supposed to be user interface markup languages ? Wikipedia thinks so:

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

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

<comment><USER5> If the "industry" adopts them as a standard, then they could take off (and if not encumbered by intellectual property lawsuit risk). XUL also looked "too Webby" to me, closer aligned to HTML than desktop-like GUI's.

<comment><USER7> I'd beg to differ, XUL produced very clean native UI yet accepted styling with CSS years before I'd seen anything else like it. At the time I was writing Firefox addons and I was blown away but what I could do with it vs. WinForms or somesuch

RIP XUL, you died too early

<comment><USER8> FYI, XUL is being kept alive by the Pale Moon/Basilisk team, who has created a next-generation platform based on XUL called UXP (Unified XUL Platform).

[https://github.com/MoonchildProductions/UXP](https://github.com/MoonchildProductions/UXP)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Its funnt how people will not want to use Pascal of any flavor because its perceived as old/obsolete and yet the same people have no problem firing up AWK to solve a text processing problem.

LAzarus provides a great way to address the perception. Fast, free, rich language underneath. Im about to start using in my hobby IOT stuff, but as other posters have pointed out, it works great for Enterprise level stuff as well. Single exe executable is, in my books, a huge advantage.

FTR have started looking at nim as well which seems so far to be bit of a pascal 'reborn' and it also compiles down to single executable. I recommend people look at both if you are needing to distrbute software without the normal installer drama.

Bottom line i believe there is no software silver bullet. Each language has pros and cons and the biggest challenge these days is choosing the appropriate one to use.

<comment><USER10> It's the aesthetic ("program", "procedure", "begin" and "<>") and the association with proprietary software (Borland) that make Pascal feel "uncool".

While Awk, like C, Is Unix™. Timeless, classic, already there, and _cool_. This is absolutely just subjective crap, but this is how most of us unix-heads feel :)

</comment></comment><comment><USER11> Wikipedia provided this simple description, which would be nice to see on the RC post (but perhaps they assumed the only folks interested in an RC post would be folks familiar with the tool already):

Lazarus is a free cross-platform visual integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler.

<comment><USER5> I miss WYSIWYG IDE's like Delphi, VB-classic, and Lazarus. Dealing with HTML "autoflow" and Bootstrap is a royal pain. You sketch a draft GUI that seems a good fit for the application and users, and then realize you have to jump through hoops backward on a unicycle while chewing gum blindfolded to get it right on web browsers. Jetsons WYSIWYG technology yanked from my happy fingers by an LSD "standard". (I'm assuming "office" applications here, not those needing smart-phone UI's.)

<comment><USER12> Can I interest you in a very Delphi-like IDE for building web apps with nothing but Python?

[https://anvil.works](https://anvil.works) has a WYSIWYG visual designer, with Python for in-browser code as well as server-side. (We compile it to JS.) It's even got a built-in DB if you want it (Postgres-backed). Everything in one language, full front-to-back autocompletion...all the things we missed about Delphi!

<comment><USER13> Nice product but it may have been better to release this as a opensource product because there will always be a fear that if your company goes bottoms- up, those companies who used your platform will be left high and dry.

<comment><USER12> The thing is, making Anvil open source now would virtually guarantee that outcome.

The market has spent the last few years demonstrating that the sustainable number of large companies whose main product is open source is...One. (Red Hat, if you were wondering.) Even _trying_ to become that kind of company requires a highly speculative VC-fuelled trajectory, which is famous for turning sustainable 100m-scale companies into 1% unicorns and 99% rubble.

Even Docker, which _utterly transformed_ its target market, is barely making any revenue ($25m/year on a $1.3bn valuation). All its value is busily being subsumed into Kubernetes, itself a loss-leader from a company (Google) that makes all its money from something else.

Anvil-the-company is sustainable, profitable, and growing, and Anvil-the- product is getting better all the time, because we charge for what we produce. We would _love_ to be able to give it away and keep doing that - <USER2> basically, we can't.

<comment><USER13> What about releasing it like how Node.js was released? that is a full web platform but one which uses Python instead of Javascript? and with a repository for packages which people can download and use or even contribute to?

Ultimately unless there is an active and vibrant ecosystem, there is very little reason to consider your platform - especially when there are alternatives like Node.js, Django etc.

Also, for me I will be concerned about how I will integrate Anvil with third- party libraries needed for things like reporting, authentication/authorization, E-commerce etc.

Sure, the GUI wizard is not there for Django but what if someone were to develop such a wizard for Django? or what if someone were to say that it is best to stick with Django / Vaadin/Ketura/.NET/Go/Rocket.rs even if it takes another 25% more time to develop in because the ecosystem is much bigger and we can predict with more confidence that Django / Vaadin/Ketura/.NET/Go/Rocket.rs is going to be around?

HOWEVER, if your product was available open source, is a lot easier to setup and use than Django/Ketura/... (you could provide it as a docker image) and you had a business model where you provide hosting for that solution (similar to Heroku) and/or paid support, you may end up making more money because a lot more people would use your platform - lot more than your current model which very few companies will risk purchasing.

</comment></comment></comment></comment></comment></comment><comment><USER14> Hi everyone, I just want to encourage anyone who is on the fence to give Lazarus/FPC a shot.

It's LGPL, there's no company that can take it away, and it generates native binaries without the bloat and garbage of Qt or the mental gymnastics of C++. It's cross-platform native and really wonderful. Give it a try. The community is awesome.

</comment><comment><USER15> I was eyeing Lazarus, because it is close to my particular crossplatform toolkit ideal. I think that UI toolkit should use native widgets and near zero cost FFI. So any toolkit that draws for itself is not within my ideal. The most problematic platform for my ideal is Android as the toolkit should run without NDK. C++ does not cut it. Java would work for Android, but on other platforms there's FFI.

FreePascal does compile to Java bytecode. It is an experimental feature as far as know, but it's promising.

There is lots to like about FreePascal, even if I dislike the syntax a bit. See the Modern Object Pascal Introduction¹ for reference. But memory handling is something that does not fit my vision. I would hope for something similar to Swift - automatic reference counting. I like that the compiler is not LLVM or GCC based. With ARC I can forgive even the manual UUIDs for components.

That's how I saw it from quite a big height so excuse me if I'm misguided.

At the moment Swift looks promising for me without possible transpilation to Kotlin as seen in one project ². Or D, as it should be easier to fit Java. But I have my eye on Lazarus. It certainly is much more mature a project.

¹ [https://castle-engine.io/modern_pascal_introduction.html](https://castle- engine.io/modern_pascal_introduction.html)

² [https://github.com/angelolloqui/SwiftKotlin](https://github.com/angelolloqui/SwiftKotlin)

<comment><USER5> Re: _I think that UI toolkit should use native widgets and near zero cost FFI._

If the target audience is cross-platform, that's hard to pull off. Each OS's native GUI engine is too different. Emulating a common target behavior is usually better (until a good general GUI standard comes along). Maybe your particular need is not cross-platform, but Lazarus's goal is.

<comment><USER16> FWIW LCL (Lazarus' framework) emulates the Windows behavior (there are even some reimplementations of Windows functions in non-Windows platforms to assist with that) since the API "descends" from Delphi's VCL which is Windows-only (and IMO it makes perfect sense that if you need to emulate some OS's behavior to focus on the most popular one).

The end result is obviously that under Windows things work great, under X11/Linux with the Qt (i think both 4 and 5 are supported nowadays) and Gtk2 being generally fine as they mostly behave like Windows (especially Qt) and the worst being Mac support since it is so different from Windows (that and the Mac backend was originally written using Carbon as that was easier to interface with FreePascal and still to this day is the most robust backend for Mac, although in reality both the Carbon and Cocoa backends aren't that great). And of course the programs despite using native widgets, still look like Windows programs on a Mac dress ([0] is an old screenshot from my 3D world editor compiled under Mac, the Windows-isms are clear). You can obviously try to make things look more Mac-y (and i did try a bit) but you need to do so much (and in a different branch since some changes can be very invasive) that IMO isn't worth the effort unless you really want to get that "Mac look" (but be prepared for a lot of custom code and changes to bypass LCL).

[0] [https://i.imgur.com/CMaKlZg.png](https://i.imgur.com/CMaKlZg.png)

<comment><USER5> Making it fit every OS well is indeed a tricky task. Perhaps the _option_ of using native widgets can be given. Actually, ideally there'd be 3 choices for developers: 1) A default single uniform style for a given widget(s), 2) Emulation of OS-specific styles, 3) Native widgets. But providing all 3 without making a mess or bloatware is easier said than done.

<comment><USER17> The tricky thing about cross-platform UI dev, when considering macOS, isn't just about the widgets and so on. It's things like placement, hierarchies, etc. Like you said, easier said than done. To demonstrate for those who aren't sure:

Say Joe Bloggs wants to make an alert window to confirm if the user wants to save the document, but needs to add custom text and graphics so can't rely on a default implementation on each platform. So he makes an alert window, looks great.

Except his design is utterly confusing for macOS users. See, on Windows (and plenty of Linux environments), the Save and Cancel buttons would be centred on the window, and Save would be at the left. On macOS, Save and Cancel would be aligned to the right, and Save would be the right-most button.

Okay, so that's a pretty easy thing to solve with a cross-platform toolkit. Instead of defining the placement of buttons, you just define the text and action for the default button, the text and action for the cancel button, and they'll be put in the right place for every platform. Easy.

But that's such a small example. Try scaling that to the way macOS and Windows/Linux differ in the use of view hierarchies. Windows-style tab controls vs NSTabView; Windows/Linux-style tabbed, left-aligned settings windows vs standard macOS-style centre-aligned preference windows with NSToolbar at the top; each window/section of an app having its own menu bar as opposed to macOS having a static menu bar whose items enable/disable depending on context; MDI vs document-based apps; the fact that macOS apps can still be running even with no windows open, meaning that certain parts of the UI can still be opened, and your UI must account for this despite another window that you would expect to be open (on Windows or Linux) not being in memory at all.

To an engineer, these might seem trivial or not that big a deal. To a user, that's potential data loss.

</comment></comment></comment></comment></comment><comment><USER18> Has anyone used a recent Lazarus version to create apps that can connect easily to an HTTP API?

Some months ago I had a need to create a "quick and dirty" API utility for internal use and I remembered about Lazarus.

However I couldn't find an HTTP client component that I could use. I just wanted to do the equivalent of a curl GET/POST call.

I'm not sure if maybe I'm not familiar enough with the wiki structure so I missed it, but I remember I searched for about an hour before I gave up.

I'd really like to start using a Delphi-like IDE again as I think it is a very useful and productive tool, especially for ad-hoc stuff.

Any pointers in the right direction would be greatly appreciated!

<comment><USER19> I made one that consumed the HN API a little while ago (maybe a year?) using the fphttpclient library bundled with Lazarus. It was pretty simple to use and all the documentation is on the wiki[1]. It is a lot more low level than I am used to personally but it was fun nonetheless.

[1][http://wiki.lazarus.freepascal.org/fphttpclient](http://wiki.lazarus.freepascal.org/fphttpclient)

<comment><USER18> Ah!

I do remember I clicked on that briefly but I thought it was too low level like you said, and I thought there would be something else so I kept looking.

I guess I was wrong, but it's good to know there is something that works.

It also doesn't look that bad anyway, so I might as well give it a try.

Thanks!

</comment></comment></comment><comment><USER20> I just recently loaded it to make a simple prototype application with it and it was a smooth and easy process. I still hesitate to fully do a big project with it in almost 2020 (I was proficient with Delphi 20 years ago). But if you leave the tech-coolness factor aside, Lazarus is a powerful tool.

</comment><comment><USER21> Free Pascal has come a long way. When I first messed with it, it lacked generics even though Delphi supported them. Nowadays I can compile Delphi code with generics just fine.

I don't think I personally would want to use Delphi in this day and age, but there's still a lot of useful Delphi/Pascal code out there and it's great to be able to use it on Linux.

<comment><USER22> >I don't think I personally would want to use Delphi in this day and age

I totally understand where you are coming from, however I must say having everything compiled into a static-binary is a powerful thing that we often overlook today.

Case-in-point: Around 2007 I was consulting for a manufacturing facility, basically doing accounting system programming. Their warehouse department needed a small app that basic did two things (a) Check to see if a invoice was marked paid so they could ship, and (b) Record the Fedex / UPS tracking number back into the accounting system.

This was something that was meant to be added into the main accounting application and installed into the warehouse, but there were the usual practical issues (the PC that existed in the warehouse was an under-powered Win XP machine that couldn't actually run the accounting system, so a new machine needed to be purchased...basically weeks of time were required to solve it, but we needed a solution ASAP).

On a whim, I whipped up a simple single-dialog box "utility" in Lazarus / Pascal that would check if accounting had released the invoice and then record the tracking number. Literally took me maybe 3 hours to download, program, test, and deploy.

A few months ago I ran into the product owner from that consulting gig so many years ago....after catching up a bit, asking what had changed...he sheepishly added "I've still never got around to incorporating your warehouse 'utility' into the main program yet". I said 'surely its still not that old WinXP box?' and he said no they had upgraded a few times and just copied the .exe over each time and it continued to work.

Obviously such a simple 'utility' app is not a great example of why you would choose to use a language / platform, but it is a testament that what it does well, it does well. My 3 hours of billable time amortized out over 12 years now was a really good ROI.

<comment><USER21> Oh yeah, single static binaries are awesome. I think it's one of those things that helped make Go super successful as well.

If Go had a RAD, well, it'd be very enticing to me. Sadly they have only touched on UI a little. If you want to write something with Win32 API it's not too hard and there's plenty of good libraries, but sadly there's no VCL equivalent. I'd like that.

I guess in that sense Lazarus is still useful. But, I don't find myself needing a RAD too much. What I would've used a RAD for I find Python + Qt to be usable enough for.

<comment><USER23> I feel like Go sits in a very similar space to FPC. Go has a bigger runtime but does a good job of polishing the overall language semantics to be GC- favorable without being GC-centric. FPC is more mature, though, when you consider the large number of Delphi libraries, generics support, etc. Both of them have a much less complex build story than a C++ project since they have actual module support.

</comment></comment></comment></comment><comment><USER24> Something I always wondered about - what's the current state of affairs wrt Gtk and Qt support? Both are available (different versions, even!), but which one is preferred, so to speak?

I've noticed that e.g. Debian installs the Gtk version of Lazarus by default, if you use the virtual package. But it's not clear whether this is a conscious choice, or it just dates back to when they only had Gtk.

<comment><USER16> Gtk2 is the most mature one, Qt4 follows next (and AFAIK you can build it for Qt5 too but never tried it myself) and Gtk3 is in very early stages. Gtk1 might still work too, but the only distro i know that ships Gtk1 is Slackware.

AFAIK Gtk2 is the preferred one for shipping since it is still widely available and you can simply give a binary (Lazarus uses a rather old version of the Gtk2 API by design so that it is compatible with almost every Gtk2 distro out there, including some that are a few years old). Qt4 and Qt5 require an intermediate shared library that provides a C API and Pascal bindings for it and in addition Qt4 is removed from some distros.

</comment></comment><comment><USER25> Lazarus is great, I just hope they create full support for MacOS. Curent state is more or less broken and not really usable.

<comment><USER26> I installed it a year or so back for testing, and I find it especially telling that you still have to download three independent disk images (compiler, GUI, extras).

Even sadder is the fact that instead of having a regular Mac app bundle, the installers spray things all over the filesystem. It's defensible for the CLI tools, but hardly native.

Still, I look forward to final release - I just hope it has a better native look and feel than 1.8.

<comment><USER27> try [http://wiki.freepascal.org/fpcupdeluxe](http://wiki.freepascal.org/fpcupdeluxe) to install the complete tool-char with several clicks.

<comment><USER26> Doesn't fix the single bundle issue...

</comment></comment></comment></comment><comment><USER28> Some years ago, I had to write program that extract a foot pressure platform for an orthopedist, and I had to do it with a closed-source Delphi API. Delphi was already old at that time and difficult to find. I though about Lazarus and it works perfectly with the Delphi blob file. It's a very great tool.

</comment><comment><USER29> Ah, good ol' Delphi ... Sweet memories ... (A former user of Turbo Pascal, Delphi and C++ Builder here.) For some desktop applications, using Lazarus is most likely fine. For a wider adoption, it needs a rich(er) set of VCLs and a seamlessly integrated way to build modern Web applications. Just my 2c.

</comment><comment><USER30> I was really hoping this was Lazarus Form Recovery making a comeback, but this is still nice!

<comment><USER31> Another Lazarus comes back from the dead.

</comment></comment><comment><USER32> Just advertising, you can use Lazarus to build WebApps nicely using Brook Framework:

[https://github.com/silvioprog/brookframework](https://github.com/silvioprog/brookframework)

<comment><USER33> No screenshots :-/

<comment><USER34> ...And no doc. On the FreePascal wiki, the Brook page points to a 404 on GitHub.

</comment></comment></comment><comment><USER35> From 2017: [https://news.ycombinator.com/item?id=14973706](https://news.ycombinator.com/item?id=14973706)

</comment><comment><USER36> Thanks guys. Getting better all the time..

</comment><comment><USER37> Adding C++ support will really make this project much more popular and viable option.

<comment><USER16> It is viable just fine as it is, i'm not sure what you have in mind.

In any case C++ support for Lazarus is almost impossible due to the work needed and the projects that will need to cooperate - i go into details here: [https://news.ycombinator.com/item?id=15893362](https://news.ycombinator.com/item?id=15893362)

<comment><USER37> I meant, unless you have some very specific reasons, Pascal is not the first language to pick for a new project nowadays.

<comment><USER38> I think most people, certainly me, who would be looking for a Pascal compiler are trying to avoid C++ like the plague.

It's funny when you read about languages like Rust and Go basically trying to undo decades of C-induced damage, reinventing (albeit also exceeding) thangs that Pascal/Modula/Eiffel already had.

<comment><USER37> Yet, it would be good to have an open source alternative to C++Builder. In other words, besides Pascal, to also have an option for a mainstream [native] language.</comment></comment></comment></comment></comment>


Ticketing via im - <AUTHOR>

Guys - wanted to check the need of pushing tickets over im. we just wrapped up a fantastic chat client running on S3 and GAE which integrates directly into skype, gtalk and lot of enterprise IMs.
Our product team is starting on ticketing solution and as always, we wanted to check the market feedback on this option. Will this be a killer for you?
Ticket over IM has its own advantages - speed, reply back as an IM, mobile ready, nothing to install or score over etc.
Will you switch from your existing provide. <comment><USER2> Depends, what IM protocol are we looking at?

I know one team here makes _extensive_ use of Jabber, and if we can remove one more layer of input from the user by allowing them to keep open a conversation to the ticketing system, then I can see this making a lot of people happy.

Would I switch from my current provider? The timeline is that our current ticketing system is just a one year holdover until something better comes along.

tl;dr - we'll see.

</comment><comment><USER3> Personally I wouldn't use it. The biggest problem with ticketing for most teams isn't speed - it's sorting through the noise to identify the bigger picture (i.e. 5 tickets might all be for different parts of the same thing).

However, if it was a way to be notified of tickets in an existing solution like Jira and be able to add comments - THAT would be hugely useful. Essentially Growl for ticketing. =)</comment>


Python in production engineering - <AUTHOR> https://code.facebook.com/posts/1040181199381023/python-in-production-engineering/ <comment><USER2> Millions of lines of Python code in production at Facebook. 5% of it is Python3.

Interesting.

I wonder if there are any interesting learnings around Unicode handling in Python 2 at this scale and use cases. I'm fairly surprised that someone like Facebook wouldn't have a Unicode monkeypatch for Python 2.

<comment><USER3> While a loooot of libraries are Python 3 compatible now, There are holdouts among python libraries with heavy C FFI elements. So if you have just one of those in your stack, it becomes really hard to use Python 3.

Though honestly, I feel like Facebook could, you know, pay people to port the needed projects to Python 3.

<comment><USER4> > So if you have just one of those in your stack, it becomes really hard to > use Python 3.

That, exactly that, is the mess that was created when Python 3 was released as it was.

When facing a new project you don't always know exactly what libraries you'll need to tap into. And so, from both a business and technical perspective, the correct decision is to go for the version that will not shaft you half way during development. And that's 2.7.x.

I'm sure they folks behind Python are very smart but they have shown to not have a solid understanding of how business works. Unfortunate because the impasse it has created is almost impossible to fix.

<comment><USER5> Though some projects are still written in COBOL, sometimes we get to pick better technology. It takes time. Python has been around for more than 25 years. They can plan for the future.</comment></comment></comment></comment>


Facebook - Introducing Your New Navigation - <AUTHOR> http://blog.facebook.com/blog.php?post=287459122130 <comment><USER2> I guess I should start filtering Facebook related posts for a while to avoid all the user revolt that is going to happen.

Although, the facebook platform is being treated like a first class citizen with this new design which is good for developers and "facebook startups." Also, seems like they are gearing up for an agressive play in "real-time search" with the search bar so front and center.

<comment><USER3> I did the mistake of scrolling down to view the comments to that blog post, and sure enough, every single one of them are asking Facebook to change it back.

It's going to be as it'll always be: Four weeks of bitching and moaning, and after that everyone will have forgotten what it looked like before. You have to laugh about the predictability of it.

</comment></comment><comment><USER4> This is significant news for one reason - this is the first time in the history of the platform that Games are treated as first class citizens. It would be irresponsible to deny the unique and significant impact games have had. They've been a blessing and a curse, causing some people to rabidly check their farm everyday, and causing others to quit Facebook over the piles of spam.

We will see what happens from here.

</comment><comment><USER5> Good, the fixed-position bottom bar with obscure icons is gone!</comment>


Show HN: Unscatter.com displays the Facebook share count for search results now. - <AUTHOR> http://www.unscatter.com/search/?q=hacker+news

<comment><AUTHOR> There's a little more info about what I've been up to and what I'm working on in the blog post covering this - <http://company.unscatter.com/post/5196475329/may-4th-updates>

I figured I wouldn't waste anyones time aiming the post at the blog and instead linked directly to example search results.</comment>