HN user

ggorlen

129 karma
Posts0
Comments45
View on HN
No posts found.

I wrote a similar post on in-browser scraping: https://serpapi.com/blog/dynamic-scraping-without-libraries/

My approach is a step or two more automated (optionally using a userscript and a backend) and runs in the console on the site under automation rather than cross-origin, as shown in OP.

In addition to being simple for one-off scripts and avoiding the learning curve of a Selenium, Playwright or Puppeteer, scraping in-browser avoids a good deal of potential bot detection issues, and is useful for constant polling a site to wait for something to happen (for example, a specific message or article to appear).

You can still use a backend and write to file, trigger an email or SMS, etc. Just have your userscript make requests to a server you're running.

CCSF alum here (AA, completed over 20 CS courses). I attended a similar CCSF job fair in 2017 and there were only 2-3 companies involved even then. If I recall, it was Lawrence Livermore National Lab and Mission Bit, maybe a third that must not have been interesting enough to stay in my memory. There were ~10 students at the fair.

The LLNL internship seemed too IT-oriented to interest me. Mission Bit involved teaching high school kids to code after school, which I did for over a year and received course credit at CCSF for.

So it's not that surprising to me that they went from ~2 companies to 0, even disregarding the major drop in attendance at CCSF since 2017 [1]. I didn't attend any other fairs so maybe I missed something, but I never got the impression that they were especially "bumping".

[1] https://sfstandard.com/2022/01/27/by-the-numbers-sf-higher-e...

It was the first online cohort of DC so I didn't realize how intensely difficult it'd be. I'd taken GIOS with Ada which was gentle, so I figured DC wouldn't be significantly harder.

It was a good life experience even though I wound up sacrificing my 4.0 by a few grade points. In hindsight, had I realized how steep the curve would be for DC, I'd have pushed a bit harder to squeeze out a few more test cases, but I was pretty mentally defeated at the time and felt like I'd exhausted all of the ideas I had on the projects multiple times over.

I found DC more difficult than compilers by a wide margin because of the nondeterminism, debugging difficulty and trying to figure out what the test harness was even doing. Compilers involved writing more lines of code, but it was manageable, synchronous greenfield application design.

Good to know. https://www.omscentral.com/ and talking to other students helped a great deal with planning.

Two difficult classes I took together were Embedded Systems Optimization and Compilers, both taught by the same instructor and with similar concepts, so working on one helped solidify concepts in the other.

On the other hand, I took Distributed Computing during its first offering alongside Graduate Algorithms and was super overwhelmed.

Consider that taking 5-10 graduate courses and writing a master's level thesis or project will generally take all of your free time and a bunch of your savings over the course of two or more years. (I sure hope you're not thinking to take on debt for this!)

OMSCS graduate. The program certainly ate up most of my free time for 2.5 years, but on the other hand, the whole degree was about $8k for me and required no thesis or capstone project--just grinding through 10 classes worth of assignments and exams. Also, it was 100% online, so that flexibility frees up time.

Theoretically, if you do 1-2 easy-ish classes per semester, you can minimize the free time impact. But I was less interested in the credential and more interested in the learning experience, so I took difficult classes and worked as a TA.

Caveat: I graduated in 2021 so things may have changed since then.

[dead] 2 years ago

Reminds me of Boyd Rice's rotoguitar (a fan attached to a guitar) and the extratone genre (extreme techno kick drums that run so fast they turn into pitched tones).

There wouldn't be much industry if everyone who trusted ChatGPT and other ways of quickly getting code up (copy-pasting Stack Overflow, "try random stuff until it works" debugging, hopping on calls with random freelancers, etc) followed your advice.

