HNHacker News
TopNewBestAskShowJobs

jcstk

329 karma · joined April 1, 2017

https://joeconway.io
submissionscomments
jcstk··on The disjointed Prague of Deus Ex: Mankind Divided
Great game! Almost captured the feeling I got playing the original Deus Ex that I pirated off Hotwire 25 years ago. But after watching a YouTube video of the OG Deus Ex, I think some of that feeling was just being a kid and seeing something that kind of amazing for the first time.
jcstk··on The United States and Israel have launched a major attack on Iran
Religion is a subset of ideology, and both are a mechanism to recruit labor to fight and not the reason for conflict. Material isn't cheaper to buy, the "owner" of the material has all of the leverage - lock them in like a SaaS contract and them jump the price up, and the buyer can't do anything. Crops and slaves are no longer valuable as port worthy coast and natural resource deposits, but the fight is still over land and power.
jcstk··on Sam Altman responds to Anthropic's "Ads are coming to AI. But not to Claude" ads
It's not that deep, he's not even writing it
jcstk··on Sam Altman responds to Anthropic's "Ads are coming to AI. But not to Claude" ads
OK.

Tesla Trailing P/E: 390.70 Apple Trailing P/E: 34.11 Ford Trailing P/E : 11.74

jcstk··on Sam Altman responds to Anthropic's "Ads are coming to AI. But not to Claude" ads
It's influencer marketing. These 'ego battles' are a show to keep their brand in front of you. It's engaging like reality television. This is very valuable, especially for companies that need to fund their growth through investment and grants.
jcstk··on Play Aardwolf MUD
Yes, it was crazy. $2/hour in 1997 dollars! Agreed… I think only Pubg has come close to replicating the intensity of emotion in PvP (which was my main interest in playing)
jcstk··on Play Aardwolf MUD
I got into programming through MUDs, have the fondest memories of those times and deeply appreciate their role in my life. I ran up a giant AOL bill playing Dragon's Gate that I had to work off by doing data entry that helped me understand the basics of computing, and then using that knowledge to create so many scripts and highlights in Rapscallion MUD client. After that, I realized I could make more things and never stopped. What a great time. I remember being online when the MUD I played reached their maximum number of concurrent players - 340 - and thinking that the world was so big. Crazy to think about online gaming today.
jcstk··on Prepare for That Stupid World
The free encyclopedia is an advertisement for a nonprofit that does a lot of things: https://wikimediafoundation.org/what-we-do/. They manage costs of producing the encyclopedia by using volunteer labor. They operate a similar model as nature documentaries that drive donations for conservation and climate groups. These are all good things - still an advertisement.
jcstk··on Prepare for That Stupid World
His keen eye and intellect - valuable traits as a laborer in a knowledge economy.
jcstk··on Prepare for That Stupid World
It is an advertisement.
jcstk··on Prepare for That Stupid World
No, that was just good advertising in an era where there were few entities that could afford to broadcast at scale.
jcstk··on Prepare for That Stupid World
HN is an advertisement for Y Combinator. You and I contribute content to advertise our identity and ego.
jcstk··on Prepare for That Stupid World
Any information that comes to you for free or is on a screen is an advertisement. All of it. That's the point. Do you think people spend millions and billions of dollars creating and maintaining a content delivery network because they just want you to know about things?
jcstk··on Technology isn't invented, it's inevitable
One thing I find interesting about reading is that it's done in the voice of the reader, not the writer. Shame and manipulative high-pressure sales tactics... interesting perspective. Personally, I write to inspire people to get curious and try things. If this pushes their path forward, perhaps we will meet again down the road and find ways to help each other?
jcstk··on An update on Dart macros and data serialization
FWIW, I enjoyed the hundreds of hours I spent with dart:mirrors to automate serialization, and the code-generation heavy approach always felt like kind of a bummer. But I feel like AI-assisted programming solves the majority of use cases this feature was meant for.
jcstk··on Goodbye, Slopify
I'm talking about my current experience, not the delta over time. I've been using Spotify since 2011.
jcstk··on Goodbye, Slopify
I'm reading these comments and I'm thinking "are we using the same Spotify?" I don't see any AI music, I don't get Podcasts pushed on me, the UI is fine, playlists are fine and I get new music I like suggested to me often.
jcstk··on No one expects young men to do anything and they are responding by doing nothing
The author provided data and graphs to highlight the problems in America he believes are being caused by a root problem of society having low expectations for men.

He doesn't provide any data to reflect what society's expectations are. Those are just his thoughts.

That's a big distinction.

jcstk··on No one expects young men to do anything and they are responding by doing nothing
I can appreciate this perspective because I used to have it. I even wrote a similar blog post 10 years ago - it was on the top of HN and the comment section was a beautiful shitshow. For me, this perspective was a good story to tell myself - it justified why I was only investing my time in “work”, and validated me for having “come so far”.

Over time, I have reflected and shifted this perspective. That reflection centered around the question the author hasn’t asked himself yet: who creates these expectations? It’s always some loose definition like “society” or “elite”, or some other handy wavy grouping of people.

But, to be clear, those expectations are coming from the author. That’s his perspective of what the world thinks, based on his interactions, based on what he chooses to read, listen to, etc. He's not describing anyone but himself.

I found that if I find myself projecting onto social norms, society, or some other loose definition of “they”, what I’m really doing is projecting a part of myself that I haven’t been honest about yet.

