PicoC comes to the Prizm and other upcoming Utilities features

On 24th June last year, Version 1.4 of my Utilities add-in for the Casio Prizm calculators was released. The plan was for this to be final release of said software, with any further versions being bug-fixing only, and because of this, it was even more thoroughly tested than previous stable releases.

Ironically enough, an apparently innocent code optimization, introduced at a late development stage, introduced a bug in the Tasks functionality of the add-in, where a reference to a nonexistent memory object may happen when there are no tasks. At this point, I was more or less tired of the Casio Prizm platform, because of the many issues I have described throughout the years, and which the homebrew development community is yet to fully solve. However, as time went by, occasionally I’d look into my Prizm projects and I’d inevitably end up optimizing yet another function, or adding another small functionality.

This, plus the desire to iron out some edges, led to the discovery of another bug, this time in the calendar search function. After lengthy debugging sessions it turned out to be a buffer overflow issue that could happen when reading malformed calendar database entries. Fixes for these and other bugs, plus the functionality I added as I had time and will, made it clear that releasing a new version of Utilities was imperative. I often ask myself if continuing the development of such project is still worth it, since:

  1. I use my Prizm much, much less than I used to (finishing high school marked the end of the period in my life where graphic calculators were needed for education);
  2. The community of users of these calculators was never very big, and keeps on shrinking. Of the people who go on online communities dedicated to these calculators, some lost interest on the device, and others lost the device to a brick, for which nobody is able to pinpoint a certain cause. Taking into account the results of my survey so far, the intersection between the group of people who own a Prizm and the group of people who search for software for it, seems to be contain no more than 50 people;
  3. Of the people who remain in the communities, most never paid much attention to Utilities (due to feature creep, it’s likely that most people never understood its power) and the amount of users that still pay attention has reduced too (as well as their attention span for it).
Casio Prizm

Apparently, at least one hundred thousand of these devices are produced every month, but the amount of users who know they can run extra software in them, is in the order of the few dozens.

Despite all this, such questions are promptly answered by the fact that I still have fun developing it, even if nobody gets to use my work. And so development progresses, albeit at a much more relaxed rhythm, firstly because v1.4 is still very stable (at least, no one complained), and secondly because there is no roadmap to v1.5 nor planned release date. Heck, if I wanted to, I could not release it, and zero people would complain… but perhaps not after seeing what’s coming.

On the video below (without sound), I show a small subset of the new functionality for v1.5 (if it ever gets released, heh heh). The part that, in my opinion, is going to leave the mouths of some people open, starts at 3:30. It is an elaborate method to allow people to extend Utilities to a certain point, by having an easy way to use the big amount of utility functions used internally, as well as the nice GUI methods I developed. As if this wasn’t enough, one still gets access to most known syscalls (those that involve function pointers being the notable omission). What’s presented is, after all, the most powerful scripting engine ever made to run on the Prizm, and because of this one gets goodies like on-calculator development.

As hinted in the video, “PicoC script execution available on select builds only”. Starting with version 1.5 of Utilities, there will be two public builds made available: the normal one, with the now usual feature set plus the added features but without PicoC, and another with all that plus PicoC support enabled. The reason for this, is that such support increases the size of the add-in by at least 60 KiB, and as can be seen in the video above, the scripts have (almost) full reign on the machine, including read/write access to the whole address space (in the video, you can see a script changing the function key color, and while it’s not depicted, it also locks and unlocks Main Menu access). This means that a script can definitely brick a calculator on purpose, and do all the sorts of nasty (and good) things an add-in can do, except use syscalls with function pointers (the reason being, that PicoC doesn’t support them). It’s understandable that not everyone wants to have such a thing installed on the calculator, hence the limited builds.

PicoC is not especially fast, but definitely fast enough for many applications. It is also riddled with bugs, and even things as simple as the scope of variables appear to have bugs. Adding the differences between PicoC and the C90 standard it aims to run, expecting to write C code with the same kind of ease (if it was ever easy, especially after using newer C standards or C++) as when using a fully featured compiler is certainly unrealistic. Still, I hope my PicoC port will constitute an interesting alternative to the never-finished LuaZM and to the Casio BASIC interpreter that comes with the OS.

Regarding the other changes seen on the video, there’s the rearrangement of menus on the home screen. The tools menu now hosts a balance manager, with support for multiple wallets, and it will also host a password generator. The old tools menu has been moved to the “Memory & System” menu on the F5 key.

That’s nice and all, but for when?

I don’t have an answer to that. With v1.5 I would like to include even more features than what I have added so far, namely a proper text editor. Such an editor is being developed by ProgrammerNerd / ComputerNerd, who, just like me, doesn’t always have much free time to work on such things. So I’m patiently waiting, and you should too. Meanwhile, feel free to ask any questions, request features (please be reasonable, and I don’t promise anything) or request development builds for a sneak peek.

90/90/0.001

Looks like >90% of the Internet users spend >90% of their WWW-using time on the same 0.001% of websites.

It’s no wonder why plans for a truly decentralized Web never seem to get much traction… how could them, in a time when users’ habits are truly centralized? In fact, I believe the main problem is on the way users use the Web, not the technology iself.
As for the Internet, it is already (comparatively) decentralized.

Do users always know what’s best for them? The past has proven that is not the case…

Prizm

