Discussion:
[Tutor] Design question: Web-based vs. desktop-based vs. desktop-based with data backed up to web server with a tablet thrown in for all cases?
boB Stepp
2015-07-18 03:20:56 UTC
Permalink
My wife (a Montessori teacher of 7th through 9th grades) is trying to
coerce me to create some helpful software for her classroom. She has
lots of things she *wants*: Some involve only her and her record
keeping. Some will involve both her and students. Some would
additionally involve parents. With the parents it would have to be
web-based. For students, some software would be used only in their
classroom. Others would be used both in and outside the classroom.
In my wife's case, she would want to be able to access the software
and its data either at school or at home. Currently she does most of
her work on a laptop that she carries back and forth between home and
school. Anything involving student records would have to be kept
secure.

For her most urgent project to be done before school starts in 5 weeks
(!), she wants me to enable her to assess her students' work as she
wanders about the classroom using this Samsung Slate tablet the school
has given her to use. This device would be okay for stuff like
checking check boxes, navigating menus, radio buttons, drop-down list
boxes, etc., but would be horrible for any type of manual data entry.
So she would need to do the latter at her laptop, though she might do
limited data entry on the tablet.

I do own server space and a domain name that I have never used, but
should be adequate for my wife's needs. The school has a wireless
network that allows Internet access, which is usually (but not
always!) reliable.

The main question: How do I best handle the storage and access of my
wife's classroom data in these three different scenarios (wife's
access only; wife and student's access; wife's, student's and
parent's), and have each party to have access to relevant software I
create?

Using this *most urgent* project as a starting example, this student
assessment software would involve only my wife, the tablet and her
laptop. Both the laptop and the tablet would have to both be able to
run the software and have synchronized data between the two devices.
If the student data resided only on these two devices, then protecting
the student data isn't as much of an issue as long as my wife controls
her physical devices. However, if the data were to reside on a server
then that would become a more important issue. It would obviously be
very important that data cannot be lost. I can easily imagine my wife
dropping and destroying the tablet, the tablet's hard drive crashing,
the laptop's crashing, etc. If the data were stored online, then
possible school wireless network outages would be a potential bad
problem.

My best thoughts at the moment are to:

1) Find a way to always keep the laptop and tablet synchronized.
2) Have both devices write a backup copy of the data to the server
whenever a change in the data occurs.
3) In case of wireless network failure, the software would realize
this and know that whenever connectivity is restored to write any data
that has changed in the interim.
4) The backup data on the server would have to be securely encrypted
against whatever hackers might try to to access or intercept the data.
(Hmm. What about the communications between the laptop and the
tablet?)

Is this a sensible way of approaching at least this one project? Of
course, I have not a clue as to how to do any of this (yet!).

As always, many thanks in advance!

P.S.: My wife has researched existing software and has found
everything lacking. She wants custom solutions to her custom needs.
Oh, joy. But very interesting!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-07-18 04:18:38 UTC
Permalink
I have a plug in usb keyboard that I can just plug into my tablet.
It works great for data entry. I don't know anything about windows
tablets though, this is working for android. You need a usb port
that is capable of being both a slave and a master. Most of them
can do this these days -- if you send me the model number of the tablet
I can look that up for you.
Post by boB Stepp
1) Find a way to always keep the laptop and tablet synchronized.
All the cloud storage services want to sell you something that
does this. So does Dropbox.
Post by boB Stepp
2) Have both devices write a backup copy of the data to the server
whenever a change in the data occurs.
This may be overkill. Plus it may not be what you want. You may
be happier with 'the server gets the new data whenever I push it
to there'. Or the cloud gets it then.
Post by boB Stepp
3) In case of wireless network failure, the software would realize
this and know that whenever connectivity is restored to write any data
that has changed in the interim.
4) The backup data on the server would have to be securely encrypted
against whatever hackers might try to to access or intercept the data.
(Hmm. What about the communications between the laptop and the
tablet?)
If wireless, yes, if you are plugging your tablet into your laptop
Post by boB Stepp
Is this a sensible way of approaching at least this one project? Of
course, I have not a clue as to how to do any of this (yet!).
As always, many thanks in advance!
P.S.: My wife has researched existing software and has found
everything lacking. She wants custom solutions to her custom needs.
Oh, joy. But very interesting!
--
boB
The idea is to use as much off the shelf technology to do what you
want, and not reinvent the wheel. Especially when it comes to
security issues that, worse case scenario, have all the parents
suing you for not keeping things that are required to be private
from being hacked.

