Angel \”Java\” Lopez on Blog

June 27, 2014

End Of Iteration 2014w25

Previous Post
Next Post

Code Generation with AjGenesis

I published a new version of

https://github.com/ajlopez/AjGenesisNode

My code generation tool, based on Node.js. Now, it can preserve files in generate tasks (if you want one of your files doesn’t overwritten). But the key change was to put models under current project directory, ajgenesis/models folder. In this way, I can put all the AjGenesis-related stuff in only one directory related to current project. So, I refactored and republished the modules and examples of:

https://github.com/ajlopez/AjGenesisNode-Express
https://github.com/ajlopez/AjGenesisNode-Entity
https://github.com/ajlopez/AjGenesisNode-Hello

Next steps: refactor https://github.com/ajlopez/AjGenesisNode-Model to use the new directory, and refactor/complete the generation process in Express, Sinatra, Laravel, Django projects.

SharpBus

I worked on

https://github.com/ajlopez/SharpBus

implemented a simplified Mule-like message flow in C#, using TDD (Test-Driven Development). Now I have: input, output, transform, processors, routers, branches in flow. It was nice to see all in place, using “baby steps”, and the powerful lambdas of C#. I implemented transformer objects too. Next steps: instead of simply process a payload, start to process a complete message.

SimpleCurry

After attending a JavaScript meetup at Buenos Aires, I wrote a simple JavaScript curryfing function library:

https://github.com/ajlopez/SimpleCurry

Since then, I started to add some additional pieces, like partial application, and composition of functions.

SimpleStates

Thanks to @fabiomaulo, I met state machine implementations in C#. So, I wrote my own version in JavaScript:

https://github.com/ajlopez/SimpleStates

It has a fluent interface to define states, with triggers and actions. Next steps: add global triggers, and hierarchical states.

Others

I added some functions to https://github.com/ajlopez/SharpMongo core and REPL. I worked on four private projects, too. More fun is comming.

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

June 20, 2014

End Of Iteration 2014w24

Filed under: .NET, C Sharp, Iteration, Mass, Open Source Projects, SharpBus, SharpGo, SharpMongo — ajlopez @ 6:27 pm

Previous Post
Next Post

SharpGo

My Go Programming Language interpreter in C#

https://github.com/ajlopez/SharpGo

I added typed nodes to Abstract Syntax Tree, and nodes that generate expressions instead of commands. The types will help me to determine if an expression is valid or not, according to Go type specifications.

Mass

The Mass programming language interpreter

https://github.com/ajlopez/Mass

I reimplemented binary arithmetic operations (and string concatenation) without using ObOps, but directly using compiled lambda expressions. Next steps: removing ObOps dependency from compare operations. I think that a compiled lambda is a better outcome for such expression.

SharpMongo

My in-process, in-memory implementation in C# of a document database with a MongoDB-like interface:

https://github.com/ajlopez/SharpMongo

I fixed source analysis issuses, and added .count method to collections and to collection objects in REPL.

SharpBus

I started

https://github.com/ajlopez/SharpBus

A simple message bus implemented in C#, inspired by Mule. Notably, the flow of message can be defined using lambdas (something missing in Mule Java up to version 7). Using TDD, using fluent interface, consuming lamdbas, is the simplest way I found to implement a message bus.

Others

I worked fixing scripts in https://github.com/ajlopez/ajlopezsite. My parser “generator” https://github.com/ajlopez/GrammGen was  converted to VisualStudio 2010I worked on four non-public projects. More fun is coming.

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

February 21, 2014

Owin: Links And Resources (2)

Filed under: .NET, C Sharp, Links, Owin — ajlopez @ 7:24 pm

Previous Post

Byte Rot: OWIN and Katana challenges: blues of a library developer
http://byterot.blogspot.com.ar/2013/08/OWIN-Katana-challenges-blues-library-developer-aspnetwebapi-nancyfx.html

damianh (Damian Hickey)
https://github.com/damianh

owin Archives – StrathWeb
http://www.strathweb.com/category/owin/

Getting Started With OWIN and the Katana Stack – Tugberk Ugurlu’s Blog
http://www.tugberkugurlu.com/archive/getting-started-with-owin-and-the-katana-stack

Owin.Dependencies: An IoC Container Adapter Into OWIN Pipeline – Tugberk Ugurlu’s Blog
http://www.tugberkugurlu.com/archive/owin-dependencies–an-ioc-container-adapter-into-owin-pipeline

