Coder Social home page Coder Social logo

sy's Introduction

Hi there ๐Ÿ‘‹

I'm a french software engineer interested by functional programming, formal methods, graphs and all the knowledge surrounding human consciousness.

Open Source

Most of my open source work is done in the Innmind and Formal organizations. It initially started as a few projects to crawl and index the web, but now it contains many tools to help my workflows and libraries to build higher and higher abstractions.

The best example for such high abstraction library is innmind/operating-system.

Sharing

Most of the content I share is done on Twitter.

From time to time I give talks at conferences or local meetups; you can find all the slides, code and recordings here (mix of french and english).

Occasionally I venture in recording videos on Youtube.

I may sometime write articles (very rare), when I do it's either here or there.

sy's People

Contributors

baptouuuu avatar nicoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

nicoder

sy's Issues

[Form] Check form inputs validity

Check the inputs validity of each input declared in a Sy.Form.Form instance instead of the whole form element, as input elements not declared in the object may false the result of validation.

[SC] Rebuild the component

Create a new service container that use the notions of the DependencyInjection component in Symfony2

  • definitions (that can be modified)
  • private services
  • configurator
  • better tags
  • factories
  • parent services
  • aliases
  • compiler passes

0.7

Data validation + Form wrappers

Views

As a developer I want:

  • an object representing the DOM of my page
    • a way to access through this object the different layouts composing the view, in order to update them independently
  • want a way to replace parts of the current view (meaning layouts) or the whole
    • those extra layouts/views can be defined in the app landing page or in separated files (for maintainability)

Validator

As a developer I want:

  • a mechanism allowing me to define a set of rules that data must comply with
  • to use it by specifying the name of rulesets and the data object to validate

Registry

As a developper, I:

  • want an object where I can easily set and retrieve key/value pairs
  • want to be able to check if a key is set
  • want to be able to remove a key, set of key or all of them

Entity

By default the entity is not limited to a set of properties. It follows the rule of NoSQL where new properties can be set wherever in the code.

It's possible to register properties as indexes, it will be possible to search through those fields.

It's possible to register a property as a link to another entity. To formalize the link description, the name of the target is referenced as BundleName::EntityName.

It's possible to lock a list of properties. Once this list is defined, it can't be changed dynamically in the code. Consequently, the registering of connections to other entities must be done before the locking of entity properties.

HTTP wrapper

As a developper, I:

  • want a simple mechanism to construct HTTP requests
  • want an object allowing me to handle all my running requests; like cancelling them
  • want simple methods to specify the type of request (like requesting html content)
  • want the mechanism to interpret the type of data returned and adapt the response depending on that

Storage cache

Build on top of the registry a mechanism to cache retrieved entities.

This cache will be kept up to date each time the flush method is called on the repository.

The cache will only be used when the developer is requesting an entity directly by its uuid.

This mechanism must be disabled behind a config flag.

Queue

As a developper, I:

  • want a mechanism where I can push/retrieve/remove key/value pairs with different states.
  • want to be able to check if a key exist in a specific state
  • want to be able to retrieve the state for a specific key

Mediator + Service container

Build first brick of the framework.

The mediator must follow this rule for publishing data to a channel:

mediator.publish('channel', has, many, params, that, i, want);

The service container must allow to pass data to the constructor function in order to avoid closures. Example:

serviceContainer.set('service::name', function(foo, bar) {
    console.log('i avoid closure');
}, [foo, bar]);

Tutorial

Build a tutorial to showcase the framework with a real app. Explain how to build the famous TodoMVC.

REST

As a developper, I:

  • want an interface to consume data from a REST api easily

Controller

A controller give shortcut to the global service container through the property container.

It give shortcuts to the subscribe and publish method of the mediator through, respectively listen and broadcast. The first automatically register the controller object as the callback context.

To ease the process of creating entities, meaning not typing the full entity namespace, the controller must provide a method to create new entities. The name can follow two patterns \w+ or \w+::\w+, the first will look for the name inside the controller's bundle. The second one allow to look for an entity inside another bundle (ie: BundleName::EntityName).

When a controller goes idle, all the listened mediator's channels must be paused.
When it's destroyed, those listener must be destructed as well.

Translator

As a developer I want:

  • an object to easily translate text strings
  • to easily add new translations to the object
  • the possibility to organise my translations by groups

Build a PropertyAccessor

Replace the functions objectSetter, objectGetter, reflectedObjectGetter and getReflectedValue by a proper object interface to read/write from/to an array or object.

Use the same principle as the Symfony PropertyAccess.

However the notation for accessing an array must follow the same one as for objects (meaning array.0) as an array is an object.

Localstorage index

Build a text index for the localstorage engine where it could take the form indexField::value::uuid. A regular expression on this text string could retrieve all ids, instead of looping over the whole list of objects.

App structure

Build the namespace structure and how different parts should act together.

The goal is to identify structure problem and resolve them. Determine the workflow before creating the glue (the framework).

Storage engine

As a developper, I :

  • must be able to generate easily a new storage.
  • want to handle my entities independently, like picking files from a folder.
  • want to be able to control when all my actions on the storage are really applied (talking about operations modifying data).
  • want it to be designed as it would be easy to extract it from the framework.

Interfaces

Setup all interfaces necessary for the app structure.
Needed:

  • Configurator
  • Controller
  • Entity
  • Service
  • ServiceContainer
  • Stack
    • Storage
      • Engine

Templating

As a developer I want:

  • to be able to set data placeholders in my html
  • to control when those placeholders are updated
  • to specify html tags acting as elements lists
    • it must be possible different type of elements in those lists (polymorphism)

Data fixtures

As a developer I want:

  • a mechanism to help inject data in my databases through the storage engine
  • the mechanism to allow me to upgrade and downgrade data

Get queue states

It would be nice to be able to retrieve all the active states of a queue, meaning all that have at least one element.

Storage engines

Build a global engine factory and a factory for each type of engine.
The list of engines will be set as a config parameter.

[HTTP] Create an ImageRequest and ImageResponse

Build an ImageRequest that specify the response type as a blob. The ImageResponse has an extra getBlob method returning; ultimately it will return the same thing as getBody but makes more sense.

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.