Mark Zuckerberg Is Acting Like Someone Who Might Run for President - <AUTHOR> https://www.wired.com/2017/01/zucks-sure-acting-like-someone-might-run-president/ <comment><USER2> I'm shocked there doesn't seem to be a mention of his complete lack of a natural, engaging personality as being the number one reason why he would never stand a chance as a candidate.

Admittedly I haven't watched many interviews recently, but has he improved his onscreen personality at all since the famous D8 interview? Judging by some more recent ones (ex the one with Jerry Seinfeld), perhaps not.

<comment><USER3> As we learned from the Nixon Kennedy debate, appearance matters. Mark may be a very capable tech leader but little of that carries over to commanding the most powerful military in the world.

</comment></comment><comment><USER4> If he does, he will guarantee that his opponent wins. Voters these days seem to hate Silicon Valley types. It'll be like the Clinton loss, but on steroids.

In fact, we should probably all band together to stop him from running under any major-party banner.

<comment><USER5> _" It'll be like the Clinton loss, but on steroids"_

In this scenario, how many million more votes does he get than his opponent? Clinton got 2.9 million more, so when you add steroids does this number go up?

<comment><USER4> Honestly, I wouldn't be surprised at a 5 million vote majority losing the Electoral College _again_. It's a structural problem, not one of the individual candidates. The system was designed to over-enfranchise rural landowners, particularly _slave-holders_. The more the population urbanizes, the greater the skew of the College vote away from the popular vote.

<comment><USER6> It's designed to require a President that has trans-regional appeal. It does pretty well at that.

<comment><USER4> I don't really see how, seeing as the President doesn't end up having to appeal to rural Californian Republicans, urban Texas Democrats, or in fact anyone outside the four or so "swing states" whose outcomes actually have nonzero uncertainty. It's been most effective at setting the stage for regional warfare or breakup of the USA along the lines of the Civil War.

<comment><USER6> It certainly does. You can't win the Presidency unless you have appeal across several regions.

Hillary crushed the northeast and the west coast but that was mostly it regionally and she didn't win. A little appeal in the southeast or midwest and she would have won.

</comment></comment></comment></comment></comment></comment><comment><USER7> Zuckerberg isn't dynamic enough or even enough of a character (think Trump) to rally up enough people to _win an election_.

He would get a great deal of votes for sure.

But among other things, lack of the wow factor, and well this was one of Hillary's drawbacks. Ditto for Mitt Romney.

The main thing he has going for him is name recognition (a big factor for sure and honestly the only reason anyone would take him seriously as a candidate).

And despite what anyone thinks of Trump he did have a great deal of life experiences with a wide range of people (of all types) in multiple businesses vs. Zuckerberg who essentially went from dropping out of college to Facebook. As such I am not sure of his innate decision making ability given that most of the things he has accomplished have been done with handholding of the people around him.

<comment><USER8> Good points but it's worth considering what the world will look like in several years. The appeal of a predictably dry personality that centers around data-driven approaches to policy might be a welcome departure. A generation of youth, foreign to life before FB, would also have a deeper connection despite any complaints. In a sense, Zuckerberg already governed their lives, it's familiar and if a Trump administration brings hardships it will even feel nostalgic from a more innocent era.

To be clear, I oppose all Kings, just speaking to the circumstance.

</comment></comment><comment><USER9> He recently announced that he is not an atheist any more. I'm thinking maybe this is related to his political ambition. I once had a discussion with an American friend on whether America would accept an atheist president. His opinion was that it's gonna be difficult.

<comment><USER10> I'm American, and I'd definitely agree with that assessment. I think a lot of people in the US would probably refuse to vote for a self-described atheist on principle regardless of any of the other characteristics and views of the candidate. Things have been changing for a while, but I don't think we're there yet.

</comment></comment><comment><USER11> Buy Twitter, kick Trump off both in 2017, start running in 2018. I could live with that.

</comment><comment><USER12> Surely he's smart enough not to get into politics. I fail to see the upside for anyone at his wealth/power level.

<comment><USER13> Donald Trump wanted to be president so he could build resorts all around the world, using political clout to get favours.

Mark Zuckerberg would do the same thing, except he wants facebook everywhere instead of resorts. I could see him forcing ISPs to upgrade internet infrastructure, closing software patent loopholes, basically fixing all the stuff that makes technological development really annoying.

<comment><USER12> This is the only possible reason that might be helpful, but even in that case I would say that it's a distraction.

Better/Easier to buy the congressmen and presidents off to build legislation in your favor.

</comment></comment></comment><comment><USER14> He's acting more like someone that's finally bored with business and wanting to delve into philanthropy. Not an uncommon pattern for people with more money than they can ever spend.

<comment><USER15> It seems to me the opposite, he already has more money than he can ever spent, now he wants power.

<comment><USER12> Except power in US politics is fleeting. 8 years. That's the most you can be at the "top." Maybe being a long standing senator is better - even then though, it's a fight every 6 years.

You can however influence successive political parties around the world if you have a big enough company.

<comment><USER8> 8 years is a century to network with the most powerful people in the world.

<comment><USER12> It's literally less than a century, and look at what former presidents are doing now.

Who has more power over a longer period of time: Bill Clinton or Bill Gates? I argue Gates.

It's just going to get magnified too, as technologies dominate everything. The government can't keep up.

The US Government is not designed such that the president or any other job "runs the country" or has crazy power. That's the whole point of the constitution. Even if you consider nukes, despite what you read in policy they aren't a one man decision. People resign instead of using them, just look at the NIxon/Kissinger conversation about nuking Vietnam.

So there is an upper limit on power in the government. There is no upper limit on power in the private sector.

<comment><USER8> > It's literally less than a century

That's not how metaphors work. When you're the head of state, you have unique access and influence that others need. You become an unavoidable actor in the networks of power that manage the worlds resources. Your access will go deeper into those networks than by any other means.

> It's just going to get magnified too, as technologies dominate everything. > The government can't keep up.

That's not how the world works. Technology is simply an extension of our will, we fashion it to govern us, but it can never replace us. The "private sector" is just another branch of governance and exists purely in legal forms. I do believe technology can be a liberating force and that we can design a system of incentives that reduces the need for human dependencies but it would be absolute terror to remove us from the instrumentation of the world.

edit- can't reply to you below so I'll reply here: AGI is just the latest fashion, it's still technology which means it still extends from our will. Technology is an ancient human practice, digging into the world with our understanding and forming tools to manage it. It's as old as clothing or written language. That we can replicate or automate our will doesn't negate that our will is being represented and that everything must conform to our needs or be taken as damage. It's fully possible to exterminate ourselves by removing our role from the universe but this isn't something I advocate.

<comment><USER12> _When you 're the head of state, you have unique access and influence that others need._

You have the same access and influence as a F50 CEO, but for longer.

 _Technology is simply an extension of our will, we fashion it to govern us, but it can never replace us._

Famous last words.

edit: I'll just say it, the company (and I believe it will be a company) that builds AGI, will for a brief period be more powerful than the collection of all nation states.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I know it is mean to say, a 5'7" tall man will never be President in this day and age of celebrity elections. The last 5'7" president was John Adams. The last president under 6 feet was Jimmy Carter, and he was 5'10". Almost all presidents have been over 6 feet tall.

<comment><USER17> Just for clarification, George W. Bush is 5'11".

</comment></comment><comment><USER18> Problem with rich businessmen/women running for office is there are always a lot of consultants who tell them yes you have a good shot no matter the odds. Rememeber Trump was an entertainer, they have a better track record.

</comment><comment><USER19> The fact that he runs Facebook, is well, disconcerting... but if trends continue the 2020's will be in desperate need of people who actually understand the full implications of technology on social problems. I'm not sure Zuck would be my first choice, but a Silicon Valley mogul in the Whitehouse in the 20's might be necessary. If you look at Trump as the push back on globalism, there's going to be a pushback on technology on a very real scale in the near future. Globalism is our sneekpeek into the future.

</comment><comment><USER20> Zuckerberg 2020: Because enlightened despotism is better than the regular kind!</comment>


An Evangelist for Remote Work Sees the Rest of the World Catch On - <AUTHOR> https://www.nytimes.com/2020/07/12/business/matt-mullenweg-automattic-corner-office.html <comment><USER2> This is an interview with Matt Mullenweg, the founder/CEO of Automattic, which, according to the article, has 1,000+ fully distributed employees now, 15 years after its founding. This was a fun insight from him to close out the "Corner Office" column:

"This column is called Corner Office, and most people who choose to have offices are usually the bosses. And I've been to the offices of billionaire C.E.O.s that have their own private bathroom, beautiful art and couches. But these are all things that you can have in your house. What I love about distributed organizations is every single employee can have a corner office."

Of course, the assumption here is that you live/work somewhere in which you can have a separate, closed-door, home office. This is true for most people who did distributed work pre-Covid (for example, 100% of my fully distributed team of ~25 engineers/PMs/designers has this setup or something close to it) but this may not be true for those who had to adapt quickly in small urban apartments, as is common in NYC or SF, post-Covid. That said, given how software engineers are usually comp'ed and given how much a software career relies on autodidacticism and flow, I think every software engineer should strive to have a serene home office from which to work. It's a good investment in your career and your sanity.

<comment><USER3> We are looking at selling our house and moving precisely because I do not have anywhere to have an office. I've been working from a chair in the corner of the living room (not even a table, laptop earning its name) for the past 3 months.

<comment><USER4> Kitchen table, and everyone else fucks off somewhere else unless they're bringing in more.

<comment><USER3> Nah, my kids use the kitchen table for their school work. That is more important to me than my own comfort.

</comment></comment></comment></comment><comment><USER5> He doesn't really address the biggest issue I (and many of my colleagues) have faced with remote work.

If you're head down on a coding task or writing a document or doing some piece of design... having your own space is amazing. I love that I can work at home (put music on _speakers_ , not headphones) and just go for it.

But it sucks for collaborative meetings. There is really no substitute for getting people in a room with a whiteboard.