Introducing SaasKit – Multi-tenancy made easy – Ben Foster
http://ben.onfabrik.com/posts/saaskit-multi-tenancy-made-easy

Are we gOWINg in the right direction? | Roysvork
http://roysvork.wordpress.com/2014/02/18/are-we-gowing-in-the-right-direction/

The Liara Framework by Prasanna V. Loganathar
http://prasannavl.github.io/Liara/

davidfowl/OwinHttpClient
https://github.com/davidfowl/OwinHttpClient

prabirshrestha/simple-owin
https://github.com/prabirshrestha/simple-owin

OWIN Middleware in the IIS Integrated Pipeline : The Official Microsoft ASP.NET Site
http://www.asp.net/aspnet/overview/owin-and-katana/owin-middleware-in-the-iis-integrated-pipeline

OWIN and Katana : The Official Microsoft ASP.NET Site
http://www.asp.net/aspnet/overview/owin-and-katana

Fix and OWIN and Simple.Web – codeface
http://blog.markrendle.net/2013/10/01/fix-and-owin-and-simple-web/

fracture
https://github.com/fractureio

ASP.NET MVC 5 Fundamentals – Online Training Course for Developers
http://pluralsight.com/training/Courses/TableOfContents/aspdotnet-mvc5-fundamentals

Writing OWIN middleware
http://odetocode.com/blogs/scott/archive/2013/11/11/writing-owin-middleware.aspx

ASP.NET – Getting Started with the Katana Project
http://msdn.microsoft.com/en-us/magazine/dn451439.aspx

Understanding OWIN Forms authentication in MVC 5 – .NET Web Development and Tools Blog – Site Home – MSDN Blogs
http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc-5.aspx

My Links
http://delicious.com/ajlopez/owin

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

February 20, 2014

Owin: Links and Resources (1)

Filed under: .NET, C Sharp, Links, Owin — ajlopez @ 7:37 pm

Next Post

OWIN — Open Web Interface for .NET
http://owin.org/

Getting up to speed with Katana – Jon Galloway
http://weblogs.asp.net/jgalloway/archive/2013/05/30/getting-up-to-speed-with-katana.aspx

Tomek on Software: Access MS SQL from a node.js application using OWIN, in-process CLR hosting, .NET, and ADO.NET
http://tomasz.janczuk.org/2013/02/access-ms-sql-from-nodejs-application.html

Tomek on Software: CPU bound workers for node.js applications using in-process .NET and OWIN
http://tomasz.janczuk.org/2013/02/cpu-bound-workers-for-nodejs.html

tjanczuk/owin · GitHub
https://github.com/tjanczuk/owin

Tomek on Software: Hosting .NET code in node.js applications using OWIN
http://tomasz.janczuk.org/2013/02/hosting-net-code-in-nodejs-applications.html

gsscoder/owinhttplistener · GitHub
https://github.com/gsscoder/owinhttplistener

Herding Code 123: Andreas Håkansson and Steven Robbins on NancyFx
http://herdingcode.com/?p=350

Kayak, a C# HTTP server.
http://kayakhttp.com/

OWIN — Open Web Server Interface for .NET, v1.0 Draft 5
http://owin.org/spec.html#Overview

Hanselminutes Podcast 264 – This is not your father’s WCF – All about the WebAPI with Glenn Block – Scott Hanselman
http://www.hanselman.com/blog/HanselminutesPodcast264ThisIsNotYourFathersWCFAllAboutTheWebAPIWithGlennBlock.aspx

Getting fancy with Nancy – Introduction – TheCodeJunkie
http://thecodejunkie.com/getting-fancy-with-nancy-introduction

CodePaste.NET – Processor for supporting uri extensions which map to variant representations
http://codepaste.net/j8spid

My Links
http://delicious.com/ajlopez/owin

February 19, 2014

End Of Iteration 2014w07

Filed under: .NET, C Sharp, Iteration, JavaScript, NodeJs, Open Source Projects, Scala, ScalaSharp — ajlopez @ 7:15 pm

Previous Post
Next Post

A lot of interesting topics and code.

MeteorSamples

I started to explore Meteor:

https://github.com/ajlopez/MeteorSamples

You can see one of my samples deployed at:

http://mycompany.meteor.com/

A simple CRUD (WIP) application. Next steps: code generation using AjGenesis for Node.js, mobile look, and wrap up as a PhoneGap application.

I also wrote posts:

Programming Meteor (1) First Steps
Meteor: Links And Resources (1)

ScalaSharp

