Git Product home page Git Product logo

mondrian's Introduction

Artist & software developer

Interests: Rust, web, crypto, dataviz

Work history:

Wormhole Labs 2023 - current

Kraken 2016 - 2023

Codecademy 2013 - 2016

mondrian's People

Contributors

artursapek avatar colmtuite avatar fishrock123 avatar mkly avatar silasb avatar tombyrer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mondrian's Issues

Speed up Coffeescript compilation

20 seconds is a long time. I want to reduce the cake build compile time to 2 seconds.

Right now the compilation system is as dumb as it gets - it concats all the .coffee files in a certain order and compiles the entire thing at once, every time. Even if you change a single character.

That means it does a lot of redundant work. It's slow and annoying, and will discourage people from working on Mondrian.

Since the source files are already split up, I'm picturing a system that only recompiles individual files that have changed since last time. It could compare whether they are changed using an md5 hash for a file each time.

There's still a question of how the system concats all the JS after doing this. I think it could just strip the surrounding (function() { / }).call(this);s from each individually compiled JavaScript file, concat the results, and re-wrap it all.

This has to happen soon. I plan on taking it on.

Mac only shortcuts

Please add windows/linux standard shortcuts for those OS's (ie CTRL-Z for undo)

SVG-edit

I use Inkscape a lot for icons and like the idea of not needing a desktop app for that. Mondrian looks cool, and in functionality is very similar to SVG-edit (also open source).

Hence I wonder if you know SVG-edit, if there’s been talk with the devs, what the differences are, etc. I just think that lots of open source projects would benefit from cross-project collaboration or at least communication instead of just doing »yet another x« without checking with the people who did stuff which already exists. :)

Use contentEditable to implement SVG text tool

geometry/text-editable.coffee is implementing on-canvas text editing by overlying SVG <text> element with editable HTML <div> element and applying similar styles on it. I have figured out an easier way to have editable SVG text:

  • when user clicks on SVG <text> element set contenteditable attribute on the nearest ancestor in HTML namespace to true (e.g. document.body.contentEditable = true;)
  • make the SVG <text> element selectable (e.g. svgTextElement.style.webkitUserSelect = 'text';)
  • when user finishes editing the text (e.g. by clicking on canvas) set the contentEditable attribute on the ancestor back to false

In the near future this hack won't be needed at all since SVG 2 SVGTextElement would be inheriting from HTMLElement interface which implements contentEditable functionality [1].

[1] http://dev.w3.org/SVG/proposals/improving-svg-dom/#interface-hierarchy

using Undo modifies Bezier curves

Steps:

  1. Make a complex curve (using a Circle tool will do)
  2. Modify one of the points (it's easiest to reproduce with big handle movements)
  3. Click "undo".
    Some points that weren't modified at all get changed upon undoing.
    That doesn't happen 100% of the time, but it's easy to notice after a few tries.

Example:
bug

Drop dependence on jQuery?

I'm not sure whether we should be trying to remove jQuery. Grepping around, it looks like there's ~400 instances of jQuery methods being used.

http://artur.co/pastes/1390824908.txt

That's a lot. It would take a while to replace, and doing so might be a waste of time.

If we don't remove it, we could use a CDN like Google to serve jQuery instead and get more or less the same speed benefit.

Color picker should constrain colors to the visible window

If I drag the handle too far left, I get black; if I drag it upwards or downwards (outside the colored square) I get hues that aren't represented in the square. It's not an intuitive behavior; the handle should be constricted to the square color area.

Update to latest jQuery 2.x or Zepto (or drop it completely)

Your jQuery version is severly outdated, the current line is 1.11 or 2.1. This leads to at least one issue, I got this message in the command line (roughly translated):

12:56:00.209 getPreventDefault() should not be used anymore. Please use defaultPrevented instead. jquery-1.7.2.min.js:3

Though this may also result in more errors, mostly interoperability issues. Generally, you should switch to the 2.x line because it's more optimized (it dropped support for very old browsers) thus faster and smaller.

However, you should consider switching to zepto.js (which is mostly interoperable with jQuery) and only include the scripts you really need, that will increase performance even more.

I haven't looked at the code yet, however I suspect that you might be able to drop any library alltogether without too much effort, and at most use microlibraries for specific tasks (like key handling) and use other native APIs directly. Though that's probably a bigger task, and upgrading the library version should be a good first step. :)

SVG File Import crashes browser

I just found Mondrian and tried to import an SVG from my local machine. I tried uploading this and it crashed the browser every time.

Running Cr 32.0.1700.107 stable & OSX 10.9.1

Fails to recognize tablet pen tip "click" input.

Ok so, this isn't about full tablet support. That would only be available via a plugin / extension.