jcstk··on MkDocs 1.0
I’ve found that I’m at least more willing to make quick typo fixes and deploy them when I just have to make the change locally and do a single push. This is especially true (for me) when there is some additional web content that is not generated by mkdocs.
jcstk··on MkDocs 1.0
Awesome and congrats. We started using MkDocs for https://aqueduct.io/docs/, and have since used it for a ton of projects. Some things that we found really useful were that it indexes all of your content for full text search automatically, and it’s stupid simple to deploy it to gh-pages. With a minimal amount of scripting, we push to a mkdocs source branch and it builds and deploys nearly immediately. It has saved us a ton of time and delivered tremendous value.
jcstk··on Toward Go 2
Ditto on generic methods both changing the game for Dart and being necessary. I spend most of my time in Dart, Swift and ObjC, and I've built serious applications in Erlang and Java. All of which I like for different reasons.

My opinion is that Dart's type system is the optimal type system. It allows for statically typed API surface, but at the same time, I can still add some dynamic voodoo under the surface and enable productive meta-programming.

jcstk··on Show HN: Aqueduct – Dart on the Server
Just through observation. Breakpoints just started to work and a pesky race condition between isolates became reproducible.
jcstk··on Show HN: Aqueduct – Dart on the Server
For a bit more detail:

The main isolate creates an Application instance that has N number of supervisors, one for each isolate. The isolates are launched and go thru their initialization steps, reporting back to their supervisor. The application completes its launch once all supervisors have reported back. It fails its launch if an isolate throws an error during initialization or does not hear back in a configurable timeout. Any inter-isolate messages sent during startup are queued until all isolates have completed startup.

Once the isolates are up and running, the main isolate doesn't do anything other than facilitate the inter-isolate message hub. Requests are delivered directly to the isolates running the web server.

When running automated tests, the default behavior is to run everything on the main isolate, since tests are run against a temporary database schema that only exists for the lifetime of the connection.

jcstk··on Show HN: Aqueduct – Dart on the Server
Hmmm, no, that's not accurate. You specify a folder serving static content and the HTTP path is resolved against that folder. e.g.

  router.route("/*").pipe(new HTTPFileController("web/");
  router.route("/files/*").pipe(new HTTPFileController("something_else/");
An HTTP request for /foo.html returns web/foo.html. An HTTP request for /foo/bar.html returns web/foo/bar.html.

An HTTP request for /files/xyz.jpg returns the something_else/xyz.jpg.

If the HTTP path is a directory, then index.html is automatically appended to it. This is a brief overview of the referenced documentation above.

jcstk··on Show HN: Aqueduct – Dart on the Server
Yup! Each isolate has its own event loop... and I'll do a terrible job explaining that as its late in the day, so I included a reference link [1].

The memory consumption of an isolate depends on the size of the application code. Each isolate actually has its own copy of the application code that gets tuned by the VM over time. Even stuff like static variables are per-isolate. I just pulled up an OK sized Aqueduct project, and it looks like about 30-40MB per isolate. Most of that is probably Aqueduct itself. A worker isolate is likely an order of magnitude smaller.

1: https://webdev.dartlang.org/articles/performance/event-loop

jcstk··on Show HN: Aqueduct – Dart on the Server
Sure there is: http://aqueduct.io/docs/http/serving_files/
jcstk··on Show HN: Aqueduct – Dart on the Server
Sure thing. As a server-side language, love it. I also do all my command-line scripting with it, too.

Async/await is implemented really well (Google hired Erik Meijer to help them build it), their threading model is excellent, and there are built-in keywords in the language for stream handling that are seriously productive [1]. Anyone that knows Java/Swift/Kotlin/ObjC is going to be productive in Dart very, very quickly.

Performance has been great, but someone else may be better qualified to answer that question. Much of the lower level socket stuff is just C/C++. I don't want to speak on something I don't fully understand, so I included an article about the Dart VM below [2].

To me, Dart differentiated itself by being more similar to compiled, C-like languages. Obviously, Django, Laravel, Rails, etc. are much more mature. Aqueduct is tested well [3], but nothing beats years of regression tests.

1: https://www.dartlang.org/articles/language/beyond-async 2: https://www.dartlang.org/articles/dart-vm/why-not-bytecode 3: https://github.com/stablekernel/aqueduct

jcstk··on Show HN: Aqueduct – Dart on the Server
Good question - yeah, the VM is actively maintained. All of the tooling for the Dart ecosystem runs on the VM, Flutter is a Dart VM project, too.

The changelog [1] always has a few entries for the Dart VM with each version, but it's quite clear from using it daily that much more is happening. Some notable recent improvements have been asynchronous breakpoints that are integrated in IntelliJ's debugger and some optimizations for sending messages across isolates.

1: https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md

jcstk··on Show HN: Aqueduct – Dart on the Server
Good questions, thank you. Aqueduct initially started as a proof of concept - as a mobile shop, Dart was just so familiar to the languages we often used and it ran on the server. We tried building a few things and everyone was able to pick it up so quickly, and it took off internally from there. The value to us as mobile developers is that there was less context switching than when jumping into Ruby or JS (and all the other reasons we aren't quite fans of JS.)

Yes, multi-threading is accomplished through isolates. The application is run as a replica on a number of isolates, configurable by a command line option.

Each isolate has its own database connection, etc., but operate exactly the same. This behavior doesn't require any additional effort by the developer. (edit: The initialization code sets up a reactive channel for requests, each isolate instantiates that channel, and Dart's VM manages delivering an HTTP request to the most appropriate isolate.)

So, it's not quite like Erlang/Elixir where each connection gets its own process, rather the default number of isolates is 3. Isolates have their own heap, so memory isn't shared across them, but there is a message hub that isolates can send values across. This is useful when say you have websockets connected to different isolates and you want to broadcast a message to all of them.

You can spawn additional isolates from a 'web server isolate' to move computation to another thread.

Page 1 of 2Next →