Live data from Hacker News

A TLS 1.3 stack written in Visual Basic 6

github.com

81–90 of 101 posts

Re: A TLS 1.3 stack written in Visual Basic 6

#81
post #51

Earlier quoted context omitted.

I implemented TLS without any external deps by supporting only mandatory stuff from the RFC specifications. DER parsing here: https://github.com/mateuszb/tls1.3/blob/master/der.lisp Elliptic curves here: https://github.com/mateuszb/tls1.3/blob/master/elliptic-curv... Protocol records: https://github.com/mateuszb/tls1.3/blob/master/record.lisp At the time I implemented TLS1.3 there was very little support for it and i…

I don't know much Lisp, but your code is wonderfully readable! Great job!

Thanks. It was a really fun project. There were a lot of things to keep track of so readability of the code was a big help to not lose the big picture.

Re: A TLS 1.3 stack written in Visual Basic 6

#82
post #19
post #14

Earlier quoted context omitted.

Don’t tell anyone, but I still think we’ve been terrible at UIs since VB6 and Hypercard. We mostly gave up on 2D grids as device resolutions evolved. We made HTML, then made HTML5 as if everything was a blog or newspaper with a navigation bar, semantically (and you still have to learn that the nav contains a bulleted list?) Unfortunately, it became a 3-hour or 3-year or 30-year process for someone to learn “how do I…

I completely agree. I've played with VB6 a few times recently and it feels so fast and natural to make a UI compared to modern frameworks. A bit part of it feels like a dedication to highly polished developer tooling. A strong GUI editor that works with (mostly) zero configuration is a big feature of VB6 to me.

> A strong GUI editor that works with (mostly) zero configuration is a big feature of VB6 to me.

IMO even Delphi 1 had a better GUI form designer. The "Align" property that many controls had, including containers, allowed for visually creating resizable layouts easily since that placed a control to one of the left, right, top and bottom edges of its parent (multiple controls could be stacked) or at the "client" area which basically covered the remaining area. VB had a similar property but IIRC only the picture control supported it (the picture control was also used as a container) and could only place controls to the edges but not the client area. This meant that pretty much any non-trivial UI that needed a resizable window had custom code for the resizing event to handle that instead of being done visually.

Delphi later added a simple "anchor" property to allow custom placed controls to be resized too (the default setting was to anchor to the left and top edge which behaved like before anchors were introduced, but e.g. anchoring a control to the right edge in addition to the left caused the control to be resized horizontally when its parent was resized and anchoring it only on the right caused it instead to move horizontally).

