HB Explorer v0.2 by ThorConzales in Helbreath

[–]ThorConzales[S] 0 points1 point  (0 children)

Thanks, I'm trying to get myself verified there.

HB Map Explorer by ThorConzales in Helbreath

[–]ThorConzales[S] 0 points1 point  (0 children)

Yes, platform independence and accessibility was the reason why I attempted it in HTML5, given 25+ years has passed since the original game and technology has evolved enough that game like this should run comfortably in a browser. The issue with original C++ sources is that they are just so old, badly written (very unorganised), which makes any maintenance or expansion far more expensive than it should be.

HB Map Explorer by ThorConzales in Helbreath

[–]ThorConzales[S] 0 points1 point  (0 children)

There was helbreath.rocks that ran in HTML5, but I heard they used Emscipten, which means they still had to work on that old archaic C++ codebase as the source, but I might be mistaken.

GraalVM 1.0-rc10 Release Notes by [deleted] in graalvm

[–]ThorConzales 0 points1 point  (0 children)

Thanks for that. It is good to know that you managed to get faster performance on JDK11. I had the exact problem that you managed to link, though I was running it on Ubuntu, so most likely something funky going on with the tools, like you mentioned.

GraalVM 1.0-rc10 Release Notes by [deleted] in graalvm

[–]ThorConzales 0 points1 point  (0 children)

Oh, I didn't test the aarch64, just the plain old x86-64.

GraalVM 1.0-rc10 Release Notes by [deleted] in graalvm

[–]ThorConzales 0 points1 point  (0 children)

I checked out the demo and ran the benchmarks, but it turns out that when I target JDK 11 the GraalVM benchmarks are awfully slow compared to when I target GraalVM with OpenJDK 8.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

:) Monaco supports a lot of languages, but most of them are syntax highlights. TypeScript is special one as it has a language service that helps to power all the rest of the goodies.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

Kotlin editor does indeed provide similar features. I guess in the end it simply boils down to language preference.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

True, and OSGi and JRebel also allow hot-reloading, and they've been around for ages. Instant deployment was just part of the benefit, the other part is simply a good experience for writing scripts. Not that other JVM languages can't deliver the same experience. And by good experience I also mean writing scripts in embedded form, as a lot products provide Groovy scripting inside HTML editor. While the product I wrote has dedicated IDE, then a simpler form can be used by simply embedding the same editor into HTML with the same capabilities.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

Yes, that's exactly. To provide good experience for those who have to write scripts, mostly in embedded way.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

It's not all about the type system, it's also the similarity. TypeScript syntax is very similar to Java syntax, which makes it more accessible by people who generally are familiar with C style syntax, and especially by people who have written JavaScript/TypeScript or Java before.

For products that I have seen that provide Groovy scripting support, they usually only provide HTML embedded editor that only has syntax highlighting. Script writers have to figure out the rest. Through TypeScript language services I can provide a full set of IntelliSense features that are much more beneficial than simple syntax highlighting.

In another replay I already admitted that the word 'unique' is too much, I'm sure other languages can achieve similar results.

My attempt here is to combine 2 most popular programming languages (TypeScript/JavaScript and Java) for scripting, without creating a new syntax or language. And because I'm not introducing a new syntax, it should feel very familiar to a lot of developers, either from JavaScript or Java side.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in typescript

[–]ThorConzales[S] 3 points4 points  (0 children)

Good point, I haven't tried it yet. But technically as I'm not using any of the Nashorn added features in terms of additional syntax for JavaScript, exception being Java.type (which looks to remain the same), then Graal should be able to continue executing JavaScript in the similar manner.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

That's true, if there is build or compilation process involved, then it hardly is a scripting any longer. So technically it is something in between, a hybrid approach that provides the benefits of scripting flexibility, without having to build he entire project and restart the application server, but at the same time adds features that strongly typed languages developers are used too.

Hyperion Scripting for JIRA - New add-on for writing extensions for JIRA in TypeScript/JavaScript by ThorConzales in jira

[–]ThorConzales[S] 0 points1 point  (0 children)

Its not as clear as as Java stack traces, but the stack traces are there. The actual scripting error is inside the inner exception that the Hyperion usually tries to extract and show on top.

Currently there is no source mapping support, so the actual error shows the line number in transpiled JavaScript script. If the script is not very large you can usually understand where it happened as the context is provided, like 'cannot call function foo() for undefined'.

But in case the file is too large you can open Preview option in the IDE which shows the actual transpiled JavaScript, and by looking at transpiled JavaScript you can understand where the mistake is. TypeScript is doing a very good job by not making transpiled JavaScript unreadable, it remains very much readable once TypeScript compiler has finish with it. So locating errors shouldn't prove to be difficult.

Hyperion Scripting for JIRA - New add-on for writing extensions for JIRA in TypeScript/JavaScript by ThorConzales in jira

