HNHacker News
TopNewBestAskShowJobs

renegadus

28 karma · joined December 20, 2017

submissionscomments
renegadus··on Show HN: NowDo – MacOS todo app for procrastinators
You can - click "All Tasks" under the File menu or press CMD+T when the app is focused.
renegadus··on I Just Lost 1,400 BTC (2020)
Because banking transactions are far more traceable and can often be reversed if found to be fraudulent.
renegadus··on Is 5% a reasonable cut for a middle-man when selling shares privately?
Interesting, thank you.
renegadus··on Is 5% a reasonable cut for a middle-man when selling shares privately?
The company was recently valued at over $6 billion.
renegadus··on Is 5% a reasonable cut for a middle-man when selling shares privately?
Thank you for the suggestion.
renegadus··on Is 5% a reasonable cut for a middle-man when selling shares privately?
I agree, but I don't want to give up 5% for something I could potentially do myself.
renegadus··on Hatari: An Atari ST/STE/TT/Falcon Emulator
Nice, had an Atari 800XL, then a 512STfm, and then I was one of the 3 people who purchased a Falcon 030.

Learned Atari basic from a 2 page leaflet that came with my 800XL when I was 8, then progressed through True Basic and GFA Basic.

renegadus··on Freenet: A Distributed Anonymous Information Storage and Retrieval System (2000) [pdf]
Filesystems don't rely on space voluntarily donated by others, and that's the critical difference here.

Freenet is designed for sharing information, not archiving it. You can't have both.

renegadus··on Freenet: A Distributed Anonymous Information Storage and Retrieval System (2000) [pdf]
In future we'll use <blink> tags ;)
renegadus··on Freenet: A Distributed Anonymous Information Storage and Retrieval System (2000) [pdf]
> That's actually fine considering the goals of the system, but any time anyone mentioned it Ian and others would go a bit ballistic.

The system did not and could not store information permanently, if it did it would fill up, which is a non-starter when it depends on people volunteering their hard disk space.

I don't know about going ballistic, but since this issue is addressed directly in their papers (section 3.4 of the linked paper) I can see us getting irritated by people re-asking questions that have already been answered.

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
> here if I click on something and there is no internet, I won't see a loading icon.

Fortunately, that's not so - Kweb has a neat way to handle it - outlined here: https://www.reddit.com/r/programming/comments/a4dtp2/kweb_a_...

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
I appreciate your feedback.

> In my opinion, we can't say the separation has been "eliminated" if I'm constantly having to ask myself "should I handle this event on the server or the client via `onImmediate`?"

Well, I said "virtually eliminated" :)

I think it's an exaggeration to say that the programmer must constantly ask themselves this, it's only relevant when adding an event listener. You'll get along just fine if you never used onImmediate, it just means your webapp may not feel quite as snappy as it could be.

To me this seems like a very small price to pay to avoid having to bifurcate your application across client and server - particularly given that it's not even compulsory, it's an optional optimization.

> What seems more likely to happen, is that inexperienced developers simply won't ask the question at all and months later the customer will ask why their dashboard page is taking 60 seconds to load. The senior engineers will be tasked to fix it only to find out that the page is making dozens or hundreds or thousands of N+1 round trips to the server.

An unnecessary roundtrip may add 200ms of latency across a typical internet connection to the speed with which the page responds to an event, but I can't think of any circumstances under which this would delay the page render.

Moreover, a website built without onImmediate should work just fine, it just might not quite match the performance of a well-written client-side app.

> This has been my experience being asked to come in to fix MeteorJS apps. Teams of web developers not understanding that the client/server interface is not free and that poor engineering practices have severe compound effects.

There is only so much a framework can do to save programmers from themselves. In this case the risk is that the app may feel a little more sluggish than it otherwise would, a difference that users might not even notice.

