The Official Scroll Blog

.............."",,,,""""""","""''"'.'"''..'.'``",..',,""`.......
................'""""""""""''"""""""'.'",''.""",'""``...........
............`""""""",,""""","""""""'."''"...""'''...............
.......'....''.'"""","""""",,,,"""""",,""","",,,"'`""'".........
.......'..`"`"'""'"""""""""""""""""""""'.'"""",,,"`""'''........
.......'....""'""","""""""""""""""""'""'""''"'''""""'...........
............",",""""""""""""""""""""''''''""""'""...'...........
........."",,,",,,,,,,,,,,,""""",",,"""""'""""''`.'","''........
.........""",,,,,,,,,,,,,",+~ii:."<i.,"""""""""""....'..........
.....''",,,,,,,,,,,,,,,i)-m8&W&oUmjj)i,,,,,,,,,,""""...`........
.``",",,,,,,,,,,,,,,,,id8%BBB@BBBB%8&j,,,,,,,,,,,,""""""'.......
''"`,,,,,,,,,,,,,liiijWBBBBBBBB@BB%%8#i,,,,,,,,,,,""............
``,,,,,,,,,,,,,,iiii+WBBB$BBBB$$$BB%%8J+,,,,,,,,,,,,""``........
"`",,,,,,,,,,liiiii+J%BBB$BB$BBB$$%BB%Boi,,,,,,,,,,,,,,"`.......
``",,,,,,,,,,liiii+)#BBBBBBB$$B@$$BBBBB%XiiII,,,,,,,,,""`..`....
,,,,,,,,,,,iiiii>++)#BB$$@$BBBB%&8%%BBBBoiiii,,,,,,,,,,"`..`....
,,,,,,,,,,,iiii++))m8B@B&hq00qwQvvLw*%BBW{iiiii,,,,,,,,,,"""``".
,,,,,,,,,,iiii++))j8B%h0Lx|||?|||||xCw&@@diiiii,,,,,,",""'.`....
,,,,,,,,,,iii+++))oBBazvx\||]__|]?]|\xQ8B&+iiii:,,,,,,,"""`"....
,,,,,,,,,,ii+++-))WB8pvx\|??________|\xb%%J<<iii,,,,,,,,,``"".``
,,,,,,,,!iii+++)))oB80v\\|??____??_?|\\L&%k+~<iii,,,,,,,,"`"````
",,,,,,,iii<+++-))oB&Qxx\|]?____??(|||\vh%#+<<iii,,,,,,,,"`..`.`
,,,,,,,:iii~+++)))#B&Qvx\|]______?_?||\\p%&)+~iii:,,,,,,"".."...
,,,,,,,!iii~++-)))#B&Qv\\|?________?||\\0%8)+~iii!,,,,,"""```...
"",,,,,!iii~++-)))WB&Qvx\r\??_?_?\LwLv\\0%8)+~iii!,,,,,,"``"....
",,,,,:!iii<++-)))#B80vvQ0ppC\|?|w*apq0vv8W+++<ii!,,,,,,"```....
",,,,,:!iii~+++)))k@%QzphphapQ|_xwpqLL00v&#++~iii!!,,,,""``.....
,,,,,,,!iii<+++)))j8%0Qp0qobwwx|v0q&opzvv8o+~~iii!I,,,,"""......
"",,,,:!iii<~++1)))WB0vzaooqQQv|xLL0zQv]v*w{+~iiiiI,,,,,""```...
""",,,,!iii<+++-))fp%pvvQvuvCQx||Cv\(?||\0x/+~<iii:,,,,,""````..
",,,,,,!iii<~++-))fCppv\\xxrrvx||x||||?]\0r{+~iii!,,,,,"""``""..
""",,,,:iii<~+++1))Cwpx\\\|?\Cx_|x|___]]\wC>+~iiii!,,,,,,`""""..
""",,,,!!ii<~+++1))uQpv\|__\Cx\__|\r___|\wx++~iii!!,,,,,"``""...
""",,,,:!iii<~++1))fQpv\__|vCQL\\Lxx\__]xQ\++~iii!,,,,,"`..`....
"""",,,,!iii<~++-)))vpQx||xCwppwwpwvr\]\vz++~~iiii!,,,,,"``...`.
'""",,,:!!iii~+++1)))wQv\\Q000QQLLQQQQ\\vf~+~<iii!:,,,""```..``.
''"",,,,!!!ii~+++1)))j0v\vQwwvx\\ruwwQx\vf~~iiiii!!,,,""`.......
"'"",,,,!!!iii~+++-)))0Qv\vwq?>^^lfhCv\vv{~~~iiii!:,,,,"```.`.`.
..'"",,,:!!iii<+++-)))0QzurxQwwLuLQx\v\vz{~~~iiii!,,,,,""```....
..'",,,,:!!!iii~++-)))Y00zv\xxr|((|\rvvzz+~iiiii!!,,,""``.......
...""",,:!!iiii<+++)))j0000vrvvruvr|vQL0f~~~iiii!:,,,,"``.......
...'"",,,:!!iii~+++))))Ypwq0xrLw0Q\\Q00Q}+~~iiii!!:,,,,"`.......
...."",,,:!!iii<+++1)))f0pppQvvxrxvL0qQx{+~~iiii!!:,,""`........
..."",,,:!!!ii<<++-))))Yv0pb0Qv||rL0p0rx0+++~iii!!:,,""`........
...'",,,,:!!iii~++1)))Javv0hb0LvvL0bpv\\hX~+~iii!!:,,,"``.......
....",,,,:!!ii~~+-))))d*xxv0aapppbhpv\|\hO++~~iii!I,,,"`........
..."",,,,:!ii<+++1))))d&x\\vQph**b0v\\|\hY}++~~ii!!,,,,"`.......
...."",,,!!i<+++-1)))jY*v\|\vuuzzz\\|(|xhtt)++~~ii!I,,,"``......
...."",,,iii~++-)))tjXXq0r|?\\(__?(\((\Qhtttt}+~ii!I,,,,``````..
.``"",,,!ii~++))))tXJXjXqC\?(\\|_(|((|vaYtttX{{}~iiiII,,,,^``...
.``,,,,,iii++)))tttjOXXXXpv(?\\ur\(((rpot/{tXtt{}}>iiI,,,,,^^``.
`,,,,,liii++))))fftfYYXXXXqv??\\\\\(\w&X}tttXtttttt+ilI,,,,,^```
,,,,,liii++)))tt)fttXXXXXfXqv??((\\\w&otfXtfJtt}ttttt+iI,,,,,,^^
,,,,liii+{)tttftff{tjXftttttbv(\\\v0*#OtfttfXttttttttt{>l,,,,,^^
,,lllii++)fft{jftfttfXXfjXfUdOv\\vQhokJtt/tXX}tttt}tttt{}>I,,,,^
,llii>+{)tfftttttfttttXXXXmkmdYvvQwqOk#Ot}{Xtttttttttttt{{}i,,,,
llii++)ttt{ftttttftttXXXXOkdOOXzw0QcXm##Jtttttttttttf)tt/{{}i,,,
li>++{tttt}tfttttftttXXfXmOXUUXOhwwXOUmdkjttttt{}tttttttt{}}+il,
i+++){tt{tttXttfff}tttjtXXXXXXUYap0XXUXXUXttttt/ttttttft}{{{ti!I
+++)t{t}ttttf/tttfttttttfftXtXXX*pXXXtXt}tttt}/ttt/}fftt}/{{t}ii
++{t)tt}tttttftfttttt}ttttf}XXtOOXtcXtttttttt/ttttt}fXttt//t}{!!
++tfttttttttcctttt{tt}tttttttXOdtXtttttttt/tttt/tttttt{tttttttiI
+}fftttttt>tXff/tttt{tttttttttOOttttt}tttt}>t/tt>/t{c/}ttt{tttiI
+{XXt/ttttttcXtfft{ttttt}tttttXXXttt)tttt/t/{/t{/t/tttttcttttf}I
Decoded based64 image
Download png
Source
based64
 colors ddddccff ccddccff ddccccff ddccbbff ccccccff ccccbbff bbccbbff ccbbbbff ccbbaaff bbbbbbff bbbbaaff aabbaaff bbaa99ff aaaaaaff aaaa99ff dd9988ff 99aa99ff cc9988ff cc9977ff aa9999ff aa9988ff 999999ff 999988ff cc8888ff cc8877ff bb8877ff aa8888ff 998888ff 998877ff 888877ff bb7777ff bb7766ff aa7777ff aa7766ff 997777ff 997766ff 887777ff 887766ff 777777ff 777766ff aa6666ff 996666ff 996655ff 886655ff 776666ff 666666ff 885555ff 775555ff 775544ff 665555ff 665544ff 555555ff 664444ff 664433ff 554444ff 554433ff 444444ff 444433ff 443333ff 333322ff 332222ff 222222ff 222211ff 221111ff
 .............."",,,,""""""","""''"'.'"''..'.'``",..',,""`.......
 ................'""""""""""''"""""""'.'",''.""",'""``...........
 ............`""""""",,""""","""""""'."''"...""'''...............
 .......'....''.'"""","""""",,,,"""""",,""","",,,"'`""'".........
 .......'..`"`"'""'"""""""""""""""""""""'.'"""",,,"`""'''........
 .......'....""'""","""""""""""""""""'""'""''"'''""""'...........
 ............",",""""""""""""""""""""''''''""""'""...'...........
 ........."",,,",,,,,,,,,,,,""""",",,"""""'""""''`.'","''........
 .........""",,,,,,,,,,,,,",+~ii:."<i.,"""""""""""....'..........
 .....''",,,,,,,,,,,,,,,i)-m8&W&oUmjj)i,,,,,,,,,,""""...`........
 .``",",,,,,,,,,,,,,,,,id8%BBB@BBBB%8&j,,,,,,,,,,,,""""""'.......
 ''"`,,,,,,,,,,,,,liiijWBBBBBBBB@BB%%8#i,,,,,,,,,,,""............
 ``,,,,,,,,,,,,,,iiii+WBBB$BBBB$$$BB%%8J+,,,,,,,,,,,,""``........
 "`",,,,,,,,,,liiiii+J%BBB$BB$BBB$$%BB%Boi,,,,,,,,,,,,,,"`.......
 ``",,,,,,,,,,liiii+)#BBBBBBB$$B@$$BBBBB%XiiII,,,,,,,,,""`..`....
 ,,,,,,,,,,,iiiii>++)#BB$$@$BBBB%&8%%BBBBoiiii,,,,,,,,,,"`..`....
 ,,,,,,,,,,,iiii++))m8B@B&hq00qwQvvLw*%BBW{iiiii,,,,,,,,,,"""``".
 ,,,,,,,,,,iiii++))j8B%h0Lx|||?|||||xCw&@@diiiii,,,,,,",""'.`....
 ,,,,,,,,,,iii+++))oBBazvx\||]__|]?]|\xQ8B&+iiii:,,,,,,,"""`"....
 ,,,,,,,,,,ii+++-))WB8pvx\|??________|\xb%%J<<iii,,,,,,,,,``"".``
 ,,,,,,,,!iii+++)))oB80v\\|??____??_?|\\L&%k+~<iii,,,,,,,,"`"````
 ",,,,,,,iii<+++-))oB&Qxx\|]?____??(|||\vh%#+<<iii,,,,,,,,"`..`.`
 ,,,,,,,:iii~+++)))#B&Qvx\|]______?_?||\\p%&)+~iii:,,,,,,"".."...
 ,,,,,,,!iii~++-)))#B&Qv\\|?________?||\\0%8)+~iii!,,,,,"""```...
 "",,,,,!iii~++-)))WB&Qvx\r\??_?_?\LwLv\\0%8)+~iii!,,,,,,"``"....
 ",,,,,:!iii<++-)))#B80vvQ0ppC\|?|w*apq0vv8W+++<ii!,,,,,,"```....
 ",,,,,:!iii~+++)))k@%QzphphapQ|_xwpqLL00v&#++~iii!!,,,,""``.....
 ,,,,,,,!iii<+++)))j8%0Qp0qobwwx|v0q&opzvv8o+~~iii!I,,,,"""......
 "",,,,:!iii<~++1)))WB0vzaooqQQv|xLL0zQv]v*w{+~iiiiI,,,,,""```...
 """,,,,!iii<+++-))fp%pvvQvuvCQx||Cv\(?||\0x/+~<iii:,,,,,""````..
 ",,,,,,!iii<~++-))fCppv\\xxrrvx||x||||?]\0r{+~iii!,,,,,"""``""..
 """,,,,:iii<~+++1))Cwpx\\\|?\Cx_|x|___]]\wC>+~iiii!,,,,,,`""""..
 """,,,,!!ii<~+++1))uQpv\|__\Cx\__|\r___|\wx++~iii!!,,,,,"``""...
 """,,,,:!iii<~++1))fQpv\__|vCQL\\Lxx\__]xQ\++~iii!,,,,,"`..`....
 """",,,,!iii<~++-)))vpQx||xCwppwwpwvr\]\vz++~~iiii!,,,,,"``...`.
 '""",,,:!!iii~+++1)))wQv\\Q000QQLLQQQQ\\vf~+~<iii!:,,,""```..``.
 ''"",,,,!!!ii~+++1)))j0v\vQwwvx\\ruwwQx\vf~~iiiii!!,,,""`.......
 "'"",,,,!!!iii~+++-)))0Qv\vwq?>^^lfhCv\vv{~~~iiii!:,,,,"```.`.`.
 ..'"",,,:!!iii<+++-)))0QzurxQwwLuLQx\v\vz{~~~iiii!,,,,,""```....
 ..'",,,,:!!!iii~++-)))Y00zv\xxr|((|\rvvzz+~iiiii!!,,,""``.......
 ...""",,:!!iiii<+++)))j0000vrvvruvr|vQL0f~~~iiii!:,,,,"``.......
 ...'"",,,:!!iii~+++))))Ypwq0xrLw0Q\\Q00Q}+~~iiii!!:,,,,"`.......
 ...."",,,:!!iii<+++1)))f0pppQvvxrxvL0qQx{+~~iiii!!:,,""`........
 ..."",,,:!!!ii<<++-))))Yv0pb0Qv||rL0p0rx0+++~iii!!:,,""`........
 ...'",,,,:!!iii~++1)))Javv0hb0LvvL0bpv\\hX~+~iii!!:,,,"``.......
 ....",,,,:!!ii~~+-))))d*xxv0aapppbhpv\|\hO++~~iii!I,,,"`........
 ..."",,,,:!ii<+++1))))d&x\\vQph**b0v\\|\hY}++~~ii!!,,,,"`.......
 ...."",,,!!i<+++-1)))jY*v\|\vuuzzz\\|(|xhtt)++~~ii!I,,,"``......
 ...."",,,iii~++-)))tjXXq0r|?\\(__?(\((\Qhtttt}+~ii!I,,,,``````..
 .``"",,,!ii~++))))tXJXjXqC\?(\\|_(|((|vaYtttX{{}~iiiII,,,,^``...
 .``,,,,,iii++)))tttjOXXXXpv(?\\ur\(((rpot/{tXtt{}}>iiI,,,,,^^``.
 `,,,,,liii++))))fftfYYXXXXqv??\\\\\(\w&X}tttXtttttt+ilI,,,,,^```
 ,,,,,liii++)))tt)fttXXXXXfXqv??((\\\w&otfXtfJtt}ttttt+iI,,,,,,^^
 ,,,,liii+{)tttftff{tjXftttttbv(\\\v0*#OtfttfXttttttttt{>l,,,,,^^
 ,,lllii++)fft{jftfttfXXfjXfUdOv\\vQhokJtt/tXX}tttt}tttt{}>I,,,,^
 ,llii>+{)tfftttttfttttXXXXmkmdYvvQwqOk#Ot}{Xtttttttttttt{{}i,,,,
 llii++)ttt{ftttttftttXXXXOkdOOXzw0QcXm##Jtttttttttttf)tt/{{}i,,,
 li>++{tttt}tfttttftttXXfXmOXUUXOhwwXOUmdkjttttt{}tttttttt{}}+il,
 i+++){tt{tttXttfff}tttjtXXXXXXUYap0XXUXXUXttttt/ttttttft}{{{ti!I
 +++)t{t}ttttf/tttfttttttfftXtXXX*pXXXtXt}tttt}/ttt/}fftt}/{{t}ii
 ++{t)tt}tttttftfttttt}ttttf}XXtOOXtcXtttttttt/ttttt}fXttt//t}{!!
 ++tfttttttttcctttt{tt}tttttttXOdtXtttttttt/tttt/tttttt{tttttttiI
 +}fftttttt>tXff/tttt{tttttttttOOttttt}tttt}>t/tt>/t{c/}ttt{tttiI
 +{XXt/ttttttcXtfft{ttttt}tttttXXXttt)tttt/t/{/t{/t/tttttcttttf}I

That's my photo, reduced to 64×64 pixels and compiled to Based64, a Base64 + ASCII combination. The text not only compresses the images, it provides a preview of the image, and editing it edits the images.

Try Now

Choose an image, GIF, video, or audio file. Edit the text and watch it change. Everything happens locally.

Enough to communicate the idea

Based64 keeps at most 64×64 pixels and 64 colors per frame. Enough for a face, a diagram, or a short instructional animation.

Simple example:

Below is an image of an arrow:

...$...
..$$$..
.$$$$$.
...$...
Decoded based64 image
Download png
Source
based64
 ...$...
 ..$$$..
 .$$$$$.
 ...$...

Use based64 animation for a flipbook or based64 audio for sound. Dimensions are inferred. Optional colors, delay, and rate settings live inside the block; animation frames start with frame.

Spaces, unfamiliar characters, ragged rows—even an empty drawing—still render. Short rows get padded; oversized drawings get cropped. Scramble away.

One character per pixel. A shared palette keeps animations small. We deliberately throw away detail instead of preserving the original file.

The parser and tests are single Scroll files.

Now ships in Scroll 179.0.0.

npm install -g http://github.com/breck7/scroll

Thanks

Thanks to Sam Altman and the ChatGPT/Astra team for making this possible.

Edit

A Tutorial

This tutorial will walk you through how to use Scroll for data analysis and visualization, from basic concepts to advanced techniques.

What makes Scroll great for data science?

Scroll combines the simplicity of markdown-style syntax with powerful data transformation and visualization capabilities. You can:

  • Load data from various sources (CSV, JSON, etc.)
  • Transform and analyze data with simple commands
  • Create beautiful visualizations
  • Publish instantly using ScrollHub
  • All in a simple, readable format

Let's dive in!

Continue reading...

What is Scroll?

Scroll is a language for those who believe that what they cannot build with as few pieces as possible they do not understand.

Continue reading...

October 1, 2024 — If you want to build web forms the traditional way, there are plenty of places you can learn how.

If you want to see how innovators are reimagining web forms, read on.

Continue reading...

September 2, 2024 — Today on HackerNews Kevin Damm had a great idea: put a <link> tag on blogs to point to the git Source Code Repository, much as blogs today have <link> tags pointing to their RSS feeds.

I've added this feature to Scroll and it's live now. If you View Source of this page, you'll see:

<link rel="source" type="application/git" title="Source Code Repository" href="https://github.com/breck7/scroll"> <link rel="alternate" type="application/rss+xml" title="The Official Scroll Blog" href="feed.xml">

Client applications can start looking for and taking advantage of these tags.

Continue reading...

Particles, Scroll, and the Parsers Programming Language

I've recorded a short video (1 minute version; 10 minute version) about our recent work which has begun to eat the software world.

Continue reading...

August 9, 2024 — Datatables, aka spreadsheets, are arguably the most important visual thought tool.

But no one has designed the perfect textual language for manipulating them.

Until now.

Continue reading...

August 2, 2024 — I like collections of interesting numbers, such as BioNumbers. Animated counters provide a useful perspective when pondering large numbers. I wanted to make it as easy as possible for anyone to create these counters.

So, today I added a new parser to Scroll: counter.

counter 1.1 HeartbeatsContinue reading...

A heatrix on CancerDB.

July 28, 2024 — Do you love those GitHub Activity Charts and want to make your own but don't know what they are called or what library to use and your work is busy and you have kids and sorry I'll call you back someone is crying?

Introducing Scroll's newest parser: heatrix!

heatrix let's you craft custom heatmap visualizations with the fewest keystrokes possible.

Heat Map + Matrix = Heatrix

Source code. Gif made with CleanShotX.

Continue reading...

July 16, 2024 — Imagine a single plain text file named contacts.scroll where you stored the contact info for your family, friends, and colleagues, and you could track changes with git, compile it to a beautiful PDF or HTML page with search and sort, and it would also compile to CSV and/or JSON for import into iPhone, Android, Gmail, Outlook, et cetera?

Also imagine that this tool is free, open source, and public domain.

Continue reading...

Woohoo!

Your blog is on top of Reddit!

OH NO.

There's a typo in your url. 🤦

What do you do?

Continue reading...

ScrollSets are very useful once you get going. But starting from scratch could be a bit tedious.

Not anymore!

Just drop your CSV or TSV into the textarea below to generate a ScrollSet.

(P.S. using LLMs with ScrollSets is another great way to get started)

Continue reading...

July 1, 2024 — Regardless of what languages you write your programs in, you probably maintain files like changeLog.txt or releaseNotes.txt.

Change logs are very helpful for:

  • informing your users of new features and bug fixes
  • providing detailed technical information to your development team (and open source contributors)
  • periodical data analysis for strategic project planning - how fast are we shipping new features? fixing bugs? breaking things?

What if there was 1 language that let you do all 3 things at once?

Continue reading...

June 24, 2024 — I engineered on many innovative data science tools, including Grapher and Ohayo[1].

So I was excited to see Observable launch something new: Plot.

Continue reading...

June 23, 2024 — Regardless if you specialize in React, Rails, Django, Next, Java, C#, or ObjectiveC, you probably use templates to start new projects.

Templates generate a handful of files like readme.md, .gitignore, and main.

They also initialize a handful of directories like src/ and tests/.

What if it was even easier to make, edit and use these templates?

Continue reading...

by Breck Yunits

HTML | TXT

April 29, 2024 — Scroll is a new language for building HTML and CSV files that powers blogs, websites and knowledge bases.

Continue reading...

More examples of ScrollSets from sets.scroll.surf.

April 21, 2024 — The source code for this blog post contains a ScrollSet about the planets and generates this HTML file as well as a CSV, a TSV, and a JSON file. This page demonstrates ScrollSets.

ScrollSets are useful for small single day projects and large multi-year projects with thousands of concepts like PLDB (a Programming Language Database).

Continue reading...

May 8, 2023 — Some web apps are designed to load entire programs from a link.

But if a program contain certain characters, such as newlines, those links won't work as-is.

To create working links you have to run them through encodeURIComponent.

Continue reading...

Improve your writing by welcoming counterarguments

April 13, 2023 — There's a tiny new symbol in Scroll today: !.

The exclamation mark stands for Counterpoint.

"Counters" aim to help writers strengthen their ideas by encouraging the integration of counterarguments throughout their essays.

You can write your own counters or invite counters from friends, LLMs or Internet commenters.

Continue reading...

October 2, 2022 — Scroll's new blink tag lets you call attention to something important

I am really happy with the current state of Scroll and so grateful for the many people who have helped us get it to this point. That being said, I had a feeling we were missing something important.

Continue reading...

August 23, 2021 — Scroll is a new language and static site generator that is mostly written in Parsers which are both built on a new syntax called Particles.

Continue reading...

Built with Scroll v180.0.1