View Profile Gimmick
Thanks for dropping by!

Age 22



Joined on 8/20/08

Exp Points:
7,900 / 8,090
Exp Rank:
Vote Power:
6.88 votes
Global Rank:
B/P Bonus:
1y 1m 28d

Gimmick's News

Posted by Gimmick - 7 days ago

Yeah yeah I know Flex is outdated tech but it has shiny buttons and who doesn't like shiny things??

Thankfully AIRDock is already generic enough that porting to flex just requires changing a few methods here and there! The DividedBox component is good enough as a "native" container; that means a lot of the stuff is already handled by Flex, and the major things to handle are just

  1. traversal
  2. creation
  3. dragging

containers! I'm not sure whether to achieve a PoC based off a direct port to AIRDock and then pare it down until the bare minimum is remaining, or to start from scratch and build up from there.

Starting from scratch has the benefit that I won't include useless cruft, but using AIRDock means I can retain compatibility and interop with pure-AS3 applications as well, which is also a huge selling point. Currently I'm leaning towards approach #1, especially since I have working results already! Voila:


All of this has been done just by calling AIR/FlexDock functions! I realize it's not a lot, especially since the following MXML code does almost the exact same thing and is more optimized:

<mx:HDividedBox width="100%" height="100%">
  <mx:HDividedBox width="50%" height="100%">
    <s:Panel title="leftmost" width="50%" height="100%"/>
    <mx:VDividedBox width="50%" height="100%"/>
        <s:Panel title="middleup" width="100%" height="50%"/>
        <s:Panel title="middlebottom" width="100%" height="50%"/>
  <s:Panel title="rightmost" width="50%" height="100%"/>

But it's a start!

Further optimizations include collapsing all containers on the same level (e.g. "LLLLRF" is all on one level instead of 5, because HDividedBox supports multiple containers per level instead of just 2), along with classic Flex optimizations like deferred initialization and rendering, but those are left to much later - especially because I've just been winging it almost all the way and have started learning Flex only now (which is rather stupid of me because good luck finding tutorials that don't lead to dead links 50+% of the time...praise The Wayback Machine!)

Also, while using Apache's Tour De Flex to familiarise myself with the components available in Flex, I came across the third party Ardisia Components Library. It has pretty much everything that AIRDock/FlexDock aims to do but much better, and it even has "native-like" Windows skins as well! I would have just let this go and used that library instead to finish ASBoxer already, but there's always a catch...

...it's $600!

No way that any hobbyist is gonna use that library unless they already have it for some reason. That's a justified but outrageous price. For reference, I paid half that for my laptop.



Posted by Gimmick - June 11th, 2020

im 22


Posted by Gimmick - May 17th, 2020

It's been quite a while since I last made a news post, let alone since I talked about HitShaper! So I'm still working on it (almost 5 and a half years since I first started it) but it's been nice watching it grow. The main stuff that's been added since 2016 (when I first finished theming support) was support for extensions in SWF files. There was a brief phase where I was using Workers to offload extensions to different threads, but that got too unwieldy to manage!

Then, I switched over to using a shared database that could be accessed by sessions; this seemed like an almost-perfect solution (except for synchronization) since databases are asynchronous by default, and easy to share using transactions. Now, the user can add any "import/export" extension, which can handle importing and exporting to any file format - as long as the extension uses the database to do it!

I finally finished collapsible panels! This took quite some time to finish, but the result really looks a lot more like modern IDEs like FlashDevelop, PyCharm, Eclipse and the like. Take a look at the video below!

Apart from bug fixes, the main thing I'm excited to have in the pipelines is first-class extension support! I plan to allow for users to add their own (swf-based) extensions, which means that they can have any panel in their workflow, as long as it adheres to the extension API!

In effect, it's like Flash CC's extensions toolbar - imagine a Kuler-like color panel, or a "frame editor" panel, or even a "face detector" panel which autogenerates hitboxes based on the face / body / other features it can detect within an image - if it's made as an extension, then it'll be supported! Especially due to AIR's NativeProcess API, it's very possible to, say, have such a panel which communicates with a facial detection binary, and returns results back to the user. The possibilities are huge!

But that's all still in the future. For now, grad school is making me a bit busier than usual, so while such things are in the works, they may or may not be done quickly...let's hope! In the meantime, here's the "first look" for many of you:



Posted by Gimmick - August 7th, 2019