Before there was cloud computing, and smartphones, we wrote a client
server app that handled the billing situation for the local energy
company -- plus all their power outages, service apps etc, etc, etc.
It took 4 of us nearly a year to get the permissions down right for
all possible cases.

Doing the same sort of thing for our mobile app using existing
cloud libraries took about 3 weeks. Only some of that speedup was
due to the fact that we knew what we were doing a lot better the
second time around, and we had really extensive unit tests from
the old way of doingf that we could slightly refactor and then
make sure they passed under trhe new regime.

You haven't picked yourself an easy one here ...

One warning -- the trick to high speed performance for such things is
to copy as little data as is needed from one device to another (and
then let the devices regenerate a lot of what they need from the
basic necessary set). But the trick for _developing_ and
debugging such things is to send more information, including a
bunch of handshaking things like 'I am trying to open the MongoDB
Database now. Ok, that worked, now I am adding new job tickets ...
and so on and so forth.

If you do not do things like that, the time will come when you sit
pointing at your server saying 'You aren't doing anything. Why aren't
you doing <whatever it is you want it to do>?" Utterly frustrating.
YOu need to build a verbose way into what you do so you can have your
server tell you what it thinks it ought to be doing, and then a
way to shut the server up when you go into production.

But I would go google for cloud services that have data synchronisation.
(Which is pretty much all of them, that being the point, after all).
You want to build your app out of some of these ready made parts, or
risk that your wife's students will all be in university before you are
done with your app.

Laura

