HN user

ddfreyne

124 karma
Posts1
Comments26
View on HN

This appears to use the theoretical schedule, rather than real-time information. I live next to a busy tram line, and what I see through the window does not match what the site shows.

I created a register-based VM named RCPU, for educational purposes. You can find it at https://github.com/ddfreyne/rcpu. It has most of what you’d expect from a register-based VM, and even has video output (rcpu-assemble samples/video.rcs and then rcpu-emulate the resulting file with --video).

I intend to write up my findings, but haven’t gotten around to it yet. I do have slides for a talk for this project though: https://speakerdeck.com/ddfreyne/simulating-a-cpu-with-ruby

In case you couldn’t tell from the old-school theme, this web page hasn’t been updated since late 2008 (2008.11.28).

The analogy given in the article is pretty accurate. The Smalltalk environment is unique in that it allows very easy access to the libraries, the IDE and the language’s internals (including the compiler!). The Smalltalk debuggers are among the best ones I have ever used.

(I’m mostly speaking out of my experience with VisualWorks, a commercial Smalltalk implementation, but other implementations are similar.)

I would greatly recommend everyone to give Smalltalk a try. The IDEs are pretty ugly and cumbersome, but don’t let that put you off. Get a feeling of the minimalism of the programming language and the pure form of object orientation. Dig through the code of the standard library — it’s quite easy — and check out the implementations of TrueClass, FalseClass, BlockClosure etc.

Unfortunately, many parts of the Smalltalk IDEs are horribly outdated and make Smalltalk a very poor choice of environment to use for production code.

Smalltalk lives in its own little world, and the tools that you’d normally use during day-to-day development are integrated in the IDE, and there is virtually no possibility of using external tools. The text editors are pretty bad, and you can’t use vim or emacs or Sublime Text. The Smalltalk VCSes are particularly horrible. For version control, you need to use systems such as Monticello or Store, both of which make me cringe just thinking about them again.

I also feel that Smalltalk coders get locked in into their environment. Many Smalltalkers that I have met are quite unfamiliar with what is happening in the outside world. Most of them have never heard of git, for example (and quite a few did not know what Subversion was). When an interesting technology enters the Smalltalk world, people seem to rush to reimplement it in Smalltalk (yes, there is STON — Smalltalk Object Notation).

These were the main reasons why I quit my Smalltalk job. A sad decision, but one that was unavoidable in the long run.

Smalltalk is a nice language and has IDEs with some very nice features that I would love to see in other environments, but it is also severely lagging behind in many other areas. I would like the Smalltalk community to be more aware of what is happening outside and build bridges. Without that mindset, I feel Smalltalk will simply fade out completely.

Source: I used to be a professional Smalltalker for almost three years.

I admit I did fall into that trap once, long ago. I’m very aware of the consequences now.

The reason for writing the article, however, is because I have seen the same mindless behaviour with other people as well.

I believe it boils down to a matter of discipline.

If you say that you never randomly modify code in order to make it work (according to the tests), then that is great, and that is how every developer should work. However, my experience is that people who lack discipline (or face a looming deadline) tend to not take their time to properly reason about code and instead rely on the test suite to tell them whether code is right or not.

I have occasionally been tempted into the mindless code modifying that I described. That is in the past though!

More importantly, I have also seen this happen in professional environments. A very large test suite is very useful, but it is absolutely not a catch-all safety net.

I admit that the behavior is quite odd at first, but once you get used to it, it is really useful. It is the behavior you would expect in a desktop app — for example, you wouldn’t want iTunes to stop playing when you select a playlist, would you?

Codekit Is Awesome 14 years ago

Telling the browser to reload changed pages is a nice idea. I might steal that one for my static site compiler. :)

If I were implementing this, I would go for an implementation where my Criteria objects are immutable. To me, it seems that code like

    crit1 = Criteria.new.where(:name => 'Jeff')
    crit2 = crit1.where(:age => 19)