Ça fait 3 jours que j'ai reçu l'attestation de DELF A2 (que j'ai passé il y a 2 mois), et évidamment je l'ai réussi ! (parce que je ne l'aurais pas reçu si je ne l'avais pas réussi) Mais c'était un peu plus facile que ce que j'ai imaginé (d'après mes commentaires dernières) alors j'ai été surpris d'avoir de bonnes notes.

Voici mes notes:

Compréhension des écrits : 24 / 25

Compréhension de l'oral : 23 / 25

Production des écrits : 22 / 25

Production de l'oral : 19 / 25

Mais j'ai entendu que le B1 peut-être vraiment difficile que l'A2, donc il faudrait que je révise bien avant de le passer...

...on en parle ?


Posted by Gimmick - June 11th, 2019

Was a bit tougher this time around. Quite a few confusing curveball-type questions in this compared to the previous one. Fumbled quite a bit in the speaking test, and for some reason couldn't stop saying the infinitive form of verbs even when I knew I had to conjugate them. Bah, I'll be getting the results dans un mois. Je pense que je vais recevoir environ 70 (sur 100)

Posted by Gimmick - March 11th, 2019

Yay. I'll get my results in 10 days. Rather easy, fwiw.

Edit: Apparently it's a month, not 10 days. Bah

Edit 2: Got my results! 99.50 / 100, hooray!

Compréhension de l'oral: 25/25

Compréhension des écrits: 25/25

Production écrite: 25/25

Production oral: 24.50/25

I have signed up for A2 :]


Posted by Gimmick - October 2nd, 2018

It's been almost four years (less 2 months, to be precise) since I first announced work on ASBoxer in the Newgrounds BBS. Well, for those of you who were paying attention anyways. Ever since then, it's been a damn near neverending quest for the red dragon. Countless time was lost in adding new features and making things look snazzy, all the while ignoring the base concept of time to market. Not that I'd have sold it anyways...not if it were so rudimentary. I have "standards", you know. (Yeah, right.)

In the meantime, a lot of stuff has changed. A lot. The entire tech landscape changed, swiveling towards the internet. AIR all but lost significance, as if it didn't already. Somehow, fucking JavaFX of all things became slightly more relevant. JavaFX. Not that I'm complaining - it's a swanky runtime - but it was pretty much an abortion from the get go thanks to Oracle and somehow that managed to become more popular than AIR. And I'm happy for it. I might use it in the future (just not for ASBoxer, because it's a nightmare to port anything from one engine to another, and a useless value proposition at that)

Other things apart from tech happened too. Too many to count, and the past four years have honestly just seemed like kind of a...haze to me. It's hard to believe it, but yes, I am "that" age where life seems to just pass by fast (the days go by slow, but the years go by fast, you know the rest). 

Kept adding more features to ASBoxer in the meantime. Skinning, custom components, localization support, you name it...all with nothing to show for it in reality. As far as y'all were concerned, I just had screenshots from a bygone era, and nothing more. And that's true. It's vaporware, by this definition. Something that should have taken a year...then two...then three...now galloping on to four and with no signs of stopping.

In the meantime, I also made the - I believe - one of a kind (for AIR, that is) AIRDock because I'd not found anything like it. Making that helped me a lot in designing and learning the value of good design practices, something that I'd shirked when making ASBoxer because I just wanted to code, dammit. Who needs planning? I know the code anyways.

Hah. As if. Once I came back to ASBoxer, with a new insight, I realized having a 10,000+ LOC in one file was probably not a good thing to be proud of. Thankfully, it was not spaghetti, so I was able to get back to it relatively easily, but let's just say that it won't be seeing the underside of 8,000 anytime soon. I added concurrency (background worker, technically) support because the main thread was too damn slow for running processes. That was a crapshoot of lost messages and faulty coding and testing. Ultimately, I forgot the meanings of the messages I'd used in the code and everything related to that had turned to spaghetti (thankfully, just restricted to that area alone). It still exists in incomplete form, haha.

Now? I'm still working on it. No way in hell I'm giving it up, even if it's the comatose dog lying on the road after its untimely rendezvous with a high-speed car tyre. I've had a lot of fun making ASBoxer, and it's taught me a lot, and gave me a lot of joy - albeit rather double-edged at that - while doing so. I'm still running around breaking things fast - but early; better now than later where it really counts. I've planned to migrate away from the custom zip file format and instead use a fixed database to support easier asynchronous operations; in so doing, hopefully import/export operations will be able to return to the main thread again, back from the land of concurrency (to be fair, it is hard, and even more props to those who get it done right). After that? Maybe. We'll see. 

And for reading this far, here's a rather old Imagine Dragons song. Never really a fan of them - really the only two songs I heard from them were this one and Thunder (IIRC) but it's a nice song, I guess.

S/O to @PsychoZombii, if you're still here dude hit me up let's chat sometime


Posted by Gimmick - August 24th, 2018

Time sure does fly by.

Posted by Gimmick - May 31st, 2018

AIRDock v0.4's out! This version is much better than the previous one (but also a bit more tedious to use, currently working on that). Those of you who've seen my previous posts know what it is, but for those who haven't, it's a docking panels library for Adobe AIR (yes, I know, stop telling me it's a dead platform). Here's a small demo:


Posted by Gimmick - January 16th, 2018

Exams over, and so are the semester vacations. My RSI has gone, thankfully (although it comes back every now and then, but it's not too much of a problem)

I've been developing a docking window library for Adobe AIR for some time now, inspired by WeiFen Luo's DockPanelSuite for C# WinForms, but created from the ground up (not just a direct port). It uses the NativeWindow class, so only AIR projects can make use of it.

One thing I've been trying to get to work was the dragging and dropping of tabs / panels onto others and making them join into one; how do you do that across multiple NativeWindows (especially when your Stage's MouseEvent only provides enough info about the mouse within the bounds of the stage?)

Yesterday, it occurred to me that using the NativeDragManager class to initiate and handle drag-and-drops could be performed! (I was already using it in an earlier part of HitShaper, but had failed to make the link then, because in that case I was only dragging from the filesystem into the application, and not within the application itself) It turned out that I could indeed do that, by transferring object references! (Fun fact: I got this "epiphany" during a fever...who said fevers were entirely bad? :P)

However, I guess poor design has caught up to me and I will have to redesign the classes, putting more priority on containers rather than the panels instead, and that is another headache...for another day.


Update 001 - see video description for more details (click the YouTube icon)