Nowadays Lazarus provides a more advanced anchoring system (e.g. you can have a label control be aligned vertically at the middle of a combo box control and the combo box's left edge to be aligned with the label's right edge with a margin of 5 pixels) which is set up using a visual editor (no code needed) but it also provides the Delphi-like anchors and align properties as well as a bunch of other properties that can be edited visually, like min/max sizes, child control placement, etc all of which make it IMO by far the best WYSIWYG form designer for desktop GUIs (though the anchor editor's own UX could be improved).

Re: A TLS 1.3 stack written in Visual Basic 6

#84
post #58
post #55

Earlier quoted context omitted.

I remember the feeling when you see a module and it has an "On Error Resume Next" at the start.

That’s basically how shell scripts behave by default. At least in VB it’s not the default.

Yes, but shell scripts are written on that assumption. VB code usually wasn’t.

Re: A TLS 1.3 stack written in Visual Basic 6

#85

Something about VB6 felt so pure when I wrote it. it's not fancy and is missing a lot of stuff we take for granted today (pretty sure there is no built in map structure lol) but solving problems in VB6 due to language quirks was always fun.

I can verify that there is no built-in map data structure. Also its "classes" don't support constructor parameters nor inheritance. (Wrestling some debugging issues in a legacy codebase so these frustrations are much closer to hand than I would like.)

Re: A TLS 1.3 stack written in Visual Basic 6

#86
post #14

Earlier quoted context omitted.

Don’t tell anyone, but I still think we’ve been terrible at UIs since VB6 and Hypercard. We mostly gave up on 2D grids as device resolutions evolved. We made HTML, then made HTML5 as if everything was a blog or newspaper with a navigation bar, semantically (and you still have to learn that the nav contains a bulleted list?) Unfortunately, it became a 3-hour or 3-year or 30-year process for someone to learn “how do I…

And this is why I absolutely refuse to do the whole HTML and Co. method of doing GUI's to this day. (XAML etc). I use tools like ETO instead where possible, where I define my UI in code, and it's built to the native UI toolkit whereever relevant. At no point am I writing fucking XML (why does anyone think this is a good idea?!) for a UI. I'm saying I want a title bar with these elements, directly in code. It's fantas…

You may like my project, once I get around to open sourcing it.

I feel, of the three ways of designing guis, the most explored is the declarative way, and there seems to be an assumption by everyone that this is the best way...

But, there is absolutely no data that I could find that supports this view.

I made a small js library to make it easier to quickly write the widgets and layout of widgets in code only.

So fa I'm preferring my code components to react components.

Re: A TLS 1.3 stack written in Visual Basic 6

#87
post #56

VB 6 paid for my first home. But yes, this is insanely brave. VB is not the most expressive language out there.

Yeah, but it's a humiliating lesson that good enough beats best.

More complex business logic was solved with VB than with Haskell. Same for JS, PHP, Python and all the other "poor" languages.

Re: A TLS 1.3 stack written in Visual Basic 6

#88
post #5

Earlier quoted context omitted.

Yep, one of the features of VB was you could call into Win32 fairly easily. I once worked with a guy who was a VB savant. He had reverse-engineered the DOC and PST formats in Visual Basic and was comfortable bit-bashing stuff in that environment. His higher-level code was really not good, that wasn't important to him, so he pasted stuff everywhere. Lost track, but hope he found his niche.

I think we all have similar stories of tools like VB being pushed far beyond their original purpose by someone with enough motivation, and creating perfectly functional, yet extremely unconventional code. Here's another example I found in my links of old interesting web stuff --- a server for the MMO Habbo Hotel, written by (at the time) a teenager: https://files.johno.uk/habbo/h4bbo.net/archive/HabboStuff/Mo...

The most impressive 'pushed beyond it's limits' code I've seen is The trick's VB6 kernel mode driver. Yep, really. VB6. Kernel mode. You have to strip out the MSVBVM60.dll dependency, which dramatically limits what language features you can use, but it's possible, albeit for 32bit Windows only, of course.

https://www.vbforums.com/showthread.php?788179-VB6-Kernel-mo...

Inspired by that, I made a similar 'hello world' type kernel mode driver and in addition to the VB6 version, made a twinBASIC version, which can compile to x64 and run on current Windows. twinBASIC has no runtime dependency, so you can use far more of the language features, supports cdecl for calling dbgprint, and it has native support for putting APIs into the IAT so no TLB dependency and overriding the entry point so no special hack for that.

https://github.com/fafalone/HelloWorldDriver

I'm not nearly as brilliant as The trick or wqweto to figure these things out to begin with, but it's so much fun taking the techniques of these legends and running with them. Although I did claim the title of first to create a realtime kernel ETW event tracer, a notoriously unfriendly API that requires multithreading (possible in VB6 thanks to The trick et al, natively supported in tB via API for now, language syntax soon).

Re: A TLS 1.3 stack written in Visual Basic 6

#89
post #55

Earlier quoted context omitted.

I remember the feeling when you see a module and it has an "On Error Resume Next" at the start.

In my first job, I was given a VB6 project to maintain which had a mixture of "Option Base 1" and "Option Base 0" (or unspecified, this being the default), with occasional "On Error Resume Next". This specifies the index value for the first item in an array, i.e. you could choose the default European building floors (ground floor is 0) or American floors (ground floor is 1) -- per module! I had to convert everything…

Would not the UBound and LBound functions not solved those issues?

Re: A TLS 1.3 stack written in Visual Basic 6

#90
post #35

Earlier quoted context omitted.

There are (at least) two project in development aiming to make a modern VB6 with full backwards compatibility: https://twinbasic.com/ https://www.radbasic.dev/ Especially Twin Basic looks good IMHO. Looking forward to testing it on my old applications!

There was also another one written in Java which was (supposedly) very compatible too and had a full working IDE, etc, but it was abandoned long ago and has been lost in the mists of time. Actually there was a much older project that was compatible with VB4 (i think) and IIRC it was made when Microsoft still worked on classic VB, but again, abandoned and lost. None of these were open source, like the two you mentione…

> There was also another one written in Java which was (supposedly) very compatible too and had a full working IDE, etc, but it was abandoned long ago and has been lost in the mists of time.

That was probably Jabaco[0]. Shame it wasn't open sourced. I played with it back in 2014-ish.

[0] http://jabaco.com

Post reply on HN