Yeah, there are online whiteboards and video conferencing and whatever, but they still aren't as good and likely never will be (at least until we get some kind of amazing VR/AR workspace).

I'm curious as to how other people have solved this.

<comment><USER6> I work for Automattic and done fair bit of these collaborative meetings.

We settled on something like this: \- Write a memo asking for obvious requirements \- Get feedback \- Ask more questions \- Get feedback \- Schedule a call, launch into chatting in detail \- Write a memo \- Get feedback \- Prototype \- Schedule a call...

There is nothing really you can do live that you cannot do online. You don't get progress thanks to some fantastic insight while "brainstorming". You get progress by chipping away at the idea and having space to think. Having a weekly cycle of memos and Zoom Calls will handle this.

Face-to-face really shines when you have to sync up on priorities and goals. It's a great way to get everybody feeling they communicated and are part of the same group. I don't mean this in a derogatory way - people need this feelings to work and overlooking that part of communication is causing the breakdowns. But after you get all your human rapport building out of the way, async is really effective.

Communicating online is not a natural skill and should be deliberately practiced.

I packaged all my learnings into a free mini-course:

[https://deliber.at/chat/](https://deliber.at/chat/)

</comment></comment><comment><USER7> The guy interviewed here (Matt Mullenweg) has a good podcast with Sam Harris from right after the lockdowns started occurring. One of the biggest takeaways and something that my team is doing now is to use a shared document that everyone can edit in real-time during meetings. Basically anything that people think is relevant gets recorded. It's been really helpful for developing test case plans. The whole podcast is fascinating though - iirc it's 2.5 hours about how to do remote work.

<comment><USER8> We tended to do this anyway; Etherpad was used by a lot of teams for agendas. But we mostly use GSuite these days and the even more widespread switch to video calls--we were already pretty distributed--has led to a shared agenda doc being a standard practice for all but small meetings. Shared docs are an under-rated "secret weapon" for remote collaboration.</comment></comment>


Should Your EC2 Be a Lambda? Find Out with This Serverless Cost Calculator - <AUTHOR> https://servers.lol/#/ <comment><USER2> Pah, back button doesn't work.</comment>


Red Hat Is the Gatekeeper for ARM in the Datacenter - <AUTHOR> https://www.nextplatform.com/2017/05/05/red-hat-gatekeeper-arm-datacenter/ <comment><USER2> So you're going to just systematically submit every recent story from that domain?

Again? You did the same thing yesterday and the day before.</comment>


Dirty lens article - <AUTHOR> http://kurtmunger.com/dirty_lens_articleid35.html <comment><USER2> Long time since I did any optics but this basically just convolution. The impact at the output plane of dust/imperfections on the lens is (approximately) a 2D fourier transform of the dust/imperfections. If you have a single dust particle (essentially an impulse) on the lens this will be convolved into a dc response at the focal plane.

[1] [http://en.wikipedia.org/wiki/Fourier_optics#Fourier_transfor...](http://en.wikipedia.org/wiki/Fourier_optics#Fourier_transforming_property_of_lenses)

<comment><USER3> It's approx. convolution and the impulse response varies with the distance to focal plane: at focal plane it's impulsive but near the lens it's quite flat (almost DC -- it's simply a "zoomed in" aperture, which is a big circle usually).

</comment></comment><comment><USER4> The wider the lens, the more dust on the front element affects the picture. Especially specular light (bright light sources, especially the sun).

If you have a very wide-angle or fisheye lens (e.g. gopro) then you will most certainly have lots of nastiness in your photo from having a dirty lens.

You'll notice that in this person's test shots, he has no specular light or sunlight in the images. If he did, the test would have had completely different results.

If you have a gopro, try it yourself. Have a dusty or greasy lens and take a picture with/without the sun in it and the photo will certainly be worse.

Same with my mobile phone - if the front glass is greasy, well, of course the photo looks much, much worse.

I'm a professional photographer specializing in 360º imagery shot with fisheye lenses, so I know this stuff very well from experience.

<comment><USER5> Indeed, I ran into this today. Took the following photograph with a 28mm (wide angle) lens on a Pentax K-x DSLR (crop sensor, so 42mm equivalent) + a polarizing filter, stopped down to f/22: [http://i.imgur.com/Wu7HTpo.jpg](http://i.imgur.com/Wu7HTpo.jpg)

If you look at the bottom right, you'll notice a lot of crap. It's all just dust from the filter. It's fixable in Lightroom but it's a huge pain, as I need to manually remove each speck. These dust specks did not appear when the lens was stopped to f/8-ish.

Regardless, in response to OP, I've seen some really nice photos taken with really beat-up lenses. But if you push the bounds at all and start to photograph more challenging material exposure-wise, I imagine it'll get bad real fast.

<comment><USER6> The reason why this is happening is because your entrance pupil is small (1.3mm) and close to the dust.

The crop factor is what makes things bad here: higher crop factors means that for a given field of view, the dust is closer (because the lens is thinner) and the aperture is smaller relative to the dust.

Paradoxically, the dust is actually less problematic for more challenging exposures.

You may wish to use a wider aperture, on a 28mm lens and with modern sensors, f/22 is likely to show blurring from diffraction through the small aperture. The Airy disk will have a diameter of 30 µm, but the pixel pitch on a K-x is around 5.5 µm... which means that you have a ~6 pixel wide blur applied to your image before you even press the shutter!

But the good news is that the depth of field on a camera with a crop factor is deeper for the same field of view and aperture.

<comment><USER5> >But the good news is that the depth of field on a camera with a crop factor is deeper for the same field of view and aperture.

To be completely honest, that's the bad news and the reason why I miss my film SLR so much after I switched over to digital. I absolutely adored my 50mm normal lens's nice thin depth of field, and I miss having that on the smaller format sensor.

>f/22 is likely to show blurring from diffraction through the small aperture

I'm gonna have to learn about these concepts -- I'd heard that diffraction causes decreased sharpness when stopped down but I didn't know it was a significant issue in modern lenses. I do know that I get significant chromatic aberration on my 28mm, but I always figured it was due to its retrofocal design. Do you have any reading recommendations?

<comment><USER6> > Do you have any reading recommendations?

Not really. I remember using a table which gave you the optimum aperture for maximum sharpness, based on the distance that the lens moved when focusing between the front and back of the subject. That kind of thing is only really useful for MF and larger, and I only used it for things like landscapes where sharper was always better. The problem with small formats is that it's hard to know how far the lens is moving, so you can't really use this technique.

In the most general terms, opening your lens all the way gives you aberrations, closing it all the way gives you diffraction, so you'll typically shoot in the middle unless you have a reason to do otherwise. For a rule of thumb, take the apertures you use for 35mm and adjust them by the crop factor. So if you liked to shoot everything at f/8 with 35mm (a common choice), then lean towards f/5.6 with your 1.5x crop digital. Conversely, if you start lugging around a 6x7cm camera, you'll use f/16 as your default.

Yes, for really small cameras, this means really big apertures. The iPhone 4S always shoots at f/2.4, for example.

</comment></comment></comment></comment></comment><comment><USER7> I love this! As a hobbyist in a couple of different gear-heavy fields (photography and guitar/recording), I've seen from experience how much gearheads obsess over exactly the wrong things. They'll worry about second or even third-order issues, while ignoring basic, obvious issues.

The internet is full of detailed discussions of camera lenses - barrel and pincushion distortion, lateral fringing, all sorts of issues you can only see when you're photographing test charts on a wall, with plenty of learned comments from other guys who shoot test charts on walls. This stuff panics people who try to buy cameras, thinking their ability to take good photos will be governed by these abstract numbers.

Feh.

<comment><USER8> Maybe I don't see a lot of good photos because I'm not looking hard enough. But the problem with "GAS" is that it puts all the focus on the gear and takes attention away from technique/lighting/composition etc. You can make great photos with a pinhole box camera if you wanted to (and I'd probably want to see them more than some rich shmoe with a brand new DSLR with 400 mgpx's photos).

Spend your money on books, classes and prints. Not on cameras/lenses.

<comment><USER7> I always recommend two books to anyone asking about buying a camera - "Understanding Exposure" (Bryan Peterson), and "The Photographer's Eye" (Michael Freeman). These two books cover all the basics of exposure and composition in a pretty accessible way.

Those two books will get you farther toward taking good photos than any piece of gear will.

</comment></comment></comment><comment><USER9> Not a whole lot new in this article, though its "experimental" results confirm well-known phenomena regarding camera lens performance. In particular, small front-element blemishes do not in general significantly degrade optical performance.

That said, dirt or scratches become more important when there is greater depth of field, for example, shooting with ultra-wide angle lenses stopped down to small aperture. Naturally, how much image quality degradation is acceptable depends on the circumstances, there's no single rule that can be applied.

I wouldn't try to get into the laws of physics/optics governing these considerations, there are plenty of sites on the web for that. However I recommend taking a look at the _LensRentals_ site for its wonderfully practical, entertaining lens information (including info re: user-level lens testing): [http://www.lensrentals.com](http://www.lensrentals.com)

</comment><comment><USER10> True for very large lenses where the dust and front element is sufficiently far and disproportionate to the aperture size!

But for smaller cameras, _especially_ cell phone cameras, that dust and smudge is magnified immensely and has a much much greater effect. The epitome of this effect is having dust directly on top of the sensor, which obviously is visible directly. Imagine how small your cell phone camera is: that dust is only a very short distance from the sensor, and it's not much better than being right on top of it. Dust on a small lens is also proportionately larger compared to the lens and the aperture. All in all, much greater effect. This article might as well not even apply to small cameras.

Moral of the story: you should _always_ clean your small camera lenses, and especially cell phone lenses! For larger lenses, the dust and smudge has less of an effect.

</comment><comment><USER11> There's this attachment called an "Anti-Reflection Device"[0] that goes in front of rifle scopes. It's basically a honeycomb sunshade that, like the name says, minimizes reflections from the lens to make the shooter harder to spot. The cool and unintuitive thing about this gadget is that the honeycomb pattern doesn't actually appear when viewed through the scope. It's the exact same principle at play here.

[0] [http://www.amazon.com/Tennebrex-Killflash-Scope-Anti- Reflect...](http://www.amazon.com/Tennebrex-Killflash-Scope-Anti-Reflection- Device/dp/B001UCBSNU)

</comment><comment><USER12> While obviously the results show that scratches and smudges _can_ be practically unnoticeable, this article is a little misleading.

For one, dust, smudges and scratches _will_ affect the contrast of an image, and more noticeably with a deeper depth of field. I'm sure you've noticed this on cell phone shots with oil or makeup on the lens, as it's much more noticeable with deeper depths of field. This is simply because incident light will diffuse into all areas of the sensor/film, causing dark areas to get lighter than they should be.

Additionally, the results here are incomplete. The author keeps his lens aperture wide open, which will keep depth of field pretty shallow. The deeper the depth of field (from smaller apertures, wider lenses, or smaller sensors) the more noticeable the scratches and dust will be, since it will localize the effects of the diffusion on the sensor/film.

Deeper depths of field are often preferred by landscape photographers, to keep fore-, mid-, and background elements all in focus, which will make smudges/scratches more obvious. Additionally, many lenses are much sharper when stopped down (smaller apertures) from wide open. Same problem.

I think it's a bit of a shame to see a perfectly good lens ("optically and mechanically fine"), which could have been donated or still sold at full cost (no photographer worth their salt cares about body scratches), be completely destroyed because the author wanted to prove a flawed point.

</comment><comment><USER13> It proves again the basic rules for handling photo gear in hostile environment. Pick a lens that covers the needed focal distances and never change or clean it on the field, as you will risk damaging camera or decreasing the aftermarket value of your gear. If the dust on front element becomes visible on pictures, just open up the apperture.

</comment><comment><USER14> rule of thumb - the longer the focal length the less are the effects of scratches on the front lens. ultrawide likes of 35mm and smaller are very sensitive to material on the front glass element. this translates into some really nice savings if you want to get a lens in 90mm+ range for example if there is a scratch on the front lens.

</comment><comment><USER15> Given all the comments, I'm surprised to see no one mention flat field images and flat field correction. This would be the proper way to measure and even correct for blemishes and dust like this.

Basically a flat field image is an image of a completely uniform illumination pattern (i.e. given a perfect sensor and lens with no vignetting all pixels would have the same value). This lets you measure all sorts of things, but comparing flat field images of before and after dust/tape were applied would actually highlight the exact effect.

Using flat field correction, you can even correct for these issues to a great extent by scaling the pixels as appropriate to basically account for their being light paths between the object in the scene and the image projected onto the sensor.

</comment><comment><USER16> If only this was true for sensor dust as well.

<comment><USER17> Sensor dust is the worst. I switched from shooting on Canon DSLRs several years ago and now shoot on Sony mirrorless - the NEX-7 and a7R. Because I exclusively use primes I tend to swap lenses quite a bit and as a result my sensor gets dusty fairly quickly without a mirror to shelter it. Even with a blower bulb it tends to show up. This isn't much of an issue because I also like shooting wide open including down to f/0.95 and sensor dust is never an issue when shooting fast, but then I'll decide I need to go to f/11 or slower for a landscape shot and boom, I've got smudges in the photo thanks to the dust on the sensor.

<comment><USER16> Yep, I'm on a Fuji x-pro1 mirrorless. Ended up getting a boulder of dust on my sensor when switching lenses at the top of Castillo San Cristóbal in San Juan.

</comment></comment></comment><comment><USER18> When the camera is stopped down (like for a bright desert scene) isn't just the middle of the lens being used?

<comment><USER19> No. Don't forget, the in-camera image is inverted. When a camera is stopped down, the edges of the image are mapped by the opposite edge of the lens, more like a pinhole camera.

</comment></comment><comment><USER20> Placing stuff on your lens usually affects bokeh - try f1.4 in the night with distant lights in the background with something stuck on your lens - you'd see the effect everywhere ;-)

</comment><comment><USER21> So weird. I've been reading Kurt Munger's reviews for years and now to see one of his articles on HN. Strange crossing of paths.</comment>


Systemd compat for doas - <AUTHOR> https://marc.info/?l=openbsd-tech&m=149902196520920&w=2 <comment><USER2> A little more explanation is available here: [https://github.com/systemd/systemd/issues/6237#issue-2393780...](https://github.com/systemd/systemd/issues/6237#issue-239378060)

I don't know what the POSIX standard says about having a number as the first digit of your username. If it's not allowed, systemd is doing the right thing by rejecting the username, while doing the wrong thing by defaulting to root and starting the service. If a username is invalid, whatever the reason, that service simply shouldn't be started.

<comment><USER3> As previously discussed it's allowed by POSIX and supported by major distributions and Unixen. The systemd team's assertion that it's not is based on a couple of programs, mainly one Debian utility. Basically they don't believe that it should be allowed and they don't want to put in even the tiniest fix, so they're asserting that it's invalid based on prejudice.

<comment><USER4> Zbigniew Jędrzejewski-Szmek is a systemd developer and clearly wants to put in this tiny fix:

* [https://github.com/systemd/systemd/pull/6300](https://github.com/systemd/systemd/pull/6300)</comment></comment></comment>


Tables - <AUTHOR> https://www.lua.org/pil/2.5.html <comment><USER2> In 2010 I worked on building a "dynamic" web app that would run on a very tiny embedded device -- no MMU, about 130 bogoMIPS. Think of an old wireless router you have at your parents' place.

There aren't that many options for building a "modern" web backend on something like this -- the most popular being C compiled into executable(s) served via thttpd and CGI.

Things like templating, or JSON parsing for that matter, would be much easier in something higher level than C, but python, PHP, node, etc are simply too huge and slow.

I discovered Lua, and it fit the niche exceptionally well. The syntax and the data structures takes a while to get used to, but once you do, they feel rather powerful, especially for such a lean interpreter. It compiles into something like a 120k statically linked executable and is (relatively) phenomenally fast -- not only for the tiny computer on which I had to run it, but also for me, who had to write a complicated web app using it. I almost felt like a demoscene developer -- I was able to run something that would otherwise require a full featured machine on a tiny embedded board. Even to this day, LuaJIT, OpenResty, Lapis remain up there on the benchmark tables when it comes to web apps.

<comment><USER3> You can run PHP on router with 3Mb of storage and 64Mb of ram. [http://ph7.symisc.net/](http://ph7.symisc.net/)

DIR-320 Used php for it's GUI.

<comment><USER4> Back in 1998, Apache, PHP, Mysql and Netscape 4 did fit into 16 MB of RAM :)

</comment></comment></comment><comment><USER5> One thing that I like about Lua over Javascript is how self-documenting, fun to write, and easy to read it is. It has a very simple syntax, but the extensibility of its core structures (like tables) let you accomplish a lot with that simplicity.

Its 3rd-party libraries also tend to be closer to C/C++'s "drop-in" solutions like STB[1] than the enormous JS ecosystem which often requires extra tools like Node and/or extra packages like JQuery.

Admittedly, Lua's ecosystem is much smaller than Javascript's, but in my experience Lua is vastly easier to maintain. You can certainly write bad Lua, but it's one of the only languages where I don't implicitly dread reading other people's code.

It is sort of annoying that tables which are treated like arrays are 1-indexed by convention, though.

[1]: [https://github.com/nothings/stb](https://github.com/nothings/stb)

<comment><USER6> Does C/C++'s STB or Lua's 3rd party libs cover cross-browser quirks and http methods like JQuery does? It sounds like Lua/C and JavaScript are used for totally different things. And Node isn't an "extra tool" it's a server. No doubt JS projects sometimes come loaded with excessive dependencies but Node/JQuery are bad examples and not equivalent by any stretch to STB.

<comment><USER5> Nope; Lua is not a good choice for a website's frontend.

But people use Javascript for a lot more than just websites, and I've lost count of how many times I've been frustrated that a JS library is distributed exclusively through package managers like NPM even when the library is not specific to a browser.

<comment><USER7> NPM isn't specific to a browser.

<comment><USER8> Is NPM even usable from the browser in any capacity? I would argue that it's specific to everything except browsers!

<comment><USER9> NPM is definitely usable as a package manager for frontend Javascript applications, just needs a little more complicated webpack or similar setup than a node.js app.

</comment></comment></comment></comment></comment></comment><comment><USER10> Lua's feature set is tiny, and that's precisely what I love about it. Ruby feels a lot like Lua, but I vastly prefer Lua to even Ruby, because of how minimal it is. As someone who writes ES6 on a daily basis, I feel that Lua's syntax explains itself -- you can start writing Lua code in 30 minutes. People have always said that Python is fun to write, but I've never felt that about Python. On the other hand, I can definitely say that Lua is pleasing to write in. Python, to me, has always felt like a chore compared to Lua.

<comment><USER11> Funny, it's Lua that feels like a chore to me, because most things take around twice as many lines of code than in Python. (Though some of those lines are just 'end'.) I want to like Lua more because it's so much simpler and faster, but it could've come closer in expressiveness and catching errors.

<comment><USER12> Same is true for me too; lack of batteries (std lib) isn't helping either.

</comment></comment></comment><comment><USER13> Started coding in Lua 2 months ago and instantly fell in love.

Higher order functions, coroutines, the ability to return multiple values from a function, no coercion on comparison operators make coding in Lua a breeze.

You can learn most of the language within a day.

Ofc not everything is perfect: The package ecosystem is growing but still small compared to other languages. Anonymous function definitions are pretty noisy.

Still I think it's one of the best designed languages you can find.

<comment><USER14> Lua is amazing in that it is very small, portable, and easily embeddable. But aside from those three things, Lua is semantically almost identical to modern JavaScript.

I've embedded both and used them heavily in my various window managers, and these days I personally recommend embedding JavaScript over Lua if possible.

But when a small, portable and lightweight language is needed, there's also Sparkling[1], which is like the best ideas of JavaScript with the minimal footprint and portability of Lua.

[1]: [http://h2co3.github.io/sparkling/](http://h2co3.github.io/sparkling/)

<comment><USER15> What JavaScript interpreter do you use for embedding? I know of MuJS [1] but it only supports ES5.

[1] [https://mujs.com/](https://mujs.com/)

<comment><USER14> My JS-embedded apps only target macOS so I use Apple's builtin JavaScriptCore framework.

<comment><USER16> In my experience LuaJIT in interpreter only mode has better performance than using JSC (you can't use JIT in JSC either — only WKWebViews can JIT).

(edit: sorry this is regarding iOS)

<comment><USER14> Maybe, but my use-cases (window manager and other automation stuff) don't really have a strong need for speed or high performance. Mostly it just sits there idle 99% of the time and runs callbacks quicker than the UI that it manipulates is visibly updated.

<comment><USER16> Yeah I think it does end up boiling down a lot to use cases because the big differences b/w Lua and JS are in availability of libs / integration and perf. In my case I do a lot of 2d graphics where love2d.org is available and perf is important. :) C interop is also really important, and LuaJIT C FFI is waaaaay nicer to use than JSC C API.

I've ended up doing a lot of JS with React Native for "app-y" mobile apps though.

<comment><USER14> If perf is important, I'm surprised you're using Love2d and not just using C++ with SDL and Box2d directly. Afaik Love2d just uses vanilla Lua (and not LuaJIT) which, while faster than similar languages, is still pretty wasteful of cycles when high perf is needed.

<comment><USER17> Love2d can use luajit or plain lua.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Lua is a pleasing language to work with, but only that, unfortunately. It has never caught on in desktop apps due to a lack of suitable GUI library bindings. It never caught on in web apps thanks to a lack of suitable web frameworks.

There are at least a dozen half-implemented or abandoned Lua GUI projects, including at least three Lua-to-Qt binding toolkits and one briefly maintained by PUC-Rio (where Lua originates). But the other day I wanted to write a simple GUI to support formatting documents with a certain LaTeX template, and I struggled to find one that could guarantee that my users would be able to run the software on their various OS platforms. There are even more half- working Lua web frameworks, including Lapis, Ophal, Orbit, Sailor, and Tir, three of which have had brief moments in the limelight as the "preferred" Lua framework. There are at least three projects that attempted to add types to Lua, and no less than six parallelism libraries.

If you view it as a competitor to Python, Lua is a case study in open-source community mismanagement. There are five projects that attempt to solve every outstanding problem usually none of which has more than three regular contributors. There are many competing "Lua standard libraries", and after the falling out between Mike Pall and PUC and the controversial introduction of integers, there are four similar but distinct versions of the Lua language in common use: Lua 5.1, Lua 5.2, Lua 5.3, and LuaJIT 2.

But if you view it as a research project, Lua has been incredibly fruitful and continues to be. Any organization with the critical mass required to maintain their own internal ecosystem can use Lua without ever noticing the disarray in the wider community, and many do. It's just... annoying... from the perspective of the US/European open-source crowd.

<comment><USER19> Perhaps I'm uninformed, but I was always under the impression there were two camps:

Lua 5.1.5/LuaJIT users, and Lua 5.2+ users. Game developers, performance- sensitive developers, FFI users all tend to use the former, and when not necessary, I've seen people use the newer versions.

Is there more segmentation between 5.2 and 5.3 than I'm aware of?

</comment></comment><comment><USER19> I love that Lua uses one-based numbering, if only to point out undesirable developers who don't understand the difference between offset and count.

You don't work with pointer arithmetic directly in Lua syntax, so why would you need offsets?

Complaints about ~= as the negation of equality are as petty as well. The syntax in question isn't _just_ used by Lua, either, and it usually tells me that a developer can't respect differences between languages.

<comment><USER20> > The syntax in question isn't just used by Lua, either, and it usually tells > me that a developer can't respect differences between languages.

Actually, the two examples you bring up are paragons of asinine design. I can't imagine it being easy to justify such design decisions, your attempt to do so was wholly unconvincing.

<comment><USER19> That "asinine design" comes from decades old syntax practices like ALGOL, Ada, and MatLab.

Perhaps exposing yourself to other languages might inform your responses on debatably the largest technical forum in the industry: one with many developers from widely varying backgrounds.

<comment><USER20> Heh, you don't even try to justify it, just point out prior art in some irrelevant "languages". Yeah, definitely not easy to defend such choices. Even the fact that this turns off potential Lua programmers such as myself makes it do more harm than any potential good (and I am hard pressed to find a single good thing about these asinine choices).

<comment><USER19> In mathematics, there are multiple symbols for negation. [https://en.wikipedia.org/wiki/List_of_logic_symbols](https://en.wikipedia.org/wiki/List_of_logic_symbols)

What is there to defend? Can you explain why it's "asinine design?" You don't actually elaborate as to why, and I've provided you both academic background in mathematics and prior art. I apologize if I've missed your point.

<comment><USER20> The fact that this discussion ALWAYS comes up when talking about Lua, with people saying they won't even try the language, should clue you in how terrible these design decisions are.

<comment><USER19> You're right: This discussion always comes up with developers who constantly have petty complaints.

<comment><USER20> I would venture to say that you're just out of touch.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Lua tables are semantically almost identical to JavaScript objects. The one key difference is that any object can be a key in a Lua table, whereas all JS object keys are coerced into strings. The other more minor difference is that you use getmetatable() and setmetatable() instead of modifying or setting object.__proto__

<comment><USER21> They're identical to dictionaries/hash tables in pretty much any language, unless I'm missing something. Besides C, every language I've worked in comes with one of these things built-in. It's surprising to me that so many people consider this noteworthy today. Would someone please enlighten me as to why it is?

<comment><USER16> Because `.foo` means `['foo']` and because you can easily make sequences out of them (if you write `{ ... i1 = v1, v2, ... }` then `v2` automatically gets the "next" natural number as a key) the ergonomics make them usable as structures and arrays easily. Also the ':foo()` syntax binds the LHS of the operator as the first parameter for a method call, and metamethods allow you to easily implement inheritance / dispatch / etc.

It's more about ergonomics than availability.

<comment><USER22> Not a full equivalence, but this[0] gets you x.foo, x.bar ergonomics as opposed to x['foo'] etc.

[0] [https://docs.python.org/3/library/types.html#types.SimpleNam...](https://docs.python.org/3/library/types.html#types.SimpleNamespace)

</comment></comment></comment></comment><comment><USER23> Tables and metatables are incredibly flexible constructs in Lua. I was able to support nearly all the Haxe language constructs for Lua with little more than tables, floats, and strings.

[https://haxe.org/blog/hello-lua/](https://haxe.org/blog/hello-lua/)

</comment><comment><USER24> Have been using Lua 5.3 and luajit for a few years. Also have bought the lua book for 5.3. My thoughts:

\-- really sweet consistent and simple language

\-- weak, fragmented ecosystem

\-- easily embeddable yet powerful

\-- few bad decisions: arrays as tables, coercions, 1-based arrays, no gradual typing

<comment><USER25> Gradual typing can be very useful. Coercions, like any implicit casting/conversion can have problems. 1 based arrays are a pain. On this much, I'd agree.

Why are arrays as tables a problem? Is it a matter of efficiency, or is it a type safety issue?

</comment></comment><comment><USER26> Lua is an awesome language, but there are significant gotchas, especially with regards to the behavior of ipairs and the length operator - [https://blog.varunramesh.net/posts/lua-gotchas/#the- behavior...](https://blog.varunramesh.net/posts/lua-gotchas/#the-behavior-of)

</comment><comment><USER27> My favorite part of Lua tables is the syntax feature that makes it possible to use a single table argument when calling a function like this:

      some_func{
         key = value;
         another_key = another_func{
             foo = "bar";
         }
       }

Note the use of { and } instead of ( and ). This almost makes it possible to build a DSL. Oh. And the __mode option in metatables to create weak tables by key/value.

</comment><comment><USER28> "A Lua configuration file is also code" is what won me over initially.

[https://www.lua.org/pil/10.1.html](https://www.lua.org/pil/10.1.html)

<comment><USER8> This is a major antipattern IMO since it makes it very difficult to programatically change configuration files. Unfortunately it seems to be all the rage these days to make a DSL for your config files.

<comment><USER29> I don't understand. Lua config is just Lua data structures. Load Lua data structures, modify them directly because they are the language's native data types, serialize them back to text. How much easier do you want it?

<comment><USER8> What if the file doesn't just contain literal values in the data structure?

<comment><USER29> Then yer shooting yer own foot. Don't put functions or expressions in your "Lua-SON" any more than you would in your JSON.

I guess if you lack confidence in your coworkers' ability to resist temptation, you could write a checker using Metalua. That would make a good git submit hook.

Doing it "wrong" was one of my fav dev tales. I wrote a custom UI system in OpenGL for an iPhone 1 game (memory budget 32mb). Didn't have time budget to make a visual editor, so I made up a Py-SON notation that simply loaded as Python. From there I used CTypes to convert the Python data tree into binary files full of arrays of C structs. Loading that in C was just fread(), cast a pointer.

The big win came when we realized we had way too much UI to create and not enough artist time to create it. So, another programmer and I sat down and wrote a suite of Python functions that made generating UI components much easier. It required a programmer-artist pair to use. But, otherwise it would have simply been impossible to complete on time.

</comment></comment></comment></comment></comment><comment><USER30> I have been using tables in Icon since 1986 (they were in Icon before that). Tables allow key/value pairs to be anything. You can set up a specific value to be returned if the key presented to the table doesn't exist. Lists, sets, tables, records are the mutable values, strings, csets, integers, reals are the immutable.

Failure is an option, so all expressions can succeed and return a value or fail with no result. So there is not an issue with the truthiness of values and the semantics of true/false.

Simple tests like

if a < b < c < d then { do something } else { do something }

are standard in the Unicon/Icon languages.

Icon was my goto language until about 2000 or so and thereafter I have been using Unicon (the Unified Extended Dialect of Icon).

1 based indexing is very useful when you have the dual of indexes < 1 starting at the right hand end of any string or list. Hence, you can work from either end if you need and there are good use cases for starting from the RHS of strings and lists.

I have looked at Lua in the past and nothing in it has given me any incentive to move away from Unicon/Icon. Lisp/Scheme/Kernel and FORTH/Factor have more notable (as far as I am concerned) facilities than Lua.

Though Unicon/Icon has flaws and certain kinds of missing facilities like lambda's, I find that I am more productive in Unicon/Icon than I have been in other languages. YMMV.

</comment><comment><USER31> Love lua. Luajit is stupid fast and the ffi stuff makes it a snap to integrate with other libraries. You can find Lua in neat places like nginx, redis, tokyotyrant...

I dislike the direction python has been going (twisted...i mean asyncio, type annotations, f strings). Lua is like a breath of fresh air.

Downsides are small standard library and 1-based indexing _shudder_.

</comment><comment><USER32> lua could be really nice if they fixed these:

indexing starts at 1 but a[0]=1 does SOMETHING

\-- // # stupid -- comments! / __/

0 is truthy # I just love the simple logical mathematical python way (0=ø=()=[]={}=false)

if undefined … -- treated as nil

function pseudoclass:new …

But by far the biggest complain is the packaging. luarocks SUCKS more than almost anything, at least for me.

luarocks install torch Error: Your user does not have write permissions sudo luarocks install torch Error: No results matching query were found. and on and on and on (non-representative excerpt of my pains)

<comment><USER19> > 0 is truthy

Nope. 0 being falsy only makes sense in pointer-oriented languages where NULL is a null pointer at address 0. In Lua, 0 is a number. It's not a pointer address.

Which leads to:

> a={1} a[0]==nil a[1]==1 indexing starts at 1 but a[0]=1 does SOMETHING

So does -1: should -1 be falsy, too?

> if undefined … -- treated as nil

Pardon? It is. Are you asking for an undefined keyword? Why? In the Lua C API, you already get `lua_isnoneornil` to begin with.

> function pseudoclass:new …

Lua is a prototypal language.

> but by far the biggest complain is the packaging.

You know, thank God. Because JavaScript is probably the closest thing to Lua and look how that turned out.

The only thing holding it back is that the community doesn't need or want it. It's also small enough that perhaps no one has made a good package manager for Lua yet. But the `package` module in Lua already provides search paths, so it's fairly low effort. Frankly, I've never had a need for it. I don't want npm for Lua.

</comment></comment><comment><USER33> Does there exist something along the lines of Typescript for Lua that adds optional type annotations and static analysis?

<comment><USER19> [https://github.com/titan-lang](https://github.com/titan-lang)

<comment><USER34> I think the closest analogy would be Typed Lua. Titan is a bit of a different approach (simpler type system, more focus on performance)

</comment></comment></comment><comment><USER35> >can be indexed not only with numbers, but also with strings or any other value of the language, except nil.

What could possibly be a reason for not allowing nil?

</comment><comment><USER36> the standard PHP array everyone

its really an amazing object type, especially when you are given a great api to manipulate it. Which PHP does have.

<comment><USER14> Lua predates PHP by 2 years, and I'm sure this combination of arrays and hash- maps predates both languages.

Either way, I'm not sold on it. Arrays and hash-maps are fundamentally different, not only for optimization's sake[1] but even in how people use them.

[1]: Recent versions of Lua now try to detect whether a table is an array, and apply optimizations when all its keys are ordered numbers without holes.

<comment><USER37> Lua doesn't try to detect whether a table is an array. The way it works is that a table is internally composed of two data structures, a hash part and an array part. Normally, integer keys go to the array part and everything else to the hash part. However, integer keys of a certain size will overflow into the hash part so that, e.g., storing a single integer key of 2^32 doesn't allocate an enormous empty array part.

In this way Lua already optimizes the array use case naturally. It never tries to infer whether a table is supposed to have array semantics or hash semantics. You can use a table as a hash, as an array, or (commonly) as both.

The cost of this simplicity and concision is born by the semantics of the length operator (#). The default __len metamethod on a table does a binary search looking for the first missing positive integer key, the boundary that marks the end of a logical array. The binary search will work even if your integer keys have spilled over into the hash part, though it works much faster if it doesn't have to inspect the hash part.

This why in Lua your arrays can't have holes (non-sequential positive integer keys), at least not if you want #t to behave as expected. Lua has no way of knowing the size of your array otherwise, at least not for plain tables lacking user-defined metamethods.

That said, there's a convention that uses the string key "n" to record the intended length. For example, table.pack() assigns the argument list to a table and sets "n" to the number of arguments. It does this because a nil argument value would create a hole. Also, since Lua 5.3 you can overload the __len metamethod, which could simply return t.n. Similarly, you can overload the __index and __newindex metamethods so that insertions update t.n or some other marker.

FWIW, I've tried hard not to express any value judgments in the above description. I've also deliberately abstained from discussing array-related language proposals.

<comment><USER38> I would argue that the length semantics are mostly unrelated to the hybrid array/hash nature. You could have the same problems on an array-only data structure, and you can invent semantics that avoid them without significantly changing the data structure.

</comment></comment></comment></comment><comment><USER39> The one-index is as idiotic as ever, especially for a language that is supposed to interact with other languages.

<comment><USER40> Please follow the site guidelines when commenting here.</comment></comment>


Eliezer Yudkowsky announces Arbital, a wiki-like startup for online explanations - <AUTHOR> http://arbital.com/p/arbital_ambitions/ <comment><USER2> >By the way: please don't post Arbital pages as Hacker News links, at least not yet.</comment>


The Strange and Twisting Case of r/A858 - <AUTHOR> http://kernelmag.dailydot.com/issue-sections/features-issue-sections/16682/a858-reddit-codebreaking-cypher-mystery/ <comment><USER2> "Surprisingly, the puzzle-makers revealed that "One post has been decrypted. Nobody noticed but us." A woman in the U.K. had apparently succeeded where so many had failed, only to later delete her account; the creators would say no more."

Surely this is a lead; there are independent archives of reddit aren't there?</comment>


Duck Programming - <AUTHOR> http://unspace.ca/blog/duck-programming/ <comment><USER2> I've always had this process described as "inner platform effect". Also, I've written a system like that before I was skilled enough to use parser generators. Database driven rules engines are teh suck.

It powers some pretty heavy duty stuff for a Fortune 20 and I still await the call from the company in question if they need to update those rules. Luckily, there is no user interface for this system so they can't screw it up. The funny thing is the program actually digests the whole database of rules and then builds an AST to execute the rules.

edit: Isn't the system described by the article essentially the entire basis of SAP?

<comment><AUTHOR> This came up on Reddit. IMO, Inner platforms are a superset of duck programming. "Inner platform" describes the implementation, while "duck programming" describes the process.

If we make a DSL that encodes business rules, I think you could say it's an inner platform of sorts. If that DSL is updated live in production _by design_ without being wrapped in risk management process, I think you have duck programming.

<comment><USER2> Interesting, I never thought of it that way, the bureaucratic process around those rules virtually ensures that it will never be updated.

There is a test corpus of about 50,000 items that it correctly classifies so at least it's well tested.

</comment></comment></comment><comment><USER3> One of the ways ive seen these systems born is when the user requirements are ill-defined.

"Okay so you are not sure - you may need either foo or bar, so we will put this little foo-to-bar knob here so you can tune it just as you like, however you like, whenever you like". Neither of the parties involved in the project definition can be bothered to figure out what actually has to be done, and next thing you know you end up with an overpriced-overengineered specialized turing complete language interpreter that has the customer do all the actual work implementing the business logic.

My theory is that this often stems from a communication issue. And some laziness.

<comment><USER4> And it's fun for novice programers to implement this kind of overenginered specialized turing complete language... Until one has been burned by one, it's very easy to be lost in overarchitecturing and be very happy with one's own cleverness.

When I look back at the projects I started, way back when I started programing, they all tended to have this characteristic and were completely unmaintainable (which is why they were never finished)

<comment><USER5> And I spent quite a bit of my early years as a team lead dragging novice programmers back off the slippery slope of the configuration system. You can tell someone's edging out onto the slippery slope when they extract things out of the source code and into a configuration file. Then they realise they need to expose values from the runtime environment into the configuration file, so you get symbolic values added to the language. From there it's a short slide to implement expression evaluation and conditionals (one usually comes before the other, but they fit together so well that I've never seen someone fail to implement both 'to cover future scenarios').

A lot of configuration systems reach a complexity maximum at this point, where the ability of the implementor (or their memory of the compiler construction class) runs out before their ambition for their configuration language does. Some particularly resourceful individuals press ahead regardless though and find a way out of this sticking point. At this point they will often also separate their configuration system out into a library so that others can gain the benefits of a poorly thought-out programming language being embedded directly into their software. For some companies, the configuration library would be the only reusable component shared between different applications because the guy who wrote it was the one everyone else looked up to.

The other route out of this sticking point came through the trendiness of XML and the availability of general purpose XML parsers. This meant that not knowing how to build a proper parser (with decent error messages and such like) was no longer an obstacle, just as long as you could convince people that writing programs as XML elements was a step forward. XML parsers also turned your configuration file into something similar to an AST (if you made your language look like a serialized AST) so programmers who had never even done the compiler course could stumble across the solution without too much effort.

At least configuration files could be checked into some source control system and managed properly. Don't get me started on storing business rules in relational databases...

</comment></comment></comment><comment><USER6> Yes, this is a problem that has existed for a long, long time. Consider the origin of HLLs. Waaaay back when COBOL was born, at least some of the people involved, seemed to be thinking that, instead of writing a new program each time one was needed, they only needed _one_ program: a compiler. Non- programmers could interact with an easy, human-readable description of the software (in COBOL), and the compiler would do the actual coding.

For those who prefer to think of the "inner platform" effect, the above is a clear example. The two platforms are the HLL and the machine code. But then we can see that the idea of having multiple platforms, might not be a bad thing (unless you'd prefer to do all your coding in machine code?).

A lesson to be learned from all this, is that duck programming is not a problem with the tools or the code itself, but with the way we think about and manage these.

> ... that is thought to be "not programming" ....

Exactly.

<comment><USER7> Quite right. Specifically, rules engines stored in a database can be very cool. Just recognize that the rules are code and use an appropriate interface and management (i.e, Prolog or something similar).

<comment><USER8> This is true, however often the demand for a business specific HLL is born precisely out of the desire to avoid the interface and management.

</comment></comment></comment><comment><USER7> What mystifies me is when large enterprise-y programs intended _for developers_ require large amounts of duck programming to get them configured, when regular programming would work just as well.

This is a disease closely related to XML-itis.

<comment><AUTHOR> <http://thedailywtf.com/Articles/Soft_Coding.aspx>

</comment></comment><comment><USER9> While one of the main points of the article seems to be "duck programming is bad because it circumvents proper workflows", I suspect you could also reverse it and say "people write duck programs to avoid terrible workflows"

Not to say you should avoid best practices; but I think a lot of these systems come into being because the overheard required to do a task becomes more cumbersome than the task itself.

<comment><USER10> Exactly. I have a colleague who worked on some part of the control software of the Space Shuttle code in the 70s and he tells me that at some point, NASA's management decided to freeze the source code so no more modifications to it were permitted (sensible, if it's done) _but_ they still wanted to be able to change the behavior of the software. The inevitable result was that someone wrote their own DSL for patching the object files generated by the original source code directly.

</comment></comment><comment><USER11> I've run into this a number of times. The worst cases are when the configuration is under the users' control. My catch phrase is: if you have a user controlled configuration file, you don't have a single program, you have 2^N programs where N is the number of configurable items. '2' is larger when the settings aren't binary.

</comment><comment><USER12> I've had to develop a system like this before. We were a data centric, mostly SQL shop. The idea was that the BA, CEO, and other devs could all implement the system for different customers having slightly but sufficiently different business rules. This is how we did it. Thankfully it was rewritten and the few customers migrated to the new system before it had a chance to fall on its face.

-edit- "Make it Data-Driven" was the word.

</comment><comment><USER13> Many years ago I spotted a related anti-pattern, and explained it to people this way: "Yes, you don't have to be a programmer to customize this system. But you do have to be a rocket scientist. Just programming would be easier." Usually just writing the code as a "one off" is far simpler, more maintainable than soft coding everything.

</comment><comment><USER11> I wish I liked the name better. Whenever I encounter these sorts of systems, I think of a plug-board, or a breadboard.

The wiring is in a separate file/database and everything is supposed to be better because it is infinitely changeable, but it is infinitely changeable.

</comment><comment><USER14> There's another point of view regarding this issue. Complex applications tend to evolve towards an 'inner platform'/'duck programming' state because serious power users want to avoid repetitive point/click operations. They demand a programmatic way to macro common tasks that they wish to apply to large amounts of data.

One might say at this point ok, the application should provide an API, and the power user should hire a part-time programmer to write a plugin. But that may not be feasible, and it misses the point that the user may not want to hire programmers and learn about API's.

The deeper question it seems to me is, is it always a sin to allow an end-user to have access to a Turing-complete, user-domain set of tools that are effectively a programming platform?

An answer of yes to this question smacks a bit of elitism: we are the priests of code; users must forever be relegated to pointy-clicky automatons.

<comment><AUTHOR> The article does not suggest that users should not have the power to be programmers, it suggests that the organization benefits from wrapping programming in certain risk management practices and that this is just as applicable to duck programming as it is to code programming.

<comment><USER15> Heh. I'm fighting against the introduction of a duck programming system at the moment. My cunning plan is to make the system generate source code from the config files. That makes it clear that modifying XML is the same thing as modifying source code, because it explicitly makes modified source code that then needs to be deployed. I may have to post the results on HN :)

</comment></comment></comment><comment><USER16> Business workflow engines are a special case of this, with the defining qualities that a) it's something you do intentionally, and b) humans are supposed to be "in the loop".

I am not convinced whether workflow engines are genius or pure evil yet. You can certainly perpetrate evil _with_ them, but that's true of anything.

<comment><USER11> In the days when people were calling it 'meta-level architecture' there was this sense that highly configurable systems were defined by what you couldn't configure. If everything was configurable, it was a bloody mess.

</comment></comment><comment><USER17> one of the basic purposes of system architecture is to partition a system into one of roles and responsibilities.

For instance, software belongs to the ISV; configuration belongs technicians, and business rules belong to analysts. Since each have their own core competencies and access to tools, one would not expect the system analyst to write the rules out in C++ even if the system was developed in that language.

However, the author is right in that traditional programming processes still ought to apply, and many in non-programming fields will have to learn this skill before they can execute this properly.

Rule engines like Tibco actually provide tools for users to perform regression tests. In fact, in the game world, Chris Crawford had an interactive story engine that will perform regression tests on their storylines - which I find very cool.

</comment><comment><USER18> I apologize because this is related to the medium, not the message, but the contrast is too low on the text and it makes it so I don't want to read it.

<http://www.accesskeys.org/tools/color-contrast.html> \--> WARNING: Either color difference or color brightness does not meet the recommended standard for 99.66% of the total the text.

<http://www.w3.org/TR/2000/WD-AERT-20000426#color-contrast>

</comment><comment><USER19> Light gray on pure white is not exactly the ideal scheme to foist on people whose eyes already hurt enough.

(My turn for broken-record public service announcements, I guess. Those pages show little sign of abating ...)

<comment><AUTHOR> Alas, I have no control over the styles. But this and so many other anti- readbility designs on the Internet have me reflexively clicking the "reader" button in Safari. I rarely bother with a web site's native look and feel for content.

</comment></comment><comment><USER8> This is a problem caused by the differing world outlooks of technical people and "business people".

I have fallen down this rabbit hole plenty of times myself as well as seeing others do so.

Technical people have a desire for maintainable and fast code , coherent architectures , DRY principles and designing a robust , well tested system with the long term in mind.

Business people are interested in cashflow , agility and being able to get their ideas into production quickly. They are worried about waiting months for a requested change to make it into production and not having it be exactly what they wanted/needed.

Managers often have a belief that programming should be unnecessary and there should be some way to drag and drop functionality into their applications. For example anybody who implements simple email capabilities into their web app will soon have users demanding to know why it does not have a spellchecker , contacts database , spam filtering , mail merge , mail folders etc etc (basically everything that MS outlook has)

This conflict leads to problems where business will ask for what they feel should be a simple change and will want it working by the next business day. The technical team will take this change and promise to include it in the next large update. For example the small change may interface with parts of the system that are undergoing bigger changes upon the next release.

Developers do not want to mess up their code base doing these half assed changes without proper testing so they attempt to anticipate everything that might be required and simply add more and more options to their program making it increasingly complex.

When this becomes too much to manage they will eventually create a small DSL or a "rules engine" of some kind. This starts off simple enough that the secretary can use it and everyone is happy since the developers get their nice codebase as seperate from the messy code developed by the users.

Of course this rules system becomes more and more complicated in itself and it becomes a full time job to maintain this rules engine while more and more of actual live code is being written by people who have a baptism by fire introduction to programming as well as no testing facilities or version control.

Eventually the developers have to step in , view the programming atrocities that have been created in the higher level engine and somehow re-integrate it all back into the original codebase and start again.

Basically you are moving the mess out your area of responsibility and moving it to someone elses. This isn't always a bad idea provided you limit the power of the rules system and make sure expectations are clear as to what it will be able to perform.

</comment><comment><USER20> Reg. You're an animal. Love the quality of your posts.</comment>


Rising Costs, and Churn: Here's the Gossip Heading into Hubspot's IPO - <AUTHOR> http://www.businessinsider.com/the-gossip-heading-into-hubspots-100-million-ipo-2014-10

<comment><AUTHOR> I want to say upfront that I've learned a lot from Dharmesh Shah's writings and presentations. I don't know if the journalists misunderstood the S-1, but a 17% churn and marketing costs that require 24 months to break even is a bit alarming to me for a company preparing to go public.</comment>


Ask HN: Suggest me a Utilite like linux computer for free giveaway to kids - <AUTHOR>

I know some kids I want to give Linux running computer for them to learn programming. I was looking into Utilite but that's not yet released. Is there something like it already? Also Utilite will be out of budget if I am going to buy few of them. What would you suggest? <comment><USER2> Raspberry Pi

<comment><AUTHOR> I think this is not much resourceful. I am sure they are not going to just use it to learn programming. They would use it for browsing and basic stuff you know.

<comment><USER3> The Raspberry Pi can do web browsing and other things you'd expect a basic computer to do. It's nowhere near the fastest, but it works to some extent.</comment></comment></comment>


Fixing Science - Systems and Politics - <AUTHOR> http://neuroskeptic.blogspot.com/2012/04/fixing-science-systems-and-politics.html

<comment><USER2> The notion of a central registry and government regulation for science is horrific and backwards no matter what the initial intention is. Why not a distributed, peer-to-peer approach for scientific publishing where all articles are anonymously accessed and linked to each other?

<comment><USER3> Because that, in no way, will prevent researchers from trashing studies until they get the results they want, or fishing for any significant correlation after the fact as if that's what they were looking for all along.

Some sort of validation mark that a study announced itself before being started would at least show me which ones I should ignore - because IMO this type of thing is ruining medicine, esp. pharma.

At this point, there's very little evidence that some major drugs, classes of drugs, and treatments _work at all_ , and that's both scary and a systemic financial drain.

</comment></comment><comment><USER4> I think it's a rather misleading post. He cites a paper from PLoS Medicine, and I suspect that those without a good background in research would rather quickly jump to the conclusion that "it's in a science journal, so it must be (very likely to be) true." However, it should be noted that this is an _essay_ , which PLoS Medicine defines as _opinion pieces on a topic of broad interest to a general medical audience._

More importantly, lets look at this from a pragmatic point of view. Are there things that can be done better in science? Absolutely. Does science somehow 'not work'? Not at all. Does it need fixing? No, why should it? Anyone who suggests that science is fundamentally broken must've lived under a rock for the past decades, or at least hasn't been keeping an eye on what science has achieved.

I also disagree with the blog author's 'solution' to the problem. He (or is it a she? I don't know) argues in favor of a centralized approach to science, whereas one of the reasons science is so successful is because it's so decentralized!

<comment><USER5> Um, on your point about the paper being an opinion piece, and thus not important, I would respectfully suggest that you are wrong. The author is John Ionnadis and he has published a number of meta-analyses demonstrating this problem. [http://scholar.google.co.uk/scholar?hl=en&q=JPA+Ioannidi...](http://scholar.google.co.uk/scholar?hl=en&q=JPA+Ioannidis&btnG=Search&as_sdt=0%2C5&as_ylo=&as_vis=0) Check out all the articles on the first page, he's been working in this area for a long time.

The author of the piece also identifies a massive, massive problem with science. The problem is essentially, tenure is hard to get, and many people want it. Tenure is dependent on highly cited papers in good journals. These journals have a bias toward significant results which pushes scientists to data-dredge looking for any significant result.

His system of pre-registration (which could be done on the ArXiV model, no government required) would allow us to have a much better idea of the things we're trying to study.

My field (psychology, though I suspect the problem is just as bad in other areas) has a massive problem in this area, as a counter-intuitive result gets published in a good journal, while high quality replications which show no significant effects either don't get published or get published in a much lower ranking journal.

This kind of registration becomes even more important when there are commercial interests riding on the outcome of a study, as in clinical trials. This (and the scandals) is presumably why such a system exists for clinical trials.

Finally, I don't see how registering studies and their designs before running the tests creates a centralised approach to science. The research is all planned beforehand (for ethics committees at the very least), so there's no extra work involved. It also increases our trust in results, as the ones which make it through were predicted in advance, while the weird findings can be replicated.

On a personal level, I can see the pressures to hypothesise after the results are known (HARK) and with tenure decisions looming, I can understand why people do it. Its horribly wrong, so this system would at least cut down on that behaviour.

Full disclosure: almost every time I carry out research, the results are opposite to what I expect, so I am a somewhat biased participant in this debate.</comment></comment>


Lords Sneak UK Internet Snooping Law into Bill - <AUTHOR> http://www.ispreview.co.uk/index.php/2015/01/lords-sneak-uk-internet-snooping-law-bill-minus-safeguards.html <comment><USER2> Bills like this worry me greatly as an advocate for internet freedoms and because of a desire to a right to privacy.

When I discuss government plans for the internet with non-technical people it worries me even more that they aren't at all concerned about it. I hear arguments like 'I have nothing to hide' and 'If it stops terrorism, why not'.

I try to tell people that they should demand a right to privacy from the state, but I find it hard to not come across as a tin foil hat wearing goverment-skeptic. What arguments do you use with people that don't understand the web all that well to get them to care about this stuff?

<comment><USER3> I usually go with "The problem isn't the current government, the problem is what might be in the future. The Netherlands stored data about their citizens' religious affiliation. The Nazis really appreciated that when they came and rounded up the Jews."

<comment><USER4> Me too, but in the back of my mind is always the knowledge that it's a slippery slope argument and therefore technically invalid.

<comment><USER5> There's nothing in a "slippery slope argument" that makes it technically invalid. Improper use may make it fallacious, but there are also real slippery slopes and ways to deal with them (e.g. Schelling fences).

</comment></comment></comment></comment><comment><USER6> Your obtrusive and underhanded domestic spying law gets shot down by a democratic procedure? No problem! Just tack it onto a bill already being considered by the House of Lords and sidestep the whole pesky review process.

<comment><USER7> Happens in the US all the time, too. It's the very thing that makes the line- item veto so controversial. I want someone to be able to knock down pork (or worse, like this) added to non-related bills, at the last minute, in the middle of the night, with no debate. But do I want that power to always exist?

Edit: happened like 5 times just last month and could have shut down the government. Now Dodd-Frank is all but dead, campaign donation limits are up from $92k to $777k, the EPA is further defunded, and more - all last minute riders with almost zero debate.

[http://www.newsweek.com/what-did-congress-sneak-last- minute-...](http://www.newsweek.com/what-did-congress-sneak-last-minute- spending-deal-291090)

<comment><USER8> Actually an even worse thing in our "democracy" is how a single person in congress can put a hold on a bill and bury it - while remaining completely anonymous.

How the hell is that even possible

Line item veto would be incredibly dangerous. We'd end up with 100% corporate welfare while the entire foodstamp program would be canceled.

<comment><USER7> You're right - line-item veto could be very dangerous, especially if it's exercised by the person you voted against.

<comment><USER9> I think a modified version of a line-item veto, where the president would be able to cross out the offending lines, and then send it back to congress for them to vote on the modified version of the bill could be useful. I think it would be significantly less dangerous than having a normal line-item veto.

<comment><USER10> Wouldn't getting rid of last minute riders or unrelated riders be a more effective way?

</comment></comment></comment></comment></comment></comment><comment><USER11> The Lords are actually more often known for _stopping_ the passing of bills that sail through Parliament and really, really shouldn't have.

Is this a deliberate attempt by the Lords to sabotage the passing of the main bill, by putting in something they know the coalition partners the Lib Dems already voted down? Seeing who tabled it, maybe not, but we need to be alert that the latest fight for our liberties won't just start at the next election.

Better make sure the Lib Dems know. Ugh.

<comment><USER12> One of the lords responsible is Ian Blair, the former Met Police commissioner. The one in charge at the time of the De Menezes shooting. The one who was a close friend of the News of the World at the time all the hacking was going on.

This guy:

[http://www.theguardian.com/politics/2008/aug/20/ian.blair.pr...](http://www.theguardian.com/politics/2008/aug/20/ian.blair.profile) [http://www.theguardian.com/uk-news/2013/aug/26/lord-blair- la...](http://www.theguardian.com/uk-news/2013/aug/26/lord-blair-laws- principled-leaking)

<comment><USER13> The one who was forced out by the new Conservative Mayor of London, Boris Johnson?

<comment><USER12> Yes. Presumably for being too Blairite.

</comment></comment></comment></comment><comment><USER14> Democracy at work here - an unelected group of bureaucrats, mostly party donors (i.e. people who have bribed government for the privilege of being made a Lord) definitely seem like the right people to be making these calls on liberty and having the ability to change the law.

</comment><comment><USER15> This could happen in the U.S. as well. Our esteemed politicians and federal police have proposed a new law with exactly the same approach. I disclosed some of these efforts in this 2012 article:

 _" The FBI general counsel's office has drafted a proposed law...requiring that social-networking Web sites and providers of VoIP, instant messaging, and Web e-mail alter their code to ensure their products are wiretap-friendly. 'If you create a service, product, or app that allows a user to communicate, you get the privilege of adding that extra coding'"_ [http://www.cnet.com/news/fbi-we-need-wiretap-ready-web- sites...](http://www.cnet.com/news/fbi-we-need-wiretap-ready-web-sites-now/)

Here's another article from 2006 talking about Rep. Diana DeGette (D-Colorado). She had originally proposed legislation imposing data retention requirements on ISPs, but then wanted to extend it to Facebook, Xanga, MySpace, etc. (to be fair, Rs have made similar proposals): [http://news.cnet.com/Congress-targets-social-networking- site...](http://news.cnet.com/Congress-targets-social-networking- sites/2100-1028_3-6089574.html)

I can't easily find the link to another piece I wrote, but DOJ/FBI reps have also talked about including photo-sharing sites. This is in addition to the FBI wanting to force ISPs to keep track of every web site that customers visit (not just IPs assigned): [http://www.cnet.com/news/fbi-wants-records-kept-of- web-sites...](http://www.cnet.com/news/fbi-wants-records-kept-of-web-sites- visited/)

So far these proposals have not become law, meaning that the types of companies well-represented here on HN don't have to keep records of their users' activities for future police access. I've been critical of AT&T/VZ/Comcast/etc. over surveillance here before, but I'll give them credit for this: Those of us working on social/email/etc. startups aren't targeted by all these regulations today because of ISPs' defensive DC efforts over many years. They're doing it because of self-interest, true, but the spillover effect is real.

</comment><comment><USER16> _The west has pursued an industrialisation path that allows for the privatisation of wealth from the commons, along with the criminalisation of commons rights of the public, as well as the externalisation of all true costs. [...] Our entire commercial, diplomatic, and informational systems are now cancerous._ \- Robert David Steele, _The Guardian_ , 2014-06-19

</comment><comment><USER17> Mod: s/sneek/sneak/ please.

</comment><comment><USER18> For every action, there is an equal an opposite reaction.

<comment><USER19> I hope if something like this gets passed, there will be a massive protest, not just in the streets, but everyone starting to use Tor, TextSecure and other such apps they are most worried about.

<comment><USER20> I doubt that very much. Masses don't care about privacy, the dominating view is still that of "I have nothing to hide" and "let police do their job -- _think of a children /terrorism_" or any other mantra that's popular at the time. Look at Snowden story, only tech sector and human right activists care, there were no widespread protest, no political action, and since then surveillance only broadens. Especially in UK, which is has CCTVs on every corner ([http://www.telegraph.co.uk/technology/10172298/One- surveilla...](http://www.telegraph.co.uk/technology/10172298/One-surveillance- camera-for-every-11-people-in-Britain-says-CCTV-survey.html)).

</comment></comment></comment><comment><USER21> Looks like we need version control for bills.

</comment><comment><USER22> Why does the UK still have the house of the Lords? The elites don't control enough of the government?

<comment><USER23> > Why does the UK still have the house of the Lords

Why would the House of Lords stop existing? Not changing things is a tradition.

<comment><USER22> Because it's appointed elites deciding how the government should be run?

<comment><USER24> You could call them appointed elites, or you could call them a distinguished technocracy, many of whom are not career politicians, but instead respected scientists, military officers, artists, composers, former heads of public bodies, business leaders, sportspeople etc. They bring an insight to government that many politicians cannot.

When you look at it from that angle I think it makes a lot of sense and is actually rather progressive.

<comment><USER23> > I think it makes a lot of sense and is actually rather progressive.

I don't think that the House of Lords is "progressive". Put it this way: In only two countries do senior clergymen automatically get a seat in a house of Legislature: Iran and the United Kingdom.

It's not progressive company to keep.

<comment><USER25> > Put it this way: In only two countries do senior clergymen automatically get > a seat in a house of Legislature: Iran and the United Kingdom.

Well, there's at least one other sovereign state in which people hold legislative office by virtue of holding particular senior religious office -- and which goes further in that there are no _other_ legislators -- Vatican City.

But that's a bit different...</comment></comment></comment></comment></comment></comment>


Ask HN: How can a Non-US Founder, accept credit cards for US company - <AUTHOR>

Hi,
I'm from India, never been to US.
I'm looking forward to launch a SaaS Project, for this I'm in the verge of incorporating in Delaware. In my research so far, I've looked into Stripe and braintree payments for payment processing.
They both require Social Security Number (which I don't have), while braintree payments requires one full-time employee in the US.
Is there a way to accept subscription payments through credit card for US companies, without requiring SSN? Has anybody done the same? <comment><USER2> @sathishmanohar, Hello from Chenna!. :)

It is this specific case that we are solving for Indian startups along with a global billing solution at ChargeBee.

Regardless of whether you need ChargeBee or not, shoot me an email (in profile) and will be happy to share the options available.

Specific to your question: Without SSN even after incorporation in Delaware it is a struggle to get a merchant account. I have helped a few businesses in India get merchant account there and it is from my experience. I incorporated ChargeBee in Delaware, but thankfully I have SSN. Without revenue not many merchant account providers that claim to do this won't touch you; that is just reality.

My suggestion to startups is: use the easiest available options to get started - we do it with PayPal, 2Checkout etc., I know it is not anywhere near what you can do with Stripe or a BraintreePayments, but you can do with the available options, build traction and focus on the hardest problem - which is getting attention of your customers and get some early adopters. In the meantime, we can help you started with other options and seamlessly switch over for new signups. You will save $1k USD initially plus all the additional paper work, franchisee tax (even incorporating in October will entitle you to pay $440 USD in tax in March next year - delay it by couple of months you save that as well).

But, if you do want to go ahead with incorporation here are couple of blogs: Girish of Freshdesk wrote about this and I wrote a followup on payments as well.

You can read those here:

[http://blog.freshdesk.com/how-to-incorporate-a-us- corporatio...](http://blog.freshdesk.com/how-to-incorporate-a-us-corporation- from-outs/)

[http://blog.chargebee.com/payment-integration-options-for- st...](http://blog.chargebee.com/payment-integration-options-for-startups-in- india/#sthash.LtgLLhw4.dpbs)

We are also working with couple of Indian banks and in turn with Reserve Bank of India to solve it well. We should have something soon to avoid all this round about way of incorporating outside to do something straightforward.

<comment><AUTHOR> Hi krish,

I was seriously contemplating about charge bee.

I was in last OCC meet, and Siddharta personally recommended chargebee as well.

As per your advice "use the easiest available options to get started", I just signed up. :)

<comment><USER2> Thanks. Glad to help.

Shoot me an email before you signup with 2Checkout - I have a $49 coupon code I can share.

</comment></comment></comment><comment><USER3> As a foreign national with US-source income, you can obtain a tax identification number (equivalent to a SSN) by filing a W-9 form with the IRS.

<comment><AUTHOR> Thanks, Stripe and Braintree, have mandatory requirement for SSN it seems.

Do you know any payment processors, that are okay with tax identification number only.

</comment></comment><comment><USER4> You might also be able to open an LLC and receive a Tax ID number. It probably depends on your state.

How do you plan to take the money back to India? I know that Charles Scwhab has a checking account with no foreign transaction fees, including free ATM usage worldwide.

<comment><AUTHOR> I'm not planning of taking money back to India at all, currently I'm only concerned about, if I can make money with my product at all.

I'll worry about that, why I actually have money in my bank account :)

</comment></comment><comment><USER5> I think, for a start, 2Checkout would do the job. I've used them and they are pretty good. They can also give you better rates. There are some discount codes floating around using which you can sign up without the $49 fee.

The folks at <http://spreedly.com> also seem to be pretty good but I've not used them so can't say anything.

</comment><comment><USER6> I don't know when you've looked at Braintree but you can accept credit cards. Just look at here: <https://www.braintreepayments.com/tour/international>

It is not fully international but at least EU and Canada. Another option is PayPal.</comment>


Google Streetview static API - <AUTHOR> http://jamiethompson.co.uk/web/2010/05/15/google-streetview-static-api/

<comment><USER2> Very nice. I'm looking forward to a non-Flash streetview client.</comment>


The Trusted Supernode and Distributed Banking - <AUTHOR> https://www.newtolife.net/the-trusted-supernode-and-distributed-banking.html <comment><USER2> | The weak point of the centralized bank is with z: The person that manages the bank. He has full control over all the balances of all the participants.

Is this really a problem of a bank that needs solving by building a distributed banking system? Generally, in the banking systems of today there is a dual control system that makes it hard for a single person to have complete control.

I know this is a theoretical article but I've noticed quite a few ideas for "blockchain" banking and similar new systems recently. They are interesting in theory but I'm not sure they are solving the right problems. I'd be interested to see some technology that can be implemented at banks today, in the real world.

<comment><AUTHOR> I agree with you that having a centralized bank is not always a problem. I admit that I store my money on one of those good old usual banks. I don't really like my bank, but I'm generally happy with the service it gives me.

I live in a country where there are regulations on what banks can do, which is cool too. I don't really read the news, but I still get to hear every once in a while about some government backed bank that has decided to erase some people's debts. Money invented and gone, out of thin air. However, even those things are not the main reasons to create a decentralized bank.

Think about the following setting: You want to create a small internet like network in some place in the world. Maybe a place where you don't have banks you can really trust, or even a government that you can trust.

So you deploy some boxes, and you get a working network. Everybody on this network pays some kind of virtual money for his use of the network. (He just pays for the electricity, and the box does the real work). The balances are managed by the network itself, somehow. You don't need to find some external bank to make this work, and fulfil his arbitrary tax or other strange regulations. You don't have to trust an external bank. You just plug in the power and it just works.

I don't need the bank here to give me "buyer protection", insurance or the ability to invest in funds. I just want a tool to make sure that if one person sends more messages in the network than somebody else, than he needs to compensate the other person somehow.

Another important reason for which I believe decentralized banks are important is the ability to deal with micro-payments. One of our biggest problems these days is how a small amount of people, with limited amount of resources, can serve billions requests of people from all over the globe. Just check the job listings. They all search for people that can "Scale the backend".

I don't know if a regular bank can deal with transactions of "move 0.003 cents from Alice to Bob, for data transfer work". However, I think that a distributed bank can deal with it pretty well.

I hope that this relates to your question. Please tell me what you think if you are still around.

</comment></comment><comment><USER3> I'm working on a similar system, but it's quite a bit simpler, can use national currencies, and does not have supernodes or Byzantine fault tolerance [http://altheamesh.com/blog/universal-payment- channels/](http://altheamesh.com/blog/universal-payment-channels/)

I haven't completely specified the routing part yet, but I think it will be quite easy to extend Babel to incorporate cost as a metric. Due to Babel's network size limitations, it won't work as a big bad global mesh, but should work well in the smaller mesh networks we see today.</comment>


Which font to use and why? - <AUTHOR> For a text centric website (like a blog), which font would you use and why? <comment><USER2> Unless you are expecting a lot of high profile traffic and need to have an A1 level of design, just stick to a built-in websafe font. It will keep your render times fast, and it's less hassle to maintain.

</comment><comment><USER3> I use whatever the default font is on my personal blog [0]. I use Foundation CSS, and I'm not entirely sure what font that is, or if it is even altered from the default browser font.

Why?

\-- I don't think that any font will enhance the content and concepts I write about.

\-- I don't think anyone will pay attention unless it is bad. As I'm not a designer and I don't have the sophistication to know what the best choice is. I'm led to believe that some fonts are better than others, but I really don't know why and I don't feel like researching this.

\-- I doubt anyone really cares that much, so why slow my site down or have a flash of unrendered text, which will both be negatively noticed, for no reason?

\-- I consider myself a minimalist, and I prefer to present online presence in that way.

[0] coderedux.com

</comment><comment><USER4> I think good look: Font Lato or Open Sans.</comment>


It's time to fix European technology journalism - <AUTHOR> http://yiannopoulos.net/2011/11/03/its-time-to-fix-european-technology-journalism/

<comment><USER2> I'm pretty excited about this! What are your current favourite UK/EU tech blogs?

<comment><AUTHOR> Will be very interesting that's for sure...at the moment, there aren't many I read regularly at all, hence the possible opportunity I think.</comment></comment>


Tech trends we can't wait to see in 2017 as a design team - <AUTHOR> https://uxstudioteam.com/ux-blog/tech-trends-2017/ <comment><AUTHOR> As a design team, we are fond of innovations changing the user experience. We collected all the tech trends we expect in 2017 that will probably affect our lives.</comment>


New Microscope Shows the Quantum World in Crazy Detail - <AUTHOR> https://www.wired.com/story/new-microscope-shows-the-quantum-world-in-crazy-detail/ <comment><USER2> Is quantum just a buzzword here? The article doesn't mention it any more.

And does anyone know the advantages over an STM microscope? Is it scale/speed of imaging and the ability to visualize inner atoms?

<comment><USER3> I believe TEM has better resolution

</comment></comment><comment><USER4> So where are pictures?</comment>


Official: Russian-owned company attempted Ohio election hack - <AUTHOR> https://apnews.com/6518b9a986f640c4899a979bbc48390b <comment><USER2> > LaRose said Ohio's election results are safe because neither the election > machines nor the ballot counters the state uses are connected to the > internet.

Neither were Iranian centrifuges, and yet: [https://en.wikipedia.org/wiki/Stuxnet](https://en.wikipedia.org/wiki/Stuxnet)</comment>