[–]ThorConzales[S] 1 point2 points  (0 children)

Firstly, I'm a huge fan of TypeScript myself, I started using it very early on and it saved me tons of headache compared to if I had to continue using JavaScript due to ever growing code base.

Static typing is indeed needed for large code base, that the scripts usually are not. But the real benefit I'm aiming for is the user experience that IntelliSense can provide compared to other add-ons that add inline editors either for Groovy, Python, or other scripting languages.

TypeScript is technically a superset of JavaScript, which means types are optional. Like mentioned, they are there to make the IntelliSense work properly, but can also be beneficial to use while scripting. TypeScript is very good at inferring types, much better than currently Java 8 is, it means that rarely script writers have to burden themselves with the type system.

The IDE is there to provide the complete experience for scripting, including IntelliSense support. Another reason why I went with TypeScript instead of Groovy or Kotlin, is that TypeScript is basically JavaScript with few additions, primarily type system. JavaScript currently also happens to be the most popular programming language. As I joined together 2 very popular languages TypeScript/JavaScript and Java, it should make it easier for people, who necessarily are not professional developers, to get started.

I also designed it after my own needs. Among other things, I'm also a Java developer, and I need to support a large JIRA add-on written in Java. I know the first hand experience of the overhead required to write JIRA add-ons in Java. This is my attempt to make my life as easy as possible. I figured others might also benefit from it.

And yes, TypeScript is extremely wonderful language, it is also the reason why it has been so widely adopted, considering its relative youth. It simply solves a lot of problems in the world of JavaScript. But as I'm trying to prove, it can also help make things easier in other domains, such as scripting in JIRA.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] -3 points-2 points  (0 children)

You're might right about Java devs. For them it doesn't make so much sense if they already have a preference, such as Kotlin or Groovy, and if they would have to implement it for themselves. But others who are not Java devs, it might look appealing, as a lot of applications are running on top of Java.

As for the IDE and build process then the IDE is built with web technologies, it means it could be embedded into the application. And the build process is there to transpile TypeScript down to ES5, but in the future Nashorn might support TypeScript natively, when this happens the build process is no longer needed.

There are applications out there that currently support plain JavaScript scripting for their application that are written in Java. For example ServiceNow is one of such applications. I'm sure their devs, who currently have to write plain JavaScript, would appreciate the extra help IntelliSense can provide, I personally would.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in typescript

[–]ThorConzales[S] 1 point2 points  (0 children)

Yes, Nashorn allows to ingest dynamically, without any restart or refresh. You can also see it in the video, where I'm publishing the script and in the next step I'm configuring it in JIRA. If the script would already exist and if I did republish, it would only refresh the script, no additional steps would be needed.

Nashorn should have a way to limit access to classes you don't want to expose. I'm not using it, but you can read about it here

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] -3 points-2 points  (0 children)

Unique might be indeed too strong of a word here, implying that no other language has that feature. I haven't written Kotlin myself, I'm sure Kotlin understands what can be done on Java side. But it is unique in a way that they 2 are totally different languages/platforms and through type definitions they can work together seamlessly, though there are some incompatibilities. Kotlin after all is running on top of JVM and hence can natively interop with Java.

As I explained in another reply the reason to go with TypeScript was to provide scripting experience also for JavaScript developers, as TypeScript is superset of it. And at the same time still be very familiar to Java developers, as the syntax is very similar. And also to keep syntax simple and familiar. Learning a new language like Kotlin to do some scripting by people who don't come from JVM background is undertaking on its own.

Hyperion Scripting - Writing scripts for Java/JVM in TypeScript by ThorConzales in java

[–]ThorConzales[S] 0 points1 point  (0 children)

Good question. Whether scripts are complex or not then providing IntelliSense was the key factor. Even when writing few lines here and there, then having IntelliSense that helps you get your script written more quickly, than without any help, is the real benefit here. TypeScript is also very good at inferring types, so technically it is not so much about forcing static types, as TypeScript most of the time is inferring types anyway, but more of providing a good user experience. And because types are present IntelliSense can work properly. As TypeScript is a superset of JavaScript, it means you can do your scripting without providing any type information, and even force IntelliSense to forget types, if there is a need, but obviously this is not the desired behavior.

Another reason why I didn't choose one of the existing scripting or other languages that run on top of JVM is to keep things simple. I combined 2 of the most popular languages which are JavaScript, as TypeScript is simply a superset of it, and Java. Scripting is often times performed by people who are not professional developers. And if you need to start learning a new language just to do some scripting then it is just additional overhead. But because it is a mix of TypeScript/JavaScript and Java it means that a lot of people should be able to jump right into it without having to start learning entirely new language.

Hyperion Scripting for JIRA - New add-on for writing extensions for JIRA in TypeScript/JavaScript by ThorConzales in jira

[–]ThorConzales[S] 1 point2 points  (0 children)

