Giter VIP home page Giter VIP logo

charcod.es's People

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

charcod.es's Issues

Rework core/complex parts of code to be testable in Node

We're beginning to have some quite complex code in the client. Quite a lot of it doesn't touch the DOM, so we should be able to unit-test it before we build/deploy changes.

Stuff I'd like tested:

  • Core search engine (http-pub/js/search.js)
  • Bits in http-pub/js/app.js: isCharCode(), Bram's unicode-surrogate/BMP-stuff, data parsing/loading/indexing, location.hash-handling, etc.

I imagine splitting the code into separate modules that works both in browsers and Node.js, and then do the testing there.

Progressive download/parsing/indexing of codepoints

The application halts slow machines/devices quite a lot, so perhaps we should split the index into smaller parts - possibly with various-size chunks, so we can adapt to faster/slower machines and network connections. Eg. naming data-FROM%-TO%.json:

#5% chunks
data-0-5.json
data-5-10.json
…

#10 % chunks
data-0-10.json
data-10-20.json
…

#25 % chunks
data-0-25.json
data-25-50.json
…

#50 % chunks
data-0-50.json
data-50-100.json

Then the client could start out downloading data-0-10.json and parse it. If that takes to long, degrade to 5% chunks, and if It's fast, upgrade to 25%-chunks.

We'd have to have some more data lying around (about 2MB per size), and - more difficult - figure out a dynamic download client.

Command-line client

What about a command-line client in plain-ish node.js:

unicodefinder :)
☺
unicodefinder -- -->
→ ↔

defer() doesn't insert Google Analytics code.

The defer(url, callback) doesn't insert the DOM-element for fetching the script in the DOM. Specifically, the following line seem to be broken:

firstScript.parentNode.insertBefore(inc, firstScript);

Can you look into it, @Munter?

Inject the data as JavaScript instead of JSON

There's really no reason to load the data as JSON, as it's quite static. Wrapping it into some JS should be fairly simple:

"var rawData = " + JSON data + ";"

And then include it in the HTML.

New design

I'm thinking something with a few clear (but muted/saturated) colours, to go along with a new logo per #47.

The simplicity of what the site does, I think something material-like would be nice. And implementable without pulling in a ton of unused CSS scaffolding.

https?

https://charcod.es/ works, but complains about the certificate being invalid. It's issued to *.netlify.com -- I thought the site was hosted on github pages?

I ran into this because I'd like to replace the appcache manifest with a generated service worker, but that'll only work with a secure origin.

Re-write search-engine to use AMD.

Should make it modular, enable sane testing (see #30 and #37).

I have the initial work laying around on a branch somewhere, but it needs to be merged (and the core app should support AMD as well; see #40 )

Show title as split-flap display

Show the name of the page as a split flap display, randomly changing a letter in the title for a unicode look-alike. (Or, perhaps, a similar visual effect.)

The letters should probably be pre-picked so hey look alike and work on most platforms.

Permalinks!

It's fun to find & share new characters - let's add some kind of permalinks so it's easy to share!

(Also, I should probably buy a dedicated domain for it!)

Link to Wolfram Alpha

We can link from codes to Wolfram Alpha to let users' explore more.

The query-url looks like this:

http://www.wolframalpha.com/input/?i=unicode+DECIMAL_CODEPOINT

Req: unicod.es

Request

There is a project similar in nature to this here:

http://unicod.es/

Other visitors need to know about it, so perhaps a link in the footer will do?

Tab virtual alignment sometimes fail.

When searching for, example foot, some chars flow to the next line, putting some chars between the "tab" and the box showing the details.

Broken with Chrome 22 on Ubuntu 12.04 when the window is less than 970 px wide (per window.outerWidth).

Switch to Netlify

Netlify is a freemium static site hosting service, that can take care of building, serving (including HTTPS) for us.

Reasons to switch:

  • Get HTTPS. GratisDNS + Github Pages doesn't do that, and we'll need it to get some of the new web features to work
  • The current build-pipeline is quite fragile and I keep forgetting how it works.

Reasons for Netlify:

  • Cloudflare + gh-pages would solve the HTTP-problem, but leave the build-pipeline. Also, CF requires that their DNS servers take care of charcod.es, which GratisDNS doesn't allow us to do without paying some rather hefty fees.
  • Netlify runs a build-pipeline that magically does the right thing for us

TODO

  • Switch to Netlify
  • Get HTTPS working
  • Clean up old build-pipeline
  • Do a release-branch for Netlify to track.

Better mobile experience

Things should be usable on a mobile phone of 320px width as well.

I'll get on that right away

Font choice

Currently there is an inconsistent rendering of charcodes across platforms.

If there is a webfont available with a wide range of supported unicode chars, then that might be a better choice to give a more pleasant experience for all users.

We might even be able to switch fonts for certain blocks where there is missing support in our preferred font.

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.