would result in two different criteria, which is not the case. “crit2 is the original criteria where age is 19” makes sense, but I would not expect that to update crit1.

I don’t mind mutability per se, but it needs to be clear what data is mutable and when it is mutated.

Hi, author of nanoc here. This morning I’ve been playing around with Stasis and it does look like a nice tool for building and maintaining simple sites. I like the controller-based approach!

Now, here’s a quick (and undoubtedly biased) comparison between Stasis and nanoc.

Stasis and nanoc serve a different audience. Stasis is simple, nanoc is powerful. If I want to quickly build a simple site, I might even use Stasis instead of nanoc… :)

nanoc, quite unlike Stasis, focuses on being powerful and flexible. Due to this, it is not as simple as other site generators. You can build any site you want with nanoc!

For Stasis to be more powerful, it would need to support metadata, custom filters and multiple representations… perhaps more… but then it would leave its original scope and people would say about Stasis that it is too complex. :)

There are a few more Ruby ones around. I have a list at [0] but even that one is outdated, as it does not include Ace or Stasis yet… and I’m not familiar enough with Python/Perl/JavaScript/etc to know the state of site generators there.

Writing site generators is easy and homegrown site generators will fit the author’s need best, so there you have the reason why there are so many. Mind you that quite a few are no longer actively maintained. For example, StaticMatic and Webby have recently both been discontinued (see [1] and [2]) and their authors recommend MiddleMan and nanoc, respectively.

[0] http://nanoc.stoneship.org/docs/1-introduction/#similar-proj...

[1] http://groups.google.com/group/staticmatic/browse_thread/thr...

[2] http://groups.google.com/group/webby-forum/browse_thread/thr...

Elementary OS 15 years ago

The address book and dictionary icons have a different perspective yet sit in the same dock. Ack!

When I wrote nanoc about two and a half years ago, webby, staticmatic, jekyll, … did not exist, and I was looking for a way to publish a web site on a VPS with very limited resources.

I didn’t find anything that fit my needs. There were only very few static site compilers back then, so I decided to write my own (yes, I realise this expression is way too common). Soon after I released v1.0 in april 2007, other static site generators started popping up: StaticMatic and webby had their initial release a few weeks later.

Yes, there indeed is a lot of duplication in the static site compilation world. On the “about” page on the nanoc site, I give a list of static site compilers written in Ruby. The list is likely incomplete, even though I try to keep it up-to-date as much as possible. It also only contains site compilers written in Ruby, and omits site compilers written in other languages. The list currently contains the following:

* Hobix

* Jekyll

* Middleman

* nanoc

* RakeWeb

* Rassmalog

* Rog

* Rote

* RubyFrontier

* StaticMatic

* StaticWeb

* Webby

* webgen

* Yurt CMS

* ZenWeb

The diversity in static site compilation tools is huge. Static site compilation newbies are likely to be overwhelmed, and this is not a good thing. Can we fix this, please?

About a year ago (I don’t recall the exact moment), I informally contacted Tim Pease, author of Webby, and asked whether he would be interested in combining our efforts and merge nanoc and Webby. He unfortunately had no interest in doing so at that time (I’m not sure why).

I believe that combining the individual developers’ efforts is the way to go here. Every static site compiler out there has its own strengths and weaknesses. If we want to get rid of those weaknesses and combine those strengths, these projects need to be merged and individual developers need to work together. There are three goals that can be achieved this way:

1. Combine the individual tools’ cool features.

2. Get rid of weaknesses by seeing how other developers approach the issue.

3. Reduce diversity and make it easier for newbies to jump in.

I have no plan of action describing how to approach this problem yet. I have little experience as project lead for open-source projects; few of my open-source projects have dedicated contributors. Given that the other static site compilation tools are one-man efforts as well, I suppose that their developers have little more experience than myself (apologies if I’m wrong).

So, if you are the developer of a site compilation tool and you’re inspired, do contact me (you can find my e-mail address at stoneship.org/about) and we’ll see how we can tackle this problem. Time for some brainstorming!