Arc Forumnew | comments | leaders | submitlogin

Fascinating, thanks for that war story and perspective. That makes a lot of sense.
4 points by i4cu 2662 days ago | link | parent | on: How to handle Racket types?

Just my two cents, but if I were using Arc today I'd consider doing what could be done to conform to the edn spec [1]. It was born out of Clojure, but is not Clojure specific. Also, as I understand it json is actually a subset of edn thus the two would not collide. But for now I think just getting a json parser running would be a win.

https://github.com/edn-format/edn

4 points by akkartik 2662 days ago | link | parent | on: How to handle Racket types?

Looking through the Anarki logs I think I'm seeing signs of our first edit war. It's been very gradual so we haven't noticed until now.

Anarki used to use Andrew's library from http://awwx.ws/fromjson (perhaps an older version of your link, i4cu) I switched it out back in 2009 for a faster replacement (https://github.com/arclanguage/anarki/commit/dad4dc6662), not realizing that I was breaking the read side in this rather obvious manner. Since then a bunch of work has happened on emitting JSON, but apparently nobody tried parsing JSON until now.

We could retrofit these bugfixes, but I think it would just give up the speed gains to parse things character by character. May be worth just returning to Andrew's version.

But I'll try working with the existing version first, just in case it's still fast.


Sorry, my comment was rather lazy. Let me try again.

I get the impression many of the people who want to start a HN like clone are considering using it as a content delivery platform. For example http://arclanguage.org/item?id=20452 notes a revenue sharing model for specialized content. Now, if that's the case these site owners will have both spammers and content scrapers to contend with. So my initial comment was also referring content scrapers too.

However there's another thing to consider: Session storage costs. About 6 months ago I went through a process to reduce the cost of data held in memory for session storage (redis in this case). The session data was continually analyzed for determining both who the bad users were and for knowing what value the good users are getting out of the app (feature planning etc). It was an interesting process, where just by reshaping the session data, thousands of dollars per month could be saved in db fees. Now I realize the someone starting a HN clone is probably not dealing with that, but I'd be willing to bet that part of the reason Captcha was implemented in HN proper was to reduce fees associated with the volume of requests, session costs and even network load. It's my feeling that, generically speaking, adding captcha functionality is a good Option to have.


I don't get either a checkbox or text anymore. I get to identify pictures with cars and signs and whatnot.

Hmm... That's not my experience. 90% of ReCaptcha tests are invisible if not a simple checkbox. Only a small optional subset requires introducing a problem solver.

https://developers.google.com/recaptcha/docs/versions

I do agree though, the text ones can be a pain, but that doesn't happen too often. Sadly HN seems to push those more often.

2 points by akkartik 2662 days ago | link | parent | on: How to handle Racket types?

Can you share the input JSON? Let's treat this as a bug and see if we can fix it.

Simple captchas are totally fine. My problem is with Google's ReCaptcha in particular, where the problems have gotten so difficult that I mostly can't prove I'm a human.

I don't follow the connection.

If the content is publicly accessible and free then that works, but otherwise it doesn't help.

I agree with overt vs shadowbanning. My tendency is to just add tools for moderation. Let bots sign up and spam, but make it easy to take them down and ban them at that point. Arc is reasonably decent there.
3 points by i4cu 2662 days ago | link | parent | on: How to handle Racket types?

I think the problem might be that Arc doesn't support some of data types that you are getting from the json response. For example Arc does not support booleans true/false it only has 'nil' or not a nil value. That's why, in the past, I used Andrews library [1].

That said I haven't had a running install of arc in many years so I could be off base.

1. https://github.com/awwx/lib/blob/master/fromjson2.arc

3 points by krapp 2662 days ago | link | parent | on: How to handle Racket types?