_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Alan Gauld
2015-07-18 09:23:02 UTC
Permalink
Post by boB Stepp
My wife (a Montessori teacher
No idea what that is but I'll assume its pretty much
a regular type teacher...
Post by boB Stepp
For her most urgent project to be done before school starts in 5 weeks
For the *urgent* project I'd consider using Sqlite for the data and
store it on a cloud server. That will enable sync between devices,
provided they don't both make changes at once. Its not super secure
but it does provide some level of access control on the cloud and the
data isn't in a simple text file so can't be trivially read.

You can migrate to a bigger client/server solution later if needed
provided you build a data access API from the start. And the more
extensive security features need to be added later. Treat the 5 week
project as a semi-throwaway prototype learning experience.

Other than that Laura's advice is pretty much spot on.
Post by boB Stepp
I do own server space and a domain name that I have never used, but
should be adequate for my wife's needs.
What software will they allow you to run? The server owners restrictions
are likely to be a major factor in your choice
of solution. For example do they allow you to install a web
framework like Django? Or do you have to use Wordpress or
similar?

Not all web providers are equal. You may find you are better
off using something like Google or Amazon web services.

Finally, for a really modern feeling web app you are going to
have to use Javascript, possibly quite a lot of it. If you
don't already know it, it will be a steep learning curve, so
you might want to start reading now!
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-07-19 05:49:50 UTC
Permalink
Rather than worrying about technology, frameworks, peripherals,
and protocols you need to focus on the real problem. Have her
describe exactly what she'll do with it. Try to get her to put it
into context of what she does NOW without the software so that
you can compare. I'm 29 years old so I've been away from school
for a long time. I don't know what teachers are using computers
for these days, but I cannot imagine it being useful to walk
around the classroom with a tablet (if anything I don't think I'd
want my children's teachers having such a distraction). At least,
not so useful as to commission the development of custom
software. I'm also not familiar with what a Montessori teacher
does, but it sounds even less likely that custom software will be
useful since it sounds like the students' learning is much less
organized than in a traditional school.
The Montessori philosophy of teaching is quite non-traditional. Two
or more different grades of children are taught in the same classroom,
usually with just one teacher, who may or may not have any helpers.
My wife often does not have help, or, if she does, it has not been as
helpful as it might. She has 7th, 8th and 9th graders in her class.
This coming school year she will have approximately 20 students. At
any moment during the school day, all of the students are NOT doing
the same thing. Some may be working in small groups. Others will be
doing individual work, where it is quite likely that none of these
students are doing the same assignment. Each student often has an
individualized learning plan. The initial assessment project is quite
needful. In the past my wife has wandered about the classroom
assessing her students with either a clipboard in hand or trusting her
memory until she got back to her desk and able to write down her
assessment notes for each student. Note that students do not get
traditional grades. Instead, they have a detailed list of skills that
they are working towards mastery in. Her assessments will notate each
student's progress towards mastery in light of whatever assignments
they might be working on. When it comes time to interact with each
student's parents, my wife needs to combine all of this assessment
data into a report of the student's progress in each skill area to
share with the parents. This is quite burdensome to do entirely by
hand.

The Montessori method of teaching is most frequently associated with
children of age three up through sixth grade. There are relatively
few examples of junior high/high school Montessori programs and there
does not seem to be a good consensus of how to apply the Montessori
methods to secondary education. So the main reasons why my wife does
not have detailed requirements for what she would like me to program
is that she has been working out what is and is not appropriate on her
own. After several years of developing her program, she feels she is
at the point where software can be a real help for her. BTW, she is
very computer literate. She has done programming before when she was
a university student and sporadically since then. So she is well
aware of what is possible and what can be useful.

I have not given you a good idea of what a Montessori education is all
about. If you are curious I encourage you to do the usual online
searching.

In this thread, I kept it very general on purpose. I was probing this
community for their thoughts on two things: 1) Should I make the
software web-based or desktop-based? 2) What would be the best way of
handling the data involved, particularly the data that impinges on
student privacy concerns. As I said in the initial thread, some
software would be strictly for the teacher's use. Some would be used
by the students and the teacher with the potential that the students
might have to access that software in their homes (homework). And
finally in addition to the students and teachers, some things might be
desirable for the parents to be able to monitor their student's
progress from home.

And then to make things at least a little more concrete I gave a very
broad outline of the first project that she (perhaps foolishly ~(: >)
) hopes to have at the start of her school year. And I have been
given some great thoughts by this community to help me on my way!

I understand and appreciate your concerns. If the client was anyone
but my wife, I would not be attempting this for all of the excellent
reasons you gave. But Vonda is kinda the lone ranger here in what she
is trying to build, and I think I can give her some real help. And
from my perspective it is another opportunity to learn many cool new
things and push my limits. I never seem to ever find time to just
read and study a Python (or other programming-related) book from
beginning to end, but when I have a concrete project to do, then at
least I start learning *something* out of sheer necessity.

As things develop more concretely and I get puzzled and stumped, I
will post more detailed questions.

Thanks for your thoughts!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Steven D'Aprano
2015-07-19 06:27:13 UTC
Permalink
Post by boB Stepp
In this thread, I kept it very general on purpose. I was probing this
community for their thoughts on two things: 1) Should I make the
software web-based or desktop-based? 2) What would be the best way of
handling the data involved, particularly the data that impinges on
student privacy concerns.
Not to be a wet blanket, but this is way off-topic for this mailing
list. However, you're a regular in good standing, and we don't have a
strict rule about staying on-topic (such rules are tiresome and annoying
if they allow for no exceptions), so let's go with it.

I would start with the simplest thing that can work. With an initial
user-base of one person, especially one who is quite computer
literate, you don't have to worry about backwards compatibility and can
feel free to experiment and expand the software as needed.

So I would start with something that just runs on the local machine.
Since your missus intends to use a tablet, you may want to investigate
Kivy for your GUI needs.

http://kivy.org/

I'm not sure if it runs on Macs, but it should work on Android, Windows,
and Linux, and of course it is entire Python-based.