It may be possible to automatically identify candidate event handlers which don't appear to be modifying server-side state and provide a nice list to the programmer, but I'd likely only invest time in this if it proved to be a significant issue in practice.

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Ah, understood. If you're locked in to Scala then unfortunately Kweb probably won't be a good fit :(
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Hmm, I'm not sure, but my guess is "not very" as I didn't really design it with usage from other JVM languages in mind.

The reason is it depends on some stuff like coroutines - and since Scala deprecated their delimited continuations plugin way back when, I don't believe Scala has any equivalent feature.

May I ask why you ask?

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Ah, you're right. Ok, I think I can do that fairly concisely in Kweb also, if I find a bit of time.
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Hmm, it seems to be adding things to a list but where is it adding a new DOM node?
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Unfortunately that's one area where Kweb is currently immature, however beyond what's on the website there are a number of examples that should help:

https://github.com/kwebio/core/tree/master/src/main/kotlin/i...

Also, if you use IntelliJ IDEA then the IDE will do a lot of the work for you in figuring out the API.

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
I don't think there is any reason, in principle, that Kweb can't be just as efficient as any other web application.

This is because Kweb doesn't entirely abstract away the client/server separation in one important sense. When you attach a callback to something you normally do it like this:

  button.on.click {
    header.text("They clicked!")
  }
This is less efficient than it could be because it is needlessly doing a server round-trip. So for situations where you're only modifying client state you can do:

  button.onImmediate.click {
    header.text("They clicked!")
  }
When the user clicks it will be instant, as the instructions to modify the DOM are "preloaded" to the client on page render.

Does that alleviate your concern? If not, can you elaborate on where you think the bottleneck is likely to emerge?

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Interesting. Just for fun I created a side-by-side with Kweb of one of their simple examples.

Here is kerax:

  var lines: seq[kstring] = @[]
  
  proc createDom(): VNode =
    result = buildHtml(tdiv):
      button:
        text "Say hello!"
        proc onclick(ev: Event; n: VNode) =
          lines.add "Hello simulated universe"
      for x in lines:
        tdiv:
          text x
  
  setRenderer createDom
Here is the equivalent in Kweb:

  fun main() {
    Kweb(port = 2734) {
        doc.body.new {
            button().text("Say hello!").on.click {
                println("Hello simulated universe")
            }
        }
    }
  }
This compiles and works.
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Kweb has very little to do with PHP3 and coldfusion, I suggest taking a closer look at it.
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
I used Wicket for a major project way back in 2007 and worked with the creator of Wicket for a while - so it's almost certain I got some inspiration there :) Wicket was probably the first time I saw a web framework and thought - "wow, this web stuff can be elegant".

Wicket suffered because it straddled the transition from pure HTML to HTML+AJAX. It could do HTML+AJAX, and their solution was elegant, but it was an afterthought and Wicket wasn't really designed around it.

Kweb was designed from the ground-up for this world and this affords it many advantages.

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Kweb has a neat solution to this, I outline it in this Reddit comment: https://www.reddit.com/r/programming/comments/a4dtp2/kweb_a_...
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
That assuming your application's architecture should be split vertically into front-end and back-end, but what if a horizontal split makes more sense?
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
I'm kweb's creator, I hadn't heard the term "hexagonal architecture", I'll read up on it, thank you for the kind words.

You are correct that, since kwebsites are server-driven, there is no significant offline capability.

But then the requirements of many websites often rule that out anyway, my strong suspicion is that this won't be a dealbreaker for many people.

renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
Note: reddit discussion here: https://www.reddit.com/r/programming/comments/a4dtp2/kweb_a_...
renegadus··on Kweb: A new approach to building rich webapps, in Kotlin
It's not so bad - it seems like there is a lot of magic but the library is a fairly thin layer on top of JavaScript/DOM.
renegadus··on Ask HN: Resources for introverted devs to learn workplace politics?
Human interaction isn't so hard, you just need to view it as a problem to be solved, just like everything else.

There are some good YouTube videos that break this stuff down: https://www.youtube.com/user/charismaoncommand

renegadus··on Using websockets to easily build GUIs for Python programs
I've been working on something similar in Kotlin called http://kweb.io/. It works but is still pre-1.0. You can manipulate a remote DOM as if it was local to the server and attach event listeners. Feedback welcome.
renegadus··on Ask HN: What are the things that you have automated in your personal life?
I'm currently working on a website to use machine learning and game theory to allocate chores in a way that minimizes overall pain. Should have a public demo in a few days.
renegadus··on Show HN: Kweb – a Kotlin web framework that eliminates the server-browser divide
It's the latter. It establishes a WebSocket connection and issues JavaScript commands to execute from the server. This connection remains persistently to allow bi-directional communication between client and server.

This occurs "behind the scenes", the developer will rarely need to think about it.

Page 1 of 2Next →