Many programmers I've encountered in early stage tech startups (and in general) are not craftspeople--they're scrambling to get a product to market as quickly as possible and quality and process are very much secondary. Many are working in unfamiliar languages by necessity, or are relatively new or even untrained as professional programmers. I mentor such folk regularly. (Actually, these untrained hackers are often "better" at programming in many respects than senior engineers with 10 years of experience, but that's another story).

If the company survives long enough, they might pay off the tech debt later. OP's team just got unlucky doing the same strategy many other startups are doing nowadays and are willing to admit it.

To be clear, I'm not excusing the mistake or endorsing the process they followed, only noting that their actions aren't out of the ordinary (other than admitting to the mistake) and empathy is due.

Thanks for the reminder, but anyone visiting this site on a restricted data plan may be in for a surprise. Websites that download a quarter gigabyte of data without warning is more than an annoyance.

How do you suggest I warn others to avoid this site? I don't think it's suitable for HN in its current state.

Zeni Geva deserves more credit, great to see them mentioned. You probably know Neurosis and Melt Banana but those might also be up your alley.

Other noteworthy Albini-engineered bands for me: Oxbow, Low, Whitehouse, Labradford, Burning Witch, Godspeed's U.X.O album. Peter Sotos' Buyer's Market is one of the most insane albums I've ever had the displeasure to listen to, and Albini apparently produced it, although I don't hear any obvious influence.

I recently read Aira's Fulgentius and found it to be an engaging, tongue-in-cheek meditation (for lack of a better term) on art, history, conquest and nature.

I consider Varamo (comedic) and Episode in the Life of a Landscape Painter (tragic) to be standouts among the half-dozen Aira books I've read in English. I imagine a good deal is lost in translation.

There's a certain absurd, freewheeling alchemy to his works, but as tends to be the case with improvisation, they're somewhat hit or miss and require a bit of indulgence on the part of the reader. Luckily, they're mostly novella-length and don't wear out their welcome, so I don't mind giving him my time.

According to the article, he writes in places like McDonald's, which is comical and unsurprising. Likewise that he's an admirer of Raymond Roussel.

I didn't expect that he'd be a Morton Feldman fan, though. His books aren't as methodical, claustrophobic and somber as Feldman's works, but maybe share a similar sense of reflectiveness and focus on small, ephemeral moments.

I might be missing something obvious, but it's not clear to me how to get an mp3 out of this on Ubuntu 22.04.

Following the docs, `./tsac c myfile.mp3 myfile.tsac` generates a tsac file that's unplayable with mpv. Trying ffmpeg to convert to mp3 didn't work: `ffmpeg -i myfile.tsac compressed.mp3` ("myfile.tsac: Invalid data found when processing input"). Using a wav input file has the same result.

I can use `./tsac d myfile.tsac output.wav` (I don't really want to decompress anything, but worth a try) but then after compressing `output.wav` with `ffmpeg -i output.wav output.mp3`, output.mp3 is the same size as if I hadn't used tsac (of course). If I use ffmpeg with a low bitrate like `-b:a 16k`, I get the usual low-quality gargle rather than the tsac output.

Ugly Avatar 2 years ago

Thanks, I appreciate seeing the code! For code with database access, you could use an environment variable from a .env file and gitignore that file, making it safe to share. (you're probably already aware of this practice and may have another reason not to want to push it)

Ugly Avatar 2 years ago

Thanks! I found the Vue source in Firefox by going into the Debugger tab in DevTools, and clicking on Sources > Webpack > ugly-face > src.

Chrome makes it a bit more intuitive, since the tab is called Sources, then click into Page > top > ugly-face > src.

That said, I don't understand why the author didn't simply commit the source code into the GH repo, especially since it's fully retrievable anyway. Maybe there's some goal in doing that other than security by obscurity I'm missing, since they've followed the same pattern for multiple of their repos. It seems kind of anti-collaborative to me.

And BOOM! 100%(!) accuracy against our test suite with just 2 prompt tries. ... OK, so I'm super happy with the accuracy and almost ready to ship it. ... Wawaweewah! ... letting me actually deploy this in production ...

This feels like extreme overconfidence in the LLM, sort of how I felt the first time I used one.

How many times did they run the test suite? How thorough is the test suite? How much does accuracy matter here, anyway? (seems like it does matter or they wouldn't advertise 100% accuracy and point out edge cases)

In my experience, LLMs will hallucinate on not only the correctness and consistency of answers but also the format of their response, whether it be JSON or "Yes/No". If LLMs didn't hallucinate JSON, there'd be no need for posts like 'Show HN: LLMs can generate valid JSON 100% of the time' [1].

If this gave 100% correctness on all test cases always, I'd need to throw out everything I know about LLMs which says they're totally unfit for this sort of purpose, not only due to accuracy, but due to speed, cost, external API dependency, etc, mentioned in other comments.

Suggesting that problems with edge cases and text manipulation are good candidates for LLMs seems dangerous. Now your code is nondeterministic (even with temperature set to 0).

[1] https://news.ycombinator.com/item?id=37125118

In the "1 Piece history with 1 roll" code, a global variable `piece` is introduced. There should be a `let piece;` at the top of the function body to scope it locally.

No CSS Club 3 years ago

Update/disclosure: The List sadly uses Google Analytics, disqualifying it from the club (except in spirit).

No CSS Club 3 years ago

The List is a fantastic CSS-less site I've been using for years to discover Bay Area live music shows: http://www.foopee.com/punk/the-list/.

I don't know the full history and I discovered it in the early 2010s, but it's been around since at least 1996 if the page content is to be trusted. I use a script to scrape the site and filter by artists I care about.

Moderation strike 3 years ago

Regardless of whether it's doomed to fail, the content these "computer advances" are creating on the site is definitely garbage at the present time. I've flagged hundreds of posts, mostly brand-new users attempting to rep farm. A huge percentage of the answers are flat-out incorrect or have little to do with the question.

Banning all moderation without consulting the community is not a step towards coexistence, it's a step towards turning the site into a dumping ground for stale LLM spew in the name of engagement.

Companies like Stack Overflow seem to care less about the quality and accuracy of the site's content as long as the engagement numbers look good. Unfortunately, a lot of users don't seem to care about quality, either, which is how we've wound up with the current state of affairs where just about every social platform is increasingly flooded with bot spam, misinformation, scams and junk.

By banning low-quality posts, including unverified LLM answers, the site can secure a future for itself as a bastion of quality. Or it can turn its back on the experts that built the content that's used to train the LLMs and hope that LLM quality improves enough that expert humans aren't necessary.

Even if that gamble works out for them and LLMs do mostly replace humans as some commenters optimistically seem to expect, then there'll still be no need for Stack Overflow, as one can simply ask an LLM directly. That's why effectively dumping human experts for LLMs seems like a failed business model either way. The best approach to move forward seems to be to carve out a space that provides unique value that LLMs can't and ride that until LLMs make significant advances.

Disclosure/context: I'm a daily SO answerer on strike, among the top ~4k users by rep overall. I'm pretty sure most folks who are dismissing the problem don't monitor tag feeds or curate queues enough to see the flood of blatantly wrong LLM answers spamming in from new accounts.

Moderation strike 3 years ago

Having flagged hundreds of such answers before SE suppressed LLM moderation, I can vouch that they stick out like a sore thumb:

- they're all written in the same style ("It looks like you're trying to do convert a string to an integer...") - they have perfect grammar - they're often/usually wrong - they tend to be tone-deaf to the question or are answering a different question than asked - their formatting is often poor by virtue of copy-paste from ChatGPT and the author's lack of familiarity with markdown - they're usually posted by new or new-ish users that have few reputation points (ostensibly, their goal is to farm reputation rather than help curate a quality resource) - they're posted in large quantities (a dozen or more in an hour) that'd be virtually impossible for a human to churn out (especially a brand new user!) - they're posted in random tags that show no clear connection from one to the next--most answerers are subject matter enthusiasts or experts and stick to a narrow range of tags - they tend to contain hallucinations obvious to SMEs, like invoking methods that don't exist - the code is plain wrong when executed - the code style is "boring"/"vanilla" and tends to steer clear of idiomatic language features that a seasoned programmer would employ and has few formatting quirks that a human might use - the code is often heavily commented in a predictable and artificial manner - the explanation after the code and overall layout/flow of the post is often the same - they tend to be dramatically different than the user's normal answers, which have typos.

As you'd expect, it's difficult to _prove_ that a particular answer was generated by an LLM (the fact that LLMs can't reliably detect themselves is part of the problem--they're inaccurate!). However, the possibility of occasional false positives (SE has provided no actual evidence of this being an issue), seems a necessary price to pay, and could be solved in a more balanced manner than prohibiting all LLM moderation. SO would be unusable if it became a stale cache of mostly-incorrect LLM spew, which is what SE's new moderator guidelines seem to be OK with.

If I want an LLM answer, I'll ask an LLM. I can then prompt engineer and iterate. If I want a human answer, I want to be able to ask on SO so I can be guaranteed I'm "speaking with a human".

Disclosure/context: I'm a power-user on strike.

I agree that `run()` is more readable than an IIFE if you remove all context and history from the analysis. But the IIFE is a well-known idiom to JavaScript programmers, so readers will not have to pay a cognitive "what is `run()` do?" penalty in order to understand the code.

New abstractions have a cost, and "clever" abstractions tend to confuse the average developer more than the benefit they provide.

If there's a problem with an IIFE (yes, they can be abused), the usual approach is to replace it with a named function definition. This works in their React example as well--rather than (necessarily) creating a new component as they suggest, the standard approach is to add a named rendering helper in the function closure that returns JSX.