hackernews
uBlock-issues
hackernews | uBlock-issues | |
---|---|---|
13 | 454 | |
605 | 859 | |
- | 0.1% | |
0.0 | 4.6 | |
about 9 years ago | 19 days ago | |
Arc | ||
GNU General Public License v3.0 or later | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
hackernews
-
Can anyone tech me how to make a forum like this one
this might help a little: https://github.com/wting/hackernews
-
Ask HN: How is it possible to shop on Walmart.com? Everything is out of stock
I think it's a ratio of votes to time. I think as little as 4 votes can get something on the homepage if they come in fairly quickly.
The source code for hn is available if you want to go and look up the specifics. I'm not sure if this is the most up-to-date mirror, but the site doesn't change that often: https://github.com/wting/hackernews
-
Why Lisp Syntax Works
Might not count as modern, but the original Reddit and HackerNews codebases:
- https://github.com/reddit-archive/reddit1.0
- https://github.com/wting/hackernews (actually news.arc, based on old hn)
-
Ask HN: Is there an open-source HN forum clone?
There's also this https://github.com/wting/hackernews -- which is a version of the source code to the site from sometime in the past.
-
Whoops: Linux's Strcmp() for the M68k Has Always Been Broken
"Otherwise" was the operative word in my (slightly sarcastic) example. :)
Avoiding all caps words means you sometimes have to go back and change "FAA" back from "Faa".
HN's software is no longer open source, but at one time, this is how it processed titles on initial submission: https://github.com/wting/hackernews/blob/master/news.arc#L15...
-
U.S. appeals court rejects big tech's right to regulate online speech
And at any rate, #1 on HN is not the product of any simple rule like "most upvotes per unit time with some decay function applied." There is significant judgment in expressed in the way that stories are ranked. The sourcecode as of 2012 was enough to demonstrate this, but in my understanding yet more judgment has been applied since then.
https://github.com/wting/hackernews/blob/master/news.arc
-
Ask HN: How does HN manage to be always online?
"ad-hoc filesystem based solution" is the closest of your definitions, I think. Last time I saw/heard, HN was built in Arc, a Lisp dialect, and use(s/d) a variant of this (mirrored) code: https://github.com/wting/hackernews
Check out around this area of the code to see how simple it is. All just plain files. A database, of sorts, but not in the way you might be expecting: https://github.com/wting/hackernews/blob/master/news.arc#L16...
There is a modern maintained variant at https://github.com/arclanguage/anarki/tree/master/apps/news as well.
File syncing between machines is pretty much an easily solved problem. I don't know how they do it, but it could be something like https://syncthing.net/ or even some scripting with `rsync`. Heck, a cronned `tar | gzip | scp` might even be enough for an app whose data isn't exactly mission critical.
- Ask HN: Why are you programming your hobby projects in a niche language?
- News.Y Combinator.com/S.gif
-
Ask HN: How is HN internally structured?
The old version in arc, mirrored at https://github.com/wting/hackernews/blob/5a3296417d23d1ecc90..., uses the file system as a database.
https://github.com/wting/hackernews/blob/5a3296417d23d1ecc90... shows the monotonically increasing number:
(def new-item-id ()
uBlock-issues
-
:matches-path with pseudo-elements
There is an open issue for this: https://github.com/uBlockOrigin/uBlock-issues/issues/2786 uBO should report such filter as en error in Firefox, so that is the thing to fix.
-
Youtube ad block on pc (ublock origin)
This would be the price of one of the four CDNs (6000$ per month): https://github.com/uBlockOrigin/uBlock-issues/discussions/2958
-
Latest Dev build reset all settings and removed all custom filers lists
opened a bug report https://github.com/uBlockOrigin/uBlock-issues/issues/3003
- Disable "uBlock Origin has prevented the following page from loading:" page
-
📌 YouTube Anti-Adblock and Ads - November 12, 2023 (Mega Thread)
Current estimated cost for just ONE of uBO's CDNs: HERE. This is with other lists updating every few days. uBO's not a company, it's a volunteer project using free services, which have limits that we cannot cross.
-
How to block YT ads like a champ
The extension with the best success rate seems to be **uBlock Origin**. It is a community driven project with a team of volunteers, you can review the source code [here](https://github.com/gorhill/uBlock). You will need to update your filter lists regularly, this because Youtube changes detection methods daily. Here is how you do that:
-
Show HN: Bedframe – open-source Browser Extension Development framework
Definitely a much-needed area for development. However, having gone down the browser extension rabbit hole, I've largely shifted my focus to user scripts. Granted, there will always be a need for specialized browser extensions like ad blockers (uBlock[1]), keyboard shortcuts (Vimium-C[2]), and password managers (Bitwarden[3]).
That said, I find user scripts superior for most tasks, despite some lacking UI niceties. They are easier to share, use, and crucially, audit—be it in terms of scope, permissions, or code updates. Plus if Manifest V3 is any indicator, the future for browser extensions looks bleak. While I don't agree with this direction, it's probably for the best for the majority of users, like my mom.
Your effort is commendable; however, should you find yourself looking for a viable pivot in the future, I believe the user script space is primed for innovation and could offer a good alternative.
[1] https://github.com/gorhill/uBlock
-
Help me understand this code!
const defineProperty = function(chain, cValue, middleware = undefined) { let aborted = false; const mustAbort = function(v) { if ( aborted ) { return true; } aborted = (v !== undefined && v !== null) && (cValue !== undefined && cValue !== null) && (typeof v !== typeof cValue); return aborted; }; // https://github.com/uBlockOrigin/uBlock-issues/issues/156 // Support multiple trappers for the same property. // // trapProp is used to trap a single property within an object. const trapProp = function(owner, prop, configurable, handler) { if ( handler.init(owner[prop]) === false ) { return; } const odesc = Object.getOwnPropertyDescriptor(owner, prop); let prevGetter, prevSetter; if ( odesc instanceof Object ) { if ( odesc.configurable === false ) { return; } if ( odesc.get instanceof Function ) { prevGetter = odesc.get; } if ( odesc.set instanceof Function ) { prevSetter = odesc.set; } } Object.defineProperty(owner, prop, { configurable, //When a property is accessed (get), the custom getter function is called. get() { if ( prevGetter !== undefined ) { prevGetter(); } return handler.getter(); // cValue }, // When a property is modified (set), the custom setter function is called. set(a) { if ( prevSetter !== undefined ) { prevSetter(a); } handler.setter(a); } }); }; // trapChain is used to recursively trap properties along a chain of properties (e.g., object1.object2.property). const trapChain = function(owner, chain) { const pos = chain.indexOf('.'); if ( pos === -1 ) { trapProp(owner, chain, true, { v: undefined, init: function(v) { if ( mustAbort(v) ) { return false; } this.v = v; return true; }, getter: function() { return cValue; }, setter: function(a) { // Middleware is called when a property is set, allowing additional processing or validation of the new value. if (middleware instanceof Function) { cValue = a; middleware(a); } else { if ( mustAbort(a) === false ) { return; } cValue = a; } } }); return; } const prop = chain.slice(0, pos); const v = owner[prop]; chain = chain.slice(pos + 1); if ( v instanceof Object || typeof v === 'object' && v !== null ) { trapChain(v, chain); return; } trapProp(owner, prop, true, { v: undefined, init: function(v) { this.v = v; return true; }, getter: function() { return this.v; }, setter: function(a) { this.v = a; if ( a instanceof Object ) { trapChain(a, chain); } } }); }; trapChain(window, chain); }
- Firefox 115 can silently remotely disable my extension on any site
-
Why do my settings keep getting reverted?
Maybe https://github.com/uBlockOrigin/uBlock-issues/issues/2725 ?
What are some alternatives?
Hacker News API - Documentation and Samples for the Official HN API
SponsorBlock - Skip YouTube video sponsors (browser extension)
anarki - Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.
brave-core - Core engine for the Brave browser for mobile and desktop. For issues https://github.com/brave/brave-browser/issues
api - A RESTful API package for the Laravel and Lumen frameworks.
ClearUrls
nativefier - Make any web page a desktop application
ClearURLs-Addon - ClearURLs is an add-on based on the new WebExtensions technology and will automatically remove tracking elements from URLs to help protect your privacy.
ChessPositionRanking - Software suite for ranking chess positions and accurately estimating the number of legal chess positions
uBlock - uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.
awesome-hacker-news - Awesome Hacker News: a collection of awesome Hacker News apps, libraries, resources and shiny things.
bypass-paywalls-chrome-clean-magnolia1234 - Bypass Paywalls Clean for Chrome (no Google Analytics, lot of updates/bug-fixes and custom sites)