HNHacker News
TopNewBestAskShowJobs

stefano

1,479 karma · joined June 2, 2008

I've got a passion for learning and implementing programming languages, especially those in the Lisp family.

My github account: http://github.com/stefano

submissionscomments
stefano··on Electron 1.0 is here
PhoneGap/Cordova apps are slow. Very slow. And even a hello world app can weigh tens of MB. Debugging is painful compared to a native app.

The thing is, you won't notice how bad the situation actually is until your code base has grown. Performance can seem acceptable at first, when there's very little code to load and run. When your codebase inevitably grows, you'll start noticing slow start up times (> 10 seconds) and a laggy UI.

If you have to do any computationally intensive operation, you'll have to resort to cordova plugins because JS running in the UI thread is a non-starter.

stefano··on Electron 1.0 is here
The slower your application, the more battery it will consume to do the same task.

A JS+HTML application will be slower than a C++ application that uses the OS's native UI toolkit, and therefore will consume more battery.

stefano··on McLaren needs Compaq laptops with bespoke CA cards to maintain the remaining F1s
> but MSO’s team understands that they can only remain the most desirable modern supercars ever made if they work on keeping them functional, drivable and just as fast as they were back in 1992.

JavaScript frameworks could learn something from this. In the frontend web development world, backward compatibility and stability are severely underrated.

stefano··on Go 1.7 toolchain improvements
They rewrote the compiler from C to Go.
stefano··on Thousands of Threads and Blocking I/O (2008) [pdf]
Do you think 10 JVMs running 5k threads each would perform better? Assuming you have enough memory for such a setup...
stefano··on Web Application Development with Clojure
I think everything is saved in flat files in a directory structure.
stefano··on Ask HN: Freelancer? Seeking freelancer? (April 2012)
SEEKING WORK - Remote

- Full stack web development: PHP, Common Lisp, MySQL, Javascript, HTML/CSS, a bit of experience with Django and ASP MVC.

- iOS development.

- Desktop applications with C++ and Qt.

gmail: stefano.dissegna

github account: http://github.com/stefano

stefano··on Ask HN: Freelancer? Seeking freelancer? (February 2012)
SEEKING WORK - remote only

- Full stack web development (PHP, getting started with Django).

- I'm getting started with iOS development.

- I can also develop desktop applications with Qt.

gmail: stefano.dissegna

github account: http://github.com/stefano

