30 karma · joined January 29, 2012
"If a language is useful, you will want to generate it by program"
well said
Originally, the language started out quite different but I can now see why SPECS looks the way it does, I do not agree with everything they did and my effort these days is towards making it simpler and smaller but there's some convergent evolution indeed.
Dealing with the preprocessor is a lost cause, so I just don't, the idea at the moment is to let the preprocessor do its thing and pipe the output into ctags (and if a better ctags comes out in the future it will be trivial to put that in instead), the result is not 100% perfect but is good enough to capture most of the declarations present in the included headers and make them visible to this language.
If a library absolutely requires preprocessor macros to be useable, someone will have to make equivalent hygienic macros in this language but at least you won't have to make a huge wrapper for everything.
The grammar is completely regular, and the syntax maps 1:1 with the ast in memory, I can generate one from the other idempotently.
The main reason I am doing this is that I wanted a language that is easy to build tooling for (including of course code transformations) while being compatible with existing C++ libraries out there.
This kind of articles give me hope there might actually be demand for my crazy thing once it grows up.
(it will be foss of course but nothing is published yet)
It is indeed expensive but salaries can change wildly depending on your position.
I think I could afford to go out and eat out but I decided not to. This way I save money to bootstrap my own thing afterwards and I can find some free time to teach myself the skills I will need to do so.
The procedure to start a venture depends on the canton, expect to put in at least 10k to start, plus whatever the notarial fees will be. I do not think I will be incorporating here.
Time tracking makes sense for freelancers and other people who bill by the hour but personally I tried rescuetime & co. and I do not see the point in knowing how long I was on facebook or how long I spent editing a particular file.
Milestones require manual input but I find that information much more relevant.
Some ideas, you can do very nice things through bash autocompletion, for example:
- immediate jumping between timelines (I have hundreds, by topic-project-task and so on)
$ tau jump proj tau<TAB><TAB>
/projects/taulog
/projects/taulog/android
/projects/taulog/appengine
..and so on..
- autosuggest for todo lists: $ tau done<TAB><TAB>
[ 1] setup JTAG probes
[ 2] write script to control probe
..and so on..
And after you use this for a while you realize it can do more than manage log messages and todo lists, the same interaction can be used to quickly access bookmarks, reference material and local paths you often have to `cd` into :)- todos: for the immediate future
- goals: for longer term objectives
- ideas: for spontaneous 'eureka' moments
- gotos: related bookmarks and local folders
Whenever I'm done with an item, it goes from the list into the task timeline where I journal all other progress.
I manage them all with a tool I wrote myself, called tau (shameless plug, http://signup.tau.la)
- Study scientific papers by deconstructing them through a wiki-like interface.
- Filtering news feeds, automatically removing stories and tweets I don't care about.
- Keeping an updated journal for each of my projects in the fastest and least intrusive way.
- Learning languages by cutting and pasting single expressions from podcasts into a personal audio library.
- Aggregating my soundcloud, beatport, bandcamp, youtube and shoutcast 'likes' into a single cloud playlist.