It’s been quite a long time since I blogged about Dex. Truth be told, I needed to take a little break in order to concentrate on family. I have 4 kids and raising them can be quite demanding. Family first, and Dex is a guilty pleasure and a labor of love. I had to put it in the background for awhile, but rest assured, I am as passionate about the project as I have ever been. So enough about me, what’s been happening with Dex in the meantime? Quite a lot actually.
First, though lately I haven’t been vocal on the internet about Dex. I’ve been actively using it every week to accomplish some pretty amazing task at work. It’s quite alive. The value of using your own product can’t be understated. I constantly find myself frustrated with the lack of one feature or another. Its giving me insight on what I should be focusing on next.
Let’s face it, Dex is a powerful tool in the hands of an expert but the learning curve isn’t always gentle nor forgiving. I am gradually working to change this, but there are some irritations. Here are a few that I personally find frustrating and will be fixed:
- Drag and drop doesn’t always drop the component at the correct place. This bug has eluded me for awhile.
- I can only cut and paste 1 component at a time. It is always placed prior to the active component on which I am pasting. This works great until you want to paste the component at the end of a workflow. My workaround is to add a dummy component at the end and paste the component prior to that.
- Sometimes components are hard to locate. I need to add a search facility at the top.
- Occasional crashes. Invariably after I have performed significant work and forgotten to save.
- There are too many overlapping components. I will be culling the herd a bit in Dex 0.7.
- Intialize/Execute is kind of confusing. There are long detailed reasons for the existence of both, but like Highlander, in the end, there will only be one. Just not yet…
- There is no real options configuration. This would be a nice place to put all sorts of things. Full styling should also be possible.
- Users should be allowed to have a favorites category where commonly used components are more easily available.
Anyway, the list goes on…
Technology Marches On
One good thing about the break, is that some periphery technologies emerged, some matured, others withered. Here are some notable additions that you can look forward to seeing:
DexCharts is a sister project and will be a foundation technology behind many of the visuals supported in Dex. This will allow me to move the visual component complexity into a more reusable layer. In addition, if HTML5 developers can use DexCharts as a distinct technology on it’s own. Many of the visuals supported in Dex will delegate to DexCharts as it evolves. It’s a separation of concerns.
Support of DexCharts will allow me to easily support multi dimensional charts. Meaning that I can have views with multiple charts which interact with one another within a single visual page.
Click any of the images to move to a live version:
Many of the visuals will support a SQL query interface into the data. This is amazingly powerful. Initially I looked to TaffyDB here. The syntax was foreign to me and I didn’t want to impose yet another query syntax on the community. I started looking into writing SQL within a browser, but during my hiatus, sql.js emerged. It’s awesome. Here is a demo of a Dex generated visual which uses this new SQL capability:
SQL offers a very powerful filtering mechanism:
Which presidents are from Ohio?
select * from dex where
Who were the first 5 presidents?
select * from dex where
cast(PRESIDENCY AS INTEGER) <= 5
Want only see the state and president’s name in descending order?
select PRESIDENT, HOMESTATE from dex order by PRESIDENT desc
The live version may take a minute to load fully!
That’s way too much data to assimilate at once. However, we can easily apply a query to this data:
select * from dex where INSTITUTION like ‘%Florida%’
which will allow us to see the teams with “Florida” in their name.
This is very powerful and does not involve learning new technology for most of us.
There’s much more to talk about, and I will continue this discussion in an upcoming blog article…
Last but not least…for the intrepid folks who make it through the entire article, I like to leave folks with something fun I’ve been working on:
Anyway, that’s it for now. More to come soon!