Hacker Newsnew | past | comments | ask | show | jobs | submit | casselc's commentslogin

If you look at a map of the fiber-optic network in the US, my parents spent most of the 90s surveying the portion along the Gulf coast from Texas to Florida and up the Atlantic coast to New England for Sprint, MCI, Level 3, and other companies that no longer exist and AutoLISP was used to generate most of their drawings.

From what I can remember, we made a spreadsheet template that captured the title block information and a list of bearings and distances with some optional columns for field notes, landmarks/monuments, elevations and other measurements, etc. and I wrote some AutoLISP code that would generate an overview drawing and a set of scale drawings for the route. It figured out the bounds for each segment based on the scale and drawing size and then drew the route like a turtle and added the various callouts and a consistent title block and legend. There was also some ability to draw details about the railroad/pipeline whose right of way was being used, but I don't remember exactly how it worked.

My mom (secretarially trained typist, self-taught Lotus/Excel wiz, former drafting assistant at an RBOC) would enter everything into the template and use it to generate basis drawings which they might then tweak and finalize by hand. It dramatically reduced the amount of time they spent creating drawings to the point they could usually finish the drawings for a week of surveying in a couple of hours. I like to think of it as my small contribution to the Internet.

I was in high school at the time and taught myself AutoLISP from some combination of in-app docs/help and mall bookstore fare. Now I desperately want to go dig through floppy disks at my parents' place to see if any remnants remain to look back at how younger me did everything. It was the first truly useful software that I ever wrote, and in hindsight, might've planted the brainworm that led me to Clojure decades later :)


thx for sharing, really interesting


The primary performance benefits with Enterprise are access to the G1 garbage collector and profile-guided optimization


? both of these things are available in openjdk distributions


Apparently those are not available for native executibles produced by graalvm community edition.

Profile guided optimisation for native executibles sounds cool. Too bad Oracle wants to keep it closed for monetisation.


PGO (both static and dynamic) is something that is offered to you in the FOSS form in .NET land.


Meanwhile .NET land requires writing reflection free specific code for AOT, while GraalVM can handle reflection just fine.

ART also does PGO for free, as does OpenJ9. Both of which also handle reflection.

The thing with Java ecosystem is choice of implementations, instead of Microsoft's single implementation, specially now since most of Xamarin's work has been consumed into modern .NET.


This is simply not true. AOT requires code that is free of uses of JIT-specific features like runtime reflection-emit or assembly loading, which is not possible without build instrumentation for AOT implementations on other platforms either[0], because it by definition needs a JIT compiler. Reflection itself not only works but is sometimes faster because closed world guarantee by AOT allows for a more streamlined implementation.

With that said, trimming, also known as tree-shaking, which is required to not have massive binary size, has to know at compile-time which types, members and metadata tokens are reachable. This means that certain patterns of unbound reflection are by definition not statically analyzable and require the user to annotate (with [RequiresUnreferencedCode(params)]) the corresponding types with details of what they need the trimmer/linker to preserve (the entire assembly can also be rooted but, well, that's bad for size).

Other features like compiled expressions have received proper interpreter fallback which makes them just work(tm) without developer intervention.

You can also see that GraalVM Native Image is subject to very similar restrictions[1].

[0] Like pre-generating generic types/method bodies for Unity with special tooling. NativeAOT currently has (planned to be deprecated) rd.xml to manually instantiate certain generic methods and root specific types, replace their bodies, etc., it will probably be fully superseded by further expansion of attributes-style annotations API or obsoleted by improving compile-time analysis in the future.

[1] https://www.graalvm.org/22.1/reference-manual/native-image/L...

p.s.: quick search shows that Java Swing is plagued by similar issues with Native Image (not mentioning having to generate metadata annotations) to making .NET's GUI frameworks work with NativeAOT save for certain blessed templates/workloads introduced in .NET 8. Java AWT appears to be faring somewhat better on hello world examples but I suspect it experience the same fate as the templates for WinForms that the community has come up with so far (let me know if that's not the case).


The difference is that GraalVM, OpenJ9 and ART, have the capability to feed PGO data into the AOT toolchain, as a means to automatically generate a rd.xml like archive, thus preserving the existing language ecosystem.

In ART's case that metadata is even shared across devices via PlayStore, which gathers and uploads it, packaging it for download along the APK for new installations. This metada is dynamic, as more devices take party into executing newer code paths.

This is the beauty of Java ecosystem versus .NET, the plethora of implementations, with different approaches solving the same set of problems, allowing us in many cases to pick and choose.

From Real Time GC with AOT compilation used by US and French military in embedded systems, factory automation robots, phones, infotainment systems, M2M gateways, runtime snapshots between executions, or crazy ideas like having PGO data from cloud based JITs sharing executable code.


I feel like I keep reading the same comment from your profile every time except the order of words changes slightly. So much for expecting a meaningful response.

(please, please read the documentation first before making confident assertions, like in this case, and at least google discussed topics to actualize the knowledge on the points in favour of which you're arguing)


The sentiment goes both ways, the big difference is that I am not invested in any specific ecosystem to let that influence my arguments.



Why is this considered "not using the filesystem"?

What's the conceptual difference between backing up your Oracle database to an Oracle Cloud Infrastructure bucket and backing up your sqlite database to an S3 bucket?


Because it’s JScript, which was abandoned prior to ES6.


I’d second this sentiment and encourage the previous poster and some of the other replies to consider fostering for a local shelter.

We started fostering early in the pandemic, a few months after losing a very special guy, and it’s been very fulfilling. You‘ll get a chance to help some cats or kittens get out of a cage for a few weeks and find new homes - and I’d be surprised if you don’t eventually find one whose home just happens to be yours.


My first computer had a button to do it whenever you felt like.


“Lexicon” by Max Barry is another good novel that plays with this premise.


Not who you asked, but as someone interested in small/hobby farm equipment to enable a couple people to do more work, more efficiently: The actual products seem nice and they have a variety of things that would be useful to us. I’d like to be able to buy a common flatbed lifting/dumping platform at about half those prices and be able to separately purchase and easily swap out the various wheelbarrow and garden/utility wagon bases. Ability to upgrade/replace motor and batteries. Ability to use the platform for additional powered implements like spreaders, seed drills, flail mower, auger, etc I’d like to be able to operate it in either a push-in-front (wheelbarrow) or pull-behind (wagon) fashion and for the drive and steering controls to work well in both cases. Stretch goals: a low speed follow-me mode with basic obstacle detection/avoidance. A go-to-programmed-location-and-come-back-wherever-here-is mode, optionally dumping or waiting for interaction at the other end.


It doesn't help with stuff found in the wild, but if you're working from a text most math books will either list all symbols at the beginning of the index with references to where the notation is introduced and defined, or they have a separate symbol index or glossary of notation.


This article is from 2017.


The HN submission and the comments are from today.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: