Since my first post of the idea in my article "Android mothership tablet for Android phone" back in June 21, 2010, there have been products like ASUS' PadFone/FonePad. However, that isn't exactly what I have in mind in terms of the integration.
My idea is more in the rim of software than hardware. However, the hardware integration can enhance the software implementation.
Now, here are some ideas for the software integration given that you got an Android phone and an Android Tablet with needed communications either through the WIFI or the USB :
1. Use the phone as the keyboard for the tablet.
2. Use the phone as the camera for the tablet.
3. Use the phone as the game control for the tablet.
4. Use the phone as the GPS for the tablet.
5. Share the storage between the phone and the tablet - you don't need an app on both device at the same time.
6. The display may support each other - like X-Window in the *nix world - this allows running apps on the tablet while display it on the phone or vice versa.
While I am writing, I just realize that what I really mean is providing a system level support that allows Android systems to support and share with each other the software and hardware resources.
As I mentioned earlier, using system buses may allow some sharing to be more intimate and efficient.
Friday, August 16, 2013
Saturday, March 23, 2013
Cloud Security - a thought
Allow user to control encryption.
How to handle application security? Data/Code have to be un-encrypted before application can processing them. Can we build un-encryption into CPU? - which may not work since that also imply access encrypted data in CPU - way to much resources is needed. The other is to run on client - not as efficient but securer. Would client CPU powerful enough for most daily tasks? - When there are more data, the more user would like to do and the more powerful the client computer will need to be. Can server be build so that there are hardware security for each virtual server and let the user control the hardware security until the user release it.
How to handle application security? Data/Code have to be un-encrypted before application can processing them. Can we build un-encryption into CPU? - which may not work since that also imply access encrypted data in CPU - way to much resources is needed. The other is to run on client - not as efficient but securer. Would client CPU powerful enough for most daily tasks? - When there are more data, the more user would like to do and the more powerful the client computer will need to be. Can server be build so that there are hardware security for each virtual server and let the user control the hardware security until the user release it.
CMS - a perspective
CMS, the content management system, may have all kinds of various names. But it is mean to organize the information.
After years of effort try to organize information, I came to a system that I think I would like to have at this point. I have to say this in a reserved way since people grow and there might be better way that I haven't envision yet.
There is no new idea here. I think all the features I am going to mention have exist in one system or the other and people may already have and using it. My intention is simply to point out my thoughts and it may benefit readers that haven't have their idea system yet.
I am envision a wiki like system with necessary securities and I think this idea can extended to file system of today's computer.
Personally, I think a lot of people are like me that kept document in computers, some at home and some at work. Personally I also have web spaces that I kept my notes.
For documents that I kept in computers, I organize them info folders and in each folder I would have a _ReadMe.txt file that describes things related to document in the current folder. In order to manage documents, I also use links if a document need to present in multiple folders based on the organizing logic.
On the web, I use a Wiki to keep my notes so that I can access from anywhere. This is important to me since I may come up with ideas at the work while it is not appropriate for the work by is totally OK for personal pursuit. Of cause, it can go the other way too. Therefore, it benefits not just the work but also personal life - Credit to my former boss, Steve Brown. He never prevent me from pursuing career outside my work place and he did mentioned that it benefits both.
One important feature of the Wiki is that it allows user to create linked page easily. It is, therefore, very easy to create a tree/graph like data structure. For example, I start the Wiki with ME as the beginning. I then create links to pages based on my roles - As a member of the family, as an employee of a company, as a citizen of a city, as a citizen of a state...etc. Each page can then link to other topics related to topic of the page. For example, under the citizen of a city, you can have link and note to, say, city government, legislature, TV stations, news papers ... etc.
Thinking the Wiki and my folder-organization in the computer, it occurs to me that the system I wanted is that of the Wiki with storage/upload - a lot of Wiki system do allow you to upload files - it just that I never enable the feature.
Thinking back, I remember there was a period of time, Windows is allowing user to create a html file in each folder and the html file will be opened by default when user navigated to that folder. As you can see this is almost idea to what I wanted if I spend enough time to build those html files - I am not sure if Windows still have this capability build in.
The other concept exhibits in this Wiki-storage system is that I really don't care where the upload file are stored - as long as I can access them via links.
So does the idea of folder obsolete? I think not. But I like to mention the idea of virtual or logical folder as existed in Hyland's OnBase product. The logical folder is created based on user's organization logic and not the physical location of the file in the file system. This made the logic folder a very good fit to the Wiki-storage system. As OnBase did, the content of the folder can be dynamically updated, based on criteria you set, as files are added to the organization system. For example, if you have a Wiki page that shows your personal music collection, it will be nice that when you add a file, it automatically show that new file. So, for Wiki-storage, this is a feature to be added.
As to the computer OS, the logical folder should be what most people wanted since most user really don't know or care where and how files are stored.
After years of effort try to organize information, I came to a system that I think I would like to have at this point. I have to say this in a reserved way since people grow and there might be better way that I haven't envision yet.
There is no new idea here. I think all the features I am going to mention have exist in one system or the other and people may already have and using it. My intention is simply to point out my thoughts and it may benefit readers that haven't have their idea system yet.
I am envision a wiki like system with necessary securities and I think this idea can extended to file system of today's computer.
Personally, I think a lot of people are like me that kept document in computers, some at home and some at work. Personally I also have web spaces that I kept my notes.
For documents that I kept in computers, I organize them info folders and in each folder I would have a _ReadMe.txt file that describes things related to document in the current folder. In order to manage documents, I also use links if a document need to present in multiple folders based on the organizing logic.
On the web, I use a Wiki to keep my notes so that I can access from anywhere. This is important to me since I may come up with ideas at the work while it is not appropriate for the work by is totally OK for personal pursuit. Of cause, it can go the other way too. Therefore, it benefits not just the work but also personal life - Credit to my former boss, Steve Brown. He never prevent me from pursuing career outside my work place and he did mentioned that it benefits both.
One important feature of the Wiki is that it allows user to create linked page easily. It is, therefore, very easy to create a tree/graph like data structure. For example, I start the Wiki with ME as the beginning. I then create links to pages based on my roles - As a member of the family, as an employee of a company, as a citizen of a city, as a citizen of a state...etc. Each page can then link to other topics related to topic of the page. For example, under the citizen of a city, you can have link and note to, say, city government, legislature, TV stations, news papers ... etc.
Thinking the Wiki and my folder-organization in the computer, it occurs to me that the system I wanted is that of the Wiki with storage/upload - a lot of Wiki system do allow you to upload files - it just that I never enable the feature.
Thinking back, I remember there was a period of time, Windows is allowing user to create a html file in each folder and the html file will be opened by default when user navigated to that folder. As you can see this is almost idea to what I wanted if I spend enough time to build those html files - I am not sure if Windows still have this capability build in.
The other concept exhibits in this Wiki-storage system is that I really don't care where the upload file are stored - as long as I can access them via links.
So does the idea of folder obsolete? I think not. But I like to mention the idea of virtual or logical folder as existed in Hyland's OnBase product. The logical folder is created based on user's organization logic and not the physical location of the file in the file system. This made the logic folder a very good fit to the Wiki-storage system. As OnBase did, the content of the folder can be dynamically updated, based on criteria you set, as files are added to the organization system. For example, if you have a Wiki page that shows your personal music collection, it will be nice that when you add a file, it automatically show that new file. So, for Wiki-storage, this is a feature to be added.
As to the computer OS, the logical folder should be what most people wanted since most user really don't know or care where and how files are stored.
Labels:
classify,
CMS,
folders,
information,
links,
logical folders,
operation system,
organize,
OS,
wiki
Monday, February 4, 2013
A concept on GUI for Make Utility
This is a short note on my soul search for the Linux/Windows program make utility.
For user, it will be easier to use a GUI to specify the relation on how target should be build. The data can be stored in a database table: (I know it can be refined)
The Makefile can be constructed out of those info in the database.
The GUI will allows user to use dropdown list for the Target which could be derived from source file list of a project and will allows user to use file browser to browse to the In/Lib directories.
When output Makefile, the program can generate Macros based on summarized info on In/Lib. Target, InTyp, and Command fields.
The In/Lib field could include version info. These info can be used by the program to interact with version control system.
I would like this program to be implemented in a platform independent languages (e.g. Java, Perl ... etc.) that provide GUI, database access, and shell access.
| Target | InTyp | In/Lib | Command |
|---|---|---|---|
| MyApp.exe | Lib | c:\StndrdCLib\Math.lib | cc |
| MyApp.exe | Obj | c:\ObjTree\General\MscUtlt.obj | cc |
| MyApp.exe | Inc | c:\CSource\MyFrstPrjct\Msc.h | cc |
| MscUtlt.obj | - | - | cc |
| Msc.h | - | - | - |
The Makefile can be constructed out of those info in the database.
The GUI will allows user to use dropdown list for the Target which could be derived from source file list of a project and will allows user to use file browser to browse to the In/Lib directories.
When output Makefile, the program can generate Macros based on summarized info on In/Lib. Target, InTyp, and Command fields.
The In/Lib field could include version info. These info can be used by the program to interact with version control system.
I would like this program to be implemented in a platform independent languages (e.g. Java, Perl ... etc.) that provide GUI, database access, and shell access.
Tuesday, October 23, 2012
Android Tablet FTP via Wifi
The motivation of this post is to raise the awareness of a possible problem of Android FTP client programs.
At this point, I am not sure what's the real problem. So I will simply describe what I did and what happened.
I bought a no-brand Android Tablet. It runs Android 4.0.4 with Kernel of 3.0.8. Every thing works great until I begin to work with the FTP. I download every free FTP program that is compatible with my tablet and none of them worked flawlessly. There are times the error is caused by Java.net.SocketTimeoutExceptions. But a lot of times, it simply stopped. They happened pretty much randomly. Almost all programs/apps connect to my server at some point. But none of them can reliably maintain the connection for long enough time. I am not ruling out the wifi connection of the tablet since at times, it does not have the idea connection.
With the same wifi setup, I run the FileZilla on a Windows 7 laptop. Everything works great. No problem what so ever.
Of all of the Android FTP client apps, the most reliable one. At one point, I was able to make couple of download and upload. But, eventually, it hanged. The FTP clients I have tested are: AndFTP, ZealFTP, DroidFtp, AbyssFTP and FtpCafe.
At this point, I am not sure what's the real problem. So I will simply describe what I did and what happened.
I bought a no-brand Android Tablet. It runs Android 4.0.4 with Kernel of 3.0.8. Every thing works great until I begin to work with the FTP. I download every free FTP program that is compatible with my tablet and none of them worked flawlessly. There are times the error is caused by Java.net.SocketTimeoutExceptions. But a lot of times, it simply stopped. They happened pretty much randomly. Almost all programs/apps connect to my server at some point. But none of them can reliably maintain the connection for long enough time. I am not ruling out the wifi connection of the tablet since at times, it does not have the idea connection.
With the same wifi setup, I run the FileZilla on a Windows 7 laptop. Everything works great. No problem what so ever.
Of all of the Android FTP client apps, the most reliable one. At one point, I was able to make couple of download and upload. But, eventually, it hanged. The FTP clients I have tested are: AndFTP, ZealFTP, DroidFtp, AbyssFTP and FtpCafe.
Monday, May 14, 2012
GUI for Constructing Command Line - Concepture Design
The purpose for this article is to propose a conceptual design for a
generalized GUI tool that can help user constructing a valid command for
command line interface. The design is to be general and capable to
handle as many command line specification as possible. In the process we
also like to be able to enforce syntax rules as much as
possible.
As I work through the idea and prototype, I will continue to update this article.
The design begins with the data structure.
(20120604)
After re-examining the problem, I am settling to a data structure that would not be able to represent faithful implementation of all possible command line construct. What this mean is that we may not be able to parse a command line correctly based on our data structure for certain command. This, however, does not preclude us from produce legitimate command line. A category of command line construct that could not be faithfully represented by this data structure design is those commands that allows the required options to be presented in random orders. Our data structure will put those options in an order and, therefore, won't be able be used to parse command line that presents those option in different order, which were allowed by the real command line interpreter.
Child Node Type:
(o) - Child nodes are in (o)rder and are defaulted to be required.
(-) - Child nodes are all optional. Actions are needed to include them in the command line.
(1) - Exactly 1 child node is need to presented in the command line.
(0) - No child node. Optional text value and default flag or required keyword
(r) - The child node can be repeated as many times as possible.
Common attributes for nodes:
Slctd - selected
Dscrptn -
Syntx -
SyntxLtrl
SyntxPrs
SyntxVldtn
Vl - value
VlRE - for checking Vl
Optns - No value, default ...
Possible construct:
*The above structure may not faithfully represent the copy command if the copy command allowed this construct:
copy -Dest DestFl -Src SrcFl -Ascii -LF
GUI design:
As I work through the idea and prototype, I will continue to update this article.
The design begins with the data structure.
(20120604)
After re-examining the problem, I am settling to a data structure that would not be able to represent faithful implementation of all possible command line construct. What this mean is that we may not be able to parse a command line correctly based on our data structure for certain command. This, however, does not preclude us from produce legitimate command line. A category of command line construct that could not be faithfully represented by this data structure design is those commands that allows the required options to be presented in random orders. Our data structure will put those options in an order and, therefore, won't be able be used to parse command line that presents those option in different order, which were allowed by the real command line interpreter.
Child Node Type:
(o) - Child nodes are in (o)rder and are defaulted to be required.
(-) - Child nodes are all optional. Actions are needed to include them in the command line.
(1) - Exactly 1 child node is need to presented in the command line.
(0) - No child node. Optional text value and default flag or required keyword
(r) - The child node can be repeated as many times as possible.
Common attributes for nodes:
Slctd - selected
Dscrptn -
Syntx -
SyntxLtrl
SyntxPrs
SyntxVldtn
Vl - value
VlRE - for checking Vl
Optns - No value, default ...
Possible construct:
copy -Src SrcFl -Dest DestFl -Ascii -LF
copy (o)
-Src FlNm (0)
copy (o)
-Src FlNm (0)
-Dest FlNm (0)
ways of copy (1)
-Ascii (1)
-Ascii (1)
-LF (0)
-CRLF(0)
-Binary (0)
*The above structure may not faithfully represent the copy command if the copy command allowed this construct:
copy -Dest DestFl -Src SrcFl -Ascii -LF
<?xml version='1.0' encoding='UTF-8'?>
<!-- This document was created with Syntext Serna Free. -->
<Nd SyntxKy="Copy" >
<SyntxLtrl>copy</SyntxLtrl>
<Dscrptn>copy a file</Dscrptn>
<Chld Typ="o">
<Nd SyntxKy="-Src" >
<Dscrptn>file to be copied</Dscrptn>
<SyntxLtrl>-Src </SyntxLtrl>
<Vl></Vl>
<VlRE></VlRE>
</Nd>
<Nd SyntxKy="-Dest" >
<Dscrptn>file to be copy to</Dscrptn>
<SyntxLtrl>-Dest </SyntxLtrl>
<Vl></Vl>
<VlRE></VlRE>
</Nd>
<Nd SyntxKy="ways of copy" >
<Dscrptn>file type</Dscrptn>
<SyntxLtrl></SyntxLtrl>
<Chld Typ="1">
<Nd SyntxKy="Ascii" >
<Dscrptn>ASCII</Dscrptn>
<SyntxLtrl>-Ascii </SyntxLtrl>
<Chld Typ="1">
<Nd SyntxKy="LF" >
<Dscrptn>Convert line break to LF</Dscrptn>
<SyntxLtrl>-LF </SyntxLtrl>
</Nd>
<Nd SyntxKy="CRLF" >
<Dscrptn>Convert line break to CRLF</Dscrptn>
<SyntxLtrl>-CRLF </SyntxLtrl>
</Nd>
</Chld>
</Nd>
<Nd SyntxKy="Binary" >
<Dscrptn>byte by byte/literal copy</Dscrptn>
<SyntxLtrl>-Binary</SyntxLtrl>
</Nd>
</Chld>
</Nd>
</Chld>
</Nd>
<!-- This document was created with Syntext Serna Free. -->
<Nd SyntxKy="Copy" >
<SyntxLtrl>copy</SyntxLtrl>
<Dscrptn>copy a file</Dscrptn>
<Chld Typ="o">
<Nd SyntxKy="-Src" >
<Dscrptn>file to be copied</Dscrptn>
<SyntxLtrl>-Src </SyntxLtrl>
<Vl></Vl>
<VlRE></VlRE>
</Nd>
<Nd SyntxKy="-Dest" >
<Dscrptn>file to be copy to</Dscrptn>
<SyntxLtrl>-Dest </SyntxLtrl>
<Vl></Vl>
<VlRE></VlRE>
</Nd>
<Nd SyntxKy="ways of copy" >
<Dscrptn>file type</Dscrptn>
<SyntxLtrl></SyntxLtrl>
<Chld Typ="1">
<Nd SyntxKy="Ascii" >
<Dscrptn>ASCII</Dscrptn>
<SyntxLtrl>-Ascii </SyntxLtrl>
<Chld Typ="1">
<Nd SyntxKy="LF" >
<Dscrptn>Convert line break to LF</Dscrptn>
<SyntxLtrl>-LF </SyntxLtrl>
</Nd>
<Nd SyntxKy="CRLF" >
<Dscrptn>Convert line break to CRLF</Dscrptn>
<SyntxLtrl>-CRLF </SyntxLtrl>
</Nd>
</Chld>
</Nd>
<Nd SyntxKy="Binary" >
<Dscrptn>byte by byte/literal copy</Dscrptn>
<SyntxLtrl>-Binary</SyntxLtrl>
</Nd>
</Chld>
</Nd>
</Chld>
</Nd>
GUI design:
(-) - checkbox
(1) - radio button
(o) - linked control group:
An ordered node syntax:
(o) (-) (t) Optn1
(t) Optn2
(t) Optn3
(t) Optn4
(1) (t) OptnA
(t) OptnB
Can be expressed in a graph like:
An ordered node syntax:
(o) (-) (t) Optn1
(t) Optn2
(t) Optn3
(t) Optn4
(1) (t) OptnA
(t) OptnB
Can be expressed in a graph like:
+---------------------+
| +--+ |
| Optn1 | |o OptnA |
| x Optn2 | |o OptnB |
| Optn3 | +--------+
| Optn4 |
+---------+
A possible description in XML can be:
Labels:
Command line,
data structure,
GUI,
Programming,
Tool
Thursday, April 12, 2012
MS ACCESS binary field and make table query
The MS ACCESS binary field is basically a BLOB field if you familiar with DB2 or DEC terminology. It is simply a field that can hold a chunk of data of some kind of format. It can hold video, audio, text ... etc. Or you can think of it as un-typed field.
When using MS ACCESS (till ver. 2007) through its normal user interface to create a table, ACCESS do not offer users the option of creating fields of type 'binary' even though it does offer types like OLE object that allows users to store picture, video, ... etc. Binary fields, however, can be create via making table queries which I discovered by accident.
For more information about the BLOB and MS ACCESS binary field please see:
Wikipedia on BLOB
MS ACCESS binary equivalence in other DB (MS article).
Binaries in MS SQL server (MS article)
How binary may be used in VB/ACCESS (generation-nt.com)
You can create a binary field by using [Yr(yyyy)=] in a make table query, MS ACCESS will create a binary field for it. It seems that the binary type is the default for make table query unless the ACCESS can derived the type from other information -for example, the type of the data source. In general, the SELECT statement in the make table query will provide these information. So the SELECT Fld1, Fld2 ... FROM SrcTbl INTO TblCreated ... will create fields based on the type of FldN in the SrcTbl. It is when you use the syntax: [Yr(yyyy)=] in a create table query that the ACCESS will run into troubles on determine the correct field type. You can overcome this by providing additional information in the form of the type of a function. For example, with CLng([Yr(yyyy)=]), ACCESS will make the field a type of long-integer.
Once the field is created, it seems to me, the field will take any kind of value you inserted into it even though the data may not show in the way you expected. For example, if you insert a integer to the binary field, it may look like you inserted an ASCII code and shown as a character.
I do, however, have trouble to understand the failure of some of my queries that create a binary field. One of my queries is a complex query that invoke several other queries as its source. The query contains prompting syntax (i.e. []) for various purposes. Some of them are used to filter the data source and one of them is used to create the binary field. That query successfully create the table with binary field when all records are filtered out. However, when valid records were to inserted into the created table via that same query, error was reported that there are type conversion errors and the binary field was inserted with NULL. The value to be inserted was the value assigned to the prompting syntax in the form of integer. This is what bring me to the investigation of the ACCESS binary field originally. Unfortunately, as mentioned earlier, binary fields seem to be able to take in any type of data except in my particular cases (There are actually two very similar queries that failed).
Life goes on, so I will leave this mystery for someone else to solve.
When using MS ACCESS (till ver. 2007) through its normal user interface to create a table, ACCESS do not offer users the option of creating fields of type 'binary' even though it does offer types like OLE object that allows users to store picture, video, ... etc. Binary fields, however, can be create via making table queries which I discovered by accident.
For more information about the BLOB and MS ACCESS binary field please see:
Wikipedia on BLOB
MS ACCESS binary equivalence in other DB (MS article).
Binaries in MS SQL server (MS article)
How binary may be used in VB/ACCESS (generation-nt.com)
You can create a binary field by using [Yr(yyyy)=] in a make table query, MS ACCESS will create a binary field for it. It seems that the binary type is the default for make table query unless the ACCESS can derived the type from other information -for example, the type of the data source. In general, the SELECT statement in the make table query will provide these information. So the SELECT Fld1, Fld2 ... FROM SrcTbl INTO TblCreated ... will create fields based on the type of FldN in the SrcTbl. It is when you use the syntax: [Yr(yyyy)=] in a create table query that the ACCESS will run into troubles on determine the correct field type. You can overcome this by providing additional information in the form of the type of a function. For example, with CLng([Yr(yyyy)=]), ACCESS will make the field a type of long-integer.
Once the field is created, it seems to me, the field will take any kind of value you inserted into it even though the data may not show in the way you expected. For example, if you insert a integer to the binary field, it may look like you inserted an ASCII code and shown as a character.
I do, however, have trouble to understand the failure of some of my queries that create a binary field. One of my queries is a complex query that invoke several other queries as its source. The query contains prompting syntax (i.e. []) for various purposes. Some of them are used to filter the data source and one of them is used to create the binary field. That query successfully create the table with binary field when all records are filtered out. However, when valid records were to inserted into the created table via that same query, error was reported that there are type conversion errors and the binary field was inserted with NULL. The value to be inserted was the value assigned to the prompting syntax in the form of integer. This is what bring me to the investigation of the ACCESS binary field originally. Unfortunately, as mentioned earlier, binary fields seem to be able to take in any type of data except in my particular cases (There are actually two very similar queries that failed).
Life goes on, so I will leave this mystery for someone else to solve.
Subscribe to:
Posts (Atom)