I am, and json.rkt is modified for Arc but the json response is still returning Racket types, which is weird:

    #hash((challenge_ts . 2018-08-03T12:59:44Z)
          (hostname . testkey.google.com) 
          (success . #t))
2 points by akkartik 2662 days ago | link | parent | on: How to handle Racket types?

Try https://github.com/arclanguage/anarki/blob/master/lib/json.a...?

>What's the thinking behind implementing captcha? I really, really hate ReCaptcha.

It might be useful if it only shows up on the login/signup page after failed attempts, but it might also be overkill. Personally, I prefer overt solutions to opaque ones like shadowbanning and throttling IPs. But mostly it seemed like a good way to figure out some basics (managing keys, how the app server manages the form loop, API responses and JSON.)

I could finish the test I have, push that and leave integration for later.


> For most sites the payoff to a spammer isn't really worth even the simplest robot test.

Maybe I am missing something.... Isn't captcha just a fairly simple robot test (and thus preventing spam)? Or are you suggesting something even simpler? Because I've run a few sites and had tried implementing very simple programmatic obstacles and it really didn't stop the spammers.

Maybe the better question is - what would you suggest?


What's the thinking behind implementing captcha? I really, really hate ReCaptcha. For most sites the payoff to a spammer isn't really worth even the simplest robot test. A new site that throws ReCaptcha is an instant bounce.

...speaking of which, I just now managed to correctly send and verify a recaptcha request.

Just have to figure out how to parse the JSON response and then integrate it into the forum and recaptcha should work.

I really should have checked that there was already an http library before trying to get it it work with Racket's, though.


Can you give us an idea of what it would look like?

You're right! I am working on it.

Just have a bunch of things to juggle at the same time. I just thought I'd give a shoutout first.

Thanks for the link - and the comment about discourse.


You're pointing to a repository that was created 6 years ago and has had no work done on it - at all.

Just my two cents, but maybe you should do some work + commits and get the ball rolling before putting out a call for help on a untouched dead repository of your making. Or even better, pick some of the items from here [1] and start by contributing to Anarki as a community member.

1. http://arclanguage.org/item?id=20449


CSRF and captcha are definitely on the list, since i'm working on the forms anyway.

I do like reverse engineering the new features from HN in principle, although it's a shame that it's even necessary.


Well if you're going to make fixes to the forum fix this one too:

http://arclanguage.org/item?id=20272

One thing to consider is that the code is really, really old and was built before cloudflare became a thing. Even the auth code is now fairly outdated (no captcha, no CSRF, etc. etc).

Don't get me wrong it's still useable, but depending on why you're doing this it may not be worth it. If it's to learn arc then swing away, but if I was looking to set up a forum today I's sooner look into installing the open source version of discourse.

edit: also check out shaders post on "Next Steps" [1] and more specifically [2]. Some of these items might overlap with your plans and if so maybe you can put a call out to others already doing the same thing to share in the workload.

1. http://arclanguage.org/item?id=20319 2. http://arclanguage.org/item?id=20324


Yes, sorry, I meant pull request.

Although I do consider it a personal project to fix the forum as much as I can and eventually spin off a lightweight, anonymous fork.

The most ambitious coding I've done was writing a custom CSV parser to add parts catalog data to the web backend of a lawnmower parts store, but that was in PHP. This is my first practical experience using a lisp, though.


Oh I think I understand now, thanks :)

Ahh, well my whole comment is completely off topic; sorry. That's what 10 years of being a BA does to the mind :)

> Can you link to the post you are referring to?

I guess I should be using the expected terminology, that being a 'comment' not a 'post'. In my mind he 'post'ed a comment, but I understand I should have been more clear.


Can you link to the post you are referring to?

PR = Pull Request.

https://github.com/arclanguage/anarki/pull/99 https://github.com/arclanguage/anarki/pull/100


By PR I assume you mean Project? Any interest in providing details?

P.S. I read your post and had a flashback. Eight or nine years ago I was working at a mega corp and couldn't get the company's shared resource team to do any work. At the time I was a BA and had been learning arc in my spare time (as a first language). Long story short I ended up coding an ETL via arc to load annual budget data (template data) from spreadsheets.

The good news was that it worked (no bugs), the bad news was that it was a hack. I lacked two core libraries; One was a spreadsheet-parsing-api library and the other was an oracle DB library. If I remember correctly I created a defop service where people could copy/paste data from the spreadsheet to an input box. Upon submitting the form the data would go through a validator process and return with feedback indicating errors in the data. When successful it would embed the data into a generated SQL string that would be run from my machine via a command line call. All this coded in like 2 days or so.

LOL. Companies have processes, but when things can't get done by the standard process watch every manager in the company thank you for saving the day. Sadly I think I got a bigger bonus than anyone on the dev team even though they probably would have done it right. I guess life rewards results over all else.


I started playing with Arc a few days ago, and (surprisingly) managed to get a PR approved.

I guess it's going to be my "learn a Lisp by doing" project this summer.


Ah... thanks for that note. I am working with Anarki primarily now as noted earlier for News and similar, but also didn't catch on that it was the main working model here.
More