That moment when Casio decided to call their fx-CG 10/20 series Prizm (with a Z) instead of Prism, they couldn’t imagine how much of a bad PR they had managed to avoid…

(I feel sorry for all pyramids and alikes out there…)

l.f.nu is down

…it will be back with a new domain, this time paid, and things will be done for real – I promise.
What happened was that the owner of the f.nu domain took over the subdomain l.f.nu and built his own URL shortener. I tried to negotiate merging l.f.nu with f.nu, but the other party didn’t reply in enough time, so the offer is closed.
This time, I’m doing things for real, with a paid domain. Doing things for real also means doing things for real profit, but don’t worry, I won’t mine your shorten URLs with ads – on this subject, things will keep as they were before: a toolbar with one ad which is forcibly enabled after the link has more than 250 hits.
Sorry for all inconvenience; again, like it was when 4.l.to became l.f.nu, all links will work, only the domain changes (just replace l.f.nu with the new domain). About the new domain, I’ll have to keep it as a secret until at least tomorrow…

I’m not dead…

Just to warn that, although I haven’t posted anything here recently, I’m not dead, nor is this blog. I just did not find anything worth blogging, recently. Any suggestions on what I can write about?

I’m alive!

I haven’t posted anything on this blog recently, but I’m still alive online and I check this blog every day for new comments or software updates. Simply, nothing that deserves a blog post has come to my attention recently, but more than that, is the fact that I’ve been very busy with school and will continue to be. Perhaps after mid-December I’ll have some more time to dedicate to my personal projects.

By the way, I managed to finish the change of the user interface of my URL shortener, 4.l.to, to Bootstrap. It looks really nice. How could I come up with time for this, if I say I have been very busy? Well, working 15 minutes per day on it, for the last days, plus spending an hour yesterday getting it all online. Tell me what you think of my work…

Being busy studying doesn’t mean I’m not online, as I open the browser and stay online, but idle, on sites like FreeVPS.us, Rockbox.org and Slashdot. This means you can still contact me using the cables (or the free wifi ha ha) at any time. Just don’t expect an immediate reply 🙂 .

Chrome Web Store

Why do I have the impression that it is starting to be kind of a website-promoting website for the web 2.0?

You see, a bare web service that wouldn’t get otherwise very well known, not very rarely gets hundreds of users once it publishes an app for that service on the Chrome Web Store. Even if the app is nothing more than a link to the website of the web service, it doesn’t matter: as long is the web service is of good quality, it’ll get popular amongst Google Chrome users in a way it would never be as a normal website showing up on Google results.

If these guys doing website optimizations to get more visits aren’t still using the Chrome Web Store as a way to promote websites, they should. At the end, nowadays calling “app” to a website acts as an huge upgrade to that website.

Distinguish between Linux and Windows users and fanbois

Those who say Windows is the best either never tried anything else than Windows or are Windows (or MS) fanbois

Those who say Linux is best for some things and Windows is better for another things have a farily good knowledge and perhaps experience on both systems and moderatedly use each when needed.

Those who say Linux is best and MS and/or Windows is everything of bad that they can invent, are Linux fanbois geeks.

Those who invent defects on Linux (or a distro) which exist no more or are now easily supressed have either never tried Linux, or tried Linux many years ago and had a bad experience.

Those who invent defects on Windows either don’t use Windows for a long time because they have been using Linux for that time.

Someone that doesn’t meet any of the follwing conditions, is a pacific user. :)

Apple and MacOS users are excluded from this post as Apple fanbois are of different matter, something to write on another post.

Apache, nginx or other web server?

Apache is a long well-known web server software, the most used in web servers around the internet. I met nginx when I started looking into getting free low-end VPS for my websites and scripts.

Basically, what I have learned is that most scripts won’t work well even if you convert the .htaccess’es into nginx config files. In my opinion, it’s simply not worth to get a VPS with less than 256MB of dedicated RAM, because on fewer RAM you won’t be able to run Apache properly (most of the times, Apache will just fill up the RAM leaving you locked out of your VPS because you can’t SSH as Linux doesn’t have enough free RAM to start a new shell session.

On servers with few RAM (512MB, for example) you can still run Apache and have some RAM free. If you have MySQL installed, the trick to reduce RAM consists on disabling inno-db and other database engines you don’t need. Apache can also be configured to waste less RAM on low traffic websites – you can reduce the number of max clients and connections, but this can make the site unresponsive (slow) if you get many hits at a time.

In conclusion, if you’re sure you can setup your script with nginx and cgi-php (or other lightweight webserver, e.g. lighthttpd), go for it. I have nothing against nginx, I only wish developers supported nginx (and lighthttpd and etc.) more instead of the already much explored (and at times exploited) Apache.

First spam post

Just a quick post to inform the (few) readers of this blog that I got the first spam comment. It was on the Lua Scripts for Rockbox page, and the “Spam” link right below the comment on the “Recent Comments” widget on my WordPress Dashboard fit just perfectly in this case 🙂

Now lets hope this doesn’t continue or I’ll have to go about more agressive antispam measures, and starting to fill the list of banned IPs of the server.

EDIT: I got another Spam post, but this one looked more like some stupid guy trying to be funny typing random characters into the comment box. And it contained a random URL which I didn’t care about checking where it lead. I’ll try to keep this post updated with more news of Spam on this blog… while it’s humanly possible.

EDIT2: I enabled Akismet after getting another trash comment 🙂 Let’s see how it goes.