PND criticism


And stop the silly "If you can't be bothered to read and understand the PND spec, you shouldn't tinker".
If your eyes are still looking to me, i never said that. I would like to complete the sentence with "you should learn that."


And that's what Johnny wants to do, that's why he is asking questions how to do it to Craig.


If 3000 users will ask you about teaching system basics, that's not easy and i know that's a good reason for craig to make things easier. But that a user doesn't know system basics is neither the users nor craigs fault. That is normal and not a problem that needs fixing because it's not broken. We all started with that. Some of our knowledge of other systems can be used for new systems, some can not. Let me quote a friend: "i bought a mac because i would like to have less problems, but i got other problems only". If you try to make a system easier for use because of this, you have to develop a system which will be usable without any knowledge at all - which is impossible.

The point is that someone who doesn't do this every day also need to be able to understand how to do this.
Do you really think there are Johnnys out there who couldn't _understand_ this? They have trouble because they don't know it - not because they don't understand it.

Whilst we're at it, why not a windows-style installation application? Something that opens a nice window which allows you to select a pnd, select an SD card
That would be a nice idea and the easiest way to handle for a lot of Johnnys. There is a first draft of it how it could look like.

It may well be easy to create a bunch of folders, but you'd be amazed at the amount of students I get - and I teach Comp Sci - who simply has no idea of stuff like folder structure.
Then we are in need of something easier than folders, don't we? Let's re-invent this folder thing, it's far to complicated, an amazing amount of people could not handle it.</sarcasm>

In short: Those of you who believe that this is an easy problem to solve are very, very blind to the amount of info you have already internalized.
And the lack of this knowledge will make anyone blind for the upcoming troubles the "easy" solution will generate.


By re-inventing the pnd system you will encounter the same troubles like before and will find out that zip is not good for big files on the pandora. Craig is calling the PND system "a bit over engineered" and may be he thought the same about the repo specs, but it is just evolved beyond the problems that the conecpt carries within. By refusing to use the repo specs and doing his own thing and his wish to use zip instead of pnd he proved that he don't want to learn. Johnny wants to learn - Advantage Johnny.
 
