[Counts to three before he opens his eyes and looks to see who’s left in the room…]
I started this little ‘project’ about two days ago and I already have an app which does quite a bit more than say ‘Hello world’ and it’s running on my old Android phone which has become my unofficial test bed. I also have it running on my tablet but since I use that almost constantly, it’s not as easy to keep it plugged into the PC and it won’t be until my new ultra-cheap-but-long micro-usb cables arrive from China.
Following the cast, the contract’s reflexivity, symmetry, and transitivity requirements are met by only allowing Points to be compared with other Points, via expression p.x == x && p.y == y.
Sometimes clever folk need somebody a lot less clever to put a hand on their shoulder when they get excited and ask them to rephrase that for people without a doctorate in abstract logic. Of course, the fault might well be my own. I’m a terrible student since I never attempt the examples they write in the course of these books. I always want to get to the meat of the business. I get frustrated having to read five pages about how to change the colour of text, which is the sort of thing I tend to figure out quite easily. More difficult for me was learning how to open new screens from the main screen. It was obvious in the end but it was the kind of top down structural approach to software development I really needed at the beginning. Had they said that an Android app is made up of many ‘Activities’ which are essentially concurrent and each declared in their own file, I might have had a better idea of what I was doing.
I don’t think learning things my way is necessarily bad. It forces me to have an active knowledge of real programming rather than the kind of passive knowledge you get by simply reading other people’s code. I believe writing is best learnt by writing and speaking a language best learnt by speaking a language. Programming is best learnt by getting the hardware to do what you want it to do. My app might not break any records and surprise people with its originality but it will do what I want it to do and that’s a better achievement than simply producing the same code as you could have downloaded from your tutor’s website.
At this point, my ‘App’ is like some kind of Texas Chainsaw hillbilly with pieces chopped from different places and stitched together. Yet it actually does what I wanted and I’m delighted it works. I only have one functioning button, a menu system which deletes the database and then restores it by reading in data from text files, and my Settings page only reports things about the database just to assure me that the database actually exists. I wasted three hours yesterday trying to figure out why my database wasn’t being created only to later discover that my database existed and was fully populated with fake data but my ‘checkDbExists’ routine was flawed.
Christ… Does anybody find this kind of rambling blog post interesting? I’m not bright enough to actually write a meaning post about Android programming but I’m too dumb to realise I should just shut up and get back to it.
Today I’d like to figure out how to open a file selection dialog to import and export data. Later, I’d like to allow them to modify records and then start extending the functionality to the actually things I’ll hopefully find useful.