Once you have a proof-of-concept working for your one user, then you can
consider how to expand on it by moving the data to a server and possibly
giving access to others.

In the meantime, keep everything on the local machine. Take backups of
the data by exporting to some sort of regular file which can be zipped
up and copied onto a USB stick and locked in a safe. You might consider
an encrypted file system if the data is particularly sensitive. But
that's a separate issue from the application itself.

If you use SQLite for the data storage, it should have a simple "dump"
function that would let you export the database to a standard SQL dump
format, and reconstruct the database from said dump if needed. Otherwise
you would have to write your own export/import routines.

If you make the decision to provide multi-user access, then you have a
large number of problems to deal with:

- security of the database server;
- access to the database itself;
- what to do if the link between the app and the database goes down?
- user authentication and permissions (you don't want little Freddy
changing his grades, or accessing other people's records);

etc. Why deal with those things from Day One if you only have one user?
You don't even know if this application is going to be useful. Start
with a proof of concept to prove that it is worth the extra effort.
Perhaps your wife will decide that the application isn't useful at all,
or that it is useful, but it can remain a single person app and no
shared database is needed. But you won't know until you have something
to actually experiment with.
--
Steve
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Alan Gauld
2015-07-19 07:56:39 UTC
Permalink
Post by Steven D'Aprano
If you use SQLite for the data storage, it should have a simple "dump"
function that would let you export the database to a standard SQL dump
format, and reconstruct the database from said dump if needed. Otherwise
you would have to write your own export/import routines.
SQLite is a single file database so you shouldn't need to dump/load it.
Just save the file. That's why I suggested Dropbox or similar since you
get the benefit of a local copy with automated backup to the cloud.

SQLIte provides no login/user access control but the Cloud will provide
visibility control so only approved users can access the
file. (Of course they can copy it anywhere they want so its not
as good as full server based access but for a few users/devices
it should be sufficient)
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-07-19 09:43:13 UTC
Permalink
Post by Steven D'Aprano
I'm not sure if it runs on Macs, but it should work on Android, Windows,
and Linux, and of course it is entire Python-based.
Python 2.7 only on for MacOSX. Python 3 is coming very soon.

Laura

_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Laura Creighton
2015-07-19 22:28:55 UTC
Permalink
Post by Laura Creighton
Post by Steven D'Aprano
I'm not sure if it runs on Macs, but it should work on Android, Windows,
and Linux, and of course it is entire Python-based.
Python 2.7 only on for MacOSX. Python 3 is coming very soon.
Laura
Hi all,
I can't help thinking we're trying to reinvent the wheel here. I would be
quite surprised if Trello couldn't help in this situation. (I do not work
for Trello.com)
Long story short, it's kanban in the cloud and can be adapted for just
about anything. It's free, too! My son's multi-age, non-traditional
school -kids, teachers, and parents alike- use it to track student projects
& goals, plan school events, fundraising, wish lists, supplies lists, and
more. It's easy to use, share, and collaborate. It works in the browser
or you can use their mobile apps. You can set up checklists, attach images
and files, work with due dates, comment and activity streams, etc. Plus,
using their RESTful API, you could whip up some slick automation and
reporting (using Python, of course!)
I'll be glad to help you and your wife off-list if you'd like some
pointers.
Good luck!
Dave
boB: this was precisely the sort of solution 'already existing in the
cloud' I was hoping you could find. I just didn't know about this one.
Very cool. Thank you Dave.

Laura