My Scala interpreter in C#:

https://github.com/ajlopez/ScalaSharp#

I started to switch from a tree of expression to a tree of nodes (a classical AST). In this way, I could implement type checking, compilation, etc… visiting the node tree. There are differences between an expression and a node. A node could be a name, but that name, in Scala, could be a val, a var, or a def. I have not the full context to decide what kind of expression to invoke. So, I need a previous step. A node is the first parser output. A tree node could be visited, performing type checking and then producing the correct expression.

SimpleReact

Inspired by Meteor .autorun method, I wrote a react library in JavaScript

https://github.com/ajlopez/SimpleReact

As usual, simple code, using TDD workflow.

SimpleScraper

I continue adding features to

https://github.com/ajlopez/SimpleScraper

A simple JavaScript library to process an HTML string. I should add more features, and write a sample, scraping an e-commerce site.

Others

A minor addition in ClojSharp https://github.com/ajlopez/ClojSharp using recur in a function

Completing the model in https://github.com/ajlopez/AjGenesisNode-Express supporting that an entity references another entity.

I worked on two non-public projects, too. More fun is coming.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

February 12, 2014

End Of Iteration 2014w06

Previous Post 
Next Post

More deliberate TDD practice in my open source projects

AjErl

My Erlang-like interpreter in C#:

https://github.com/ajlopez/AjErl

I added selective receive to process mailboxes. It was an interesting implementation, where each mailboxes has a save queue to keep the rejected messages. Once a message is accepted, the save queue is put again as a message queue, ready to be consumed again.

ScalaSharp

My Scala interpreter in C#:

https://github.com/ajlopez/ScalaSharp

I added binary expressions. I started to think about type check implementation. This next week I will add an explicit AST (Abstract Syntax Tree) to be used for type checking. Not all Scala expression can be type checked at parser time, because possible not-resolved cross references.

ScaScript

My Scala interpreter in JavaScript:

https://github.com/ajlopez/ScaScript

Minor additions: parse class with body, parse a suite of statement (a list of statement). One thing to review in this project and the previous one: Scala new line in lexer/parser. The language has special rules to skip or not a new line, depending on the context. I should add type checkting to this JavaScript project.

ClojSharp

My Clojure interpreter in C#:

https://github.com/ajlopez/ClojSharp

I applied a surgical refactor: internal reimplementation of top level context to save internally clojure vars. In this way, the top level definitions are saved not as name/value but as named var/value. The rest of the context are simple name/value dictionaries (like the context created by the special form let).

SimpleScraper

I created a new JavaScript/Node.js package:

https://github.com/ajlopez/SimpleScraper

a simple web scraper in JavaScript/Node.js. The initial commits only process HTML in text, iterating over tag items. Light weight, no dependencies needed yet.

Others

I added minor changes to:

https://github.com/ajlopez/AjSharp
https://github.com/ajlopez/AjScript
https://github.com/ajlopez/RubySharp
https://github.com/ajlopez/RuScript

I worked on three non-public projects, too.

More fun is coming.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

January 15, 2014

End Of Iteration 2014w02

Filed under: .NET, Akka, C Sharp, Iteration, JavaScript, Lambda Calculus, NodeJs — ajlopez @ 6:58 pm

Previous Post
Next Post

A lot of work at the second iteration of the year:

More Code Generation with AjGenesis

I created

https://github.com/ajlopez/AjGenesisNode-Sinatra

with a simple Sinatra site generated using AjGenesis for Node. I should add the entity support (list, persistence, view, edit, new) but it was created in two hours. Nice experience adapting templates

Aktores

An Akka-like actor model implemented in C#. It was born on Sunday:

https://github.com/ajlopez/Aktores

I’m using TDD, as usual. My ideas are implemented using baby steps, make it works, make it right, and in the future, make it fast. I’m not concerned with performance yet, but to have all the pieces in place for local run. Then, I will add distributed processing. One of the key things is the message mailbox management. By now, I have only one by actor system, implemented using a concurrent queue. I planned to add a queue by actor, if specified at creation of the actor.

Scala in JavaScript

The project

https://github.com/ajlopez/ScaScript

An interpreter, not a “transpiler” to JavaScript. I want to do dog fooding of my SimpleGrammar project, and learn a bit about Scala language.

Lambda Calculus

Implemented in JavaScript, a Saturday code kata:

https://github.com/ajlopez/SimpleLambda

Next steps: add named functions.

DylanSharp

More work in my Dylan-like language implemented as an interpreter over C#:

