[HN Gopher] Show HN: I've built a C# IDE, Runtime, and AppStore ...
___________________________________________________________________
Show HN: I've built a C# IDE, Runtime, and AppStore inside Excel
The project is called QueryStorm. It uses Roslyn to offer C# (and
VB.NET) support in Excel, as an alternative to VBA. I've posted
about it before, but a lot has changed since then so figured I'd
share an update. The current version includes a host of new
features, namely a C# debugger, support for NuGet packages, and the
ability to publish Excel extensions to an "AppStore" (which is
essentially a NuGet repository). The AppStore can be used by anyone
with the (free) runtime component. Another great addition is the
community license, which is a free license for individuals and
small companies to use. It unlocks most features, but it isn't
intended for companies with more than 5 employees or over $1M in
annual revenue. I would love to hear your feedback and am happy to
answer any technical questions about how QueryStorm is implemented.
Author : anakic
Score : 651 points
Date : 2023-01-25 09:39 UTC (1 days ago)
(HTM) web link (querystorm.com)
(TXT) w3m dump (querystorm.com)
| nielsbosma wrote:
| Love it! Big fan of developer productivity tool like Linqpad.
| major505 wrote:
| Now I can use excel. I always sucked doing stuff in excell
| formulas. With this now I can just linq and spit the info I need.
| viggity wrote:
| devs "hate" excel because you have to reference by col/row (C10
| = tax rate, etc). But few devs know that you can name cells
| (and ranges and tables). Just to the left of the formula bar
| you'll see a textbox with the default name of the cell (C10).
| Just delete C10 and call it "tax_rate" and now you can
| reference "tax_rate" in all your formulas.
| TrackerFF wrote:
| Now sure how known this is, but Excel 365 for Business /
| Enterprise supports Office Scripts (under a "Automate" tab),
| where you can create scripts in TypeScript.
|
| https://learn.microsoft.com/en-us/office/dev/scripts/overvie...
|
| https://learn.microsoft.com/en-us/office/dev/scripts/develop...
| barrenko wrote:
| This is pretty mad.
| bandyaboot wrote:
| This sounds really impressive.
| rukuu001 wrote:
| I remember you back when it was just an SQL plug-in for Excel :)
|
| Congrats on building this and sticking with it so long. It's
| awesome!
| gwbas1c wrote:
| I tried clicking on the animation to make it bigger, but the
| larger image doesn't load.
|
| I'm using the Brave browser.
| layer8 wrote:
| Same on FireFox.
| anakic wrote:
| Yeah, I just checked and it fails on some gifs for me as well
| (but works on others for some reason). I'll leave it as is
| for now, best not fiddle with it while this post is trending.
| chinupbuttercup wrote:
| Would this work with Excel for the Mac as well or is primarily a
| Windows thing? Somehow, while good, I feel like Excel for Mac
| just isn't as good as Excel for Windows.
| anakic wrote:
| Unfortunately, no. Excel for Mac doesn't support either of the
| two technologies QueryStorm uses to talk to Excel (namely VSTO
| and ExcelDNA).
|
| Might be possible to build something that would work across all
| plaforms using Blazor and the Monaco editor, but that would be
| another huge project.
| btown wrote:
| I wish that someone would make a Wine-style compatibility
| library that would run a local websocket server that
| communicates with a lightweight Add-In using the new cross-
| platform JS APIs for Excel, and translates VSTO/COM calls
| into IPC messages that are processed and responded to. Then
| you could bring all the old VSTO tools into the modern world,
| running in a separate process from Excel. This is... rather
| daunting to even think about. Arguably Apple should sponsor
| the project as a way to bring the world of finance towards
| using Macs!
| major505 wrote:
| this is.... awesome.
| RektBoy wrote:
| If the user can code in C#, why they need Excel? Exporting to
| Excel for other non-coder employees, sure why not.
|
| I don't understand the use-case, Excel is horrible tool for
| anything else than stupid, a few hundred rows data science.
| eatsyourtacos wrote:
| You must not work with any kind of real world data if you think
| Excel is a horrible tool.
|
| Pulling in 1000000000 rows of data you know absolutely nothing
| about to throw into your ML model and have it spit out some
| questionable result doesn't mean you actually work with real
| world data.
|
| >a few hundred rows data science.
|
| People that work with a few hundred rows are called "almost
| every office employee ever" and not data scientists. And you
| are naive as hell if don't realize how powerful excel is for
| every random ass thing that happens in the real world.
| jbb_hn wrote:
| Wow. As someone that has written a fair amount of VBA in the
| past, this is a game changer.
|
| Impressive feat of integration and I hope you're rewarded for all
| your efforts.
|
| Clearly a passion project!
| kinggencha wrote:
| Animations embedded within text are distracting and make the
| reading experience worse
| anakic wrote:
| I like that a gifs shows so much in very little space, but I
| take your point about it being distracting. Regular mp4 videos
| you can play/pause explicitly might be a better option for the
| future.
| keithalewis wrote:
| Does this use https://excel-dna.net/ behind the scenes?
| anakic wrote:
| Yeah, the runtime component is an ExcelDNA addin. The IDE
| component is a VSTO addin. Since VSTO doesn't allow defining
| custom functions I switched to using ExcelDNA for the runtime.
| andysinclair wrote:
| What did you use to write the installer, and how do you
| determine if the targeted version of Excel is 32 or 64 bit?
|
| I've built an Excel-DNA based Add-in
| (https://www.excelpricefeed.com/) and distribute it via an
| installer built using Advanced Installer. It works well, the
| only real pain point is the the user has to find out which
| version of Excel they have installed in order to choose the
| correct download (32 or 64 bit).
| keithalewis wrote:
| See https://github.com/xlladdins/xlladdin/blob/master/ThisA
| ddIn....
| anakic wrote:
| I use Wix for the installer. Can't remember how I dealt
| with that particular issue, but ping me at antonio [at]
| querystorm.com in a day or two, if you're interested, and
| I'll have a look at how exactly I dealt with it.
| keithalewis wrote:
| Please consider acknowledging that on your website.
| anakic wrote:
| I would love to but I'm a bit scared to fiddle with the
| post now while it's trending. I think it's mentioned in a
| few places on the website, but not in this blog post. I do
| also use a bunch of other libraries, but yeah, ExcelDNA is
| one of the critical ones so mentioning it would be in
| order.
| HeckFeck wrote:
| Very cool. Should be a part of Excel tbh. LINQ is much better
| suited for data munging than JavaScript.
| qwerty456127 wrote:
| F# is even better.
| eitland wrote:
| Maybe, but I think C# has the advantage that "everyone" knows
| it or Java so it is trivial to get started.
|
| Last I checked, admittedly a couple of years ago, starting
| with F# wasn't absolutely trivial.
| eckza wrote:
| It is, if you know where to look.
|
| Therein lies the problem. The language doesn't have much
| marketshare, and few champions.
|
| I just finished reading Scott Wlaschin's Domain Driven
| Design for Functional Programmers and it's an incredible,
| batteries-included guide that goes from "hello world" to
| "and here's how you use it in an organization" in a few
| hundred pages.
|
| I wish I had been exposed to it about a decade ago.
| Incredibly easy to follow and well-explained.
| fsloth wrote:
| This! Other good books are "Expert F#" by Granicz, Syme &
| Cisternino, "Real world functional programming" by
| Petricek and "F# for scientists" by Harrop. The last is
| old but still really great in succintly explaining what
| 'new&unfamiliar' structures in F# are great for pragmatic
| software engineering.
|
| Why is there so little noise in F# land? I have no data,
| but I can guess that the language is so unproblematic
| that everybody is just happily coding instead of
| explaining how to fix something. It's also not very good
| at guis so there is usually nothing visual to
| demonstrate.
| grugagag wrote:
| What's the markershare though? F# is great but Microsoft
| made it sortof a second class citizen
| fsloth wrote:
| F# is installed by default with Visual Studio, and the
| tooling is pretty good. I think it hardly is second class
| citizen? Not promoted nearly as much as C# for sure.
|
| AFAIK F# is on quite solid foundation, as there is the F#
| foundation that would keep ball rolling, so to speak,
| were Microsoft to renounce the language.
|
| I have no idea what the marketshare is though. On Tiobe
| (https://www.tiobe.com/tiobe-index) it seems to be nearly
| on par wit Scala and much more popular than Haskell or
| Ocaml.
| pjmlp wrote:
| Pretty good if only what one cares about is CLI and class
| libraries.
|
| According to JetBrains developer survey, an amazing 3%.
|
| https://www.jetbrains.com/lp/devecosystem-2022/csharp/
| fsloth wrote:
| Tooling: Not only CLI and classlibs. The debugger in
| Visual Studio follows calls to c/c++ dll:s over pinvoke
| withhout a cinch. (Same as C#). If you wrap complex
| entities in e.g. Protobuf then writing hybrid
| applications is pretty straighforward and on solid
| ground.
|
| All of the GUI stuff is missing of course. I would not
| advice to implement a GUI on top of F#.
|
| The main feature of F# imo is it's succint type system
| where one can wrap everything in a type without much
| bureaucratic cost, but in a way that makes program
| structure so much more obvious. "If it compiles it's
| correct" is prety much how it goes.
| pjmlp wrote:
| Not enough to justify many .NET shops to go multi-lingual
| projects.
|
| They already have to use C# no matter what, given the GUI
| and database frameworks.
|
| Adding C++ or PowerShell into the mix might happen, due
| to the frameworks and workloads that require reaching out
| to them.
|
| While adding F#, even if more expressive, it barely makes
| sense from business point of view.
|
| It isn't as if a mixed C#/F# codebase brings the same
| value as doing Python/C++.
|
| Also to note that while F# team has pivoted into trying
| to make F# attractive to data science, their employer is
| one of the reasons why CPython is now taking performance
| more seriously.
| qwerty456127 wrote:
| > While adding F#, even if more expressive, it barely
| makes sense from business point of view.
|
| F# code is much more reliable and requires much less
| people to write. Isn't this good for business?
|
| The only problem with F# is it's not always immediately
| readable to those who are not familiar with it (so it's
| harder to find the people to hire), isn't it?
|
| I just wonder how much harder it is to teach a random
| person (without even a rudimentary programming skill) to
| code F# than to teach them C#.
| eckza wrote:
| I think that the problem is that:
|
| - fsharp's big selling point is that it runs on dotnet -
| most FP ideologues run screaming from M$, and there are
| other, better (subjectively), more-active FP langs that
| do many of the same things, such as OCaml and Haskell -
| most dotnet shops are "csharp or die" and getting fsharp
| adoption is more or less an impossible task for cultural
| reasons
|
| I support fsharp and generally like it, but I'm not
| reaching for it for net-new stuff that doesn't already
| have a dependency on dotnet. $0.02.
| qwerty456127 wrote:
| F# is a better OCaml. Haskell is too different to
| compare.
| pjmlp wrote:
| For that you already have PowerQuery on Excel.
|
| As for being better, F# is better on the language level, but
| sadly sucks on the tooling effort for .NET frameworks, that
| Microsoft is willing to spend on it.
| brushfoot wrote:
| This is excellent. I can see buying it for my business. We
| already use Excel extensively for the open file format; that it's
| local first; that it's just a file; the low ceremony of getting
| started; the multipurpose grid for code, data, and presentation;
| the ubiquity.
|
| The more low-code/no-code SaaS products I've tried, the more I
| value it. LC/NC SaaS generally is expensive and inflexible.
| Everybody knows Excel, it's dirt cheap, and it just works. It's
| part of a certain IT subculture to bash it, but I stopped
| laughing along.
|
| Excel is great at what it does. Love seeing clean solutions like
| this that give it even more muscle.
| beached_whale wrote:
| I love how approachable it is. Domain experts in other fields
| are able to program in excel and codify their knowledge. While,
| not always great in terms of code quality, often it is bad, it
| still provides a great starting point in moving to something
| more resilient and safer in terms of data validation.
|
| There is a reason it is the worlds most poplar programming
| language
| redavni wrote:
| "most poplar programming language"
|
| In your opineion.
| beached_whale wrote:
| I love my typos sometimes :)
| indrora wrote:
| Not just in one HN'ers opinion.
|
| The thing is: Excel is one part data store and one part
| programming interface. The programming interface just
| happens to be a part of the data store. This leads people
| who have been told they're not allowed to program to solve
| the problem with the best tool they can hold: Excel.
|
| I once got an email in my inbox that had the subject "Help:
| recommendations for machine to run Excel". The body
| described a person within a business unit who had a laptop,
| ca. 2018, with a then current I7, 32G of RAM, dual raid10
| SSDs, and it had one job: Open, edit, and evaluate one 5+GB
| Excel workbook.
|
| This workbook took twenty minutes to open.
|
| It's so bad Microsoft actually gave some level of proper
| functional programming to Excel: https://www.theregister.co
| m/2020/12/04/microsoft_excel_lambd...
|
| What happens is this pattern where more applicable
| programming models are taken from business folk, who need a
| way to do some level of broad, tabular accounting usually.
| These individuals don't have Python, don't know Python, or
| web applications, etc. What they have is Excel.
|
| Excel lets you do something very easily that no other thing
| in existence lets you do: Real time (ish) calculations
| against very large sets of data. I can write one cell,
| `=AVERAGE($A9:$A99)` and get the running average for 90
| rows in a table. Imagine the work that would go into doing
| that in a language like Python or Go, plus the scaffolding
| to make it work in a webapp.
|
| And so when a business unit says "we need a way to do X",
| inevitably someone says "there's no budget for that" and
| someone eventually finds their way to Excel. Then they
| build the thing in Excel and when someone realizes they
| have a monster on their hands someone inevitably says "this
| should be a webapp" at which point nobody has the funding
| to maintain that webapp plus its infrastructure, plus
| handling the implicit and explicit logic that comes along
| with the mixture of data, code, and everything else in an
| Excel spreadsheet.
| goosedragons wrote:
| I think with Numpy and Pandas getting the average of 90
| rows wouldn't be too hard. With R it's insanely easy:
| mean(data[9:99,]). I'll admit Excel is a easier for the
| average joe to get started with but there's a lot of
| downsides like it being relatively difficult to figure
| out WTF a sheet is doing at a glance.
| beached_whale wrote:
| I think a lot of the issue with Excel is the developers,
| often, look down upon it. This is too bad as it doesn't
| help those using it to solve real world problems and it
| often leads to them not seeking help. Then we end up with
| the billion dollar London Whale's.
| ozim wrote:
| I don't look down upon excel I look down upon development
| practices inherent to excel.
|
| No proper way to collaborate with version control. No
| real change control either - Joe can have version 1.4 Bob
| still 1.0 - version from Bob making loses for the
| company.
|
| No real way to debug like getting to know where cell is
| used is impossible.
|
| That said excel is powerful and I also use it for
| personal stuff or stuff only I need to calculate.
|
| When I have more than 5 people using and changing the
| same excel all is lost - maybe office 365 helps with
| collaboration but it still needs a bit more features.
|
| That said excel is awesome on its own - single
| spreadsheet with complex calculation used by more than 5
| people is recipe for a disaster.
| redavni wrote:
| Sigh...reread the posts.
|
| But here is a hint.
|
| How do trees access the internet? They log in.
| loco5niner wrote:
| Ooooooh... Whoosh. Missed that the first time.
| undown/upvote
| beached_whale wrote:
| It was informative though, but maybe next time precede
| with something like funny typo. Us as a group are easy to
| trigger into helping those wrong online :)
| anakic wrote:
| Hope you give it a go. I'd love to know how you get on with it
| if you do!
| actionfromafar wrote:
| Find a way to connect this to Zapier and the Universe might open
| up a wormhole.
| mcdonje wrote:
| Really cool. I could see MS jumping on this because of their
| strong association with C#.
|
| That said, I think the ideal replacement for VB & VBA in most
| contexts is python. The reason is they're both high level
| languages with ease of learning as a selling point. Python has a
| massive userbase, and there is significant overlap of python and
| MS Office tools. Data analysts who have to deal with Excel & SQL
| Server are much more likely to know python than any other
| language outside of SQL.
|
| It seems like python has pretty much locked up the spaces that VB
| was designed for.
| kab0b wrote:
| I thought I remember hearing like 4 or 5 years ago that MS was
| planning on replacing VBA with Python Support in Office apps.
| But I can't find anything to back that up, so maybe I just had
| a really wishful dream.
| mcdonje wrote:
| They might have some involvement in python libraries or
| tooling to interact with excel files from python apps, but
| the default programming support within excel is still VBA.
| They did add a javascript API, but getting that up and
| running is a job geared more for a dev than a data analyst.
|
| What I think they should do is not just make a python API,
| but replace VBA with it, and expose it to end users where VBA
| is currently exposed. Python should be the language of macros
| and user defined functions.
| kevin_thibedeau wrote:
| They should dust off Windows Scripting Host and use that as
| the nexus for Office app scripting.
| fazzbuilder wrote:
| I have used QueryStorm since May 2016 back then ThingieQuery.
|
| My head exploded from the first moment I saw it considering
| everything that it integrates and embeds within Excel since for a
| long time I have resorted to automating routines with ado and
| vba.
|
| Querystorm is more than just a SQL IDE built right into the book
| and honestly this is the best solution in this environment that
| every data analyst, self-service developer or business user
| should give it a try.
| cobrabyte wrote:
| This is excellent. Great work!
| thunkshift1 wrote:
| You have unlocked the power(utility?) of excel for sooo many
| people! Msft should buy this from you
| anton_ai wrote:
| Installed :)
| ivan_burazin wrote:
| This is just positivity insane :)
| anakic wrote:
| Fala, Ivane:)
| T3RMINATED wrote:
| [dead]
| ycuser2 wrote:
| I would have used the hell out of it 8 years ago! VBA IDE was a
| pain.
|
| Great work!
| waldrews wrote:
| Spectacular. Stats PhD here, I've needed this for years for
| practical projects in different data science roles. I'd love to
| talk to you about adding statistics/forecasting capabilities,
| maybe by exposing some existing libraries with syntactic sugar.
| anakic wrote:
| Would love to! There's a library called Math.NET that I wanted
| to look into, but never got around to it (plus, I forgot 99% of
| the math I learned in college so wouldn't know how to use it).
| Can you get in touch via email: antonio [at] querystorm.com?
| gadders wrote:
| Good work, but this is depressing:
|
| "VBA is a bit (a lot) behind the times and Microsoft isn't
| planning on upgrading it. Instead, they're offering a sandboxed
| JavaScript environment called Office Scripts."
|
| Microsoft - Just swap VBA for Python ffs.
| qiqitori wrote:
| There's a lot of people who only know VBA (in terms of
| programming languages), and there's a huge amount of VBA code
| in production out there. Microsoft won't make itself popular by
| replacing VBA for some silly technical reason, especially not
| because the syntax is perceived to look better. It's a bit like
| renaming the SUM function to ADD and expecting everyone to
| rewrite their formulas.
| orbit7 wrote:
| Impressive, Excel would benefit having this built in
| [deleted]
| denismurphy wrote:
| Hats off @anakic this is class! It would be a game-changer if
| Microsoft licensed QueryStorm built in to Excel. Let's hope the
| right people at Microsoft are paying attention to you.
| anakic wrote:
| Thanks! Wouldn't mind that outcome one bit. It's hard to get
| exposure and adoption for a platform like this without some
| serious muscle backing it. I suspect Microsoft has its sights
| set on the cloud, though, but still, it would be amazing if
| they adopted QueryStorm.
| samstave wrote:
| Beautiful.
|
| So can people upload their code snips to the appstore such that,
| say, a marketing data analytics person with no coding experience
| can pay to get 'buttons' to run queries that are relevant to
| their needs?
|
| like the salaries example, for example, I used to spend a shit-
| ton of time educating a CFO on AWS spends in excel.
|
| If I could have a code snip 'button' to use some AWS-CLI creds to
| pull results directly from AWS asa "CFO BUTTON" and set them up
| with an easy export to an XLS - and then let them build their own
| dash to their choice that would be cool.
|
| I havent looked at Cloudability in quite a while, (know the
| founder) -- but giving a CFO-type an excel button... Every CFO
| can navigate excel. so they get an invisible tool that empowers
| them, and relieves stress on the Ops team...
| anakic wrote:
| Yep, that's the idea.
|
| You create a project that defines some custom functions, ribbon
| commands, context menus, shortcuts etc... and then publish it
| to a store. Then anyone who has the QueryStorm Runtime (and the
| url of the store you published to) can install it through the
| "Extensions" dialog.
|
| I haven't yet set up the ability to charge for packages but I
| plan on offering this. I first need a community of users, so
| didn't focus on charging yet.
|
| If you'd like some help setting up something like that AWS
| scenario, reach me via email: antonio [at] querystorm.com, I've
| done several such integrations already (Google analytics,
| Monday.com, TSheets, Google drive).
| ragebol wrote:
| No questions, just complimenting on what looks like a great, very
| very useful product.
| anakic wrote:
| Many thanks!
| cm2187 wrote:
| Microsoft actually built that already, then they decided to kill
| it. It was called VSTA (not to be confused with VSTO). It shipped
| with one of the apps of Office 2007.
| anakic wrote:
| At first I thought you were referring to VSTO, then I saw the
| "not to be confused with VSTO" part. I had no idea this ever
| existed. Thanks for mentioning it. I wonder why they decided to
| pull the plug back then.
| kleiba wrote:
| Funnily, QueryStorm uses VSTO behind the scenes: the IDE
| component is a VSTO addin.
| cm2187 wrote:
| I suspect it must have been part of "let's try to secure /
| lockdown office", "users writing codes is bad, they should
| only push buttons", and at the same time they tried to make
| it as hard as possible to use VBA (all sorts of warnings and
| things disabled by default, etc)
|
| I am also aware of a commercial product that offers a .net
| IDE to be embeded into your software, though I never tried
| it: https://www.alternetsoft.com/products/scripter
| ChicagoDave wrote:
| Linq in Excel is very interesting.
| 813919 wrote:
| This is incredible. I work in industrial automation and I often
| have to manage / make edits to "point assignment charts" which
| are essentially Excel Workbooks with 100+ Worksheets, each
| containing ~10-100 rows of formatted data which define various
| parameters each real world "point" should have in order to
| communicate with RTUs / various SCADA nodes.
|
| Sometimes the feedback involves making a minor tweak on every
| Worksheet. Sure you can muck around with VBA (which is a horrible
| language and experience), but I often just do it manually to get
| it over with instead (click click click... very tedious).
|
| C# is my go-to "business logic" language as a developer, and this
| looks so well integrated, really excited to use it.
| anakic wrote:
| Would love to know how you get on with it. If you'd care to
| share, please to let me know.
| 813919 wrote:
| Sure! I'll make a reminder to follow up a week from now on my
| UX. Thanks :)
| jodrellblank wrote:
| > " _Sometimes the feedback involves making a minor tweak on
| every Worksheet._ "
|
| Could be a good task for PowerShell and the ImportExcel
| module[1].
|
| (PowerShell also being a .NET language and written in C#; it
| has convenient access to COM control of Excel if you can't
| import the spreadsheet and export an updated version; through
| $xl = New-Object -ComObject Excel.Application )
|
| [1] https://github.com/dfinke/ImportExcel
| cm2187 wrote:
| You should look at spreadsheetgear. Great .net library for
| spreadsheet manipulation, which also has its own calculation
| engine (though it doesn't support xlsb and pivot tables).
| kevin_thibedeau wrote:
| You have inherited a crappy database. Export it via ODBC and
| use more powerful tools.
| 813919 wrote:
| No not really, it's many projects with many documents, shared
| among many contractors. You use Excel Workbooks when you work
| in fields like this. We have it formatted to be pretty too,
| so we can just publish to PDF via Adobe Acrobat when it's
| time to send in submittals.
| drorco wrote:
| This looks great! In my previous company, we somehow ended up
| building a whole ERP around Google Sheets. Google Sheets is a
| very powerful tool, but the JavaScript definitely felt clunky and
| outdated.
|
| A solid C# foundation for building on top of excel could probably
| be very useful for some companies.
|
| I do wonder though how you can nail down a target audience for
| this kind of tool, seems like you'd need a special kind of
| tinkerer and I'm not sure how many like that are out there. In my
| other company, which was a small company, the ones who headed it
| were essentially engineers that transitioned to executive
| positions. I doubt there are many like that out there.
| mandeepj wrote:
| "Bandwidth Limit Exceeded
|
| The server is temporarily unable to service your request due to
| the site owner reaching his/her bandwidth limit. Please try again
| later."
|
| HN kiss of death. Hopefully, you'd be back soon.
| anakic wrote:
| Yeah:) Of course it happens while I'm asleep. Serves me right
| for loading the post with so many gifs... Back online now.
| nycdotnet wrote:
| Looks awesome. One fundamental issue I always faced with Excel
| calculations of any kind (formulas or vba) is the lack of ability
| to source control cleanly (binary format plus data and code are
| intermingled). This weakness is the other side of the
| spreadsheet's greatest strength which is low friction
| experimentation with data. Does this product attempt to do
| anything here?
| anakic wrote:
| Thanks!
|
| You can version control the code you write with QueryStorm, to
| an extent. There are basically two kinds of apps you can build
| with this: extension apps (where you build general excel
| functionality) and workbook apps (where you automate a
| particular workbook).
|
| The code for extension apps is stored in a folder on your
| machine, and you can version control that easily.
|
| The code for workbook apps is stored inside workbooks. While
| there's no version control functionality in QueryStorm, it does
| let you export code from a workbook into a folder, as well as
| import code from a folder into a workbook project. There are
| context menu commands for this in the code explorer pane. This
| lets you decouple the code from the workbook.
|
| Basically, for version controlling code in a workbook, you'd
| have to export the code into a folder and version control it
| there. Exporting into a folder will clear everything from the
| folder except hidden stuff like the ".git" folder so your git
| repository will be safe. Not a perfect solution, but it can be
| done.
| cxr wrote:
| Since XLSX etc. use Microsoft's Open Packaging Convention (a
| ZIP container consisting of mostly plain text), consider
| adding native support for unpacking and normalizing the
| payloads so they can be trivially diffed by existing source
| control systems.
| anakic wrote:
| It's something to consider, for sure. Perhaps there's an
| easy win to be had there.
| whitemary wrote:
| Can you also import it from the folder?
| anakic wrote:
| Yeah, you can import the folder back into the project and
| it will replace all of the existing files with the ones
| from the folder.
| unnah wrote:
| Have you considered implementing a project folder structure,
| so that the workbook and the source code could be version
| controlled together in git, but the IDE would import and
| export the source automatically from/to the workbook?
| anakic wrote:
| You mean add the workbook itself into the folder as binary
| file to include in source control? I haven't, but it might
| make sense, to keep the workbook in sync with the source
| code.
| samsquire wrote:
| This is absolutely awesome.
|
| The combination of a spreadsheet, database and data scripting
| runtime would be extremely powerful.
|
| This is where Airtable, nocodb and baserow are candidates.
|
| I worked at a company that used gridgain with Excel as a cluster
| to process models on lots of servers.
|
| I suspect there's a lot of low level Windows integration details
| about how to integrate with Excel. COM objects and DLLs.
|
| Why is integrating with software so difficult? Very few people
| know how to do it.
|
| How you design software that is extensible?
|
| Atom was extensible and VS Code is less so.
|
| Why has nobody integrated the web browser with QT? So we can
| browse into a Qt application. So you can create desktop widgets
| and canvases with Qt from Javascript? That way you could ship
| desktop software and arbitrary integrations to software.
| JustLurking2022 wrote:
| Honest question - by the time you're scaling with GridGain, why
| are you still using Excel? Even Python is probably faster by a
| decent margin.
| TeMPOraL wrote:
| > _Why is integrating with software so difficult? Very few
| people know how to do it._
|
| I feel it's because of inherent conflict of interests and
| priorities. A software product can provide services to the
| user, or provide services to other programs. It's rare to see
| one that does both, because the two goals seem often at odds.
|
| Say you're writing a software component for other programs to
| use. You probably have some specific programs in mind, some of
| which are end-user-facing. In this case, you may not want to
| spend resources on developing user-facing UI and features that
| make your product usable stand-alone - you'd likely end up
| competing with your own customers.
|
| Say you're writing user-facing software instead. You want to
| own the entire user experience. Mixing UI, user interaction and
| the "business problem"-solving code together lets you work
| faster. Also, you don't _want_ to make it easy for anyone to
| integrate with the core of your software, because that would be
| inviting competitors to own the user experience while using
| your own backend, ruining all kinds of marketing shenanigans
| you 'd rather play on your users.
|
| I don't like this, but I see there's a mix of both reasonable
| and greedy reasons why software isn't developed with
| integration in mind.
|
| The major exception here is when the platform on which the
| software runs encourages, insists on, or demands the software
| to allow for integration. Windows does that to an extent with
| COM / DCOM. Emacs does that by its nature. But it's only moving
| the problem one level up - e.g. Microsoft environment can't
| integrate well with Apple environment.
| brendank310 wrote:
| OT: You can do that with Qt. We played with implementing it
| ourselves for a project about 10 years ago. Since then I think
| there is an official QPA that will render Qt apps within the
| browser, and there is the Wt project. Might be worth looking at
| for some needs but I don't see it becoming popular.
| inglor wrote:
| I work on Excel at Microsoft and this is really cool. I'll check
| it out and share it with the rest of the R&D.
| anakic wrote:
| Thanks, that's great!! <3
| airstrike wrote:
| May I suggest a new feature? I imagine there's no real hard
| reason why Data Validation won't take dynamic arrays. It would
| be amazing to use UNIQUE or even FILTER in the Custom format.
| I've tried all sorts of workarounds including defining named
| ranges, using INDIRECT, etc. but it seems like I inevitably
| need to create a range for Data Validation to work
|
| Which in turn leads me to think there should be a way to create
| a virtual Range object in VBA that isn't really in a sheet (or
| a VirtualRange object that is similar enough to Range to make
| it work for most purposes). If one were to refactor Range
| entirely (not suggesting that), it seems like the issue is that
| the Range object actually encapsulates two different data
| representations into one jumbled up object: (1) cells in a
| worksheet with properties such as style, fill, value, etc. and
| (2) a traversable quasi-array data type with useful methods
| such as offset, rows, columns, etc. Those two things often line
| up, but not always.
|
| Anyway, I probably spend too much time thinking about Excel :-)
| </rant>
| keithalewis wrote:
| Please tell Satya to show the ancient C SDK a little love. I'd
| hate to see this disappear:
| https://github.com/xlladdins/xll#fp-data-type
| andysinclair wrote:
| Do you know if this item from the Microsoft 365 roadmap would
| stop Add-ins (xll files) like this from working?
|
| https://www.microsoft.com/en-us/microsoft-365/roadmap?filter...
|
| I also have a vested interest as one of my software products is
| an xll Add-in. Any further details from Microsoft would be most
| welcome, thanks.
| inglor wrote:
| Open us a feedback through the app. We actually read every
| tiny bit.
| Tempest1981 wrote:
| Cool. How can I turn off the animated cursor movement in
| Excel? And Outlook? Drives me crazy. I keep submitting
| feedback. Even a registry hack is fine.
| anakic wrote:
| No idea, haven't seen this until now. Hopefully they provide
| a mechanism for allowing legitimate addins to get around it.
| Perhaps using a code signing cert (which I do) or an EV
| certificate would be appropriate. Security has been a bit of
| nightmare with Excel addins. I've had to deal with false
| positives on and off again a bunch of times already. First it
| was windows smart screen, then antivirus vendors every so
| often. It's a slog...
| tech234a wrote:
| Typically you can go into the file properties and check the
| "Unblock" checkbox to remove what Microsoft calls the "Mark
| of the Web".
| gadders wrote:
| Jan 2024 - Microsoft releases Excel with it's own built-in C#
| IDE, doesn't credit original developer.
| IshKebab wrote:
| Honestly it's annoying that they haven't already done that. I
| was surprised a few years ago when I checked and it didn't
| exist.
| giancarlostoro wrote:
| They might be likely to offer him a job there honestly. The
| architect of C# was poached from Borland after all.
| pjmlp wrote:
| No he wasn't, he left Borland after being disappointed how
| things were going.
|
| He declined several approaches from ex-Borland people
| working at Microsoft, before reaching that point.
|
| https://behindthetech.libsynpro.com/001-anders-hejlsberg-
| a-c...
| giancarlostoro wrote:
| Interesting, the story I've heard from various Senior
| Engineers is that Microsoft poached him by offering him a
| ton of money. Crazy to think they all repeated a tech
| urban legend I guess
| addandsubtract wrote:
| How'd that go for the AppGet dev?
| VWWHFSfQ wrote:
| I always felt that there was more to that story than what
| was reported. My understanding is they reached out to him
| to interview for a PM role to develop an official
| "AppGet" at Microsoft but, for whatever reason, he didn't
| get the job. Maybe the interviews didn't go well? Maybe
| there were some red flags somewhere? Who knows. But it
| didn't really sound to me like they acted in bad faith.
| giancarlostoro wrote:
| Not familiar with this story.
| xbar wrote:
| Nor was I. It's worth a search and read.
| gadders wrote:
| I hope it does work out for the original author and he
| deserves it but there have been cases before where concepts
| have been taken from their originator and implemented by
| the large corporate with no cash or even credit given.
| xbar wrote:
| Maybe this was a better initial comment.
| IncRnd wrote:
| Even today, it isn't Embrace, Extend, Employ.
| inglor wrote:
| Oh boy you don't know what our culture looks like. It's more
| "it's cool that people are building on top of it and we want
| to figure out how we can make it easier"
| iforgotpassword wrote:
| People didn't forget this story:
| https://www.theverge.com/2020/5/28/21272964/microsoft-
| winget...
| inglor wrote:
| Oh Microsoft the company is not to be trusted and is not
| your friend. It's a huge company with many employees and
| products. Moreover I can't attest to any other group's
| culture - I can only say what we do in Excel.
|
| In Excel working hard to make addons possible and trying
| to foster an ecosystem of users sharing expertise is a
| focus as well as community building and smbs.
|
| Taking a cool community project and doing it ourselves
| would shooting our selves in the foot.
|
| More than once I didn't do things or work in features for
| that reason.
|
| Again not because Microsoft is your friend but because
| it's in our business interest.
|
| I don't speak for Microsoft or Excel and am just a
| developer/hacker ;)
| pyth0 wrote:
| I got this impression as well. I worked on a team two
| years back building out a very complex Excel plugin using
| Excel.js. The SDK has quite a few quirks and we ran into
| some problems along the way, but the team at Microsoft
| responsible for it was happy to help and interested in
| hearing feedback and features we wanted. A positive
| experience :)
| mst wrote:
| I always got the feeling that because it's such a key
| product the Excel team was basically its own organisation
| within the wider corporation and as a result had a lot
| more freedom to make its own choices.
|
| (not that I'm arguing for trust that would, as you say,
| be misplaced, but if my feeling is correct then the Excel
| org's englightened self interest can diverge from the
| mothership's self interest more than other divisions can,
| which makes the calculations as to what your management
| is likely to decide notably different)
| pjmlp wrote:
| Traditionally Microsoft has had three big feuds.
|
| Apps (where Office belongs), DevDiv (VS, .NET and such),
| WinDev (Windows, C, C++).
|
| All of them used to compete quite a lot among themselves.
|
| No idea how it looks like nowadays with all the business
| units, but I get a feeling that WinDev vs DevDiv is still
| a thing.
| fomine3 wrote:
| I don't agree the original argument
| https://news.ycombinator.com/item?id=23375536
| emrah wrote:
| "Bandwidth Limit Exceeded" is a very good sign :)
| anakic wrote:
| Too bad about 8h of downtime in the middle of it trending, but
| yeah, can't complain too much about it:)
| kungfufrog wrote:
| Will this only work on Excel running on Windows 10/11 X64?
| anakic wrote:
| It works on Excel 2013 onwards but only on Windows. Both x86
| and x64 are supported. Mac isn't supported I'm afraid.
| kungfufrog wrote:
| Show stopper for me, but can I just say what a fantastic
| product and the article introducing it kept me hooked to the
| end!
| anakic wrote:
| I have to do my own marketing, so I'm trying to blog more
| often these days. Really glad to hear you enjoyed the
| writing!
| throwaway90650 wrote:
| Is there a technical blocker on macOS Excel side that
| prevents you from implementing it, or is it just a matter of
| priorities?
| anakic wrote:
| A bit of both. On the Windows side I can use VSTO or
| ExcelDNA to integrate with Excel, but neither is available
| on the Mac. One alternative I'd like to try is a web-based
| version which would use Blazor and the Monaco editor but
| I'm really not sure if that would be at all doable. I don't
| have the time to go there at the moment, but I'd love to
| try at some point.
| replwoacause wrote:
| This is such an impressive feat of engineering. Excellent job. I
| have no doubt this will be a hit. It wouldn't surprise me if MSFT
| just decided to make you an offer for it.
| kristianp wrote:
| https://archive.is/1w42O
| anakic wrote:
| Oh man, limit happened while I was asleep. Thanks for the
| stopgap measure. Just got the bandwith limit removed with my
| hosting provider.
| andysinclair wrote:
| Looks great, will give it a try (as a fellow Excel developer).
|
| One small point: on your webpage the "Try QueryStorm out" button
| on the "Start a free trial" panel just points to:
| https://querystorm.com/csharp-in-excel/ rather than the generate
| key page.
| anakic wrote:
| Thanks, good catch!
| charles_f wrote:
| Looks awesome, and my favorite thing is this:
|
| > $379 License + 1yr support
|
| Cheers to you for not collecting a recurring fee for a desktop
| app!
| capableweb wrote:
| The license is for 1 year of latest versions of the
| application, after that you'll stop receiving updates. This is
| pretty common for desktop applications, compared to SaaS.
| charles_f wrote:
| It's becoming less and less common, even for desktop
| applications - which is why I thought this warranted some
| congratulations
| anigbrowl wrote:
| A fine example of what caffeine has done to our great nation's
| youth. What could have been an obscure command-line interface
| enjoying a modest but dignified place in the field of traditional
| operating systems is instead condemned to the gridded prison of
| automated balance sheets under the beady eyes of our financial
| overlords.
|
| Jokes aside, this is an amazing achievement, the more so for
| being realized by a single person working away patiently for
| years - truly inspiring. And it brought out a wave of nostalgia
| for a former life where I made a living building bespoke tools in
| the (pre-VBA) Excel macro language. All that and solid business
| sense too! I hope companies shower Antonio with money, and that
| Microsoft either leaves him alone or rewards him with gold and
| the autonomy to lead technical product development for the long
| term. It's rare to see such a singular combination of vision and
| execution, doubly so in a very mature product space belonging to
| a global megacorporation.
| charlieflowers wrote:
| Looks great, but I ran into an issue I'm hoping you can help
| with. I copy/pasted the very first example from the blog and it
| doesn't compile. I also have been unable to find the
| documentation necessary to get past the problem.
|
| It's the example that reads the files in a dir and makes an Excel
| table, and it fails on line 16, which reads `(excel.Selection as
| Range).WriteTable(files, "myNewTable");`.
|
| The error is `Argument 2: cannot convert from
| 'System.Collections.Generic.IEnumerable<<anonymous type: string
| File, long Size>>' to 'QueryStorm.Data.ITabular' | `
|
| I can't find docs for WriteTable() [even after finding those
| gitlab repos that contain QueryStorm docs].
|
| I think anyone trying to run with this, will need access to docs
| on the API.
| anakic wrote:
| Thanks for trying it and replying back here.
|
| It looks like I was using a pre-release version of QueryStorm
| while I was writing the blog post. I just released that version
| so if you restart Excel you should get an "Update available"
| button in the QueryStorm ribbon in Excel.
|
| Could you update and post back if that fixed the problem?
|
| Another way of "fixing" it would be to replace the following
| line: (excel.Selection as
| Range).WriteTable(files, "myNewTable");
|
| with this line: Write(files, "myNewTable");
|
| The Write method is available globally (it's not a method that
| belongs to a class). This is a trick specific to C# scripts
| (would be illegal in regular C#).
|
| The documentation does lack detail in some areas, which I
| basically cover by answering questions via email. I do need to
| invest time every so often to update and extend it.
| charlieflowers wrote:
| The update fixed it. Thanks! Look forward to giving it a
| spin.
| slenk wrote:
| Aww man, you ran out of bandwidth. May I suggest putting your
| server behind Cloudflare to help with that? I would offer storage
| if you want. I have so much extra linode bandwidth
| petepete wrote:
| Hey Anakic, I remember posting a link to ThingieQuery here many
| years ago (2016 maybe?). Glad to see it's gone from strength to
| strength!
| anakic wrote:
| Yeah, ThingieQuerie it was called back then:) Thanks, I
| appreciate the kind words!
| ozim wrote:
| Don't show it to my boss, please.
|
| It is super cool and would love to play around with it - just not
| at work :)
| quickthrower2 wrote:
| HN's loving DDOS has pulled this offline. Any mirrors?
| anakic wrote:
| Back online now
| ckluis wrote:
| I clicked on resellers & affiliates because I was curious about
| your terms. They are both empty.
| anakic wrote:
| Yeah, didn't get around to populating those yet. One-man show,
| so things slip by...
|
| ComponentSource is currently the only reseller:
| https://www.componentsource.com/product/querystorm-plugin
|
| Thanks for the heads up!
| ckluis wrote:
| Let me know if you want to chat about sales/marketing
| linkedin.com/in/ckluis
| paxcoder wrote:
| [dead]
| OJFord wrote:
| _Oh_ a plug-in, ha, for some reason I read the title and thought
| this was a 'just to show I can' type implementation of all those
| things actually _in_ Excel, 'Doom in Excel' sort of thing.
|
| This seems far more useful!
| whoisthemachine wrote:
| I also thought this was going to be an article about
| implementing a C# compiler in excel! This on the other hand
| seems like a very neat product.
| anakic wrote:
| Thanks! Yeah, I probably should have made the title "...in
| Excel" instead of "...inside Excel". I wonder if more or
| fewer people would have clicked on it that way.
| maxfurman wrote:
| If we're being pedantic maybe "for Excel" would be clearer?
| But what do I know.
| hoseja wrote:
| That would be my choice too. Both "inside" and "in" imply
| "in the spreadsheet". "For", on the other hand I would
| understand as "for the Excel program".
| anakic wrote:
| I was considering "for" but I wanted to imply that the
| IDE is actually located inside Excel, rather than being a
| separate program.
| Jorengarenar wrote:
| "working inside"?
| yAak wrote:
| Yeah, I thought you crafted some Excel monstrosity based on
| the title. Maybe a mod can change the title for you to say
| "for Excel."
|
| Also, I would be super proud if I'd created this. Excellent
| work!!!
| the_only_law wrote:
| I would have been both immensely impressed and immensely
| horrified if that were the case.
| lofatdairy wrote:
| I had the same thought lol. Honestly, the fact that such a
| thing seems possible at all should be props to the people who
| built Excel
___________________________________________________________________
(page generated 2023-01-26 23:02 UTC)