_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-07-19 23:15:27 UTC
Permalink
Post by Laura Creighton
Post by Laura Creighton
Post by Steven D'Aprano
I'm not sure if it runs on Macs, but it should work on Android, Windows,
and Linux, and of course it is entire Python-based.
Python 2.7 only on for MacOSX. Python 3 is coming very soon.
Laura
Hi all,
I can't help thinking we're trying to reinvent the wheel here. I would be
quite surprised if Trello couldn't help in this situation. (I do not work
for Trello.com)
Long story short, it's kanban in the cloud and can be adapted for just
about anything. It's free, too! My son's multi-age, non-traditional
school -kids, teachers, and parents alike- use it to track student projects
& goals, plan school events, fundraising, wish lists, supplies lists, and
more. It's easy to use, share, and collaborate. It works in the browser
or you can use their mobile apps. You can set up checklists, attach images
and files, work with due dates, comment and activity streams, etc. Plus,
using their RESTful API, you could whip up some slick automation and
reporting (using Python, of course!)
I'll be glad to help you and your wife off-list if you'd like some
pointers.
Good luck!
Dave
boB: this was precisely the sort of solution 'already existing in the
cloud' I was hoping you could find. I just didn't know about this one.
Very cool. Thank you Dave.
I will forward this to Vonda and see what she thinks. But from what
she has described thus far, I don't think it will give her the type of
interface she is hoping to get, or make it easy to organize her
information in the way she seems to want. However, it looks like it
might do some stuff that I have wanted done on my phone that I used to
do on a Palm once upon a time. I will have to glance at the API docs
and see what else we might do with it.

Thanks!
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-07-20 01:23:07 UTC
Permalink
Post by Steven D'Aprano
Post by boB Stepp
In this thread, I kept it very general on purpose. I was probing this
community for their thoughts on two things: 1) Should I make the
software web-based or desktop-based? 2) What would be the best way of
handling the data involved, particularly the data that impinges on
student privacy concerns.
Not to be a wet blanket, but this is way off-topic for this mailing
list. However, you're a regular in good standing, and we don't have a
strict rule about staying on-topic (such rules are tiresome and annoying
if they allow for no exceptions), so let's go with it.
Thanks for the pass! But I actually thought this was on-topic. I am
preparing to write a Python application. I have some questions about
how to design it. Why would this be off-topic? I get it that program
design applies to all programming languages, but since this list is
targeted to people learning programming, I would think we would all
need help in these areas, too. Otherwise our Python programs would
not be very well written, however correct the Python syntax might be.

For the rest of your answer, I think that this is exactly how I should
approach this first program. And after having a discussion with Vonda
today, it is actually her intent--play with this project until it is
in a form that works in her workflow, and then expand upon it. Laura
suggested kivy, too, and I think it will best do what is needed for
the Slate tablet. Alan's and your suggestion to use SQLite seems a
good one as well for the prototype.

Thanks to everyone who responded to this thread. It has really
clarified my thinking on the best way to get productive as quickly as
possible. Now to find the energy after my regular work and the time
at home which is always being taken up by my two kids and Vonda!

Would it be off-putting later to ask specific questions about
implementing features of kivy on this list? I imagine that they would
tend to be basic questions that would probably apply to any GUI
development. But I'm sure there is a kivy list somewhere once I look
for it if I need to go there.

I took Laura's suggestion and asked my original questions that started
this thread on the tkinter list she suggested, but I have yet to
receive an response. One thing I cherish about this list is it is
both active and enthusiastic in providing help and direction, even if
that help is to suggest other avenues for help. Much better than
silence!

Thanks!
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
boB Stepp
2015-07-20 03:59:40 UTC
Permalink
Post by boB Stepp
Would it be off-putting later to ask specific questions about
implementing features of kivy on this list? I imagine that they would
tend to be basic questions that would probably apply to any GUI
development. But I'm sure there is a kivy list somewhere once I look
for it if I need to go there.
I guess I will answer this question myself: I have just been skimming
through the kivy docs tonight and they look to be quite good. Also, I
found their Google group and it looks to be quite active. So unless I
have a GUI question that seems to fit better here, I will direct my
kivy inquiries to their Google group.
--
boB
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Alan Gauld
2015-07-20 08:48:12 UTC
Permalink
Post by boB Stepp
Post by boB Stepp
implementing features of kivy on this list? I imagine that they would
...But I'm sure there is a kivy list somewhere
I guess I will answer this question myself: I have just been skimming
through the kivy docs tonight and they look to be quite good. Also, I
found their Google group and it looks to be quite active. So unless I
have a GUI question that seems to fit better here, I will direct my
kivy inquiries to their Google group.
right answer ;-)
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Loading...