Showing posts with label F#. Show all posts
Showing posts with label F#. Show all posts

Monday, November 30, 2009

A simple tool for Data Manipulation Projects…

When I am working on any kind of project that requires data manipulation at a database level. I normally have my teams create a simple data tracking UI in windows/of Linux that polls a table for changes and refreshes if any are detected.

This tool is sometimes extended to prepare and view data used in demo systems.

Since this is a commonly created tool, I am considering creating a more complex version of this utility for general consumption. I am also toying with the idea of attempting to use F# with either silver light or WPF to create the UI and UI logic.

Idea’s on features for this tool would be useful.

I will document initial very high level UI/UX design of the tool in later blog entries. As well as some key User stories.

Right now the high level bullet list features are:

  1. List of tables being tracked
  2. View of data in table
  3. Simple way to save query against table if looking for certain data – simple SQL where
  4. Simple way to show related data – 1 level deep only
  5. Simple mechanism to refresh data based on a duration say every 5 seconds
  6. Simple way to show if a table has received an update -  for now just total row count(*) changes are enough.
  7. Ability to point to any database server (initially just SQL server 2005+)
  8. Windows based UI (WPF first, then maybe a silver light version)

That’s all for now.

The use case for the tool is simple, when I apply logic to update a table that has no UI, I can use this tool to show/demonstrate changes to data.

DSL 101 – Domain Specific Languages

Today, I spent quite a while helping a friend to architect at high-level a DSL (Domain Specific Language).

Even though at the time he did not realize what he wanted to do was create a DSL. TO him all he needed was a way to do excel like formula expressions inside his code, but in a more English like syntax well as English as a chemical scientist can be I guess.

To this end, I thought it might be worthwhile explaining what a DSR is, since I will build a few of them for the project’s I mentioned that I am playing with for fun on this blog as I learn F#.

So just what is a DSL:

A domain-specific language is a programming/specification language customized to a particular problem domain.

This is quite an old concept as special purpose languages for modeling have always existed but recently have had a surge of emergence once again due to most newly created systems needing a more flexible way to extend logic used without the need of a programmer.

Creating a DSL and the tools required to support it can be worthwhile if the language allows a particular type of problem to be expressed more clearly than existing languages would allow. An example of this is the issue of applying simple logic used to route a document for approval in a document management system.

Another example of the new generation of DSL’s are products/tools like cucumber (from the Ruby world to do BDD), and in the F#/C# world we have tools that are DSL' based such as NaturalSpec (also a BDD tool this time for F#).

Tuesday, November 17, 2009

Currently reading and researching…

 

Expert F# (a few chapters left)
Fundamental F# (almost complete)
Programming F# (just started)
a few white papers on PEG parsing (not found any great ones yet... but am looking)
Researching advanced duplicate/data matching and data synchronization across multiple distributed data-sources in real time. (a very fun topic to say the least... the search and learning goes on.)

Researching running code inside SQL server 2005/2008 so that cross domain context management and applications can be accessed from inside a SQL Function or stored procedure as a natural extension to PL/SQL. Also looking at similar techniques for Oracle. (now this is something that is proving to be difficult...)