If you want to peek into the future then have a look at Draw.io running on a Chromebook. I think this is what Google has in mind for ChromeOS.
In the context of ChromeOS, Draw.io is a true 'app', in contrast to some of the "apps" in the Chrome Store that are basically bookmarks for websites. What you're seeing in this screenshot is my screen running the HTML5 based Draw.io app (BTW to the right of it I have the 60 minutes app). This is a web app running as a first-class citizen on a web OS.
Stay tuned, I suspect there's more where this came from.
The Blog formerly known as "Flight of the Pigeon". A lot of Web, Plone and Python, with other occasional topics such as education and running.
Showing posts with label web. Show all posts
Showing posts with label web. Show all posts
Thursday, March 14, 2013
Thursday, February 28, 2013
What Designers Need to Know about Web (Presentation at Feb 2013 Jamaica Design Association)
Yesterday I presented at the February meeting of the Jamaica Design Association. I'm thankful to +Roger Davis for allowing me the privilege. I was pleased to realize how many persons there had a background or interest in web/programming. At least one third of the room self-identified as web developers/designers.
I sat near +Gebre Wallace who identified himself as an entrepreneur (I know him to be a talented programmer), his company name is "Artuvic Solutions", the company will focus on delivering solutions through problem solving (especially programming) (my words).
Neil A. Buckle, (http://neilabuckle.daportfolio.com) Graphic Designer/Illustrator showcased some of his work. He really has a knack for integrating his illustration skills into his logo designs, and it was clear that he does significant background research around his designs. I've included some of his work below.


He discussed how he deals with clients the most quotable moment was when he spoke about the cliche client that wants a quick logo or letterhead (usually for free): "It's only going to take you five minutes", response "It don't tek me any time because I've been working on this for the past 20 years".
+Howard Forte (http://facebook.com/howard.forte) shared some of his web design work, persons were very vocal about what they liked and didn't like about his work. If you plan to present at the JDA make sure that you have a strong constitution. It's likely that you will be critiqued, but it will be to your benefit. By the end of the presentation they had him on the backfoot. I spoke with him after the meeting, he actually expected harsher criticism :). During the presentation he shared his process which included the use of high fidelity mockups rather than rough wireframes, it feels to me like he's on the learning curve as far as design is concerned but has a good handle on the web technologies, I'm looking forward to seeing what he produces in the next few years.
Neil A. Buckle, (http://neilabuckle.daportfolio.com) Graphic Designer/Illustrator showcased some of his work. He really has a knack for integrating his illustration skills into his logo designs, and it was clear that he does significant background research around his designs. I've included some of his work below.
He discussed how he deals with clients the most quotable moment was when he spoke about the cliche client that wants a quick logo or letterhead (usually for free): "It's only going to take you five minutes", response "It don't tek me any time because I've been working on this for the past 20 years".
+Howard Forte (http://facebook.com/howard.forte) shared some of his web design work, persons were very vocal about what they liked and didn't like about his work. If you plan to present at the JDA make sure that you have a strong constitution. It's likely that you will be critiqued, but it will be to your benefit. By the end of the presentation they had him on the backfoot. I spoke with him after the meeting, he actually expected harsher criticism :). During the presentation he shared his process which included the use of high fidelity mockups rather than rough wireframes, it feels to me like he's on the learning curve as far as design is concerned but has a good handle on the web technologies, I'm looking forward to seeing what he produces in the next few years.
My presentation focused on raising awareness of modern web concepts, I wanted to keep people in the loop about what are the current trends and practices.
Here's my presentation:
Nanook
The meeting was held at Nanook on Burlington Avenue. Joan Webley of Nanook shared with us about their business. Nanook is a co-working space, with many additional support services, aimed at creatives. It started out servicing music and film persons but is now opening up to designers. For at least the next 6 months Nanook will act as the virtual headquarters for the Jamaica Design Association. Their services include wifi, meeting rooms and physical office space. They also have a cafe and vegetarian restaurant. She also mentioned a potential arrangement that offer members of the JDA a huge discount for use of their facilities.The Jamaica Design Association
You can find out more about the JDA at their facebook page.Saturday, January 14, 2012
Dexterity Development Quickstart using zopeskel.dexterity
Update: You will probably make more progress using this: https://github.com/pigeonflight/stack-python-plone I've blogged about Plone on Dotcloud here.
These are my notes for getting started quickly with dexterity and zopeskel.dexterity.
Rule Number One: Use Unix
This is about getting started quickly. At this time, Windows will slow you down, do this on a server or something, this issue may change in the future at which point I will be able to recommend otherwise, but for now, for the sake of your sanity just use OS X or Linux for development.
Rule Number Two: Use the Unified Installer
The Unified Installer (usually available at http://plone.org/download) provides all the tools you need to get started, everything here assumes that you have successfully installed Plone via the Unified Installer on your platform.
Rule Number Three:
Install your app and run buildout BEFORE attempting to use localcommands. This is important because additional "goodness" is added to your new package when it is properly installed to your instance.
Step 1 - Install via the UnifiedInstaller then edit the base.cfg and add zopeskel.dexterity and ZopeSkel <= 2.99.
WARNING: localcommands like "addcontent" WILL NOT WORK until you install the app and run buildout!
or if you prefer to use mr.developer do something like this:
Step 4 - Add your first contenttype
Note that all localcommands are run from within your new app
You should now be able to follow the instructions at: http://collective-docs.readthedocs.org/en/latest/content/dexterity.html
If you want to know what localcommands are available try running
To see if everything is working launch your instance and visit Site Setup > Add-ons, you should now be able to activate your new add-on.
These are my notes for getting started quickly with dexterity and zopeskel.dexterity.
Rule Number One: Use Unix
This is about getting started quickly. At this time, Windows will slow you down, do this on a server or something, this issue may change in the future at which point I will be able to recommend otherwise, but for now, for the sake of your sanity just use OS X or Linux for development.
Rule Number Two: Use the Unified Installer
The Unified Installer (usually available at http://plone.org/download) provides all the tools you need to get started, everything here assumes that you have successfully installed Plone via the Unified Installer on your platform.
Rule Number Three:
Install your app and run buildout BEFORE attempting to use localcommands. This is important because additional "goodness" is added to your new package when it is properly installed to your instance.
Step 1 - Install via the UnifiedInstaller then edit the base.cfg and add zopeskel.dexterity and ZopeSkel <= 2.99.
eggs =
PasteScript
ZopeSkel <= 2.99zopeskel.dexterity
Then re-run buildout
bin/buildoutStep 2 - Create your first product
cd src
../bin/zopeskel dexterity my.app
WARNING: localcommands like "addcontent" WILL NOT WORK until you install the app and run buildout!
Step 3 - Install your app by adding it to the buildout.cfg and re-run buildout
Add the following lines to your buildout.cfg
eggs =
my.app
develop =src/my.app
or if you prefer to use mr.developer do something like this:
extensions = mr.developerThe re-run buildout
auto-checkout = my.app
....
[sources]
my.app = fs my.app
bin/buildout
Step 4 - Add your first contenttype
Note that all localcommands are run from within your new app
cd src/my.app
../../bin/paster addcontent dexterity_content
You should now be able to follow the instructions at: http://collective-docs.readthedocs.org/en/latest/content/dexterity.html
If you want to know what localcommands are available try running
../../bin/paster addcontent -lActivate your new Add-on
To see if everything is working launch your instance and visit Site Setup > Add-ons, you should now be able to activate your new add-on.
In the screenshot below, I have already created a content type for my add-on, so after activation I can use the green content bar in my site to add a new example type.
Saturday, November 27, 2010
A Python Webframework for teaching
I'm on the hunt for a Python webframework that I can use to teach web development. The candidates in order of my bias are:
My Current Perspective
- Plone
- Pyramid
- Pinax/Django
- Flask
- Web2py
- Fast iterations - This means make and view changes quickly. In my experience, people learn more effectively if they can see the result of their changes quickly (as close to instantly as possible).
- Minimal deployment requirements - I measure this based on expense, initial setup time, deploy/develop cycle.
- Minimal context switching - If they can do all their development in one space this will be a good thing.
Other nice to haves:
- A framework that takes up minimal space. In other words 2MB is better than 20MB, this become especially important if we are providing a local deployment server and we have a class of 30 or more students. Or if we want to take advantage of a free hosting account.
The things that don't matter:
- Best of class security ()
- Solves all problems known to man
Plone. While I think that Plone is an excellent platform and provides lots of useful application "infrastructure", I don't think it is the best solution for teaching beginners web development. So I've more or less scratched Plone from the list. Besides, Plone is primarily an application and secondarily a framework (I'm sure we can argue about this distinction).
Pyramid. I'm mostly impressed and for web application development (non-content management problems), it's probably where I'm headed. Pyramid is pretty powerful, I've spent some time with it and I definitely see it in my future. That said, I've decided against it because it's too large to run on super cheap/weak shared hosting because of space.
All the solutions, except Plone, claim to run on Google App Engine, that provides a cost effective option for application deployment. At this point I'm strongly leaning to Web2py because the setup and deployment experience appears to be the simplest and the data abstraction layer (DAL) is attractive for portability.
Stop me if you have some convincing arguments regarding alternatives for a 12 week, 36 hour course.
Friday, November 20, 2009
Setting User Passwords - still counter intuitive in Plone 4
This discussion revolves around the question - How can I as an administrator set user passwords?
Let me start by saying, I am an active user of Plone and as far as usability (for administrators and content editors) goes, there are few CMS systems that I've worked with that can hold a candle to Plone. This observation is related to a small issue that I would love to see "fixed".
Before the Rant
Plone 4 is soooo much faster than Plone 3 and I'm loving some of the new usability/convenience features, like the "Image Handling" control panel for managing thumbnail sizes and the newly added ability to specify the group of a newly added user (noted in a screenshot below).

Scenario - Managing Users
When adding a new user, it is not unusual to want to set a user password.

By default, clicking "Site Setup" > "User and Groups" > "Add New User" will present a screen where you can't set a password.

The solution is to go to "Site Setup" > "Security" and check the "Let users select their own passwords" box.

Now when I go back to "User and Groups" > "Add New User", I can now set a password.

That's just weird!
Possible solution
I think there should be a new option under "Users and Groups". Something like a check box that says "Admin can set passwords".

In the overall scheme of things this is a tiny issue, but it's worth mentioning and worth fixing.
Let me start by saying, I am an active user of Plone and as far as usability (for administrators and content editors) goes, there are few CMS systems that I've worked with that can hold a candle to Plone. This observation is related to a small issue that I would love to see "fixed".
Before the Rant
Plone 4 is soooo much faster than Plone 3 and I'm loving some of the new usability/convenience features, like the "Image Handling" control panel for managing thumbnail sizes and the newly added ability to specify the group of a newly added user (noted in a screenshot below).
Scenario - Managing Users
When adding a new user, it is not unusual to want to set a user password.
By default, clicking "Site Setup" > "User and Groups" > "Add New User" will present a screen where you can't set a password.
The solution is to go to "Site Setup" > "Security" and check the "Let users select their own passwords" box.
Now when I go back to "User and Groups" > "Add New User", I can now set a password.
That's just weird!
Possible solution
I think there should be a new option under "Users and Groups". Something like a check box that says "Admin can set passwords".
In the overall scheme of things this is a tiny issue, but it's worth mentioning and worth fixing.
Tuesday, September 30, 2008
Plone on Amazon EC2
I'm scheduled to give a talk next week on using Plone with Amazon EC2. So I've started a wiki for my talk. The hope is that I'll get feedback from the Plone community and thus make my talk more relevant. So visit the wiki and comment.
Wednesday, September 17, 2008
NGINX entity too large, no more
Sometimes a simple sentence can make a world of difference. It did that for my nginx configuration this morning. Since setting nginx in front of Plone, I've had an "413 entity too large" error for files bigger than 1 MB.
My configuration uses a special conf/proxy.conf file which looks like this::
# proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 30m;
client_body_buffer_size 2m;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 2m;
proxy_buffers 4 1m;
proxy_busy_buffers_size 2m;
proxy_temp_file_write_size 2m;
The wrong way
Previously my 'server' section in my nginx.conf used to look like this:
server {
listen 1.2.3.4;
server_name example.com www.example.com;
location / {
rewrite ^/(.*)$ /VirtualHostBase/http/www.example.com:80/example/plone/VirtualHostRoot/$1;
}
location /VirtualHostBase/ {
proxy_pass http://sharedhosting;
include conf/proxy.conf; #this is apparently a bad place to put this
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
The right way
So I read the following comment at the slicehost forums:
"Try moving the directive from inside the location block to just inside the server block."
So now I've moved it to "just inside the server block" so my 'server' section in my nginx.conf now looks like this:
server {
listen 1.2.3.4;
server_name example.com www.example.com;
include conf/proxy.conf; #now it works, phew!
location / {
rewrite ^/(.*)$ /VirtualHostBase/http/www.example.com:80/example/plone/VirtualHostRoot/$1;
}
location /VirtualHostBase/ {
proxy_pass http://sharedhosting;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
My configuration uses a special conf/proxy.conf file which looks like this::
# proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 30m;
client_body_buffer_size 2m;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 2m;
proxy_buffers 4 1m;
proxy_busy_buffers_size 2m;
proxy_temp_file_write_size 2m;
The wrong way
Previously my 'server' section in my nginx.conf used to look like this:
server {
listen 1.2.3.4;
server_name example.com www.example.com;
location / {
rewrite ^/(.*)$ /VirtualHostBase/http/www.example.com:80/example/plone/VirtualHostRoot/$1;
}
location /VirtualHostBase/ {
proxy_pass http://sharedhosting;
include conf/proxy.conf; #this is apparently a bad place to put this
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
The right way
So I read the following comment at the slicehost forums:
"Try moving the directive from inside the location block to just inside the server block."
So now I've moved it to "just inside the server block" so my 'server' section in my nginx.conf now looks like this:
server {
listen 1.2.3.4;
server_name example.com www.example.com;
include conf/proxy.conf; #now it works, phew!
location / {
rewrite ^/(.*)$ /VirtualHostBase/http/www.example.com:80/example/plone/VirtualHostRoot/$1;
}
location /VirtualHostBase/ {
proxy_pass http://sharedhosting;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Tuesday, September 16, 2008
Supervisord and Memmon
Three problems I've had with Plone.
The solution
Well I believe that I've found the solution, and it goes by the name of "Supervisord" and the fun slogan "hang on to your processes". As a bonus, it is python based, installs nicely via easy_install and newer versions of ZopeSkel's plone_hosting template now ship with a supervisord configuration.
A recipe
In short, with a few deft strokes of the keyboard, I can have my Plone and supervise it. My recipe goes something like this:
1. Get the latest ZopeSkel
easy_install ZopeSkel
2. Install Plone hosting (I'll call my directory "usain").
paster create -t plone_hosting
3. Add lines similar to this to my crontab (by running crontab -e)
@reboot /home/plone/usain/bin/supervisord -c /home/plone/usain/etc/supervisord.conf
4. For good measure add a line like this to my supervisord.conf file:
- How to start and stop Plone instances
- How to deal with Plone instances that run away with memory
- How to restart Plone processes that have died
The solution
Well I believe that I've found the solution, and it goes by the name of "Supervisord" and the fun slogan "hang on to your processes". As a bonus, it is python based, installs nicely via easy_install and newer versions of ZopeSkel's plone_hosting template now ship with a supervisord configuration.
A recipe
In short, with a few deft strokes of the keyboard, I can have my Plone and supervise it. My recipe goes something like this:
1. Get the latest ZopeSkel
easy_install ZopeSkel
2. Install Plone hosting (I'll call my directory "usain").
paster create -t plone_hosting
3. Add lines similar to this to my crontab (by running crontab -e)
@reboot /home/plone/usain/bin/supervisord -c /home/plone/usain/etc/supervisord.conf
4. For good measure add a line like this to my supervisord.conf file:
[eventlistener:memmon]If any supervised processes run over 200MB of resident memory usage for more than 60 seconds, supervisor will restart them.
command=%(here)s/../bin/memmon -a 200MB -m bob@example.com
events=TICK_60
Subscribe to:
Posts (Atom)