https://github.com/ajlopez/DylanSharp

Others

I added minor functionality to ClojSharp (Clojure-like in C#) https://github.com/ajlopez/ClojSharp/commits/master. I worked on two non-public projects.

More fun is coming

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

September 23, 2013

End Of Iteration 2013w38

Filed under: .NET, C Sharp, JavaScript, NodeJs, Open Source Projects, PHP — ajlopez @ 10:34 am

Previous Post
Next Post

I started to prepare new talks, for October, November (PHP, ASP.NET MVC, Python, Smalltalk, Ruby).

PhpSamples

I have a new project:

https://github.com/ajlopez/PhpSamples

with simple PHP pages, and one server with interaction with Node:

PageJs

I have a simple compiler for PHP to JavaScript

https://github.com/ajlopez/PageJs

A running page using Node.js

SimpleGrammar

The parser for PageJs is based on SimpleGrammar

https://github.com/ajlopez/SimpleGrammar

I published version 0.0.2, with some internal refactoring. It was very easy to extend PageJs parser with new expressions and commands. Good dog fooding!

Others

SimpleProlog: parse queries and rules.
AjTalkJs: better compilation of variables.
RubySharp: new class diagram to be used in a post.
SharpMongo: count() in collections
SimpleLisp: refactor tests to use simpleunit
SharpStorm: adding IBolt

I worked on two non-public projects, too.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

August 18, 2013

TDD Kata (7): Manage your Energy

Previous Post

This is a problem that I found in my Google Code Jam. This time, it is a problem where we should put a lot of neuron work in the resolution of algorithm. Apparently, there is no obvious solution. The problem is:

https://code.google.com/codejam/contest/2418487/dashboard#s=p1

You can check my solution at:

https://github.com/ajlopez/TddRocks/tree/master/Energy

And my commit history at:

https://github.com/ajlopez/TddRocks/commits/master/Energy

I was with few left time, so I only wrote some tests, and run the Google initial example. But I could not solve the “small set”. Some days ago, I tried again, but the result I got is not the correct, according Google.

So, some day I could take the problem again. It should be tricky how to decide the energy to put on each activity, knowing the future.

Let’s got, try to solve it!

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

August 4, 2013

New Month’s Resolutions: August 2013

Time to review my July’s resolutions:

- Update Memolap [complete] see repo
- Update GrammGen [complete] see repo
- Update SimpleGrammar [complete] see repo
- Prepare a talk: Intro to Smalltalk [complete] see talk
- Start PHP compiler to JavaScript [complete] see repo
- Write PHP example with Node.js [pending]
- Update AjLispJs [[pending]
- Create a web site sample using AjLisp and Node.js [pending]

Instead of updating AjLispJs, I started another project:

- Start SimpleLisp, Lisp compiler to JavaScript [complete] see repo

Additionally, I worked on:

- Start SimpleContext, associate arbitrary data to simple JavaScript objects [complete] see repo
- Start SimpleProlog, Prolog language interpreter in JavaScript/Node.js [complete] see repo
- First version of KodeTokenizer [complete] see repo
- First version of KodeMutator [complete] see repo
- Publish Obops on Nuget [complete] see repo
- Publish my first Smalltalk samples [complete] see repo
- Create and pubish first version of Plagre, programming language recognizer [complete] see repo see demo
- Updated my TDD Rocks samples [complete] see repo
- Start SharpBase C# in-memory database [complete] see repo
- Start AjForce, applications in Node.js a la Force.com [complete] see repo
- Start OStore, in-memory JavaScript object store [complete] see repo
- Added Rack samples to my Learning Ruby [complete] see repo
- Write SimpleMule, simple Mule-like in JavaScript/Node.js [complete] see repo

Also, I published Google hangouts:

- TDD Rocks (1) Playing with Ruby
- TDD Rocks! (2) OStore with JavaScript/Node.js
- Exploring Smalltalk (1) (Spanish)
- TDD Rocks! (3) SharpBase in C#
- TDD Rocks! (4) SharpBase in C#

My new month’s resolutions, August 2013:

- Update SimpleProlog
- Update Mass
- Update AjTalkJs
- Update AjTalk
- Update SimpleLisp
- SimpleLisp web server sample
- New Google Hangout using Ruby and TDD
- New Google Hangout using C# and TDD

Lot of fun is coming ;-)

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
@ajlopez

« Newer PostsOlder Posts »

The Shocking Blue Green Theme. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 65 other followers