Gimli – A Visual Studio Code extension for front-end developers
gimli.app
gimli.app
(We've taken Show HN belatedly out of the title above.)
However, I must say, it's 2019, if you call yourself a front-end developer, and you do not know flexbox and grid - you are greatly missing out on an amazing radical change in how you think about and design your layouts. There really is no excuse for not knowing this stuff, especially with all the great resources out there to help you learn.
Flexbox Zombies basically changed my life. It taught me the possibilities, and now I know them by hand. https://mastery.games/p/flexbox-zombies
The same company has a paid game to learn about the grid (https://gridcritters.com/), but I came across the resources below and did not buy it.
Flexbox Froggy and Grid Garden are both free, not gated by an email signup, and very high quality. You and everyone on your team should do them, even if you think you know them well. It will help with reinforcement.
- https://flexboxfroggy.com/ - https://cssgridgarden.com/
I think Gimli is an amazing tool, and I might even buy it when it comes out. But please, do yourself and your team a favor - learn the tools by hand first. If you wrote a float at all this year, this post goes out to you.
I personally have a hard time differentiating between properties such as justify-content / align-content / align-items / justify-items / justify-self and so on. To me those are just random words. Perhaps because English is not my first language, I don't know.
I really think it makes a huge difference to see a small icon describing what properties have been set and to see the difference by hover instead of just reading/editing raw CSS.
I've visited https://css-tricks.com/snippets/css/complete-guide-grid/ and https://css-tricks.com/snippets/css/a-guide-to-flexbox/ countless of times. Some of the stuff just does not seem to stick tbh, especially if you have been working on something not-CSS related for some time.
I'm sure some people just remembers everything, but i'm not one of them :)
The only flexbox polyfills are Javascript based and really slow.
AFAIK there is no up to date / usable Grid polyfill.
I happily write flexbox layout code in particular that works everywhere without any changes necessary for old browsers.
Too answer your question though. I've been working on Gimli for the last 18 months now. Using up my own savings, and the reality is that I can't afford to keep working on it for much longer.
I would have loved to be able to present a finished and polished product but i'm just not there yet.
(At least, I do)
Its basically:
29$ for a 2 year license. 35$ for a 2 year license + beta access
Does the UI viewer work with dynamic content such as that loaded from a back-end (or say, from a sample .json file in the event that we want to skip the API call)? I've done a lot of work in WPF/MVVM applications where everything ends up becoming a ResourceDictionary and breaks the Visual Studio UI viewer, so I'm curious how you handle it.
Also, do you have any plans to incorporate a compatibility view? It would be really cool if I could select an item from a combo box and see what my UI would look like in (say) IE or Opera
Other request/suggestion is to make it open source or at least free for personal use, it will bring a lot of users that will want to have the same tooling at their workplaces. Then you can have commercial licenses that you make corporations pay for.
Keep the great work!
You could always end alpha access at a given point (set date or once the beta release is out) and/or offer upgrades to the full package at a slight discount.
No downside, apart from a little more complication for you, and you'd maybe get a bit of money even sooner...
They're significantly wordier than old school tables, and significantly more confusing to write by hand too. The one good thing is that they shrink with window size.
I know I shouldn't be coding up web "apps" by hand and instead learn React or whatever, but why should the whole making webpages an active hurdle for a techy person of average intelligence who can e.g. move some of his custom code from numpy to tensorflow?
Maybe I didn't google the right things, but I expected something that allowed me to say "div id=topnavbar" or something. As opposed to a lot of width classes that...
Next thing you know I'm not allowed to repair my TV despite having had a short protoboard-electronics hobby in my teens. I jest.
They may have been referring to the new(ish) CSS Grid https://css-tricks.com/snippets/css/complete-guide-grid/
I've not used it yet myself, but it looks to work well enough for at least top-level grids. Your description of other grid systems is accurate, both of those and frankly of most advanced CSS in my opinion. (Cue someone saying "It's easy, you just apply these 3, 5, or 20 CSS properties that you knew applied because of dark magic, and It Just Works!)
> wordier than old school tables, and significantly more confusing to write by hand too
The issue with old-school tables was never that they didn't work or even were hard to write. The issues (beyond the issues of effective obfuscation of data and accessibility) were that they didn't handle revision well at all. Nor modularity, for that matter.
> I know I shouldn't be coding up web "apps" by hand and instead learn React or whatever
There are bitter haters on all sides, but the practical truth hasn't changed: template libraries make sense when you start to code solutions to the same problems they solve, or at least encounter those problems. If you aren't encountering those issues, they have little to offer.
> Maybe I didn't google the right things, but I expected something that allowed me to say "div id=topnavbar"
Unless you use some built in setup (mini-css, bootstrap, foundation, etc) and accept their limitations, you're left to write that all yourself.
> Next thing you know I'm not allowed to repair my TV despite having had a short protoboard-electronics hobby in my teens.
You seem bitter that some downgrade of experience has been forced upon you - it hasn't. Just because there are new best practices and preferred alternatives to old best-practices, doesn't mean the old ways stop working. You have more options today, not fewer. If you don't like those options, keep at them.
I myself am happier with the newer options over not having them, even if I think CSS is STILL way too obtuse and makes simple things difficult. Many old practices are not best practices for reasons. But no one is forcing your hand.
You might actually find the proper CSS grid layout module does a lot of what you want: https://www.w3schools.com/CSS/css_grid.asp
Someone else in this thread posted a link to this site which looks pretty good for getting a gist of the basics: https://www.w3schools.com/CSS/css_grid.asp
I think that your experience is valid, but it's worth considering that in the days where we used tables for laying things out, we didnt worry about responsive design and people generally didn't design things to work with so many different viewports with significantly different aspect ratios. Basically, mobile devices have made it much, much more difficult to implement consistent design experiences on the web.
Also, I haven't used mini.css, but if you're looking for some CSS libraries that make your life easier, I really really like tachyons: https://tachyons.io. It takes a little while to become familiar with the classes, but almost all the classes are super easy to scope for media queries.
Another slightly more verbose option in a similar vein is tailwind.css: https://tailwindcss.com/docs/what-is-tailwind/
If you are at all interested in learning a little bit of react, create-react-app makes it really, really easy to get started. In the past, getting a react/js project set up and configured was a real pain, but create-react-app handles all of the config for you, and is a pretty great tool: https://github.com/facebook/create-react-app
I'm no expert, but if you have any specific questions about any of this, I'll do my best to point you in the right direction!
[1]: https://gss.github.io/guides/ccss [2]: https://github.com/gss/engine
(not really apropos of anything, but it seems that the project has been abandoned)
The point was how the CSS grid came to be, and which company brought it into the Web standards working group.
(Mind you, our visual layout tools aren't this powerful at the HTML/CSS level. We have a fairly simple drag'n'drop system, and if you want to get lower-level than that, then you'll be editing HTML and CSS as text. Gimli looks awesome.)
Anyway, as a mostly backend and native / non-web person who occasionally has to do front-end development, this looks like a very useful tool! Something like this might convince me to start using VSCode for web dev over vim.
I’m editing Typescript. Frequently my key presses lag for tenths of a second, or auto insert some unrelated identifier. I’m going to give it a week before I go back to nvim and Coc.nvim
Asian developers are Linux based generally - so it's hard to adopt Mac based tools (because of cost,etc). This would be a brilliant way.
1. If I use this tool, can I still collaborate with people that don't have it? This might be a concern to maintainers of free/open source projects who would like to use Gimli for themselves but not force others to use proprietary tools (which, I assume, Gimli falls under) when editing the project's source.
2. How does this handle components (when using a framework) that aren't presentational (like container components in React/Redux apps that subscribe to the store and pass data on)? Will you just be able to "drag them in" like visual components? Will there be an ergonomic way to add them into the tree later? (So that the designer can, for example, just focus on the visual aspect, then pass it on to a developer who adds the containers)
Hopefully, you can find a way to monetize it.
If it ends up being usable, even as a beta, I will be donating.
edit: Also curious how you'll be implementing "find source" - just doing a string lookup for id/classname/attibutes? Will you be able to handle generated identifiers, e.g. css modules classnames?
This project is cool though!