stefano··on Ask HN: What's your experience with remote working? as employees/employers?
How did you get started? Since you're not local, I'm curious about how you found your first clients in the US.
stefano··on Haskell's Fixed Point Combinator
Fixed point operators are heavily used in abstract interpretation (https://secure.wikimedia.org/wikipedia/en/wiki/Abstract_inte...), which in turn is used in static analysis of programs for automatic bug detection or compiler optimizations. In certain situations it can also be used to formally prove the correctness of a program. Just to give a concrete example, this is a static analyzer based on abstract interpretation: http://www.astree.ens.fr/ . Polyspace (https://secure.wikimedia.org/wikipedia/en/wiki/Polyspace) is another static analysis tool that uses abstract interpretation.
stefano··on Poll: What do you think of Google+?
If possible, I'd like an invite too! stefano.dissegna on gmail.
stefano··on Greenspan Says Greece Default ‘Almost Certain,’ May Trigger U.S. Recession
It's just an hypothesis. It hasn't been downgraded yet.
stefano··on Dynamic languages are static languages
"Now I am fully aware that “the compiler can optimize this away”, at least in some cases, but to achieve this requires one of two things (apart from unreachable levels of ingenuity that can easily, and more profitably, be expressed by the programmer in the first place). Either you give up on modular development, and rely on whole program analysis (including all libraries, shared code, the works), or you introduce a static type system precisely for the purpose of recording inter-modular dependencies."

Or you can use a tracing jit. You monitor at runtime the actual values taken by the variables and produce type-specialized code.

stefano··on Quantifying The Value Of A College Degree (By Major)
The official resource for Italian universities: http://www.almalaurea.it/en/universita/occupazione/

Situation 1 year after graduation: http://www2.almalaurea.it/cgi-php/universita/statistiche/fra...

stefano··on The Fastest VM Bytecode Interpreter
The VB "interpreter" emits opcode for the .NET VM. This codes is then optimized and jitted. This means that both these interpreters run native code in the end, with the difference that the VB version can take advantage of the optimizations implemented by the .NET JIT.
stefano··on Cells - A dataflow extension to CLOS
The new homepage is here: https://github.com/kennytilton/cells/wiki
stefano··on Compilers Targetting Parrot
> Down to brass tacks: is this thing usable in its current state?

Experimentation and quick and dirty prototypes? Yes. Production code? No.

stefano··on Compilers Targetting Parrot
Threading just doesn't work (it's going to be rewritten from scratch). Sometimes there are segfaults within managed code and sometimes there are memory leaks. Sometimes an assertion in the VM fails, causing the program to halt with a stack trace. A few releases ago the compiler of Parrot's assembly language reported wrong line numbers in error messages, but this has been fixed.
stefano··on Compilers Targetting Parrot
I've used Parrot as a target for a language implementation. It supports a lot of stuff out of the box (even multimethods!) and it's quite easy to get started. It also provides tools to help you build a compiler, like a parser generator integrated with the rest of the system. The problem is that right now it is quite slow, slower than Perl or Python, and a bit buggy. It would be an ideal target platform for dynamic languages otherwise. I wouldn't use it for something needed in production at the moment.
stefano··on Poll: What are you investing time to learn?
LLVM, starting today.
stefano··on Make Lisp 15x faster than Python or 4x faster than Java
Actually, there is a solution that takes 0.52 seconds: http://www.spoj.pl/ranks/PRIME1/lang=LISP%20sbcl
stefano··on I'm turning into a Lisp snob
Probably Microsoft's F# is the modern SML with more chances to become mainstream and start that big revolution.
stefano··on Ask HN: Working on a Project to Learn
I found this to be a great introduction on how to write a compiler: http://www.cs.indiana.edu/~aghuloum/compilers-tutorial-2006-...

It starts with a compiler for a language that only accepts integers and gradually extends it to support complex expressions, functions, closures, conditionals etc. Since the compiler is written in scheme and the target language has a lispy syntax, it completely skips the parsing step (using scheme's builtin reader). I really enjoyed this fact, since I find parsing to be the most boring part of a compiler. The fun comes after ;)

Another interesting read is http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-...

My first language implementation was an interpreter (interpreters are easier to write, although compilers are more satisfing when you start to benchmark the speed of the generated programs) written in C for a dialect of lisp. I chose lisp because it was easier to parse. The program was converted in an AST (abstract syntax tree) that was then directly evaluated. At first, there was no GC, no support for direct recursion, no closures etc. I started with something small and easy to implement and then incrementally extended it.

Golden rule when writing your first language implementation: keep your language simple. Keep the implementation straightforward to understand, even if it means that it is slow. Don't bother adding support for debugging or meaningful error messages. You can add those things later after you've grasped better how an interpreter/compiler works.

stefano··on Ask HN: Working on a Project to Learn
Write an interpreter/compiler for your own little language. With your own garbage collector.
stefano··on [dead]
What if you serialize the soul too?
stefano··on Good Knuth, Bad Knuth
You could exploit the fact that you're sorting numbers and get a better time complexity:

http://en.wikipedia.org/wiki/Radix_sort

http://en.wikipedia.org/wiki/Bucket_sort

stefano··on Ask HN: Alternatives to New Mogul?
Could you share the reasons you decided not to use HN software?
stefano··on Going Back to PHP
CMUCL: http://www.cons.org/cmucl/
stefano··on Why You Do Not Use Lisp -- a survey
Just pick one of them randomly. Once you know enough about the language, you will be able to choose the implementation that better suits your needs.
stefano··on Ask HN: How did you find HN?
Googled lisp -> pg's essays -> arc forum -> HN.
← PreviousPage 7 of 9Next →