pnd format _is_ a little goofy, but we did handle a lot of odd little things everyone tends to forget. (we also developed it quickly and during a time when the firmware proper and the kernel were very much in flux, with random drivers not working or unstable, etc. Heck, I couldnt' even write to an SD more than a couple tiems without it going corrupted due to an SD bug.. I was reflashing 5 times a night or more during the initial libpnd development ;)


But examples people forget.. although edge-cases, they still may happen -- pandora is a fully multiuser system; you coudl be working it from the keyboard, while someone logs in from remote using the network, to do things; say your'e running a webserver on there, or using it as a remote console (several of us do .. log in from work, to fiddle a bit or use it as a low power shell machine.. no joke!); the same pnd may be run multiple times, even by multiple users -- say the pnd is a word processor, or IRC client, or something.. heck, even two game clients; what if two peopel are runing the same pnd at once, or more to point -- if one person is running the same opnd multiple times -- like a picture viewer, say.


So we had to build in smarts to handle one or more people running one or more pnds (even the same one) at once; is that the sort of thing anyone else thinks about? Probably not .. but as people building a new system, we ahd to try to handel all these oddball cases, so that weird stuff didnt' blow up down the road :)


Its called thinking ahead.. not over engineering. (Over engineering is when the cost to build a given quality far exceeds the needed quality.. like making spoons out of gold. Or making a San Franciso bridge to cross a 2 foot creek. This isn't like that -- pnd doesn't load anythign it doesn't need to; it just makes all the usual operational cases easy, defaulting to correct in oddball cases.


Its not ideal -- we didn't know how the system would poay out or how peopel would use it -- but given the restriction and requirements we had, it works; we called it "1.0" -- a good start, and ready for changes; built in is the assumption some or most of it will change, but it can change under the hood, so the user won't notice.


.zip inside the pnd woudl work just peachy, except blowing up all the RAM; but its certainly _doable_, especially someday if drivers improve.


If you doubl click a zip, without a zaip handler installed, youer OS doesn't know what to do with it; pnd is like that -- its not all that different (to the user) to zip or .7z or anything else .. its just most systems already know how to open a zip.


jeff
 
Okay, I got the first version of an interface working nicely.


I created a PND, it got detected by the Pandora nicely (with Icon and PXML data), but now I am running into a wall.


The problem is Windows does not know the "executable" flag (well it kind of knows it, but in another way and not as easily accessible), which sadly is mandatory for the binary file of the program(s) in the PND.


My question now is, what would be the best way to set this flag, or rather how do I get this flag set on a file in a SquashFS archive, using Delphi on Windows.


Currently I am letting the user drop files and folders onto a tree view, which I then copy to a temporary folder on a button click and call mksquashfs.exe on that folder (and append the pxml and icon afterwards).


I discussed two methods with some guys on IRC:


Windows ACL - which apparently does support some kind of "executable" flag, which also seems to transfer to Linux - I have not been able to get this to work so far, any help is apprecitated (I have found this, but no real idea on how to use it or rather what the flags needed are).


Calling chmod through cygwin - Having never worked with cygwin before I don't really know how to integrate this into my program.


Any help (keep in mind it has to integrate into a Delphi program) is greatly appreciated.
 
Awfulyl super Windows-specific, so its been a million years sincve I've had to look :)


You coudl shell out and run 'attrib' on it? attribn is like chmod, but for Windows.


Given windows (ntfs) may not have execute (at all? or just not shown?) maybe Attrib wont' honor it..


jeff
 
Awfulyl super Windows-specific, so its been a million years sincve I've had to look :)


You coudl shell out and run 'attrib' on it? attribn is like chmod, but for Windows.


Given windows (ntfs) may not have execute (at all? or just not shown?) maybe Attrib wont' honor it..


jeff

No, normal file attributes sadly don't support that flag on Windows. (afaik)
 
Okay it seems like I got it working using the cygwin chmod (which means I have to ship a lot of dlls though).


If there is a better way let me know.


Program needs some tidying up and some polish, then I will release a first beta and see what I can do about a Linux port (should be way more straightforward in most cases I guess ;) ).
 
Last edited by a moderator:
Oh hey, I think I have a good idea of how to use ZIPs. Decompress them. On first run, pnd_run notes that it is a ZIP compressed PND, pops up a dialog saying something like "Preparing PND for first run, this may take a minute" and then simply decompresses it to a directory. The ZIP PND is then deleted, moved, renamed, flagged, whatever it takes to indicate that it should not be used anymore, and the directory becomes the new location. pnd_run can execute a directory, or at least it is supposed to be able to.


This solves Craig's "anyone can create a PND" requirement without slowing down execution through lookups or wasted memory while leaving the more knowledgeable users that aren't afraid to take the extra few minutes to learn about SquashFS free to use the superior format.


Thoughts or criticism?
 
Last edited by a moderator:
^ I didn't want to take part in this thread, but I do have a thought on the above. That being: Such zip-PNDs will have to come with a note about how much space they'll take up when uncompressed, because I can imagine scenarios where users will download zip-PNDs which will fit on their SD Card or even the NAND, but then when they've been uncompressed, they won't, which with some filesystems or setups I'm guessing might possibly cause problems (I think with the NAND scenario it will likely fill all of the available space, and then prevent the unit from booting - am I wrong here?).


I don't know how to word it without making it sound like some sort of fringe-case, but I suspect that that could happen more than one might expect.


That aside, it sounds reasonable to me. :p
 
Last edited by a moderator:
Uncompressing .. Interesting; we'd thought of uncompressing all types long ago during brainstorming but once we got the mounting from file going dropped it


Its really not hard to add an unpacker in there, wih caveats of course


Wonder if craig would dig that
 
http://repo.openpandora.org/?page=detail&app=PND_utils contain a script called pnd_assoc which do let you associate pnd with a filetype. read the description for instructions.

Oh, this is awesome, didn't know it, thanks a lot!


With these scripts I can easily find out how associations work - and integrating that into libpnd shouldn't be too much work then :)
I put gedit in the NAND to have it be able to associate. Maybe I won't have to do that soon?
 
I bought an android phone recently. Shortly after I came up with a question "How can I set up my own file as a ringtone". There is no word about it in attached documentation so i referred to google. And guess what I've found - I have to create folder "ringtones" on my SD card. Same goes for sms notifications and alarms.


It seems PNDs' user-friendliness is ok when compared to other devices.
 
Back
Top