Ask HN: How to solve remote engineers appearing lazy to other departments? - <AUTHOR> A recurring issue I've seen throughout my career is engineers wanting to have more remote flexibility. Often the upper technical leadership is in favor of it but concerns throughout the company come up that other departments will think that product/development is lazy and never does anything if they often work remotely. These concerns eventually kill the initiative to allow more remote work and sometimes any remote work at all.<p>How can these concerns be resolved to allow certain teams to work remotely without upsetting other departments? <comment><USER2> If upper management is in favor, why are other departments dictating your workflows? Are you the kind of company that hires people who need babysitters? If so, then your obstacle has more to do with who your people are than anything political.

Anyway, just do it and let the results speak for themselves.

One thing to keep in mind: When I went remote, "everyone" in the company was in the habit of interrupting me for trivial matters. At the time, I was trying to get my manager to run interference. Me going remote acted as a bit of a forcing function for my manager to be more aware of the problem.

<comment><USER3> I've worked at companies with hundreds of staff and only a handful of tech employees. Many of those companies are _exactly_ the type to hire babysitters/overseers/foremen.

I can't say this is happening for OP, but when the ratio is a hundred workers to one, the "other departments" are going to determine HR policies.

Tech companies aren't necessarily exempt from this. Many companies hire thousands of content moderators or tech support, many of whom are uneducated and lack self-discipline. There are the types who simply don't show up for work, take 2 hour long cigarette breaks, fake illnesses and weddings to skip work, steal toilet paper, and bully colleagues into doing the same.

Lots of tech companies bootstrap from there, and it's difficult for them to change workflow that's their bread and butter.

</comment></comment><comment><USER4> In my experience, remote engineers are often some of the most productive engineers at an organization.

When any engineer can demonstrate a strong track record of shipping, any idea of "laziness" goes away pretty quickly.

I think one of the reasons why "laziness" comes up is because remote engineers aren't physically in the office to be shoulder tapped for questions (though so many questions now go in Slack anyway).

A somewhat opposite problem I've seen is that when people work remote, they kind of "forget to stop" and end up working way more than a standard workweek.

A start to solving both of these issues when working remote is to establish a clear schedule of your working hours and your "availability for questions" hours. I.e., make it clear 1) when you're working and when you're not 2) when you're available for answering questions vs reserving your time for working in flow.

Can use something like a Slack status to remind colleagues.

</comment><comment> blaser-waffle Start talking about synchronous-async communication. Most things don't need a direct, immediate reply and can wait for a little. Like, even in the office there were days where I only had ~3 hours of actual work + 2 hours of meetings that I could skip without effecting anything.

There will absolutely have to be pre-defined sync times, and a "mostly available" synchronous-ish times, but outside of that mgmt and other teams need to trust workers to do their jobs. This will probably require a change in communication styles and communication tools.

</comment><comment><USER3> Progress reports often appease management. Jira is good at showing that someone is doing work - every time you edit a description or add a photo, it's marked as a notice.

Another way to look at it is git commits - if remote workers are committing just as often as local ones, they're doing equal work.

This might end up with more busywork, but such is the side effect of anything where managers try to monitor work rate.

</comment><comment><USER5> "appearing lazy" ... "concerns"...

These are weasel words coming from BS-land. A strong leader will crush them immediately. Proof should be the only true currency.

Someone complaining about your process? Walk them through every step and explain every decision until they see they're out of their league and stop complaining.

That's what I'd do.

</comment><comment><USER6> We as a community take a strong stance on the issue and categorically decline jobs that are not fully remote.

The recruiters I work with know that I don't entertain non-remote work at _any_ salary.

Do the same. Join the revolution. Succeed.

</comment><comment><USER7> Time to move on.

The culture at this company must be really difficult if "upsetting" other departments is the reason to prevent remote work.

</comment><comment><USER8> Other departments will continue to sit on IT as long as they are allowed to. Not sure why they are being allowed to, but probably your upper management does not have clout.

</comment><comment><USER9> Maybe the engineering managers can define and enforce 'no-chit-chat' zones around the development teams to prevent distraction. After a few weeks or months of having their social interactions dampened the socialistas will be begging management to let the developers work from home.</comment>


Show HN: my weekend project, Helplin. Instant Hotline. - <AUTHOR> http://helplin.com

<comment><AUTHOR> I was checking out Twilio and wanted to do a weekend project. So I built helplin.com

It basically connects a person who needs help with a person who can help on a particular topic. So people that want help with setting up something, programming questions, etc. can get a one-on-one walkthrough from someone who wants to help.

I already have a way for users that want to help to charge a certain amount per call. But, the process for paying and receiving money was too many steps. Still looking for a good merchant payment API.

So try it out and let me know what you guys think?

<comment><USER2> I like it. I think you answered my call. Looks like the changes are real time, what did you use for it?

<comment><AUTHOR> Thanks! I ended up using <http://faye.jcoglan.com/> Highly recommend it.

</comment></comment></comment><comment><USER3> Why does it want almost full access to my Twitter account?

<comment><AUTHOR> Read is the bare minimum. I requested write so that people that are helping can send out a tweet from the form to let their followers know that they are taking calls about a certain topic.

It doesn't tweet without the user's consent.

edit: Also, full access includes direct message, which it doesn't request.

Update: Removed write access, just read. Thanks for the feedback.

<comment><USER3> You don't need the user to add your app to Twitter to have a tweet link. You could use Twitter's buttons or post a link like:

[https://twitter.com/intent/tweet?source=webclient&text=e...](https://twitter.com/intent/tweet?source=webclient&text=example)

<comment><AUTHOR> Yep, that's what I ended up doing a few minutes after reading your comment. Was an oversight by me originally. Thanks again. Try it out now and let me know.

Just Read access now, as I put up in the update.

</comment></comment></comment></comment><comment><USER4> Great execution!

<comment><AUTHOR> Thank you!</comment></comment>


Powershell MVP: Scripting Wastes Time, Don't Make IT into Dev - <AUTHOR> http://redmondmag.com/blogs/it-decision-maker/2011/04/wasting-time-with-scripting.aspx

<comment><USER2> _So, third-party tools are, and should be, a way of life_

You can't make a statement like that and then conclude the article with "use function xyz when it makes sense to".</comment>


Use a Mikrotik as Your Home Router (2017) - <AUTHOR> https://blog.ligos.net/2017-02-16/Use-A-Mikrotik-As-Your-Home-Router.html <comment><USER2> I would wholeheartedly recommend Ubiquiti products. I use an EdgeRouter X and Unifi AP Lite and get almost no loss of speeds over WiFi compared to connecting directly to the modem. Also no packet loss or poor reception.

Their devices run Linux so you can ssh directly into them if you want to change something. All config options are also available via the command line interface.

If you want a consistent UI experience, choose one of their several "lines" and stick with it for all your hardware, i.e. use a Unifi Security Gateway + a Unifi Switch instead of the EdgeRouter X. This will allow you to control all your devices from the same interface. I went with the heterogenuous combination because it suited my needs.

<comment><USER3> It is worth noting that the edgerouter-x, which is only $48, and its more expensive cousins have a pretty good origin of their OS. Ubiquiti's EdgeOS is a fork of Vyatta. UBNT hired most of the talented Vyatta developers when Vyatta was acquired by Brocade. Vyatta is based on Debian.

The ER-X is actually a little Debian box with a decent GUI.

Unless you have >600 Mbps symmetric gigabit home internet, an ER-X is more than fast enough for routing, firewall/NAT functions for the average residential user.

It is also a really good way to economically _separate_ the functions of router and wifi. Have a router that is a wired 1000BaseT _router_ with no wifi. Buy one or two of the 802.11ac Unifi dual band access points, priced anywhere from $75/ea to $200/ea depending if you want 2x2 MIMO or 3x3 MIMO, or wave2 functionality.

Set up the unifi controller as a virtualbox VM on your laptop that you use to provision it and make changes. The controller does not need to remain persistently on the LAN once the APs are configured.

<comment><USER4> I remember early on the edgerouters had performance problems with all kinds things (e.g. IPv6) since their hardware-offloading support was lacking, I assume that has improved by now?

<comment><USER5> Yep! Just gotta enable hardware acceleration.

</comment></comment></comment></comment><comment><USER6> I've been running Mikrotik routers at home for a couple of years, and I have been at least as happy with them as anything else I've used. Yes, they can be a little more awkward to configure (some of which comes down to offering multiple different tools with slightly different capabilities - command line, Webfig[1], Winbox[2], and The Dude[3]). If anyone wants to experiment with them cheaply, they do make a bargain travel router[4].

1: [https://wiki.mikrotik.com/wiki/Manual:Webfig](https://wiki.mikrotik.com/wiki/Manual:Webfig)

2: [https://wiki.mikrotik.com/wiki/Manual:Winbox](https://wiki.mikrotik.com/wiki/Manual:Winbox)

3: [https://wiki.mikrotik.com/wiki/Manual:The_Dude](https://wiki.mikrotik.com/wiki/Manual:The_Dude)

4: [https://mikrotik.com/product/RBmAPL-2nD](https://mikrotik.com/product/RBmAPL-2nD)

<comment><USER7> What do you do for wifi?

<comment><USER6> Right now I am using their hAP ac[1] which does b/g/n/ac, though there's a new version[2] of it with a 4-core ARM in it which might be a little better for routing... otherwise I know people like to use Ubiqiti for their AP and choose one of the non-wifi Mikrotik models[3].

1: [https://mikrotik.com/product/RB962UiGS-5HacT2HnT](https://mikrotik.com/product/RB962UiGS-5HacT2HnT)

2: [https://mikrotik.com/product/hap_ac2](https://mikrotik.com/product/hap_ac2)

3: [https://mikrotik.com/product/RB750Gr3](https://mikrotik.com/product/RB750Gr3)

</comment></comment></comment><comment><USER8> I'd be wary about running a mikrotik as a home router, but mostly because the user interface is not what I would call friendly at all unless you're already a networking person. It's not a terrible idea if you need more capability then a standard home router, but there are other options that also offer more power than home routers without quite so much visible complexity. As an example, OpenWRT on a capable router get you a more familiar command line interface and an awful lot of packages.

As far as the RCE, is SMB even enabled by default? It's an important catch and I'm not clear yet how exploitable via JS in a browser, but I can't imagine that SMB is open to the world in any router's default configuration.

<comment><USER9> In the home / office equipment SMB is disabled by default, and there are firewall rules blocking all incoming connections from WAN. Someone over at a MikroTik channel said "if you run SMB on your router and you've got it accessible to the world you deserve to be hacked"

I can't say i disagree.

The recent bug about being able to download the user database was less cool though. But it was patches very fast after it was discovered.

Then again the above bug is only exploitable if you allow incoming connections from WAN on the management port, which isn't good practice (but i and many other people do it anyways because it's simple).

<comment><USER8> We used to allow remote connections to management, but for probably 2-3 years it's been trusted networks only. Same for rdp, and the last customer with an in house mail server should be off it in 2-3 months.

These days a blank non responsive void is the only thing that makes sense for an office.

</comment></comment></comment><comment><USER10> The original seems to be down. Google cache: [https://webcache.googleusercontent.com/search?q=cache:c9vt2e...](https://webcache.googleusercontent.com/search?q=cache:c9vt2e7hi4AJ:https://blog.ligos.net/2017-02-16/Use- A-Mikrotik-As-Your-Home-Router.html+&cd=1&hl=en&ct=clnk&gl=de)

</comment><comment><USER11> I had a buddy that used a Mikrotik router for years. He couldn't shop at Newegg because his router "optimized" his MTU and Newegg blocked connections with non-standard MTU sizes.

<comment><USER12> Mikrotik sometimes do things differntly to how you might expect[0]… though that was how I found out about them, and have been happily managing a hEX lite for a while now.

0: [https://dyn.com/blog/longer-is-not-better/](https://dyn.com/blog/longer- is-not-better/), previous discussion [https://news.ycombinator.com/item?id=490924](https://news.ycombinator.com/item?id=490924)

<comment><USER13> This is definitely a bug (a 'value of out range' for prepend > 255 should have at least been emitted), but IOS devices crashing because of it is noone but Cisco's fault. And then, not having a 'filter out if AS path > 64' config line while being a transit provider is just careless.

</comment></comment></comment><comment><USER14> Had one for a few years. I now have/prefer pcengines apu2 + pfSense. Rock solid, performant and has everything I need and more.

<comment><USER15> Will it do 802.11ac? When I looked into OpenBSD a while ago (2017), there were no ac-compatible drivers available for the apu2.

<comment><USER14> not sure - I have an external Ubiquiti AP I use, plugged into the APU2's ethernet port. You want wifi as part of the APU2 or separate?

<comment><USER15> I was planning on using my apu2 with the built-in antennas, just because that's what it has.

Would you mind describing your setup/config? Is it just the apu2 plus a ubiquiti AP? Which AP?

<comment><USER14> not at all:

from pcengines, I got:

[https://www.pcengines.ch/apu2c4.htm](https://www.pcengines.ch/apu2c4.htm) [https://www.pcengines.ch/case1d2redu.htm](https://www.pcengines.ch/case1d2redu.htm) [https://www.pcengines.ch/msata16f.htm](https://www.pcengines.ch/msata16f.htm) [https://www.pcengines.ch/ac12vus2.htm](https://www.pcengines.ch/ac12vus2.htm)

put that together and installed pfSense per their instructions:

[http://pcengines.ch/howto.htm#OS_installation](http://pcengines.ch/howto.htm#OS_installation)

You could get their wifi modules:

[https://www.pcengines.ch/wle200nx.htm](https://www.pcengines.ch/wle200nx.htm) [https://www.pcengines.ch/wle600vx.htm](https://www.pcengines.ch/wle600vx.htm)

but I advise against it if you want to run pfSense, since driver support on pfSense for these might be sketchy/difficult to get working. Linux might be a better choice for a router OS if you're going to get those modules. My personal recommendation is to avoid getting wifi onboard the apu2 and stick with this instead:

[https://www.ubnt.com/airmax/nanostationm/](https://www.ubnt.com/airmax/nanostationm/)

or if you want 802.11ac:

[https://www.ubnt.com/airmax/nanostation- ac/](https://www.ubnt.com/airmax/nanostation-ac/)

and just take up one of the three ports available on the apu2 permanently for your Nanostation.

Set this up, and you'll be happy for years. I consider it the ultimate DIY home router setup and I've experimented with many. This one takes the cake. The only thing I wish for is an extra RJ-45 port on the pcengines APU2 for some of the devices that are close by it (e.g. a mac mini I use as HTPC), but since everything or nearly everything has wifi nowadays, you don't get to notice this much. Worst case, if you need extra ports, hit amazon and type only "pfsense" in the box - there's a vendor called ProtectLi ([https://protectli.com/](https://protectli.com/)) which sells 4 and 6 port boxes similar to the APU2, but with Intel instead of AMD (I'm kind of partial to AMD plus PCEngines is run by Americans/Swiss :). Those will work just as well though you're looking at spending more $$$. If that's no objective, then just get the 4 or 6 port ProtectLi.

Reply here let me know how it works out once you've got it setup the way you want.

<comment><USER15> Nice, thanks! I already own an apu2 with the WiFi modules but I may simply remove them.

</comment></comment></comment></comment></comment></comment><comment><USER16> I was using Mikrotik for a while until I wanted to optimize bufferbloat issues - my goto algo has been fq_codel, which Mikrotik does not support. I've fiddled around with the other available algos, but nothing comes close to the performance that fq_codel has out of the box.

I ended up switching to Opnsense instead. It was a good medium between dd-wrt and Mikrotik in terms of usability / exposed features.

Mikrotik is for those who want to do traffic manipulation at very low levels - it's not for the faint of heart if you're not a network pro.

I also didn't like that I had to pay for a new license if I had to change the hardware in my box.

</comment><comment><USER17> MikroTik gear is awesome. Extremely flexible and reliable. I work with different models daily since ~2007.

</comment><comment><USER18> Been home routing for about 15y, first on old PC's with 2x nics, then on more embedded kit (soekris boxes RIP, about to upgrade to PC Engines hardware since my particular soekris boxes, though still running strong, are getting a bit long in the tooth for modern speeds).

Strongly suggest just throwing OpenBSD on a flash disk (possibly with the help of flashrd) and going from there. Once you get a taste of the solidness of pf & the openbsd network configuration tools/documentation, you'll miss it every time you use another free OS.

</comment><comment><USER10> As a side note, I'd consider trying to flash something openWRT on other routers that anybody owns. There are not really many companies that keeps releasing patches for consumer devices unless there is a major outcry (for e.g KRACK). In most cases your router in a small MIPS box running linux (consumer ones), treat it as you'd treat your other systems and update it often!

</comment><comment><USER19> I've used MikroTik products pretty extensively over a number of years, and would recommend them -- pretty tough to beat, on a "bang for the buck" basis.

No vendor's products won't have RCEs; what's important is turnaround time to deployable fix, and MikroTik's pretty fast.

</comment><comment><USER20> Great router ! Very good quality/price.

I have used it to teach an introductory course in computer networking and it could perform well many net protocols (DHCP, NAT, etc.) and even some advanced routing configurations (with RIP/OSPF).

UI was a little rough on the edges but after a while you get used to.

</comment><comment><USER21> I have been using Mikrotik routers for years now. I love the winbox interface.

<comment><USER9> It's quite funny how most people say they hate the WinBox interface. I'm a huge fan of mixing the CLI and the WinBox interface, i also like that the CLI and the GUI management solutions are tightly coupled together and that you can do "everything" (99%) of everything in either of them (some superrare features are only in the CLI).

</comment></comment><comment><USER22> I would definitely _not_ use a Mikrotik router, they just recently had an RCE [0]. And apparently they encrypt user passwords! [1]

[0] [https://nvd.nist.gov/vuln/detail/CVE-2018-7445](https://nvd.nist.gov/vuln/detail/CVE-2018-7445)

[1] [https://forum.mikrotik.com/viewtopic.php?t=133533#p656301](https://forum.mikrotik.com/viewtopic.php?t=133533#p656301)

<comment><USER23> So which major vendor hasn't had a RCE on the LAN side? Even my current Asus router had an RCE on the LAN side a couple of years ago...

MikroTik fixed both of the issues you referenced, just as Asus fixed the issue I referenced. So I see no specific reason not to use either a MikroTik or a Asus device (and keep both up to date).

The only major thing I'd consider is:

\- Does the manufacturer respond constructively?

\- Is the device still receiving security updates/has no outstanding holes?

<comment><USER22> Considering that they can't even get user authentication right, I have pretty big doubts about the rest of their security. Hashing/salting passwords is not a new concept.

<comment><USER9> It's hard to defend something like this, but i think it's important to know that this only affects MikroTik devices with the SMB service enabled (disabled by default).

It's very bad, but they responded quickly and resolved the issue.

One thing i'd say is worth mentioning is that they're still keeping "all" (all i know off) RouterBoard devices updated. We've had customers with gear many many years old, still updated with feature and security upgrades.

</comment></comment></comment></comment><comment><USER13> Note: Mikrotik are violating the GPL (at least in spirit, by having you request sources by mail instead of just publishing them) by shipping RouterBoards/RouterOS without any Linux sources. You might want to take this into consideration before spending money with them.

(they even ship their rootfs with proprietary kernel modules that are marked as license: GPL so that they don't taint the kernel, ie for their bandwidth test)

<comment><USER24> the "spirit" of GPL is not "everything must be on GitHub". from the start, the GPL allowed distribution on physical media. given that in 1989, the state of the art in file distribution was Usenet, and given that even today, Stallman allegedly still uses his wget contraption, it is safe to say that Stallman did not in fact envision that all software under the GPL must be distributed online.

</comment></comment><comment><USER25> I am running mikrotik as home router for... I think 2 years and am perfectly happy with it. It is extremly stable and you can configure it into every detail (to the LEDs and beeper... and I am not joking). Microtik is also very fast with updating vulnerabilities. But I wouldn't recomend it to everyone, for configuring it beyond basic configuration (like QoS), you need to understand networking, it is not a consumer grade product.

Bottom line, great routers, packed with features, not simple to configure.</comment>


Victorian Jokes Database - <AUTHOR> http://victorianhumour.com/jokedb/ <comment><USER3> The page is not very clear, but it has only an snippet of the joke. For example, the first one is

> _Two naval officers were disputing as to the importance of Lord Nelson 's > victories. They wereunable to agree in opin_

I didn't get the joke. Is "opin" an old English word? Until I realize the number has a link to the complete joke: [http://victorianhumour.com/jokedb/joke/1](http://victorianhumour.com/jokedb/joke/1)

I think that adding a few "..." dots at the end with a link will be more discoverable. (Bonus points for changing the color to grey so the sentence vanish instead of stopping suddenly.)

<comment><USER4> Nihil means nothing in latin. The punchline is a pun on Battle of the Nile (see wikipedia). It may seem bizarre, but is less so because Nelson is already associated with latin in victorian popular culture because of his supposed final words. Can someone explain #2 for me?

<comment><USER3> Perhaps I was not clear. I thought that the joke ended in "opin". I read it a few times, thinking that it didn't continue beyond "opin". Then I notice the link and that the joke continue.

Anyway, thanks for the explanations, because I didn't get all the details. Perhaps they can add an explanation wiki like [http://explainxkcd.com/](http://explainxkcd.com/)

<comment><USER4> Thanks. I was recovering from three days of sickess, so at least most of the gap was at my side. Yeah - an explain link would be a worthwhile project for someone with some time or an interest in building a small webapp, and useful.

</comment></comment></comment></comment><comment><USER5> Wow, these jokes are as dry as day old toast. Would people have really laughed at these back then? I read 5 or 6 of them and many of them don't even make sense, let alone are funny.

Still, I'm glad to have them preserved, it's a window into the past :)

<comment><USER6> I read the first few and dry is being polite. Wasn't this the age when people were turned on by seeing a woman's exposed ankle? I wonder what their reaction would have been to today's jokes and short shorts. Seems people were both easily amused and aroused back then. It is wonderful to have this archive though, agreed.

<comment><USER7> > I wonder what their reaction would have been to today's jokes

They'd get on reddit, see a couple of mundane image macros memes of the lines of "WENT TO THE BATHROOM — DIDN'T PEE", and conclude that humanity has gone downhill horribly humor-wise.

</comment></comment></comment><comment><USER8> I find their Tumblr of latest additions more pleasant to read [http://victorianhumour.tumblr.com/](http://victorianhumour.tumblr.com/) \-- possibly because the jokes are handpicked and correctly transcribed. It's still not very funny (but non-funny in an interesting way), but at least it's often understandable.

</comment><comment><USER9> This is a great idea, but you need to fix the navigation on that page - <USER2> to click on those tiny numbers off to the left is really frustrating. Also, as 'gus_massa' points out in his comment, having the summaries trail off with an ellipsis would also make things easier to understand.

</comment><comment><USER10> From [http://victorianhumour.com/jokedb/joke/19](http://victorianhumour.com/jokedb/joke/19) \-- "Ihad [sic] always a high opinion of your seamen," said Napoleon one day" .. these Victorians had definitely mastered the single entendre.

</comment><comment> vanilla-almond For more modern humour poking fun at the Victorians, there's the brilliant BBC children's series Horrible Histories:

[https://www.youtube.com/watch?v=AHFNK-3lZ1U](https://www.youtube.com/watch?v=AHFNK-3lZ1U)

(video annoyingly rotated presumably to avoid copyright detection)

<comment><USER11> Also the novel 'Flashman' is quite good really.

</comment></comment><comment><USER12> The Book of Humour, Wit & Wisdom. Seems like all the jokes come from here. Why not randomize or have an option to dig without hitting the next button? You can change the offset number in the URL, although that is not what I would call a friendly database interface.

</comment><comment><USER13> It's worth noting that despite the title quite a lot of these are not actually jokes. (Several others are, to my mind, merely not actually funny, but that's no surprise; tastes in humour evolve.)

</comment><comment><USER14> These are much funnier if I imagine them being read by Buzz Killington.

[https://www.youtube.com/watch?v=f68VXKMZT1Q](https://www.youtube.com/watch?v=f68VXKMZT1Q)

</comment><comment><USER15> This really needs an explainvictorianhumor.com.

</comment><comment> guard-of-terra The website is very raw. Joke #1 has messed up punctuation which hurts its reception. You usually at least make first things good.

</comment><comment><USER16> Is there an API for these? Would be cool to make some IRC bots or CLI programs to display some of the jokes.

<comment><USER17> [http://victorianhumour.com/jokedb/?offset=0&paging=5000](http://victorianhumour.com/jokedb/?offset=0&paging=5000) plus a negligible amount of scraping code.

</comment></comment><comment><USER18> Part of the dry joke is that they show the exact microsecond the entry was added?

</comment><comment><USER19> someone please train a character based RNN to generate these</comment>


Today was my last day @ Yahoo. I made a video to commemorate the occasion. - <AUTHOR> http://www.youtube.com/watch?v=vhvybkPa15c

<comment><USER2> Hey man, I was an intern at Yahoo! last summer and I asked you why, with all your talents, you wouldn't want to work on your own company/startup. You answered you'd never leave Yahoo!; obviously that's a hyperbole. But I have to say, never came pretty fast. What happened?

<comment><AUTHOR> Doing your own thing / startup isn't all its cracked up to be. 90% of the people I know doing it are chasing money, and I don't want to dedicate my life to that. Too short to just make money, I'd rather enjoy the ride, and love what I do.

I won't get into the reasons why I left, lets just say politics and environment. Last year was pre-M$ deal too.

I hope you're doing well, and I you enjoyed the video. I made it as a memento for myself looking back in 20 years :) and for my fellow nerd folk to enjoy.

<comment><USER2> Definitely enjoyed it, forwarded it to all the other interns I worked with :)

</comment></comment></comment><comment><USER3> Too bad you're leaving us, but good luck man :)

Where did you get that Y! branded wizard's hat by the way?

<comment><AUTHOR> :) thanks.

I worked with the HackU event, and those were the first place prized for 2009. One group was only 3 instead of 4, so I stole the last one.

When I'm doing the event, I wear it everywhere. Going through airport security with it on, is very fun ;)

<comment><USER4> I competed in Hack-U at UW this year! I was surprised to see a familiar face in the movie.

After Yahoo!, what is next for you?

<comment><AUTHOR> HackU will be the most missed part of my job. It was a great 25%, it was the other 75% of my job that needed work :)

I'm heading to Facebook as an astute reader gleaned. Although, I don't know what I'll do there yet ;)

</comment></comment></comment></comment><comment><USER5> Wow! That was white and nerdy...

</comment><comment><USER6> ha ha, Good luck dude :)</comment>


They Call It Fun, but the Digital Giants Are Turning Workers into Robots - <AUTHOR> https://www.theguardian.com/commentisfree/2017/jan/20/digital-giants-workers-robots-film-employee-monitoring-the-circle <comment><USER2> IBM Health Insurance must love how excited all the sedentary people are about getting a free Apple Watch from their wellness program.</comment>


Designers Are More Desirable Than Engineers - <AUTHOR> http://blog.coffeeme.in/post/58076882111/designers-are-more-desirable-than-engineers Tinder for professionals analyzed their data on who startup people on their site wanted to meet and wrote a post about it. <comment><USER2> Given that a large number of founders are engineers, it would make sense that founders want to talk with designers over engineers--it's a critical skill that they may lack and for which they have an immediate need. The remainder of founders likely come from the business category, which would explain the low numbers there.

The article says that they made a best effort to bucket each group based on LinkedIn profile. It's not clear how the overlap between founder status and the other relevant groups was handled. I seems that it would make sense to break the founders group out to a separate category.

</comment><comment><USER3> Slightly off-topic but still relevant question, what's the best resource to learn design as a complete noob?

A book to get started on aesthetics/graphics design; or a tools book like Photoshop/InDesign. Or should one try to poke around the Wordpress themes and tweak it?

<comment><USER4> How old are you? Have you at any point in your life exhibited any kind of talent for being artistic? I ask this because I don't think someone can grind and learn their way through design as someone can when it comes to development.

</comment></comment><comment><USER5> Since the statistics are drawn from a single new site, over a few weeks, i'm not sure you can generalize the findings from such a small sample.

It sounds more likely that the site has not attracted enough pure designers yet.

</comment><comment><USER6> The data is not sourced. Also, the title is bad and incendiary, and willingness to meet is not at all equatable to desirability.</comment>


Cameron Herold: Let's Raise Kids to be Entrepreneurs - <AUTHOR> http://www.ted.com/talks/cameron_herold_let_s_raise_kids_to_be_entrepreneurs.html

<comment><AUTHOR> I've been thinking about this for a while.

One of my startup ideas are to get a number of recent graduates to start private, for-profit schools for 12-18 year olds (or something). Initially, rich parents would pay for their kids to go there, and kids with exceptional entrepreneurial passion could get scholarships.

And, if students from these schools were shown to excel at creating valuable businesses later, this project could be used as an example for other schools elsewhere.</comment>


Turkey reconverts Istanbul's Hagia Sophia museum into a mosque - <AUTHOR> https://www.aljazeera.com/news/2020/07/turkey-court-revokes-hagia-sophia-museum-status-200710131419431.html <comment><USER2> I was there a few years ago. Really amazing place, I didn't comprehend its scale until I was there, and even today I struggle to understand that it was built so long ago. I think we would struggle to build something like that today.

What's happening here is very subtle and very sad. Other mosques have either limited or no access to non-muslims and it would be tragic if that happened to the Hagia Sophia and I don't think that anyone is going to speak out against this and even if they did, Erdogan has no reason to care.

All that said, I do recommend visiting Istanbul. It was a fantastic (if brief) trip with some really breathtaking things. I think we spent like two hours getting lost inside the old bazaar and never once walked the same street twice. The food is also so good. I could live on Turkish coffee and Baklava with some Kunefe for desert.

<comment><USER3> FWIW I read on Twitter today (can't find the original tweet for it anymore, sorry) that they would be allowing entry to all visitors outside of prayer times, and that there would be no cost of entry. They also said that the Christian frescos would not be covered up, but dimmed with some kind of lighting apparatus during prayer times and otherwise be visible. This gives me hope that Hagia Sophia will remain accessible to visitors – would be a real shame otherwise, agreed.

<comment><USER2> > allowing entry to all visitors outside of prayer times

That's already blocking off a decent % of the day day, meaning the effective visitor capacity is similarly reduced.

Not to mention that having to force everyone out at scheduled times. When I was there we visited several mosques (also amazing places) and our guide scheduled our visits around prayer times and it made the logistics much more complex for those visits.

I also hate invoking the slippery slope arguments, but, if they were going to restrict access entirely (as with some mosques like Al-Aqsa and Dome of the Rock in Israel where I was last year) they would start by simply restricting things a bit. It's hard to see.

All that said, Turkey is free to do what they want and the Turkish people are going to support Erdogan. I'm just sad that in the future other people may never get to see this incredible site.

<comment><USER4> There are 5 prayers, before dawn, just after noon, couple of hours after noon, just after sun sets, and couple of hours after sunset. These varies by time of year and times get closer during winter times and far apart during summer time. Each prayer takes about 20-40 minutes most, except the Friday prayer which is probably the most crowded time and is about one and half hours. It replaces noon prayer on Fridays.

The Blue Mosque just across Hagia Sofia Mosque also allow visitors even during the prayers, except probably during the Friday prayer since it is really crowded. I never had the change to attend Friday prayer there so I am not sure, but I did at other times. Tourist are allowed to visit during prayers and even has the opportunity watching the prayer.

I think it will be very similar if not exactly the same manner. No worries about the visitors of any religion or of no religion. You can experience these majestic structures. I recommend Suleymaniye Mosque, which is much larger than then Blue Mosque but not as big as Hagia Sofia. The mosque at Edirne is from the same architect (Sinan [1]) and bigger than Hagia Sofia.

Current Hagia Sofia is actually the 2rd rebuilt of the original structure. Original was like the churches in Europe and more rectangular than this one, and did not have a dome. The last structure had dome initially but collapse couple of times and was rebuilt. The reason that it collapsed each time is due to the rectangular shape of the base and did not have enough support of half and quarter domes around it. Sinan the architect is actually the one succeeded to keep the dome from collapsing.

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

</comment></comment></comment></comment><comment><USER5> Haghia Sophia (built AD537) without doubt is the most majestic building for centuries probably is just surpassed by Taj Mahal. The latter however is just essentially a monument but Haghia is fully functional architecture suitable for congregations. Both of the buildings sourced its building materials from all over the world due to Roman Byzantine and India are both the richest world's empire at their apex times.

Fun facts, most of the mosques all over the world copied the Christian's origin Haghia Sophia's dome based architecture and the dome becomes a generic symbol for mosque in apps, etc. On the other hand, churches all over the world are mainly based on the Gothic architecture. The Gothic architecture is most probably originated from Muslim Spanish empire although it's claimed to have Roman and French influences [1]. This can be seen from the infamous architecture of Great Mosque of Cordoba or Mesquita (built AD784) the world's largest mosque during its time, now a church. The other popular mosque inspired by Mesquita mosque is Spanish Mosque (built AD1906) in Hyderabad, India.

Arguably, the more visually appealing and beautiful architecture based on Haghia Sophia is what made it being adopted by most of the mosques around the world and the demise of Muslim Spanish in the 15th century that really sealed the fate of the Gothic based architecture for adoption in modern mosques.

[1][https://muslimheritage.com/muslim-origin-of-gothic- architect...](https://muslimheritage.com/muslim-origin-of-gothic- architecture/)

<comment><USER4> > is just surpassed by Taj Mahal

Not really, The Selimiye Mosque [2] surpassed Hagia Sofia, not only the diameter of the dome also its robustness of its structure. Taj Mahal is a product of inspiration taken from Mimar Sinan and they studied Sinan's work.

"Mimar Sinan's architectural concepts were incorporated into the design of the famous Taj Mahal" [1]

[1] [https://en.wikipedia.org/wiki/Mimar_Sinan](https://en.wikipedia.org/wiki/Mimar_Sinan) [2] [https://en.wikipedia.org/wiki/Selimiye_Mosque,_Edirne](https://en.wikipedia.org/wiki/Selimiye_Mosque,_Edirne)

</comment></comment><comment><USER3> My favourite quote about the Hagia Sophia, from Procopius' De Aedificiis (557 AD):

"For it soars to a height to match the sky, and as if surging up from among the other buildings it stands on high and looks down upon the remainder of the city, adorning it, because it is a part of it, but glorying in its own beauty."

</comment><comment><USER6> [https://en.m.wikipedia.org/wiki/Runic_inscriptions_in_Hagia_...](https://en.m.wikipedia.org/wiki/Runic_inscriptions_in_Hagia_Sophia)

The "Viking grafitti" is really interesting!

</comment><comment><USER2> My photos of the Hagia Sophia: [https://www.icloud.com/sharedalbum/#B0M5qXGF114fUO](https://www.icloud.com/sharedalbum/#B0M5qXGF114fUO)

<comment><USER7> They look amazing. I'm planning on visiting Turkey and some day i wish i could move there since i love the Turkish cuisine

<comment><USER2> Visit before you can't anymore.

</comment></comment></comment><comment><USER8> PBS documentary 'Hagia Sofia' 2015: [https://www.youtube.com/watch?v=Y2WNUWDoAM4](https://www.youtube.com/watch?v=Y2WNUWDoAM4)

</comment><comment><USER9> What could go wrong having a theocracy in NATO?</comment>


The Joy of Lockdown Laziness - <AUTHOR> https://unherd.com/2020/04/how-lockdown-helped-us-rediscover-laziness/ <comment><USER2> I think this crisis period may end up being a defining moment for mankind - the last truly shared experience that changes our relationship to work.</comment>


Let's Code... an MMO - <AUTHOR> http://www.sea-of-memes.com/LetsCode1/LetsCode1.html

<comment><USER2> Shamus Young has been doing a vaguely similar series lately, which you can find at: <http://www.shamusyoung.com/twentysidedtale/?cat=66> Note that that page, unlike most blogs, is sorted earliest first, so I'm actually referring to "Project Hex" at the bottom. Though you may find the others interesting too. Interesting to compare and contrast the two fundamentally different approaches, which nevertheless have produced reasonably similar screenshots initially.

</comment><comment><USER3> I was thinking of (one day) creating a "Let's build a" series in the following order:

1) Students learn about assembly, opcodes, etc. They write programs for an imaginary machine and only run them on paper for now.

2) Students write their own CPU emulator (in C) that can run and test the simple programs from 1.

3) Students write a compiler to a simple HLL which allows them to write more complex programs, and test against the emulator.

4) Students build the processor which was being emulated in HDL, and download it to FPGAs, testing outputs of the programs generated by their compiler against the emulator.

I think most schools already do something like this, but mine missed the compiler part.

<comment><USER4> Check out The Elements of Computing Systems. It walks you through the construction of a computer starting with just NAND gates. You start by building other logic gates, and then an ALU, CPU, assembler, virtual machine, a compiler for a simple high level language, and finally an operating system. Each chapter gives the necessary background information, and a specification for you to implement.

</comment></comment><comment><USER5> This is a pretty damn cool article, but it's an odd choice of bounding spheres for frustum culling of octree nodes. Yes, it's cheaper in terms of CPU time than using the actual octree nodes (which are either cubes or boxes -- cubes in this case), but it's far less precise, meaning you're going to be 1) checking more nodes, due to recursing further when you have a false positive, and 2) most likely sending more data to the GPU than required, especially considering the density of his world.

Can anyone think up a reason why spherical bounding boxes would be beneficial here?

<comment><USER6> A sphere-frustum check is a lot cheaper than a box-frustum check. The spherical test only has to check the distance of a single point to the frustum, a box intersection test is much more complex.

There are some false positives, but as with many things in game development 'close enough' usually works pretty well.

If you're really concerned with efficiency you should look into other data structures than an octree. Octrees are a nightmare for cache performance (like most other tree based structures) and cache utilization is usually the bottleneck on modern CPUs.

If you're interested in the subject this book (<http://realtimecollisiondetection.net/books/rtcd/>) covers everything extremely well.

<comment><USER5> Yea, I know sphere-frustum checks in and of themselves are cheap, but when you consider the cost of false-positives for octree traversal and the cost of sending unnecessary data to the GPU, it doesn't seem like it makes a lot of sense to me.

<comment><USER6> Then it sounds like it's time for an experiment.

Take the code he posted with the article, and modify it to use a box-frustum check instead. Don't forget to test the program's performance before you make any modifications so you'll have something to compare to. Even better, keep the code intact and #ifdef'd out so you can toggle between the two.

Then, compare the differences. Check to see how many false positives there are on average, and how much extra data this means gets sent to the GPU. Keep in mind, however, that extra data being sent to the GPU doesn't matter unless the GPU is actually the bottleneck.

My hypothesis is that the way the octree abuses the cache will overshadow the performance gains (if any) you'll make by using something other than spheres for your test. In the end you'll find that if performance in this part of the code is a problem, you'll need to switch data structures.

<comment><USER5> I'm more curious about this as a general trend. I always see people advising sphere-frustum tests for these situations, but I've never really understood how it works out better than box-frustum. I should really run some tests not just against his code, but to figure out where the tipping point between the two techniques is.

<comment><USER7> Broadly speaking, simpler is better on modern CPUs and GPUs. Testing an array of spheres against a view frustum is cache friendly, can be sped up considerably using SIMD instructions and is easily parallelizable. Submitting superfluous data to a GPU is not generally impactful; GPUs are clever at not drawing stuff that doesn't actually contribute (with clipping and depth buffer rejection) and extremely fast in their own right.

</comment></comment></comment></comment></comment></comment><comment><USER8> This is really cool! I can't wait to come back and give it a proper read through. Hurry on weekend :)

</comment><comment><USER9> I've been looking into game programming in my spare time and I was wondering how to best implement the UI as a hobby project. I know there's Scaleform, <http://www.scaleform.com/> , that's used for major games like Starcraft 2 but the price tag is way out of my league. Anyone have any suggestions?

<comment><USER10> A ton of UIs are built from the ground up. When you compare the logic and math involved to the logic and math used in 3D rendering or even 3D game logic, it's an absolute pushover, though you might feel like it's a huge hassle since in web development you get the UI logic, more or less, for free. You'll notice very quickly in game development that, until very recently and with the exception of graphics / sound libraries, you have to code everything from scratch.

It really depends on the library/engine you are using (if you're using one!) OGRE3D integrates well with several packages, Unity has a builtin GUI system that is stupendously inefficient, and the list goes on...

<comment><USER11> It's definitely a pain point for games that there isn't much choice around for general-purpose UIs. It's a big factor in why many indie games end up with really shitty, underdeveloped UI.

Fortunately, you don't really need to reinvent Qt or CSS to get the job done. A font system and a few hand-coded controls usually suffice.

I think the bigger problem is in sound synthesis and processing. This arena still remains mostly confined to reverb algorithms, crossfaded tracks, and pre-recorded samples, yet the depth of the subject goes about as far as graphics does. So we're really missing out in terms of applying technology to creativity here.

</comment></comment></comment><comment><USER12> As for an Octree-based implementation, <http://sauerbraten.org/> comes to mind. Sauerbraten (aka Cube 2) also has a real time collaborative world editor.

</comment><comment><USER13> Uh... I'm getting a 404 for this.

<comment><USER14> me too

</comment></comment><comment><USER15> The article is called "Let's Code... an MMO" - but it is just a simple Octree tutorial.

I don't mean to be negative, like the guys friends that laughed at the project - but coding an MMO is several orders of magnitude more complex than putting together an Octree renderer.

Best of luck with it, but, so far, nothing to see here.

<comment><USER10> Writing an octree is definitely part of coding an MMO. It's a piece of software, of which an octree or something similar is a fundamental part, thus it totally fits. If this is too slow-paced or ground-level for your tastes ... avoid game development, it just gets worse; more complicated, more pedantic, more detailed, more time spent not actually creating game logic.

However, I'm also cheesed at the misuse of the term MMO, Minecraft is pretty close but the lack of a centralized game world in any way makes it unlike most MMOs, and by extension doesn't really fit the term. It is merely a persistent multiplayer construction set. N8 (Neverdaunt) or Wurm Online (which notch had formerly worked on), for example, are similar construction-oriented games that definitely fit the MMO moniker because there /is/ a centralized persistent game world. Dealing with the side effects of such a architecture does make things an order of magnitude more complicated.

<comment><USER15> I disagree where you say 'an octree is definitely part of coding an MMO.'

An Octree is just one technique to reduce the size of the Potentially Visible Set of geometry that is sent to the rendering pipeline. While its a quite a natural fit for a voxel-style world, such as minecraft, there are many techniques to achieve this; an octree just being one.

If the Octree was the core technical challenge and data structure used to create every MMO, then I'd have no issue with the article. But its really not - its a simple technique, graphics 101, used to speed up rendering (or collision detection).

Further, just having an octree is not nearly sufficient for handling MMO scale issues - a lot more needs to go into structuring the world - when those larger challenges are solved, I'd like to read his article on it.

</comment></comment></comment><comment><USER16> Honestly i don't believe that he will get to the point of having something playable. I watched too many projects like this fail and some succeed.

Those who succeeded all did NOT focus on their technology when talking about their project and seemed to focus more on getting it to a point where you could actually play something.

Of course you'd think that for a mmo a good technology base is key, but it isn't because if you're honest: Your mmo won't attract a that large crowd in such a speed that you won't have time to merge to something better and spend the money you've earned from your customers of the first hour on improving scalabililty.

Find something fun, get it done and then make it work would be my advice to any aspring independent gamedeveloper.

</comment><comment><USER17> Where's the maths?

</comment><comment><USER18> Oh piffle to all you nay-sayers. Look at what he's done! What fun! How great it is to zoom around a world entirely of your own creation! Who cares about the rest? Not me. Sure, I would have just used a 2D structure instead of a 3D one, and maybe experimented with hex maps instead of squares, but this guy now knows more about 3D oct-tree terrain rendering than I do, and anyone who has commented so far, I'll wager.

Creation is never to be sniffed at.

</comment><comment><USER19> been checking some simple game development solutions in my spare time ... been looking into SlimDX, and then discovered pygame - <http://www.pygame.org>, works on linux and windows, it's a Python based lib, now i dunno python but it was really easy to start crating nice stuff in no time.

<comment><USER5> Pygame is a great way to get started quickly. Once you move into the 3d world, though, I seriously recommend pyogre (and its bindings for Bullet and all that). You won't get the knowledge of how to write your own engine, but if you want to do some awesome gamedev with minimal time sunk, you really can't beat pyogre, IMO.

<comment><USER20> Do you have any thoughts on Panda3D? Like pyogre it's a C++ framework with Pythonic bindings on top.

I think the most fantastic thing about Pygame is the huge library of open games on its website. I wish these 3D framework sites had that.

<comment><USER5> I have looked at Panda3D, but I haven't built anything with it, so I really can't compare the two very well. That said, Panda3D's goal is to be a game engine, rather than just a graphics engine, as with Ogre. I imagine between that and the poor documentation for pyogre, it may very well be easier to get a game going with Panda3D. But personally, I love ogre and the bindings that pyogre provides to other libraries, e.g. Bullet, make my life damn easy. Also, the documentation issue _is_ an issue, but most things are wrapped so closely to the C++ counterpart that you can just use the Ogre docs and be fine.

I spent a couple days writing wrappers around pyogre to do things like game state management, nice GUI APIs, etc, and after that it was clear sailing. I wish I had more time to work on the game all that stuff was for, really, but such is life.</comment></comment></comment></comment>


Ask HN: In-memory Webserver - <AUTHOR>

I've been thinking about my needs for a webserver and seeing as how I'm only going to be serving static pages I want to concentrate on speed and simplicity. In my scenario I'll have a set of pages that aren't going to change, and if they do, taking down the server would be okay. My question is then:<p>Is there a webserver that, when started, reads all pages into memory and then never touches the disk again? Would a similar effect be better achieved with something like Apache + memcached? Other suggestions? <comment><USER2> _Other suggestions?_

You're thinking way too hard. As long as you have enough RAM, your operating system will cache data; so you don't need to do anything fancy at all. Set up whatever web server you like, in the default configuration, and measure its performance; odds are that you'll find that you don't need to tune anything at all.

<comment><USER3> Seconded; for extra performance enable sendfile().

</comment></comment><comment><USER4> I'm using apache+varnishd, I've heard good stuff about <http://nginx.net/>

Good luck!

</comment><comment><USER5> you could serve from a ram disk

</comment><comment><USER6> nginx+memcached or nginx+ramfs?</comment>


Anders Hejlsberg on Modern Compiler Construction (2016) [video] - <AUTHOR> https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction <comment><USER2> One take away for me was: Language designers & compiler writers today need to consider editor support as one of their goals.

On the top page there's another thread about rust-analyzer vs RLS. What Aleksey said[0] about RLS that "[RLS's] current architecture is not a good foundation for a perfect IDE long-term," feels similar to my coworker's conclusion in her effort to provide better editor support for PHP[1].

Parsers for compiling code into machine-executables vs parsers to serve LSP responses have different tradeoffs. For example, Anders mentioned TS parser need to have good error-recovery, can respond with completions/errors when one file changes inside a thousand-files-project. I vaguely remember TS had a goal to provide completions in < 50ms and errors in <150ms. Such goals are hard to achieve as after-thought. If your core compiler doesn't do error recovery, such as PHP, you need someone to write a new compiler from scratch for a language server implementation. If tools such as RLS rely on compiler to dump all JSON metadata and figure out LSP responses[0], it's too slow for editors.

TS's good editor support doesn't come free. I think one of the most under- appreciated achievement of TS is how it took editor support seriously and designed its compiler infrastructure to do it well. That's why I don't believe in those hot-new-web-languages that try to take over TS by designing a better type system. TS brought the average developer's expectation of a language to having fast completion, fast error reporting, editor autofix, F2 to rename and renaming-a-file-in-editor-to-update-all-references. It's 2020 and people aren't going back to write code like in Notepad.

[0]: [https://ferrous-systems.com/blog/rust-analyzer-2019/](https://ferrous- systems.com/blog/rust-analyzer-2019/)

[1]: [https://github.com/microsoft/tolerant-php- parser](https://github.com/microsoft/tolerant-php-parser)

\---

EDIT: grammar.

<comment><USER3> > One take away for me was: Language designers & compiler writers today need > to consider editor support as one of their goals.

In a way this is very intuitive: a programming language is a kind of a UI for the language's runtime. The IDE is just another UI layer on top of that.

</comment></comment><comment> W-Stool Turbo Pascal (which he authored) was quite the accomplishment back in the day - editor and compiler in 64K. Think about that for a minute.

<comment><USER4> That was my first language after BASIC - I loved it!

I may be remembering this wrong, but it seemed virtually free - it was about $100 when its competitors and most software was $500+. That was in about 1986. The only way to get a manual was to buy the software. Another world..

<comment><USER5> You do remember wrong. It was $49.95. It changed my life.

<comment><USER6> Mine too.

Started with ZX BASIC then when we got a second hand PC I switched to TP - Pascal was and is an excellent first language, in that sense it met it's design goals well.

</comment></comment></comment></comment><comment><USER7> This is a great talk, I was struck by how similar some of the high level design goals are to LLVM [https://www.aosabook.org/en/llvm.html](https://www.aosabook.org/en/llvm.html)

I kind of hope Anders moves on from TypeScript soon, he's done a fantastic job there considering the constraints of JavaScript, but I'd love to see him tackle something new.

<comment><USER8> Between Delphi, C#, and TypeScript the man has already had a storied and impactful career.

<comment><USER7> Yes, he's fantastically accomplished and capable, and I think he could do amazing things in a new area.

I'd love to see him take lessons learned from C# for a language designed for WASM from the get go.

<comment><USER9> Unfortunately, he is quite adamantly not a fan of WASM.

<comment><USER10> Why is he not?

<comment><USER11> Only thing I could find of him mentioning WebAssembly was here at 19:45: [https://youtu.be/MxB0ldQfvT4?t=1185](https://youtu.be/MxB0ldQfvT4?t=1185)

In that video he says that it's not a suitable target for TypeScript to compile to because WebAssembly doesn't have a garbage collector. They'd have to basically implement an entire JavaScript engine in WebAssembly which would be pointless.

He gives some examples of things it could be good for, which are all CPU intensive things like image processing and video games, but he doesn't seem to think it's really suitable for making normal web apps.

</comment></comment></comment></comment></comment></comment><comment><USER12> A thread from 2018: [https://news.ycombinator.com/item?id=17280589](https://news.ycombinator.com/item?id=17280589)

Discussed at the time: [https://news.ycombinator.com/item?id=11685317](https://news.ycombinator.com/item?id=11685317)

</comment><comment><USER13> It sounds like that content-addressed code as in the Unison language [https://www.unisonweb.org/](https://www.unisonweb.org/) could end up facilitating the design of a _very_ effective IDE since the language can naturally generate an immutable structure by default.

I don't know enough to know if this hunch is correct, I'm wondering if anyone better informed can chime in.

<comment><USER14> Yes this is correct. We use content addressable code, inspired by Unison for yazz Pilot, and it makes so many things in the ide really simple, including dependency management and stuff like that

</comment></comment><comment><USER14> Very interesting, even though we don't have a compiler in the traditional sense for yazz Pilot as a container image is our output format, many of the points are still valid.

Also very interesting how rosalyn had the idea of compiler as an API, we went in the opposite direction and did not have any extensibility, instead we made the Code editor an API

</comment><comment><USER15> Something I've observed with languages he designs are that they end up with a ui form builder. I wonder if that will happen with typescript. It's harder, because they'd either need to pick a framework, or design it for at least react, vue, angular.

</comment><comment><USER16> At that time I wanted to read about compiler building. Missed that I'm University. That video made me skipping that. The standard books do not exist for this level of evolvement.

</comment><comment><USER17> This is kinda how the compiler-stuff in Dark is written.

Everything - the editor, semantic analysis, version control, execution engine, everything - all use the same data structures (the same abstract syntax tree).

We use functional data structure everywhere and we do functional updates within the AST all the time; that's even how text entry in the editor updates the program.

<comment><USER18> > Everything - the editor, semantic analysis, version control, execution > engine, everything - all use the same data structures (the same abstract > syntax tree).

Is that data structure suitable for all those purposes though?

How do you do optimisations like GVN on an AS->T<-?

<comment><USER17> It's not suitable for all purposes, but it's suitable for all editor purposes (including an in-editor execution engine). We don't do GVN, or any optimizations really, right now - I'm sure when we have a compiler of sorts we'll have other structures, SSA, etc.</comment></comment></comment>


Request for Reviews on my new django site: whatzo.com - <AUTHOR> http://www.whatzo.com

<comment><USER2> It's very similar to the StackOverflow type of sites. Except, perhaps, that no discussion is allowed, and questions aren't tagged/labeled.

The one problem I see with these sort of sites is that if they aren't focused on a subject (or somehow let the user specify interesting topics like Quora does), it's very difficult to find relevant questions to answer.

Otherwise, very nice work.

</comment><comment><AUTHOR> thanx nimrody for the comment. i'll take note of this.</comment>


Exactly-once Semantics: How Kafka Does it - <AUTHOR> https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/ <comment><USER2> Providing API for building applications that have transactions and help with idempotent producing is really exciting. This will help lower a lot of pains associated with building stream processing systems. Doing it with very little performance overhead is amazing.

I do feel that calling it "Exactly-once delivery with kafka" is slightly misleading as this requires the applications to be written in a certain way. The title makes is sound too general and borders on claiming something that is close to impossible. I dont want to be too critical here as the author was very honest with what this means in the blog post. Regardless of the title this is an amazing feature.

<comment><USER3> Not "close" to impossible -- actually impossible.

<comment><USER4> The reasons this is "currently" impossible are: \- We cannot build communication infrastructures that are 100% reliable \- We build apps that actually crash.

I would not venture as far as to say this is impossible. If one day we are able to leverage quantum entanglement phenomenon in telecommunications network this would certainly be very much possible.

<comment><USER5> The machine that reads the quantum entagled particles will still occasionally break or have coding errors.

<comment><USER6> I don't really know a thing about that sort of network, but if you can assume a reliable network, the machine reading the packets going down shouldn't matter. The sender won't get an "ACK", will know the other machine is at fault and not the network, and can resend.

Given a "perfect network" I think exactly-once-delivery is possible, right?

<comment><USER7> What if the sender fails before it can fully process the ACK? When it comes online again it won't know that the last message sent was delivered.

<comment><USER6> Transactions.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> These are some pretty huge improvements to what was previously the weakest link in Kafka's API: the Producer.

However, it's important to note that this can only provide you with exactly- once semantics provided that the state/result/output of your consumer is itself stored in Kafka (as is the case with Kafka Streams).

Once you have a consumer that, for example, makes non-idempotent updates to a database, there's the potential for duplication: if the consumer exits after updating the database, but before committing the Kafka offsets. Alternatively, it can lead to "message loss" if you use transactions on the database, and the application exits after the offsets were committed, but before the database transaction was committed.

The traditional solution to this problem is to provide your own offset storage for this consumer within the database itself, and update these offsets in the same transaction as the database modifications. However, I'm not certain that, combined with the new Producer API, this would provide exactly-once semantics.

Even if it doesn't, it's still a huge improvement, and significantly reduces the situations under which duplicate messages can be received.

<comment><USER9> To clarify: the transaction feature is a transaction over updates to Kafka and provides transparent, correct processing in Kafka for Kafka Streams or anything else only maintaining state/output in Kafka. The trick you described where you either transactionally or idempotently store your offsets and state updates in an external store when consuming in a general app still works, but obviously for that to work it requires there are no duplicates in the log itself, which the idempotence feature in the producer described here enables.

</comment></comment><comment><USER10> There's lots of words in this article (and design doc: [http://goo.gl/EsdTXo](http://goo.gl/EsdTXo) ) but it's missing a very simple key points?

1\. State diagram: What are the messages exchanged between Producer and Consumer (and how many round trips to confirm a message)

2\. At what point does each side consider the message to have been delivered?

3\. Has this been tested empirically? (i.e: Setup producer, consumer, and partition/kill each side randomly to see if messages get lost)

The one thing I don't understand is the following. The two parties communicate by message passing. At some point the message will transition to a new state (i.e: delivered). That transition cannot happen on both sides at the same time. So how do you handle the failure of sending of the last message? Do you stage messages until after the timeout period has passed?

<comment><USER11> Points 1 & 2\. There is no direct communication between a producer and consumer. The producer writes to the broker, the consumer reads from the broker. There is a detailed flow diagram for the producer side operations in the article, and this deck has more of the details of how both the producer and consumer work: [https://www.slideshare.net/apurva2/introducing-exactly- once-...](https://www.slideshare.net/apurva2/introducing-exactly-once- semantics-to-apache-kafka)

3\. Yes, it has been tested empirically. Quoting from the article:

> We wrote over 15,000 LOC of tests, including distributed > tests running > with real failures under load and ran them > every night for several weeks > looking for problems. This > uncovered all manner of issues, ranging from > basic > coding mistakes to esoteric NTP synchronization issues > in our test > harness. A subset of these were distributed > chaos tests, where we bring up > a full Kafka cluster with > multiple transactional clients, produce message > > transactionally, read these messages concurrently, and > hard kill clients > and servers during the process to > ensure that data is neither lost nor > duplicated.

</comment></comment><comment><USER12> This is pretty cool stuff. I have been working with Apache Flink where the computational model is exactly once (which is still hugely useful) but it still comes with caveats about duplicate messages downstream, which makes writing to downstream db or having multiple flink processes tricky. Often times this is done by windowing data and producing complete snapshots of that window (i.e. you need to keep all the state for a given window) such that the message downstream is idempotent and then aggregating windows together (which can be non trivial for certain aggregations).

Once flink (and other systems) support this, I think it will really be a game changer. It will allow for doing things like sending an increment downstream rather than needing to keep all that state. Instead of mostly seeing stream processing as a thing we do for analytic use cases, it can really become the backbone for streaming applications.

Event Sourcing/CQRS has been an idea for a while, but in practice, is difficult to do because to the inherent difficulty in dealing with message semantics and consistency (see [https://data-artisans.com/blog/drivetribe- cqrs-apache-flink](https://data-artisans.com/blog/drivetribe-cqrs-apache- flink) for a good write up about such an app). The ability to independently optimize for both reads and writes while also not having to make all messages be idempotent, in my mind, will make this feasible for a broad range of teams and won't require a huge amount of work in thinking up clever message formats or working through as many failure scenarios.

That being said, I fully expect this to bite hard when the caveats aren't understood (such as when interacting with external databases) and there are still other hard problems. Like creating a consistent down stream view of an app in terms of business events rather than hooking into a database transaction log.

Still though, I think these are the sort of solutions needed to make distributed systems easier, even though there are lots of caveats :)

</comment><comment><USER13> Boy would I love to see a Jepsen test of this one.

<comment><USER14> It's not Jepsen, but we actually do a fair amount of system and integration testing, some of which does things like kill nodes (randomly, the controller, etc) and validates data is delivered correctly. There is some ongoing work to add other fault injection tests: [https://issues.apache.org/jira/browse/KAFKA-5476](https://issues.apache.org/jira/browse/KAFKA-5476)

This has already caught quite a few bugs, including one that led to a change to the replication protocol which is included in this 0.11.0.0 release. See the community KIP here: [https://cwiki.apache.org/confluence/display/KAFKA/KIP-101+-+...](https://cwiki.apache.org/confluence/display/KAFKA/KIP-101+-+Alter+Replication+Protocol+to+use+Leader+Epoch+rather+than+High+Watermark+for+Truncation)

One cool thing that happened recently with these tests is that they were modified to make the client implementation pluggable: [https://github.com/apache/kafka/pull/2048](https://github.com/apache/kafka/pull/2048) Confluent uses this functionality to test all of its clients (librdkafka, confluent-kafka-python, confluent-kafka-go, confluent-kafka-dotnet) in addition to the Java clients. This not only makes us confident of these clients from their first release, but has also found dozens of bugs in both the clients and the broker implementation itself. Getting automated testing across many clients has really stepped up the quality and robustness of both existing and new features.

If you're interested, the tests themselves are here: [https://github.com/apache/kafka/tree/trunk/tests](https://github.com/apache/kafka/tree/trunk/tests)

<comment><USER14> I should also mention that system/integration tests of the new functionality was a requirement for releasing it. For example, here's one of the tests [https://github.com/apache/kafka/blob/trunk/tests/kafkatest/t...](https://github.com/apache/kafka/blob/trunk/tests/kafkatest/tests/core/transactions_test.py)

</comment></comment></comment><comment><USER15> So its exactly once semantics, not exactly once delivery. Adding a dedup is not exactly once delivery, its being idempotent, its exactly once commit, we've had this for years. Having clients request for committed messages and keep track of their progress is not exactly once delivery, its exactly once request. Exactly once delivery has messages pushed to clients. As blogs have noted this is not possible.

</comment><comment><USER16> [https://techcrunch.com/2017/06/30/confluent-achieves-holy- gr...](https://techcrunch.com/2017/06/30/confluent-achieves-holy-grail-of- exactly-once-delivery-on-kafka-messaging-service/)

There is a crazy claim of 'solving the unsolved problem for so many years' from Confluent CTO Neha Narkhed as mentioned below from the above article.

"It's kind of insane. It's been an open problem for so many years and Kafka has solved it — but how do we know it actually works?" she asked echoing the doubts of the community.

This is solved only in consumer-transform-produce scenario addressing kafka streams exactly once requriements. This is a nice feature for kafka streams but it is better to avoid tall claims like the above.

Actually blog post also started with major claims but it was made clear in later paragraphs on how it is acheived through de-duplicating messages in broker and the limitations on consumer side. Title of the blog post and comments in the tech crunch does not seem to be in good spirit.

Idempotent producer does not give any API to solve exactly once producer fecthing messages from target systems and sending them to topics.

I like kafka and the design choices taken to keep things simple for users but all these tall claims should have been avoided.

</comment><comment><USER17> Does this just mean (in TL;DR form) that Kafka now has producers generate an ID for each message they send, and Kafka deduplicates it now instead of requiring deduplication on the end consumer?

<comment><USER9> That is part of it but there is also a general purpose transaction feature that lets you link together updates, state journalling and consumption all in a single transaction. This enables correct stream processing on top of Kafka and is arguably the more technically sophisticated aspect.

<comment><USER16> This comment in tech crunch article is misleading and you may want to clarify on that. I agree that this is a nice feature for kafka streams or applications having consume-transform-produce loop. I as user/dev like kafka because of the design choices taken to keep things simple and much effective for users.

[https://techcrunch.com/2017/06/30/confluent-achieves-holy- gr...](https://techcrunch.com/2017/06/30/confluent-achieves-holy-grail-of- exactly-once-delivery-on-kafka-messaging-service/)

"It's kind of insane. It's been an open problem for so many years and Kafka has solved it — but how do we know it actually works?" she asked echoing the doubts of the community.

</comment></comment></comment><comment><USER9> Dear hacker news:

1\. Please read the section entitled "Is this Magical Pixie Dust I can sprinkle on my app?" Before making angry comments. Answer: for general consumer apps just consuming messages, no. However, Kafka's design, which let's the consumer control it's position in the log, combined with this feature which eliminates duplicates in the log make building end-to-end exactly once messaging using the consumer quite approachable. For stream processing using Kafka's Streams API ([https://www.confluent.io/blog/introducing-kafka-streams- stre...](https://www.confluent.io/blog/introducing-kafka-streams-stream- processing-made-simple/)), where you are taking input streams, maintaining state, and producing output streams, the answer is that it actually kind of is like magic pixie dust, you change a single config and get exactly-once processing semantics on arbitrary code. Obviously you still need to get the resulting data our of Kafka, but when combined with any off-the-shelf Kafka connector which maintains exactly-once you can get this for free. So for that style of app design you actually can get correct results end-to-end without needing to do any of the hard stuff.

2\. Someone is going to come and say "FLP means that exactly once messaging is impossible!" or something else from a half-understood tidbit of distributed systems theory they picked up on a blog. Let me preempt that. FLP is about the impossibility of consensus in a fully asynchronous setting (e.g. no timeout- based failure detection). Of course as you know the vast majority of the systems you use in AWS or your own datacenter depend in deep ways on consensus. Kafka itself is a CP log, about as close of a direct analog to consensus as you could ask for. Obviously Kafka and all these systems are "impossible" in the same sense that if you can make the network or other latency issue bad enough you can make the system unavailable for writes. This feature doesn't change that at all, it just piggybacks on the existing consensus Kafka does. It doesn't violate any theorems in distributed systems theory: Kafka and any consensus-based system can't work in a fully asynchronous setting, Kafka was a CP system in the CAP sense prior to this feature and this feature doesn't change that guarantee.

For those who want a deeper dive into how it all works there is a longer write up on the design here: [https://cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+E...](https://cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging) The use for stream processing is described here: [https://cwiki.apache.org/confluence/display/KAFKA/KIP-129%3A...](https://cwiki.apache.org/confluence/display/KAFKA/KIP-129%3A+Streams+Exactly- Once+Semantics)

<comment><USER18> Note that you can in fact solve the exactly-once delivery problem using the model of FLP. It is much easier than consensus, because once message receipt is acknowledged it does not has to become a common knowledge.

The only serious objection to the idea of exactly-once delivery is that in some models of computation, you can't even solve it on a single node. It may be impossible to process a message and record the fact that this processing have been done in a single atomic step - making any node failure in-between those steps unrecoverable without reprocessing. This is exactly the objection that was raised in referenced article "You Cannot Have Exactly-Once Delivery". Though I don't think it is particularly illuminating observation, especially that it doesn't have anything to do with distributed nature of the system.

</comment></comment><comment><USER19> Is this similar to MQTT qos 2 ?

</comment><comment><USER20> Sounds great, but I'll wait until Aphyr has done his worst to prove that it doesn't work.

<comment><USER21> Or that Aphyr can do his best to help us improve what's built on a strong foundation of sound design, has gone through years of thinking and review by the broader Kafka community, and has been through months of testing.

<comment><USER20> Aphyr has a distinguished track record of breaking things that have gone through "years of thinking and review" and "months of testing". I'll trust his analysis over anyone else.

<comment><USER11> Personally, I would welcome Aphyr trying to break the Kafka EOS guarantees. Like all software, there will be bugs, and the exposure will only make it stronger and more viable.

I write as one of the implementors of exactly once guarantees in Kafka.</comment></comment></comment></comment>


Removing ROP Gadgets from OpenBSD, Todd Mortimer (slides) [pdf] - <AUTHOR> https://www.openbsd.org/papers/eurobsdcon2018-rop.pdf <comment><USER2> It's cool ROP attacks are being mitigated from two directions in OpenBSD. The amount of useful gadgets are being reduced by efforts detailed here AND gadget rich libraries are being relinked at boot or upgrade time. So even if a ROP attack can be found after the reduction in gadgets each machine will need a unique ROP chain.</comment>


Industrial robots that build cars can be easily hacked - <AUTHOR> https://www.recode.net/2017/5/3/15521520/industrial-robots-build-cars-hacked-security <comment><USER2> Yes but production line robots should be air gapped and have strict controls on changes stopping a line is expensive and can have some nasty follow-on effects given the JIT model in use these days</comment>


Ask HN: Do you gamble? - <AUTHOR>

If so, is it online or offline? How often do you visit a casino, and how much you spend on it? <comment><USER2> Used to gamble a lot: casino at least once a week, online for sports betting (mostly UK football, horse racing, sometimes US baseball, and occasionally other sports like tennis), and sometimes online live dealer casino (you see video of a dealer giving you cards, and use the online interface to manage your hand in, for example, blackjack - would only play this late at night on Skype with one or more friends also playing it, usually while drinking.)

Was always for fun not as a profit-generating scheme, but decided I should cut back about 3 years ago, the only sports betting I've done in the last year was during the Cheltenham Festival (four days of horse racing in the UK), and I go to a casino maybe every 2-3 months. I've also cut down the amount I spend - now I won't lose more than £100-£300 in a casino, whereas a few years ago I could easily win or lose £5,000 in a night. Sports betting used to put on between £20 and £100 on most bets, during Cheltenham this year I was placing £5-£10 bets.

I love gambling and think as long as you know when to stop, or when to cut back, it's a great activity.

</comment><comment><USER3> I don't know enough. Fortunately, I know that I don't know enough.

I was in Las Vegas on a business trip, and I mentioned to a co-worker that I didn't see anything wrong with taking entertainment money to the casino. He replied, "Why don't you just give it to a bum on the street?" I'm going to lose the money just as much, but it might actually do the bum some good.

</comment><comment><USER4> I gamble when I make a trip to Vegas or Atlantic City and I go in with the expectation of losing money. I am a somewhat novice blackjack player. It's typically a social experience so I avoid tables where the players appear to be making their lunch or dinner money. I usually interact with the dealer a lot, asking for advice on hands, etc. My wife plays along side me and she has some incredible luck or skill so I use her to hedge my losses and it seems to work.

I go about once every 3 years or so. The losses I can tolerate are typically on the order of $500/day for a 3-4 day trip but I do my best to avoid hitting that limit and so I play at the daytime $10/hand tables. Suffice it to say, I am not high on the casino's list of valuable players.

Also, I live near a large, popular, all machine casino and have only been there once out of curiosity. Not really appealing and the liquor is not free there.

</comment><comment><USER5> I used to gamble weekly, as a way to look for other income streams. Lost a lot at first like most do, starting winning consistently, blew up, win, blew up. Learned about math and psychology. Finally decided that making money that way is a job like any other. You put in hours and have some expected rate of return. Not really worth the time so now I only play for fun.

Edit: Most people lose at first, except the very FIRST time they play.

</comment><comment><USER6> I play poker in card rooms often, but I don't consider it gambling. There is an aspect to luck, but it's mainly skill. Betting and knowing how to bet is a dominant aspect of the game, and there is a huge skill component to that.

</comment><comment><USER7> I gamble at poker and pool. I played poker professionally for a couple of years, something like 2007-2010.

Now I live in a town with a card room (and casino floor) and I go about once a week to play.

I don't spend anything on it (I win).

I also am not interested in any other games. I've never played a hand of blackjack or put even $1 into a slot machine. I detest losing.

</comment><comment><USER8> No. I never understood the attraction of casinos.

</comment><comment><USER9> You can always gamble as a game as long as it doesn't become an addiction but never gamble for anything else. Life's not a game.

Also I have so much bad luck that it spreads around me.

</comment><comment><USER10> Do not gamble.

No good luck here in order to do that and come out ahead.

</comment><comment><USER11> no.</comment>


Tor hires former EFF chief as executive director - <AUTHOR> http://www.pcworld.com/article/3014505/tor-hires-former-eff-chief-as-executive-director.html <comment><USER2> It is hard for me to come up with a better strategy for a Tor executive director, than to hire someone who is both a proven electronic civil liberties activist _and_ a competent attorney to lead a project that has already been feeling the heat. Unfortunately, Tor likely will be publicly thrown to the angry mob by an ignorant representative the moment it is politically expedient and be seared on the grill of neocon pundits, all while the USG continues to push it covertly in places where American influence cannot as easily penetrate due to network censorship.

Steele has a long road in front of her, but she seems to be a great person to lead this project to success. Congrats to everyone working on the project; it is truly necessary in places like Iran to see a neutral Internet.

<comment><USER3> > already been feeling the heat

I think you're misdiagnosing where Tor is "feeling the heat" from. From an engineering perspective, it's been oversold as solving problems it can never hope to.

People who route their traffic through Tor are nearly guaranteed to get malware back [1]. Hidden Services are a hack that don't adequately protect your privacy [2]. And several who have staked their livelihood on being anonymous with Tor have been easily identified by law enforcement [3].

Tor is not a "cause" worth the this level of continued support. It is a research project, for a tightly scoped set of a research problems. In practice, it has several unintended and dangerous caveats that few are aware of. No amount of litigation is going to change those problems.

[1] [http://www.leviathansecurity.com/blog/the-case-of-the- modifi...](http://www.leviathansecurity.com/blog/the-case-of-the-modified- binaries/)

[2] [http://www.ieee- security.org/TC/SP2013/papers/4977a080.pdf](http://www.ieee- security.org/TC/SP2013/papers/4977a080.pdf)

[3] [https://blog.torproject.org/blog/tor-security-advisory- relay...](https://blog.torproject.org/blog/tor-security-advisory-relay-early- traffic-confirmation-attack)

<comment><USER4> One exit node out of 1110 is hardly a "guarantee", and I wonder what percentage of binary downloads are actually done over plaintext HTTP. "Out of over 1110 exit nodes on the Tor network, this is the only node that I found patching binaries, ... This does not mean that other nodes on the Tor network are not patching binaries;"

<comment><USER5> There's also a danger of MitM:

"In 32 days I've found 15 instances where a node is sniffing and using my credentials and over 650 uniqe pagevisits which means that others also sniffs."

[https://chloe.re/2015/06/20/a-month-with- badonions/](https://chloe.re/2015/06/20/a-month-with-badonions/)

<comment><USER4> Again though, how many sites do you use that have login forms that don't use SSL.

I don't know the actual numbers and it might be very high, but I suspect many people do not use any, which makes this point not very important (unlike the one about hidden services)

</comment></comment></comment></comment></comment><comment><USER6> Why does tor need an executive director?</comment>


Porn for Ladies: The Sexism of Assessing Female-Friendly Smut - <AUTHOR> http://www.theatlantic.com/health/archive/2012/03/porn-for-ladies-the-subtle-sexism-of-assessing-female-friendly-smut/254147/

<comment><USER2> "not quite as rapey as what you might expect of, say, a typical S&M scene"

I'm disappointed that an article purportedly aimed at dispelling misconceptions about pornography would so shamelessly perpetuate misconceptions about BDSM.

</comment><comment><USER3> Fwiw I'm male and I enjoy watching James Deen -like stuff a lot more than the mainstream posing BS that's out there.</comment>


Show HN: I've built a Serverless search feature for my blog - <AUTHOR> https://www.morling.dev/blog/how-i-built-a-serverless-search-for-my-blog/ <comment><USER2> You have 13 posts in your blog, you could have shipped all the contents and do the search in client side, and that would be an actual serverless search implementation.

<comment><AUTHOR> Well, of course I hope to have many posts to come on my blog, rendering this solution less and less practical ;)

Besides that, I didn't feel like re-implementing all the things I get for free from a mature library as Lucene, like word stemming, result highlighting etc. This alternative is discussed shortly in the post.

</comment></comment><comment><USER3> I built a similar kind of engine with lunr.js:

[https://github.com/rlingineni/Lambda-Serverless- Search](https://github.com/rlingineni/Lambda-Serverless-Search)

It loads the entire index into memory, and pushes articles to S3 and builds the index over time. You can see how performance gets hurt over time. It also just returns the id of an article, not the entire article. I think this approach with a precompiled index might be genius.

I attached the performance charts, and logs in the readme. At 18000 records, the slowest part is pulling the index from S3.

<comment><USER3> Also what was your functions memory limit? There's also a helper function here if it's interesting to test how the performance scales with more records:

[https://github.com/rlingineni/Lambda-Serverless- Search/blob/...](https://github.com/rlingineni/Lambda-Serverless- Search/blob/master/scale-test/main.js)

It'll tell you the time to upload a record, and then the time to query it as it pushes more and more records. Not sure if you had plans to make it dynamic. Maybe with GitHub actions. Pretty cool nonetheless.

<comment><AUTHOR> Ah, very nice to see others exploring that area, too!

I think baking the index as immutable object into the deployment package works great for use cases like personal blogs, which get updated only every so often, so you can afford rebuilding the search service when doing so. My main motivation for that is security, that way my entire service is read-only and immutable.

I definitely want to automate the deployment. My blog sources are on GitHub too (and already auto-published to GitHub Pages when pushing a change), so it shouldn't be too difficult to have another GitHub Action which rebuilds and deploys the search service.

Re memory, I run with 512 MB. The app is fine with much less; 128 MB works, too. But Lambda allocates CPU shares proportionally to the assigned RAM and below 512 MB it's just a bit too slow. As I'll probably never leave the free tier with this service, "wasting" memory that way doesn't cost me anything really, altough I feel the RAM/CPU correlation isn't ideal in general, because it seems you'll end up paying for superfluous RAM if you're only actually after lower request latency by means of more CPU cycles.

</comment></comment></comment><comment><USER4> Wow thats soo fast!

<comment><AUTHOR> Thanks, happy to hear that!</comment></comment>


Reverse Engineering Guide for Beginners: Methodology and tools - <AUTHOR> https://0x00sec.org/t/re-guide-for-beginners-methodology-and-tools/2242 <comment><USER2> Reversing is an art more than a science, and the most important things to learn are not tools of the trade but habits of thought and approaches to problem solving.

I appreciate what this guy is doing by documenting his learning process, it will help him without doubt, but... as an audience - perhaps we should not learn a difficult skill from someone who started their own journey into this subject a few days ago?

<comment><USER3> There's another demographic who I think would find this useful: people who used to do reverse engineering decades ago but moved on to software development. Cracking software I couldn't afford as a kid was what got me into programming and I'd love to pick it back up but time is limuted. Figuring out which tools to use by scouring Russian forums and random little hole in the wall RE sites was fun but it's great to have an up to date resource. That it comes with a beginner's perspective is quite useful since it's less likely to skip small details that an experienced reverse engineer would find second nature.

<comment><USER2> Except the tools he recommends are definitely not the standard ones professionals use these days.

</comment></comment></comment><comment><USER4> It doesn't recommend radare2[1] and Cutter[2], which are free and opensource.

[1] [http://rada.re](http://rada.re)

[2] [https://github.com/radareorg/cutter](https://github.com/radareorg/cutter)

</comment><comment><USER5> HN comments from an earlier posting. [https://news.ycombinator.com/item?id=14537506](https://news.ycombinator.com/item?id=14537506)

</comment><comment><USER6> Curious, are there specific security engineer professionals that do this type of work day to day? Doesn't seem like a regular security analyst type role. Seems very specialized. What is the field like, compensation and is this generally for consultants?

<comment><USER2> Reverse engineering is one of the core skills employed in vulnerability research. If I'd glance behind the shoulder of a security researcher and not see an IDA or OllyDbg window open, I'd be very surprised.

<comment><USER7> Immunity debugger is quite useful as well.

Of course, if you really hate yourself, GDB on Windows is a thing...

<comment><USER2> If you're looking for a tool professionals actually use every day that requires you to hate yourself, WinDbg scores higher on both counts

<comment><USER8> What's wrong with WinDbg?

<comment><USER9> Their scripting engine is probably the worst programming language I have encountered (perl is readable by comparison).

That's why I was really extatic when Windbg devs introduced a standard script engine, only to learn later on that was JavaScript ...

<comment><USER8> Any specific complaint with JavaScript as the choice? The biggest downside I'm aware of it's the lack of direct support for 64bit numbers. What language would you have preferred? Python maybe?

<comment><USER9> Javascript is actually a sane choice for extending a debugger (event-based, async calls builtins, etc.) it's just that I'm not familiar with :p

I would have expected Windows to go with Powershell as their scripting engine, that's why I was surprised with Javascript.</comment></comment></comment></comment></comment></comment></comment></comment>


How I know the Apple TV won't succeed - <AUTHOR> http://arstechnica.com/apple/news/2009/02/apple-asks-apple-tv-users-for-feedback-usage-habits.ars

<comment><AUTHOR> Just to follow up, all of Apple's big successes have come not from customer surveys and other standard marketing techniques, but when they step out in a bold new direction, satisfying the desires of the engineers themselves, as well as pleasing The Steve.

Apple TV appears to be floundering. It really does give the impression of being a device that Apple created to sell content on the iTunes Store, rather than to meet the desires of consumers. This is not how Apple created smash hits such as the original Apple ][, the Mac, the Laserwriter, the iPod and the iPhone. I forsee a bad ending for the Apple TV if they don't return to their strength - innovating to scratch an itch.

Is this a sign of what will come in a post-Jobs era? I hope not! Perhaps the fact that the survey itself has been taken down so quickly is a good thing.

</comment><comment><USER2> I use my AppleTV every day. My freaking bill attests to that. I only rent movies and buy tv shows. I wish the hard drive was bigger. The other big part of it is the access to podcasts. There are a number that I watch that I wouldn't otherwise. In most cases the quality of video podcasts is better than tv shows. I have my xbox360 and while I have used the netflix streaming a couple times, the quality is horrible compared to ATV. I'm sticking with my little white box, and may cancel the cable tv completely.</comment>


Show HN: Anonysize – Get gift sizes and ideas with an anonymous text - <AUTHOR> https://itunes.apple.com/us/app/anonysize/id1060971906 <comment><USER2> "security" question on a login form: "What's your favorite sports team". Anonymous message asking the same. Would I reply? Probably not.

Also, the question might reveal the future present. Perhaps ask more questions at once to mask the real intent. Still, I would not reply to this, not sure what the solution would be.

<comment><AUTHOR> Thanks, I hadn't thought about security questions. Even though I've never encountered ones matching the questions Anonysize asks, I'm sure they exist.

I have been watching the logs of messages and about 20% of messages get a "?" or "Who is this?" response ... I'm hoping I can do some A/B testing to see what messaging works best.

</comment></comment><comment><USER3> Needs some polish, but nonetheless a fantastic concept!

<comment><AUTHOR> Thanks. "Polish" isn't my strongest suit.

</comment></comment><comment><USER4> Seems nifty for the intended purpose, but then the unintended uses are many. Anonymous threats, for instance. Any mechanism for reporting abuse?

<comment><USER5> > Anonymous threats, for instance.

[https://answers.yahoo.com/question/index?qid=20111003162828A...](https://answers.yahoo.com/question/index?qid=20111003162828AApoFwE)</comment></comment>


Show HN: Commute to work by any (other) means. - <AUTHOR> http://www.sneakytravel.com/

<comment><AUTHOR> Hi all,

This is something I've been working on for a while now. I plan to launch in Australia soon. Please let me know your thoughts (good or bad). Any feedback would be really appreciated. Thanks.</comment>