I have an Intuos5 Digitizer tablet, and mondrian is not recognizing the click/mouseup event from the pen tip.

Consider using Clipper library instead of geometry/pathfinder.coffee

Path clipping is a tough mathematical problem that requires some non-trivial code. Instead of trying to do it yourself I would use JavaScript Clipper [1] library. Clipper doesn't have full support for Beziers yet (it's being worked on in the upstream branch, for now you would need to convert beziers to polygons), though it would be much more reliable than the current code in geometry/pathfinder.coffee.

[1] http://sourceforge.net/projects/jsclipper/

Needs a way to restrict angles

The Shift or Control keys should restrict angles (e.g. using the line tool, or the rotate tool) to increments of 15º (or 30º plus the 45º multiples)

Import PNG

Can you add the ability to import a png image so you draw a vector image based off of the png? For example I have a png, I import it to the background and draw vector shapes over top of it and then save the svg. The png isn't actually part of the final image, I just want to be able to 'trace' it. Does this make sense?

Support Google Fonts

I think you can use Google Fonts and load fonts thru API to the fonts list. Like Google Docs dose. I think that would be added benefit :)

Is There a Pre-Built Package available, yet?

Hello, I would love to try it locally on my machine. I was searching for a pre-built package , but sadly, couldn't find one. Could anyone please provide me (and probably many other people in future) a per-built package of mondrian, to test it on mac OSX? If, that's possible, I would be pretty grateful! And, of course I loved the app and the fact that it's licensed under the awesome MIT, which is actually the cheery on the pie.

Great Work, Keep it up guys! :)
And, Thanks a lot for putting your hard work, in front of the public, as free code. It's because of people like you, that the tech industry continues to grow at a rate that far exceeds the imagination of most people, even in the tech world. so, Thank you for this!

---- Anime.sh

bezier interaction: path segment highlight in wrong place after transform

Summary: sometimes the "hit area" for a path segment is in the wrong place after a transformation using the utility window.

Repro:

  1. draw a circle -- let's say it's 275px x 275px
  2. while the circle is still selected, go to the utility window and change the width significantly (e.g. change it from 275 to 75).
  3. switch to the select tool and hover over the path segments of the circle. you may notice they don't highlight. if you hover over the spot where they used to be before the transformation, you'll see highlights in the wrong place.

Disable Context Menu

It'd be great if you could disable the right-click context menu when using this app in Windows. 😸

Create application manifest

Similar to #5, you can provide an application manifest that allows the Web App to be converted into a standalone application. This works for Firefox atm, though Chrome has a very similar format.

http://www.w3.org/TR/runtime/
http://w3c.github.io/manifest/
https://developer.mozilla.org/en-US/Apps/Quickstart/Build/For_Web_developers
https://developer.mozilla.org/en-US/Apps/Developing/Manifest
https://developer.mozilla.org/en-US/Apps/Developing/About_app_manifests
https://developer.mozilla.org/en-US/Apps/FAQs/About_apps

(When publishing in the Firefox Marketplace you can define the target device type, i.e. desktop.)

Cannot build styles.

cake styles blank-overrides the build css files.

It seems as if lessc wasn't added as a dependancy?

"Class BuildShell could not be loaded"

Currently, your build instructions are erroring out on Ubuntu 14.04 with Cake installed via apt-get. When I run cake build I get: "Class BuildShell could not be loaded." And if I run cake server I get "Class ServerShell could not be loaded." Some vague Internet exploration indicates it could be because of a Cake version.

I have never used Cake before and it's entirely possible I am doing something bad.

snap to grid

Great on the grid! Now what would be cool is functionality to have the object you move (or point) snap to that grid. Best toggleable or possible to disable in some way because sometimes that’s also annoying.

Adobe Illustrator file import support.

Yes this would probably be hell to implement, given how obscure and convoluted adobe files are, but it would be a great feature to have.

This would be best implemented by including a separate .ai parser library.
Not sure if any javascript ones exist, though.

bezier interaction: dragging path segment leaves control handle behind

Depending on the selection state, sometimes, dragging a path segment leaves one of the control handles floating in space during the drag.

Repro:

  1. draw a circle
  2. deselect the circle
  3. using the selection tool, click on the path segment that defines the upper left quadrant of the circle. At this point, the control handles which define the point at 12 o'clock and 9 o'clock should become visible*.
  4. click directly on the anchor point at 9 o'clock. Nothing appears to change.
  5. Now mousedown on the path segment (the same one you clicked on in step 3) and drag it. You will see that the 12 o'clock control handle stays where it was while you're dragging this around.

This is a display-only bug.

  • bonus buglet: if you choose the upper right quadrant of the circle for step 3 instead of the upper left, only half of the 12 o'clock control handle becomes visible. I'm not sure why.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.