dharmik
@dharmik@linuxusers.in
Location: 23.014509,72.591759
80 following, 28 followers
- mail at dharmiik [at] proton [dot] me
- i occasionally post in long-form at: https://dhrm1k.github.io
what the heck!! that is so wild, mind blowing, i know the main difference between raster graphics and vector graphics was the quality but not more, i had no idea svg files actually used html code and pretty much could be modified using only text and amazing code woa!!! this opens up the possibility for so many things on linux i think, for example, on a linux distro, we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it. svg can be given a lot of attributes like movement, mouse hovering, change color, change anything. and most svg files are still under a megabyte. wow… please let me know other fun facts about svg or eps files. i really like doing graphic design on linux and inkscape.
More accurately, both are flavors of XML.
HTML predates XML by several years.
Age doesn’t matter. XML is a super-set of XHTML’s spec.
That is - all XHTML is valid XML but not all XML is valid XHTML.
Note I’m saying XHTML not HTML since the later need not be valid XML.
technically HTML is not XML… XHTML is, but HTML can be invalid XML.
It annoys me that you aren’t supposed to close input tags. At least browsers tolerate self closing them even if it is out of spec.
Technically it’s not browser tolerance but spec tolerance. It’s built into the html5 spec to tolerate different tags closing and other things invalid in xml.
This was an important design that grew out of one of the largest failings of xhtml that such failures would make the entire page unrenderable.
Another interesting part is that HTML5 supports embedding SVG. That is, you can put SVG code directly in your HTML5 document and it’s going to render correctly. You can also style it through your website’s CSS file and manipulate the elements via JavaScript.
Though as others pointed out, it’s technically not HTML but XML.
woww that is crazy, thanks, does that mean that instead of using exported pngs, i can just use the svg code on html and it’ll be a much lighter file??
If you have an SVG image you can either embed it directly on the website, or link it using img
tag. There’s no need to export it to PNG.
litghter, as in smaller, yess. but keep in mind, that vector graphics need to be rendered, wich depending on circumstance and graphic might become inefficient.
i never crunched the numbers, but basically youre outsourcing the generation of a rastergraphic to those who open up your website.
Though this also has advantages - not only will they be drawn at an appropriate resolution, they can also be styled & modified by the user. If I’m using Dark Reader and your icons are SVGs using currentColor
, they’ll render with the same color as other text. The best you can do for raster graphics is inverting them.
One should always optimize assets for the web, this includes svg as well.
For critical paths I use optimize.svgomg.net a svg file optimizer. Svgs that are coming directly from illustrator or sketch are getting better these days but this little tool is invaluable regardless.
I think you can run this local too
main difference between raster graphics and vector graphics was the quality
It’s not. The primitives, the most basic constitutive building blocks, are different, for raster it’s the pixel (a mix of colors, e.g. red/green/blue) whereas for vector it’s the … vector (a relative position which elements, e.g. line, circle, rectangle, text start with).
This is a fundamental distinction on how you interact with the content. For raster you basically paint over pixels, changing the values of pixels, whereas for vector you change values of elements and add/remove elements. Both can be lossless though (vector always is) as for raster can have no compression or lossless compression. That being said raster does have a grid size (i.e. how many pixels are stored, e.g. 800x600) whereas vector does not, letting you zoom infinitely and see no aliasing on straight lines.
Anyway yes it’s fascinating. In fact you can even modify SVG straight from the browser, no image editor or text editor needed, thanks to your browser inspector (easy to change the color of a rectangle for example) or even the console itself then via JavaScript and contentDocument
you can change a lot more programmatically (e.g. change the color of all rectangles).
It’s a lot of fun to tinker with!
I’m not sure that lossy compression on vectors is strictly impossible.
You can do things like store less colour information and simplify splines so that curves are less complex.
They can include runnable JavaScript too, which can cause vulnerabilities in certain contexts. One example from work some years back: We had a web app where users could upload files, and certain users could view files uploaded by others. They had the option to download the file or, if it was a file type that the browser could display (like an image or a PDF), the site would display it directly on the page.
To prevent any XSS (scripts from user-provided files), we served all files with the CSP sandbox header, which prevents any scripts from running. However, at the time, that header broke some features of the video player on certain browsers (I think in Safari, at least), so we had to serve some file types without the header. Mistakenly, we also included image files in the exclusion, as everyone through image files couldn’t contain scripts. But the MIME type for SVG files is image/svg+xml
… It was very embarrassing to have such a simple XSS vuln flagged in a security audit.
we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it
That’s already happening.
You can also change the main color of many SVGs (icons or even desktop backgrounds) with one simple edit, one command, one click.
In web sites, you can assign CSS classes to SVG graphics and thus e.g. change their color according to a theme.
That’s my extent of fiddling with it.
IIRC they also use fonts the same way CSS/HTML does.
BTW, there are situations where an SVG is significantly larger than a corresponding raster image. It depends on the content.
Postscript is also literally just a text based programming language for drawing stuff. You can create loops and recursions and all kinds of crazy transformations with a few lines of code.
No, SVG files are not HTML.
Please change this post title (currently “today i learned: svg files are literally just html code”), to avoid spreading this incorrect factoid!
I suggest you change it to “today i learned: svg files contain code in an html-like language” or something like that.
XML and HTML have many similarities, because they are both are descendants of SGML. But, as others have noted in this thread, HTML is also not XML. (Except for when it’s XHTML…)
Like HTML, SVG also can use CSS, and, in some environments (eg, in browsers, but not in Inkscape) also JavaScript. But, the styles you can specify with CSS in SVG are quite different than those you can specify with CSS in HTML.
Lastly, you can embed SVG in HTML and it will work in (modern) browsers. You cannot embed HTML in SVG, however.
You know how they say that the internet is a series of tubes? We used to think that was just a funny old man. Turns out, it is the literal truth. The internet is made up of SVG files!
I remember when XHTML was supposed to replace HTML. Everything was going to be standardized and web designers would run their HTML code against a validator…it was going to be glorious! And of course it never happened, because demanding that all websites conform to the XHTML standard would’ve broken a lot of websites.
So, HTML5 ate XHTML’s lunch because it was much more forgiving, and…oh yeah, you could watch videos and play games in it, too.
I made an interactive map: drew in Inkscape, gave the interactive elements numbers for ids, then substituted the id=‘xxx’ in vim with the php code and js function calls, picking up the number from the id tag and inserting it appropriately in php code and function arguments. 250 interactive elements taken care of in a single vim substitute. My bestest development power move yet :D
for example, on a linux distro, we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it.
this has largely happened; if you’re on a dpkg-based distro try running this command:
dpkg -S svg | grep svg$ | sort
…and you’ll see that your distro includes thousands of SVG files :)
explanation of that pipeline:
* dpkg -S svg
- this searches for files installed by the package manager which contain “svg” in their path
* grep svg$
- this filters the output to only show paths which end with svg; that is, the actual svg files. the argument to grep is a regular expression, where $
means “end of line”. you can invert the match (to see the paths dpkg -S svg
found which only contain “svg” in the middle of the path) by writing grep -v svg$
instead.
* the sort
command does what it says on the tin, and makes the output easier to read
you can run man dpkg
, man grep
, and man sort
to read more about each of these commands.
Ommigod, these kids :)
SVG comes XML (a more coherent/simple version of the SGML that is behind HTML), and specifically from a time where people took XML and made it hyper-complicated with a flurry of extensions and specifications (look up “xml namespaces” “xslt” “xml schema”).
The most apparent difference between SGML and XML is than in the former you write tags like <br> without a corresponding </br>, and in the latter you have to close them like <br/> (which is shorthand for <br></br>).
So… today you learned that what you learned earlier today was close to truth, but not true :)
PS: A lot of document formats are undercover/zipped XML (eg. the libre office documents, IIRC microsoft’s .xlsx and .docx). This is not dissimilar to how json/yaml are widely used today.
So, my Lemmy app - and I think a lot of Lemmy, renders markdown, so whenever you write “<…>” It disappears for me!
Oooh, neat! [Cunningham’s Law] (en.m.wikipedia.org/wiki/Ward_Cunningham#Cunningha…) in action!
No, it’s XML. It’s an ancestor of HTML and, unlike HTML, it can be losslessly converted.
Not quite. XML came several years after HTML! Both are descendants of SGML.
for example, on a linux distro, we could modify the desktop environment and make it waaaaay lighter by getting rid of jpg or png icons and just using pure svg on it.
Isn’t that how it already works? GNOME system icons are all SVG - that’s what allows them to change colors when you change themes or switch between light and dark mode.
I don’t think it would be lighter, SVGs need a rendering tool to read the code and draw the artwork for the vector based images. This has always been slower than just displaying a bmp, jpg, or PNG.
It’s lighter in memory. on android (development) it has been said for a few years now that it’s better to use them for most cases, because android apps tend to use a ton of icons and this way they are small, themable, scaleable (the other option is to include multiple versions with diff resolutions), and can even have animations. it can basically save a lot of space.
but of course that will make no difference when the apps are 180 MB, partly because of the same 30 MB native libs being bundled for 4 different CPU architectures, because wasteful the dev didn’t bother to produce different APKs for the different kinds of CPUs. and similar project mismanagement things.
I let "hackerpoetry.com" expire yesterday after having it for decades and never doing anything with it. Hopefully it finds a better home.
STORAGE is a Medley Interlisp tool that shows a bar chart of the amount of storage allocated to each Lisp data type. The black part of a bar represents the number of items or pages currently in use, the gray part the number of free items or pages.
My design goal on websites is that bright young teenagers could learn HTML and CSS with the "View Source" button without having to decipher obfuscated code that looks like it's meant to summon a Lovecraftian horror.
@amin yes.
this is the way.
I don't wanna be a web dev, I wanna be a spider, spinning a lightweight but strong web. ;)
Hmmm, what if if it spins backwards?
It travels backwards in time.
@amin worthy of a follow ESPECIALLY given your wonderful avatar.
Haha, I appreciate it! I drew it in pure HTML/CSS, years ago. ;)
https://codepen.io/benjaminhollon/pen/pogVzbY
I then ended up turning it into a live coding demo with editable source on an old version of my website.
@amin I read a blog post about this exact thing the other day but now I can’t find it 😭😭😭
Edsger W. Dijkstra (1975):
"The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities."
I hear you like dialogs and property sheets, so here goes. This is the TEdit rich text editor of Medley Interlisp with an open document and the free menus (i.e. dialogs) for controlling text attributes, paragraph formatting, page layout, index and TOC.
@amoroso that's serious Lisp UI p*rn
@symbolics Who needs color when we have 1-bit graphics?
@amoroso I've used b&w 1 bit a lot with the Atari ST 1040, the Mac SE/30, the Symbolics 3640. Back in the days when large bitmap screens were still expensive...
@dharmik did a GSoC with Inkscape way back in 2012.
@dharmik #Inkscape required that you fix two bugs. I think I must have fixed two bugs from the bug tracker, and then chose one of the GSoC projects and wrote a proposal.
My GSoC was successful in the sense that my mentor and I did some work on the guidelines in Inkscape. Was able to get some understanding of the codebase. Unfortunately, by the time the project ended, the code was no where ready to being merged, and I went into full time university. I was not able to regularly contribute to Inkscape after that. Ideally we should have chosen a project that could be merged within two months.
My mentor was nice and supportive. Had a great experience overall. Learnt a lot. I think I was the first person to build Inkscape with clang++. Made a small patch that allowed Inkscape to be built with that compiler.
I definitely would like to contribute to Inkscape some day...
thanks to @ihabunek@mastodon.social
posted from #snac2!
https://github.com/ihabunek/toot
some things work and few don't. you will be able to browse, reply and post from it.
get busy livingi really like be drunk by charles baudelaire that talks about similar ideas.
You have to be always drunk. That’s all there is to it—it’s the only way. So as not to feel the horrible burden of time that breaks your back and bends you to the earth, you have to be continually drunk.
RIP George Coulouris, CS pioneer and author of em (which inspired vi).
https://www.theguardian.com/education/2025/jan/19/george-coulouris-obituary
@dharmik Yep, didn't mean to imply it was very recent. Just new to me.
uBlock Origin is no longer available on the Chrome Storehttps://news.ycombinator.com/item?id=43322922
@dharmik@linuxusers.in i love it, especially how you can set your own search and face detection classifiers especially that you can have it organize the photos into a sensible directory structure and naming so if/when i need to move on they are still in good order as plain files basically replaced 200 lines of bash for me, and with a much better UI been working great for my partner and i so far
Thanks to @dharmik@linuxusers.in for the setup.
@crmsnbleyd wdym
@viz no interaction on anything I post or reply
@crmsnbleyd ahhh, I can hear you loud and clear tho
I think you’re misunderstanding - it doesn’t let you upload, as you have exceeded your cloud storage (15GB). The photos should still be on your local storage on the phone (which is the 256GB you mentioned). In the past, you usually got a free subscription for the cloud storage when using a pixel phone (at least for 1-2 years when registering a Pixel IIRC), but Google got rid of that a few Pixel generations ago.
If you open Google Photos, you can go to „Collections“ (bottom center) and then you should be able to select „on this device“. But yeah, I think it’s annoying to „hide“ local media to push users for cloud subscriptions.
If you want to stay with Google, you could look at Google Gallery, which should only display your local library - or use any other gallery app.
@dharmik is it still a battery hog
How did places like Bell Labs know how to ask the right questions? (2023)
Link: https://www.freaktakes.com/p/how-did-places-like-bell-labs-know
Discussion: https://news.ycombinator.com/item?id=43295865