Commit c891d148 authored by Ranjit Menon's avatar Ranjit Menon 🍄

Commit Message

parent 589d4fd7
Pipeline #138788 passed with stages
in 3 minutes and 41 seconds
# Student Agreement
This page is a placeholder.
Paste here your agreement.
# About me
![](../images/avatar-photo.jpg)
![](../images/avtr1.jpg)
Hi! I am Ranjit Menon. I am a "New Media" ("new" as in - if its new and it works, its already obsolete) design "entrepreneur" based in Helsinki, also involved in part-time teaching, performances & music - In the last decade I have indulged in multiple domains of design & my intense curiosity has overlapped into fields as diverse as cybernetics, anthropology, mysticism, geopolitics & archive materials.
As a designer, I am sensitive to the human condition & question the possibilities and consequences of harbouring unbridled faith in technology. I also question how markets in reality tend to work on trends and speculations and manipulate short term desires instead of needs. All this makes hungry for as many diverse disciplines & points of view as possible!
Hi! I am Emma Brewer. I am an art director & graphic designer based in New York City working on branding, visual identities, editorial design and web design.
Visit this website to see my work!
## My background
I was born in a nice city called..
I was born in Thiruvanantapuram, Kerala - quite close to the infamous Padmanabhaswamy temple. I was raised in Bombay most of my life - and then went on to study Engineering and Design at the National Institute of Design in India. In India I have been professionally involved mainly in music, sound design & human factors engineering.
I went on to study Sound in New Media MA programme at the School of Arts & Design, Helsinki within the MediaLab (modelled on the MIT medialab concept). Since the last decade in Helsinki, I have indulged in extremes of design expression - from the artistic underground to introducing design in multi-national corporations.
I find myself currently in a major void unfulfilled by shoegazing art or lucrative single company jobs - I would like to be part of a larger movement - led by an open source, collaborative and most importantly "borderless" mindset in order to connect diverse people and cultures - I have experienced the immense social & political changes a small "design nudge" can bring - and I would like to be part of a hands on knowledge ecosystem between Nordic region and India - with Kerala as a prototype center.
Lastly, I am interested in academic career and the Fab Academy seems a good backdrop for my research plan.
## Previous work
I'm a paragraph. Edit the page on Gitlab to add your own text and edit me. I’m a great place for you to tell a story and let your users know a little more about you.​
Here are a few example of few different projects.
### Accidental Art
"Trollywood series", Gallery Lokal for Exhibition Faith
![Indian Mythological movie screenshots](https://mir-s3-cdn-cf.behance.net/project_modules/fs/02d73533052203.569fc19c22f17.jpg)
Screenshots from Indian mythological movies are transferred to wood & paint through laser art c/o Aalto Fablab. By capturing a moving screen image in the middle of “action” and remediating the same on wood, there is a touch of animism. The intention of the artist is to create an overall theme around “Devotion” blending epic Indian Cinematic scenes with Scandinavian wood
### rock guitar spacefk
### Project A
This is an image from an external site:
I was one of 17 artists that built our own totem-installation on skis. The 15 totems were towed in a parade through the urban iced deserts of Helsinki as if it were a huge open white cube, a no man’s land for a living nomadic exhibition, open to all contingencies and phase-shiftings which occur throughout the process. The exhibition wanted to provide an unfamiliar site-specific experience to the artists and to the public. It also tinges itself with political and polemical issues, because the 15 foreigner artists, as a singular multitude, strive to express their own specific wording within a cold environment in which they are frozen.
![This is the image caption](https://images.unsplash.com/photo-1512436991641-6745cdb1723f?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=ad25f4eb5444edddb0c5fb252a7f1dce&auto=format&fit=crop&w=900&q=80)
While this is an image from the assets/images folder. Never use absolute paths (starting with /) when linking local images, always relative.
<iframe width="560" height="315" src="https://www.youtube.com/embed/LOiDjaL_pik" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
![This is another caption](../images/sample-photo.jpg)
<iframe width="560" height="315" src="https://www.youtube.com/embed/hF4JbO51O7U" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
# 1. Principles and practices
This week I worked on defining my final project idea and started to getting used to the documentation process.
The Fab Academy kickstarted this week, connecting 63 nodes around the world using custom open source software and new work processes. The standard process is to understand the relationship between Git and Github where the projects are managed locally and on the cloud using version control.
## Research
Git is traditionally known as being for super smart people who have invested a significant portion of their life to coding at the machine level. I am hoping to "mimic" the best practices and fundamentals thanks to excellent documentation by our FabLab masters - in this case Krisjanis for all 63 nodes!
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
## Final Project sketch
> "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
## Useful links
- [Jekyll](http://jekyll.org)
- [Google](http://google.com)
- [Markdown](https://en.wikipedia.org/wiki/Markdown)
I’ve been involved with exploring archive content for electronic & digital artwork - during that phase I visited my hometown, Kerala - where I discovered electronic mantra box had replaced traditional chants in households and temples.
## Code Example
I immediately Picked 3 of these boxes from a temple shop and brought them to Helsinki - the locals in Helsinki especially artists reacted w/ awe and one of the biggest rock guitar Players here (Andy McCoy) borrowed it from Me and sampled it into two tracks in his long awaited latest release.
[Andy's latest album 21st century rocks w/ my sampled mantra box](https://www.youtube.com/watch?v=oSF47DYwL3Y)
Use the three backticks to separate code.
```
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
Next trip I went to visit a Thantri (high priest, supremely adept in tantric & mantric rituals) in Kerala, related to our family tradition. He said I can capture genuine invocations from certain priests in Tirupathi temple - that are transmitted without any distortion since thousands of years - and that would be needed to be digitized.
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
```
My concept is to mediate anthropology, ritual and culture through this something that looks less "boxy" and more like something Teenage Engineering would have designed.
### A quick video on a functioning mantra box
<iframe src="https://player.vimeo.com/video/389498013" width="640" height="480" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
<p><a href="https://vimeo.com/389498013">mantrabox_compressed</a> from <a href="https://vimeo.com/user5579722">Ranjit Menon</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
In Helsinki, I happened to meet the head of Ars Electronica - who shared the interesting concept of designing an “Anti-Alexa” product - against this whole surveillance oriented, western epistemological materialistic “internet of things” - as an iconoclastic example
Of a counter product.
## Gallery
Since at the fab academy one needs
To work from day one on final project, I chose this as final project and - in Kerala I can hopefully test it a bit too.
![](../images/sample-photo.jpg)
My inspiration is to merge the design sensibility of “teenage engineering” with what could be an open archive radio - where these boxes can share some yet unidentified attributes
## Video
### From Vimeo
Some of the Product features I would like to implement within this Mantra Box:
<iframe src="https://player.vimeo.com/video/10048961" width="640" height="480" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p><a href="https://vimeo.com/10048961">Sound Waves</a> from <a href="https://vimeo.com/radarboy">George Gally (Radarboy)</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
1. Modular Structure - that can be easily taken apart.
2. Ecologically conscious material (preferably a natural material like coconut fibre)
3. Working prototype for decentralized mantra boxes connecting temples and households in India
4. Operates in two modes : "ritual mode" and "virtual mode"
As a ritual mode connects to a remote server to stream 1000s of mantras.
As a virtual mode, it serves as internet "radio" for channeling in ancient soundscapes, ambient music and archives, music for plants & other elevated consciousness material for Yoga etc.
5. Leave the possibilities open for incremental design upgrades & major tweaks in function - hence no "final designs" at end of course - but a high fidelity prototype.
6. Design can handle collaborations, past and future iterations.
## Useful links
- [overview of traditional yantra ritual](http://www.mantrikyantras.org/yantra/)
- [Teenage Engineering](https://teenage.engineering/)
- [Arts Electronica Error](https://ars.electronica.art/error/en/)
--- >
## Mantra Box concept
![](../images/mantra_box.jpg)
<!---
### From Youtube
<iframe width="560" height="315" src="https://www.youtube.com/embed/jjNgJFemlC4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<!---
## 3D Models
<div class="sketchfab-embed-wrapper"><iframe width="640" height="480" src="https://sketchfab.com/models/658c8f8a2f3042c3ad7bdedd83f1c915/embed" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
......@@ -59,3 +84,26 @@ void loop() {
on <a href="https://sketchfab.com?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a>
</p>
</div>
<!---
## Code Example
Use the three backticks to separate code.
```
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
```
--->
"technology is means to an end and not an end in itself" - i wish this were drilled this on ice
# 2. Project management
This week I worked on defining my final project idea and started to getting used to the documentation process.
The goal for this week was to set-up myself on FabLab GitLab and download important softwares like Git, HomeBrew, Python (as i am using default template based on MkDocs provided by FabLab) to help me build my repository for the lab and create a web page and document progress.
## Research
One complex situation in my case was that I was registered at FabLab Cochin in Kerala, & I was still waiting for my residence permit. I am a graduate of Aalto University and had been around their FabLab since inception - so there was an internal arrangement made so that I could start my courses at Aalto and continue in Kerala soon as I get the permit.
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
Initially the account was setup in the local fablab and then transferred to FabLab Cochin via GitLab FabCloud.
> "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
## Useful links
MkDocs & Atom as static site generator made the web process much easier and gives more space to think about my concept, rather than focus on updating. However, look at the layout below!
- [Jekyll](http://jekyll.org)
- [Google](http://google.com)
- [Markdown](https://en.wikipedia.org/wiki/Markdown)
<!--- image insert of mkdocs webpage layout ---->
Now, that is uninspiring and just plain embarrassing for someone with even a little fingers in the arts. So, I decided to benchmark some of the Fab Academy Alumni pages - and discovered the following:
So folks, if you are reading this - please benchmark - there is so much of beautiful variety out there, and no matter how much you know you are missing the signal for the noise.
eg.
[Krisjanis Rijnieks](http://archive.fabacademy.org/2018/labs/barcelona/students/krisjanis-rijnieks/assignments/week03/)
Sheer Overlordship of form, content and functionality! In fact so good, I was half expecting to see a Subscription pop-out if I had to read further. A tough act to mimic!
[Nicolo Gnecchi][http://fab.academany.org/2018/labs/barcelona/students/nicolo-gnecchi/project-management/]
Nicolo's content and treatment of fonts and indentation - also beautiful breakdown of complex volume of material, well hyperlinked!
[Aline B.](http://archive.fabacademy.org/fabacademy2017/woma/students/1/#)
No. 1 showcase in terms of functionality, it combines checklists of our assignements - and a depth as well as breadth heavy navigation that makes the pages less crowded, yet more detailed. Also very beautiful functional diagrams.
[Enghwalucas-Lim](http://fab.academany.org/2018/labs/fablabsingapore/students/enghwalucas-lim/week2.html)
A massive repository of information - broken down into all the details that others tend to override.
[Cindy Kohtala](http://archive.fabacademy.org/fabacademy2017/fablabaalto/students/40/)
I love the simple and highly functional, modern look and feel - very readable like a magazine.
So with such influences, I certainly want to move onto HTML and CSS from my boring standardized MKDocs. (I am philosophically opposed to standardization inspite of it Utilitarian intentions). As it is, seeing their documentation made me slap myself awake hard.
At some point I would like my page to resemble something like Tactical Tech Berlin's [Data Detox kit] (https://datadetoxkit.org/en/home)
Documentation source files were written in [Markdown](http://fabacademy.org/2019/docs/FabAcademy-Tutorials/week01_principles_practices_project_management/mkdocs.html) tutorial online by Krisjanis Rijnieks, and configured by installing python & PiP via the mac Terminal.
After running the mkdocs --version command on terminal, I have confirmation that it works.
<!--- image insert of mkdocs webpage layout ---->
## MFKIN' GIT! (AKA ran jit CAN'T ran git?)! Ok its just a small pain that Linus Torvalds invented to resolve the bigger pain of Version Control during highly collaborative or even solo software development. He invented the entire system of over a weekend and I am trying the basics for now the second week!
I did use GIT once before while interning at Aalto FabLab in 2014, with version control for parallel processing.
Now I want to move onto the core of the action - and [Roger Dudler's wonderful git basics!] (https://rogerdudler.github.io/git-guide/index.html) was so effective in giving an overview of GIT - so many hours saved, I feel programming education really needs a visual makeover to make things less jargony and more elegant.
eg.
First I downloaded GIT for OSX. After downloading Homebrew I ran the command to install Git
![](../screenshots/brew_install.jpg)
Thanks to Krisjanis documentation combined with Roger Dudler's basics I was able to internalize the workflow steps. It reads as follows as a summary of steps:
Download GIT for OSX
Create a new local repository &
outside terminal, head to your GITLAB cloud page, and Generate a
unique SSH (Secure Shell key) & update using command git pull.
![](../screenshots/SSH_key.jpg)
The working directory holds the actual files and in my case - I go one level down from home directory into sub directory by the following simple command:
cd ranjit-menon
## Code Example
Commands to make a change (add or edit a file)
![](../screenshots/git_add.jpg)
Commands to commit the change (to your local repository)
Use the three backticks to separate code.
![](../screenshots/commit_message.jpg)
```
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
However, just like we initialized this repository by "pulling" from our cloud repository, we now need to finish the final step by "pushing"the changes from local working directory to remote repository.
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
```
In my case this remote repository is located at the following path
## Gallery
![](../screenshots/cochin_path.jpg)
![](../images/sample-photo.jpg)
Use git status to see changes
## Video
Use git add filename to add specific file you want to commit
![](../screenshots/add_filename.jpg)
### From Vimeo
<iframe src="https://player.vimeo.com/video/10048961" width="640" height="480" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p><a href="https://vimeo.com/10048961">Sound Waves</a> from <a href="https://vimeo.com/radarboy">George Gally (Radarboy)</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
Use git commit -m 'Your commit message' to add changes to Git history
### From Youtube
<iframe width="560" height="315" src="https://www.youtube.com/embed/jjNgJFemlC4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
## 3D Models
<div class="sketchfab-embed-wrapper"><iframe width="640" height="480" src="https://sketchfab.com/models/658c8f8a2f3042c3ad7bdedd83f1c915/embed" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
<p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;">
<a href="https://sketchfab.com/models/658c8f8a2f3042c3ad7bdedd83f1c915?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Dita&#39;s Gown</a>
by <a href="https://sketchfab.com/francisbitontistudio?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Francis Bitonti Studio</a>
on <a href="https://sketchfab.com?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a>
</p>
</div>
## Image MagicK!
Magick with a 'K' is used to differentiate mere legerdemain from serious occult practitioners - in case of our Terminal .. being able to avoid hours and hours of editing with photoshop gives it the stamp of legitimacy to even do away with the 'c' - presenting Image MagicK!
ImageMagick can do the following tricks without having to touch your photo editing tool with a bargepole (Eg gimp !)
- Convert an image from one format to another.
- Resize, rotate, sharpen, color reduce, or add special effects to an image.
- Create a montage of image thumbnails.
- Turn a group of images into a GIF animation sequence.
- Create a composite image by combining several separate images.
- Draw shapes or text on an image.
Want to convert an image from one format to another?
no problem!
How about turning group of images into .GIF sequence
Or create thumbnails from batch images!
Image file size (the most commonly used)
Resize image dimension and change format
even rotate!
Someday - you can probably drive, park your car & even break the city speed limit via Terminal commands! :o
checking out image resize!
![](../screenshots/img_entire_resize.jpg)
no errors, wow. Lets check out the result!
![](../screenshots/git_error_blur.jpg)
ouch! this magick has gone bad - looks like me magick wand has turned the prince backward evolution into a frog.
Do you see that tiny image with a terrible resolution? that happened because I simply copy pasted the command - resizing it 50% down and reducing an already poor resolution jpeg down to 30% leaving me w a 2kb image:
mogrify -adaptive-resize 50% -quality 30%
So even if you are using Image Magick, pay attention to how much percentage of re-processing & resizing is being applied! No visual reference, pure feel.
in Terminal, you cannot UNDO! I already had this not so steep devastating learning curve with this UNHOLY command and wiped out my entire documents folder (luckily had backup on iCloud):
![](../screenshots/major_error.jpg)
### A link example to "batch resize images" from Youtube
<iframe width="560" height="315" src="https://www.youtube.com/embed/-hPleOyZJr4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
After making changes to local repository, it is time to test the website.
## Recap of Useful links
- [Jekyll](http://jekyll.org)
- [Google](http://google.com)
- [Markdown](https://en.wikipedia.org/wiki/Markdown)
# 3. Computer Aided design
This week I worked on defining my final project idea and started to getting used to the documentation process.
I was pretty much beginner on the "finer" aspects of CAD. Long ago, during the time of BASIC and Commodore 64 I remember following a line by line tutorials, followed by C++ programmed graphcis for making lines, circles in 1990s - and eventually trying "computer arts" modular software like puredata GEM & Processing to create 2d and 3d geometry.
I have worked in the Animation Industry as a sound designer back in 2003-4 where I was exposed to many industry standards at the time such as Maya & 3Ds Max. Prior to that I have animated using 3Ds Max and enjoyed the workflow quite a lot, especially the user interface for camera animations.
What I was unhappy was that most of the work was a backend pipeline of an outsourced animation industry.
In last couple of years I had been familiarizing myself with UNITY & [UNREAL environments](https://vimeo.com/267551937) for use in exploring archives and media content within Virtual Reality - also extending the use in role playing and [improvisational theatre](https://vimeo.com/242663437).
For this exercise I am interested in exploring something I have not done before - a highly parametric & accurate .
Some basic questions I had with respect to final project were: If I had to redesign the slick form factors of Alexa with the classic features of a vintage radio - what level of detail, overview & ease of use for prototyping would I consider? How can others work on the project in realtime?
## Research
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
I started out with Blender. I had used it earlier only to download some FBX files, before explorting to STL format - for importing into Unreal. Since I am extremely used to using the MacBook TouchPad - and being mouse illterate for several years, I faced the first big challenge with Blender that it was just too clumsy as an interface.
For now, I have only tried out SolveSpace and OpenScad - while loosely benchmarking some other new alternatives such as OnShape (which is also on my serious trial list)
## 3D softwares
# OpenScad
OpenSCAD is a free, script only-based 3D modeling suite designed to help engineers create solid 3D CAD objects. It is a reliable software for the budget-conscious engineers who are looking for a cost-effective solution with advanced CAD tools. Unlike other free 3D modelers, OpenSCAD is built with engineers in mind and not the artists; it focuses on the CAD aspects and not the facets of 3D modeling. It presents two modeling techniques; constructive solid geometry (CSG) and extrusion of 2D outlines.
The solution exhibits no characteristic of an interactive modeler. It is more of a 3D compiler designed to read in script files describing the object and render 3D models from the script file.
[source](https://reviews.financesonline.com/p/openscad/)
#### interface & usability
OpenScad felt very "tangible" and functional from prototype to printer ready - and with the level of simplicity that I hope for.
The only catch is that it is coding and not interface driven - however each change can be mentally tracked as they are all parallelly displayed on the left side on the code window.
Since "F5" key is used for the compilation, I had to conjure up the "virtual" keyboard to press F5 manually on it - this was a bit unintuitive operation.
![](../open_Scad/UI1.jpg)
I was able to merge a number of shapes, cubes, spheres easily.
![](../open_Scad/UI2.jpg)
![](../open_Scad/UI3.jpg)
A few functions I explored were translating the coordinates across the axis, also rotating and using loops for distributing a range of parameters across a field of depth & repetition.
![](../open_Scad/UI4.jpg)
![](../open_Scad/UI5.jpg)
![](../open_Scad/UI6.jpg)
![](../open_Scad/UI7.jpg)
After exporting the experiment, as an .stl file - I was wanting to open it in a new software. Blender would not accept STL files - so I installed Ultimaker CURA which is a visualization and custom software for various 3d Printers.
I was able to open the STL on CURA on the Ultimaker setting.
> "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
![](../open_Scad/UI10.jpg)
## Useful links
- [Jekyll](http://jekyll.org)
- [Google](http://google.com)
- [Markdown](https://en.wikipedia.org/wiki/Markdown)
# SolveSpace
## Code Example
SolveSpace is a very compact & light software (about 3 MB!) that does not require installation and runs from launch. I really like the feel of the interface - that has a minimal and futuristic at the same time, old terminal graphics feel to it.
Use the three backticks to separate code.
My intention for this first session was to experiment and compare two or if possible three softwares in terms if Usability, Complexity & Ease of Use.
```
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
```
## Gallery
#### interface & usability
![](../images/sample-photo.jpg)
The interface was fairly basic - however the terminologies used are "engineer-friendly" & a quick refreshment on basic parametric terms would have been good before starting out.
## Video
Very easy on the eyes - great for hours of work.
### From Vimeo
![](../solve_space/UI1.jpg)
<iframe src="https://player.vimeo.com/video/10048961" width="640" height="480" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p><a href="https://vimeo.com/10048961">Sound Waves</a> from <a href="https://vimeo.com/radarboy">George Gally (Radarboy)</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
The menu is also compact and I was still getting used to the mental model of having to adapt to "DOF" or Degrees of Freedom mental model that seems to follow & change depending on the various tools.
### From Youtube
![](../solve_space/UI3.jpg)
<iframe width="560" height="315" src="https://www.youtube.com/embed/jjNgJFemlC4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
The Pop Up window again lists a range of quite detailed parametric effects the tool could affect. And also if the selection does not fulfill the intended purpose, one gets a technical overview - rather than a more high level suggestion. Once all the parameters are internalized I am sure it this checklist will be more clear.
## 3D Models
![](../solve_space/UI5.jpg)
<div class="sketchfab-embed-wrapper"><iframe width="640" height="480" src="https://sketchfab.com/models/658c8f8a2f3042c3ad7bdedd83f1c915/embed" frameborder="0" allow="autoplay; fullscreen; vr" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
I enjoyed the ease of use and the feel until I had to convert my square into a "3D shape" - the lack of the mouse right-click unfortunately could not be replaced with the keyboard shortcuts.
<p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;">
<a href="https://sketchfab.com/models/658c8f8a2f3042c3ad7bdedd83f1c915?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Dita&#39;s Gown</a>
by <a href="https://sketchfab.com/francisbitontistudio?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Francis Bitonti Studio</a>
on <a href="https://sketchfab.com?utm_medium=embed&utm_source=website&utm_campaign=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a>
</p>
</div>
![](../solve_space/UI8.jpg)
This source diff could not be displayed because it is too large. You can view the blob instead.
var gapi=window.gapi=window.gapi||{};gapi._bs=new Date().getTime();(function(){var g=function(){this.g=""};g.prototype.toString=function(){return"SafeScript{"+this.g+"}"};g.prototype.a=function(a){this.g=a};(new g).a("");var h=function(){this.j=""};h.prototype.toString=function(){return"SafeStyle{"+this.j+"}"};h.prototype.a=function(a){this.j=a};(new h).a("");var m=function(){this.i=""};m.prototype.toString=function(){return"SafeStyleSheet{"+this.i+"}"};m.prototype.a=function(a){this.i=a};(new m).a("");var n=function(){this.f=""};n.prototype.toString=function(){return"SafeHtml{"+this.f+"}"};n.prototype.a=function(a){this.f=a};(new n).a("<!DOCTYPE html>");(new n).a("");(new n).a("<br>");/*
gapi.loader.OBJECT_CREATE_TEST_OVERRIDE &&*/
var q=window,v=document,aa=q.location,ba=function(){},ca=/\[native code\]/,x=function(a,b,c){return a[b]=a[b]||c},da=function(a){a=a.sort();for(var b=[],c=void 0,d=0;d<a.length;d++){var e=a[d];e!=c&&b.push(e);c=e}return b},y=function(){var a;if((a=Object.create)&&ca.test(a))a=a(null);else{a={};for(var b in a)a[b]=void 0}return a},D=x(q,"gapi",{});var E;E=x(q,"___jsl",y());x(E,"I",0);x(E,"hel",10);var F=function(){var a=aa.href;if(E.dpo)var b=E.h;else{b=E.h;var c=/([#].*&|[#])jsh=([^&#]*)/g,d=/([?#].*&|[?#])jsh=([^&#]*)/g;if(a=a&&(c.exec(a)||d.exec(a)))try{b=decodeURIComponent(a[2])}catch(e){}}return b},fa=function(a){var b=x(E,"PQ",[]);E.PQ=[];var c=b.length;if(0===c)a();else for(var d=0,e=function(){++d===c&&a()},f=0;f<c;f++)b[f](e)},G=function(a){return x(x(E,"H",y()),a,y())};var H=x(E,"perf",y()),K=x(H,"g",y()),ha=x(H,"i",y());x(H,"r",[]);y();y();var L=function(a,b,c){var d=H.r;"function"===typeof d?d(a,b,c):d.push([a,b,c])},N=function(a,b,c){b&&0<b.length&&(b=M(b),c&&0<c.length&&(b+="___"+M(c)),28<b.length&&(b=b.substr(0,28)+(b.length-28)),c=b,b=x(ha,"_p",y()),x(b,c,y())[a]=(new Date).getTime(),L(a,"_p",c))},M=function(a){return a.join("__").replace(/\./g,"_").replace(/\-/g,"_").replace(/,/g,"_")};var O=y(),R=[],S=function(a){throw Error("Bad hint"+(a?": "+a:""));};R.push(["jsl",function(a){for(var b in a)if(Object.prototype.hasOwnProperty.call(a,b)){var c=a[b];"object"==typeof c?E[b]=x(E,b,[]).concat(c):x(E,b,c)}if(b=a.u)a=x(E,"us",[]),a.push(b),(b=/^https:(.*)$/.exec(b))&&a.push("http:"+b[1])}]);var ia=/^(\/[a-zA-Z0-9_\-]+)+$/,T=[/\/amp\//,/\/amp$/,/^\/amp$/],ja=/^[a-zA-Z0-9\-_\.,!]+$/,ka=/^gapi\.loaded_[0-9]+$/,la=/^[a-zA-Z0-9,._-]+$/,pa=function(a,b,c,d){var e=a.split(";"),f=e.shift(),l=O[f],k=null;l?k=l(e,b,c,d):S("no hint processor for: "+f);k||S("failed to generate load url");b=k;c=b.match(ma);(d=b.match(na))&&1===d.length&&oa.test(b)&&c&&1===c.length||S("failed sanity: "+a);return k},ra=function(a,b,c,d){a=qa(a);ka.test(c)||S("invalid_callback");b=U(b);d=d&&d.length?U(d):null;var e=
function(f){return encodeURIComponent(f).replace(/%2C/g,",")};return[encodeURIComponent(a.pathPrefix).replace(/%2C/g,",").replace(/%2F/g,"/"),"/k=",e(a.version),"/m=",e(b),d?"/exm="+e(d):"","/rt=j/sv=1/d=1/ed=1",a.b?"/am="+e(a.b):"",a.l?"/rs="+e(a.l):"",a.o?"/t="+e(a.o):"","/cb=",e(c)].join("")},qa=function(a){"/"!==a.charAt(0)&&S("relative path");for(var b=a.substring(1).split("/"),c=[];b.length;){a=b.shift();if(!a.length||0==a.indexOf("."))S("empty/relative directory");else if(0<a.indexOf("=")){b.unshift(a);
break}c.push(a)}a={};for(var d=0,e=b.length;d<e;++d){var f=b[d].split("="),l=decodeURIComponent(f[0]),k=decodeURIComponent(f[1]);2==f.length&&l&&k&&(a[l]=a[l]||k)}b="/"+c.join("/");ia.test(b)||S("invalid_prefix");c=0;for(d=T.length;c<d;++c)T[c].test(b)&&S("invalid_prefix");c=V(a,"k",!0);d=V(a,"am");e=V(a,"rs");a=V(a,"t");return{pathPrefix:b,version:c,b:d,l:e,o:a}},U=function(a){for(var b=[],c=0,d=a.length;c<d;++c){var e=a[c].replace(/\./g,"_").replace(/-/g,"_");la.test(e)&&b.push(e)}return b.join(",")},
V=function(a,b,c){a=a[b];!a&&c&&S("missing: "+b);if(a){if(ja.test(a))return a;S("invalid: "+b)}return null},oa=/^https?:\/\/[a-z0-9_.-]+\.google(rs)?\.com(:\d+)?\/[a-zA-Z0-9_.,!=\-\/]+$/,na=/\/cb=/g,ma=/\/\//g,sa=function(){var a=F();if(!a)throw Error("Bad hint");return a};O.m=function(a,b,c,d){(a=a[0])||S("missing_hint");return"https://apis.google.com"+ra(a,b,c,d)};var W=decodeURI("%73cript"),X=/^[-+_0-9\/A-Za-z]+={0,2}$/,Y=function(a,b){for(var c=[],d=0;d<a.length;++d){var e=a[d],f;if(f=e){a:{for(f=0;f<b.length;f++)if(b[f]===e)break a;f=-1}f=0>f}f&&c.push(e)}return c},Z=function(){var a=E.nonce;return void 0!==a?a&&a===String(a)&&a.match(X)?a:E.nonce=null:v.querySelector?(a=v.querySelector("script[nonce]"))?(a=a.nonce||a.getAttribute("nonce")||"",a&&a===String(a)&&a.match(X)?E.nonce=a:E.nonce=null):null:null},ua=function(a){if("loading"!=v.readyState)ta(a);
else{var b=Z(),c="";null!==b&&(c=' nonce="'+b+'"');a="<"+W+' src="'+encodeURI(a)+'"'+c+"></"+W+">";v.write(a)}},ta=function(a){var b=v.createElement(W);b.setAttribute("src",a);a=Z();null!==a&&b.setAttribute("nonce",a);b.async="true";(a=v.getElementsByTagName(W)[0])?a.parentNode.insertBefore(b,a):(v.head||v.body||v.documentElement).appendChild(b)},va=function(a,b){var c=b&&b._c;if(c)for(var d=0;d<R.length;d++){var e=R[d][0],f=R[d][1];f&&Object.prototype.hasOwnProperty.call(c,e)&&f(c[e],a,b)}},xa=function(a,
b,c){wa(function(){var d=b===F()?x(D,"_",y()):y();d=x(G(b),"_",d);a(d)},c)},za=function(a,b){var c=b||{};"function"==typeof b&&(c={},c.callback=b);va(a,c);b=a?a.split(":"):[];var d=c.h||sa(),e=x(E,"ah",y());if(e["::"]&&b.length){a=[];for(var f=null;f=b.shift();){var l=f.split(".");l=e[f]||e[l[1]&&"ns:"+l[0]||""]||d;var k=a.length&&a[a.length-1]||null,w=k;k&&k.hint==l||(w={hint:l,c:[]},a.push(w));w.c.push(f)}var z=a.length;if(1<z){var A=c.callback;A&&(c.callback=function(){0==--z&&A()})}for(;b=a.shift();)ya(b.c,
c,b.hint)}else ya(b||[],c,d)},ya=function(a,b,c){a=da(a)||[];var d=b.callback,e=b.config,f=b.timeout,l=b.ontimeout,k=b.onerror,w=void 0;"function"==typeof k&&(w=k);var z=null,A=!1;if(f&&!l||!f&&l)throw"Timeout requires both the timeout parameter and ontimeout parameter to be set";k=x(G(c),"r",[]).sort();var P=x(G(c),"L",[]).sort(),I=[].concat(k),ea=function(u,B){if(A)return 0;q.clearTimeout(z);P.push.apply(P,p);var C=((D||{}).config||{}).update;C?C(e):e&&x(E,"cu",[]).push(e);if(B){N("me0",u,I);try{xa(B,
c,w)}finally{N("me1",u,I)}}return 1};0<f&&(z=q.setTimeout(function(){A=!0;l()},f));var p=Y(a,P);if(p.length){p=Y(a,k);var r=x(E,"CP",[]),t=r.length;r[t]=function(u){if(!u)return 0;N("ml1",p,I);var B=function(J){r[t]=null;ea(p,u)&&fa(function(){d&&d();J()})},C=function(){var J=r[t+1];J&&J()};0<t&&r[t-1]?r[t]=function(){B(C)}:B(C)};if(p.length){var Q="loaded_"+E.I++;D[Q]=function(u){r[t](u);D[Q]=null};a=pa(c,p,"gapi."+Q,k);k.push.apply(k,p);N("ml0",p,I);b.sync||q.___gapisync?ua(a):ta(a)}else r[t](ba)}else ea(p)&&
d&&d()};var wa=function(a,b){if(E.hee&&0<E.hel)try{return a()}catch(c){b&&b(c),E.hel--,za("debug_error",function(){try{window.___jsl.hefn(c)}catch(d){throw c;}})}else try{return a()}catch(c){throw b&&b(c),c;}};D.load=function(a,b){return wa(function(){return za(a,b)})};K.bs0=window.gapi._bs||(new Date).getTime();L("bs0");K.bs1=(new Date).getTime();L("bs1");delete window.gapi._bs;}).call(this);
gapi.load("",{callback:window["gapi_onload"],_c:{"jsl":{"ci":{"deviceType":"desktop","oauth-flow":{"authUrl":"https://accounts.google.com/o/oauth2/auth","proxyUrl":"https://accounts.google.com/o/oauth2/postmessageRelay","disableOpt":true,"idpIframeUrl":"https://accounts.google.com/o/oauth2/iframe","usegapi":false},"debug":{"reportExceptionRate":0.05,"forceIm":false,"rethrowException":false,"host":"https://apis.google.com"},"enableMultilogin":true,"googleapis.config":{"auth":{"useFirstPartyAuthV2":true}},"isPlusUser":false,"inline":{"css":1},"disableRealtimeCallback":false,"drive_share":{"skipInitCommand":true},"csi":{"rate":0.01},"client":{"cors":false},"isLoggedIn":true,"signInDeprecation":{"rate":0.0},"include_granted_scopes":true,"llang":"en","iframes":{"youtube":{"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/youtube?usegapi\u003d1","methods":["scroll","openwindow"]},"ytsubscribe":{"url":"https://www.youtube.com/subscribe_embed?usegapi\u003d1"},"plus_circle":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/plus/circle?usegapi\u003d1"},"plus_share":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/+1/sharebutton?plusShare\u003dtrue\u0026usegapi\u003d1"},"rbr_s":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarsimplescroller"},":source:":"3p","playemm":{"url":"https://play.google.com/work/embedded/search?usegapi\u003d1\u0026usegapi\u003d1"},"savetoandroidpay":{"url":"https://pay.google.com/gp/v/widget/save"},"blogger":{"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/blogger?usegapi\u003d1","methods":["scroll","openwindow"]},"evwidget":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/events/widget?usegapi\u003d1"},"partnersbadge":{"url":"https://www.gstatic.com/partners/badge/templates/badge.html?usegapi\u003d1"},"dataconnector":{"url":"https://dataconnector.corp.google.com/:session_prefix:ui/widgetview?usegapi\u003d1"},"surveyoptin":{"url":"https://www.google.com/shopping/customerreviews/optin?usegapi\u003d1"},":socialhost:":"https://apis.google.com","shortlists":{"url":""},"hangout":{"url":"https://talkgadget.google.com/:session_prefix:talkgadget/_/widget"},"plus_followers":{"params":{"url":""},"url":":socialhost:/_/im/_/widget/render/plus/followers?usegapi\u003d1"},"post":{"params":{"url":""},"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/post?usegapi\u003d1"},":gplus_url:":"https://plus.google.com","signin":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/signin?usegapi\u003d1","methods":["onauth"]},"rbr_i":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarinvitation"},"donation":{"url":"https://onetoday.google.com/home/donationWidget?usegapi\u003d1"},"share":{"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/share?usegapi\u003d1"},"plusone":{"params":{"count":"","size":"","url":""},"url":":socialhost:/:session_prefix::se:_/+1/fastbutton?usegapi\u003d1"},"comments":{"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/comments?usegapi\u003d1","methods":["scroll","openwindow"]},":im_socialhost:":"https://plus.googleapis.com","backdrop":{"url":"https://clients3.google.com/cast/chromecast/home/widget/backdrop?usegapi\u003d1"},"visibility":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/visibility?usegapi\u003d1"},"autocomplete":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/autocomplete"},"additnow":{"url":"https://apis.google.com/marketplace/button?usegapi\u003d1","methods":["launchurl"]},":signuphost:":"https://plus.google.com","ratingbadge":{"url":"https://www.google.com/shopping/customerreviews/badge?usegapi\u003d1"},"appcirclepicker":{"url":":socialhost:/:session_prefix:_/widget/render/appcirclepicker"},"follow":{"url":":socialhost:/:session_prefix:_/widget/render/follow?usegapi\u003d1"},"community":{"url":":ctx_socialhost:/:session_prefix::im_prefix:_/widget/render/community?usegapi\u003d1"},"sharetoclassroom":{"url":"https://www.gstatic.com/classroom/sharewidget/widget_stable.html?usegapi\u003d1"},"ytshare":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/ytshare?usegapi\u003d1"},"plus":{"url":":socialhost:/:session_prefix:_/widget/render/badge?usegapi\u003d1"},"family_creation":{"params":{"url":""},"url":"https://families.google.com/webcreation?usegapi\u003d1\u0026usegapi\u003d1"},"commentcount":{"url":":socialhost:/:session_prefix:_/widget/render/commentcount?usegapi\u003d1"},"configurator":{"url":":socialhost:/:session_prefix:_/plusbuttonconfigurator?usegapi\u003d1"},"zoomableimage":{"url":"https://ssl.gstatic.com/microscope/embed/"},"appfinder":{"url":"https://gsuite.google.com/:session_prefix:marketplace/appfinder?usegapi\u003d1"},"savetowallet":{"url":"https://pay.google.com/gp/v/widget/save"},"person":{"url":":socialhost:/:session_prefix:_/widget/render/person?usegapi\u003d1"},"savetodrive":{"url":"https://drive.google.com/savetodrivebutton?usegapi\u003d1","methods":["save"]},"page":{"url":":socialhost:/:session_prefix:_/widget/render/page?usegapi\u003d1"},"card":{"url":":socialhost:/:session_prefix:_/hovercard/card"}}},"h":"m;/_/scs/apps-static/_/js/k\u003doz.gapi.en.xh-S9KbEGSE.O/am\u003dwQc/d\u003d1/ct\u003dzgms/rs\u003dAGLTcCNaUSRWzhd71dAsiMVOstVE3KcJZw/m\u003d__features__","u":"https://apis.google.com/js/api.js","hee":true,"fp":"e944ac4b6578bd15c6f484474cab9a0ea5484962","dpo":false},"fp":"e944ac4b6578bd15c6f484474cab9a0ea5484962","annotation":["interactivepost","recobar","signin2","autocomplete","profile"],"bimodal":["signin","share"]}});
\ No newline at end of file
<!DOCTYPE html>
<!-- saved from url=(0365)https://ogs.google.com/u/0/widget/app?hl=en&origin=https%3A%2F%2Fwww.google.com&pid=1&spid=1&gm&usegapi=1#id=I0_1581203508448&_gfid=I0_1581203508448&parent=https%3A%2F%2Fwww.google.com&pfname=&rpctoken=91408256&jsh=m%3B%2F_%2Fscs%2Fabc-static%2F_%2Fjs%2Fk%3Dgapi.gapi.en.Sj5LKyeUKoE.O%2Fd%3D1%2Fct%3Dzgms%2Frs%3DAHpOoo9ToCtoaz0mr9IKXAop6Eq9AIpSlw%2Fm%3D__features__ -->
<html lang="en" dir="ltr"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!--<base href="https://ogs.google.com/u/0/">--><base href="."><meta name="referrer" content="origin"><link rel="canonical" href="https://ogs.google.com/widget/app"><link rel="preconnect" href="https://www.gstatic.com/"><link rel="preconnect" href="https://ssl.gstatic.com/"><link rel="preconnect" href="https://apis.google.com/"><link rel="prefetch" href="./api.js"><script src="./cb=gapi(1).loaded_0" nonce="" async=""></script><script data-id="_gd" nonce="">window.WIZ_global_data = {"DpimGf":false,"EP1ykd":["/_/*"],"FdrFJe":"-4374530938263545768","Im6cmf":"/u/0/_/OneGoogleWidgetUi","LVIXXb":1,"LoQv7e":true,"MT7f9b":[],"NrSucd":false,"OwAJ6e":false,"QrtxK":"0","S06Grb":"108956407810843659603","S1NZmd":false,"SNlM0e":"AEbmrmG2Z07ABxgQU4horcDv7nD-:1581203509032","W3Yyqf":"108956407810843659603","WZsZ1e":"XAhtJX5mAbQsRw4v/AizBWzWuYZti7x4TJ","Yllh3e":"%.@.1581203509013941,177880393,2902469832]\n","ZwjLXe":1,"cfb2h":"boq_onegooglehttpserver_20200127.08_p0","eptZe":"/u/0/_/OneGoogleWidgetUi/","fPDxwd":[1763433,1772879],"gGcLoe":false,"ikfjnc":["https://www.google.com"],"nQyAE":{"wcLcde":"false","tBSlob":"false"},"oPEP7c":"drystate@gmail.com","qDCSke":"108956407810843659603","qwAQke":"OneGoogleWidgetUi","rtQCxc":-120,"w2btAe":"%.@.\"108956407810843659603\",\"108956407810843659603\",\"0\",true,null,null,true]\n","zChJod":"%.@.]\n"};</script><script nonce="">(function(){'use strict';var b=window,c=b.performance,l=k();b.cc_latency_start_time=c&&c.now?0:c&&c.timing&&c.timing.navigationStart?c.timing.navigationStart:l;function k(){return c&&c.now?c.now():(new Date).getTime()}function n(h){if(c&&c.now&&c.mark){var f=c.mark(h);return f?f.startTime:c.getEntriesByName(h).pop().startTime}return k()}
b.l=function(h){function f(a){var d={};d[a]=k();b.cc_latency.push(d)}function p(a,d){if(!d||"none"==d.style.display)return!1;var e=a.defaultView;if(e&&e.getComputedStyle&&(e=e.getComputedStyle(d),"hidden"==e.visibility||"0px"==e.height||"0px"==e.width))return!1;if(!d.getBoundingClientRect)return!0;var g=d.getBoundingClientRect();d=g.left+b.pageXOffset;e=g.top+b.pageYOffset;if(0>e+g.height||0>d+g.width||0>=g.height||0>=g.width)return!1;a=a.documentElement;return e<=(b.innerHeight||a.clientHeight)&&
d<=(b.innerWidth||a.clientWidth)}function m(a){var d=n("iml");a.setAttribute("data-iml",d)}function q(){var a=n("prt");b.prt=a}b.cc_aid=h;b.iml_start=b.cc_latency_start_time;b.css_size=0;b.cc_latency=[];b.ccTick=f;b.onJsLoad=function(){f("jsl")};b.onCssLoad=function(){f("cssl")};b._isVisible=p;b._recordImlEl=m;document.documentElement.addEventListener("load",function(a){a=a.target;"IMG"!=a.tagName||a.hasAttribute("data-iid")||a.hasAttribute("data-src")||a.hasAttribute("data-ils")||a.hasAttribute("