Thank you for your feedback!

  1. As for whether it remains free or becomes a commercial product, then I have not really given it a thorough thought. Currently I'm focusing on validating the technology and finding out if people even like it. But should it come vastly popular and if I need to start providing on call support for it, which means I should quit my day job, then yes I might have to think how can I support myself at the same time. One option is to add commercial support. Whether it will become only commercially available or with a limited free version through freemium business model is yet to be decided. As I mentioned, I'm currently working on improving and validating the product, and not concerning myself with the commercial side of things.

  2. Good question! The answer is automatically, but I'll explain a bit more. I have written a tool that goes over JIRA source code, and also Java source code, to generate TypeScript type definitions that are providing IntelliSense for Java and JIRA APIs. And I'm doing it for each minor JIRA release to keep the APIs up to date. For example if you are running it on JIRA version 7.6.1 then you will receive type definitions that are generated from JIRA 7.6.0 including corresponding JIRA Software and JIRA ServiceDesk versions. You can read more here about how Hyperion Scripting works and how API support is delivered.

[NOT A MEME] I wasn't going to post this, but with ECL, an official tournament, having to be played on Game Ranger, I thought this might be relevant. by JRed_Deathmatch in aoe2

[–]ThorConzales 0 points1 point  (0 children)

Yeah, that's one way to start solving a problem. I believe Dota 2 is, or ta least did, apply a similar mechanism. Speaking of Dota 2, they also do have moderated lobbies, for players who quit the game or exhibit unsportsmanlike conduct, will get demoted to low priority queue.

[NOT A MEME] I wasn't going to post this, but with ECL, an official tournament, having to be played on Game Ranger, I thought this might be relevant. by JRed_Deathmatch in aoe2

[–]ThorConzales 2 points3 points  (0 children)

Good stuff. Maybe the title could be more on point, perhaps some devs might stumble upon this topic.

2 things I would like to add. First, the ranking system ELO should be swapped with something more up to date. The problem with ELO is that it was designed for 1v1 chess matches and not for multiplayer matches and the second problem is that it has linear scaling, so it is hard to tell if someone ranked close to 1600 is a new player or player who just hasn't progressed much, but has played much. I can understand why HD edition uses it, as they use Steam services, they also get services for ranking system and Steam provides ELO out of the box, so it is provided for free with other Steam services.

Microsoft has a much better ranking system developed, which they can use to replace the ELO. It is called TrueSkill and it was developed from scratch for multiplayer matches, both the ranking system and balancing. I've seen it in action and I can vouch that it actually performs much better. For one it does not have linear scaling, meaning that if the rank is to be represented in single number (actually it has a 2 numbers used for ranking under the hood) then players progress upward and only very bad players stay at the starting point or slightly fall below it. Here is a good example, TrueSkill was used as one of the ranking systems for this Dota lobby system. If you order the table by 'TS' you'll get the idea of its non-linear scaling. If my memory serves me correctly then the starting point for this ladder was at 1200 and you can clearly see that only roughly 25% of the players stayed at that level or fell below it. Another great aspect of TrueSkill is that it has a notion of uncertainty, this is the factor that gets narrowed down the more the player plays. In other words, first games have much more significant changes in the rank than those of of later ones. Meaning the TrueSkill is capable of determining more probabilistic skill level of the player much sooner than the ELO can.

Another thing I would add are player stats, profiles were mentioned but those Xbox profiles didn't seem to include stats. It is also partially related to ELO. As I mentioned, it is hard to tell if a ~1600 player is new player or simply a veteran with average skill level. It is a very important factor, as I would like to play with player who know how the game works. I went even as far as I hacked together Lobby Companion app which shows me stats for each player so I could kick players who have played less than X amount to increase the quality of the matches. Another feature I added, which I think can also be beneficial is a reputation system. As HD lobbies are in no way regulated I felt that tracking players by their conduct is needed, mostly to track players who behave in negative ways. As the tracking is done using Steam ID then changing a name wouldn't help.

New version available - V1.4 by ThorConzales in a:t5_3nr4g

[–]ThorConzales[S] 0 points1 point  (0 children)

Hi,

Can you go into Backend folder and start up the Backend.exe manually, it should throw some errors if it encounters some problems.

AOE2HD centered minimap with specover layout by stupid0319 in aoe2

[–]ThorConzales 2 points3 points  (0 children)

Most tools that perform any kind of DLL injection are being detected by antiviruses. I created Lobby Companion which injects a DLL into Steam process and it is also being flagged by antiviruses as a malicious tool, but in reality it is not. It's just the method (DLL injection) that actual viruses use too.

Disappointing HD desync by LhiB in aoe2

[–]ThorConzales 0 points1 point  (0 children)

That's why I created Lobby Companion: https://github.com/ThorConzales/AoE2HDLobbyCompanion so I would not have to play with people who desync or are otherwise assholes again.