I want to give this idea to an enterprising young individual who has the talent to make it happen on a mass scale. Logistically the idea is not all that complicated, however, pulling it off successfully will take some experience with the underlying technologies.
In additional, one will need a passion for server administration, something I do not have. Alright, so the problem is providing an environment for developing web-based software on Linux. This is obviously been done with either shared hosting or dedicated hosting.
The problem with shared hosting is a developer has limited control over the environment. Often the Apache server is running in the background with all the modules already complied in, so changing the configuration is usually limited to what is enabled in an .htaccess file.
The problem with dedicated hosting is unless a Server Administrator is around, the developer is running the server. While the developer probably has enough experience to get everything up and running, there is probably some neglected maintenance. Alternately, the server may not be setup following best practices.
Please do not misunderstand me. I am not faulting the developer at all. I am merely pointing out most developers enjoy creating software, not managing a server. If you feel you do both equally as well then more power to you.
Alright so I have figured out a way to solve this problem by running Apache under a separate instance on a shared host. The actual implementation of this could be done several different ways, I am merely showing a proof-of-concept for the idea.
The setup allows the developer to have total control over their Apache configuration file, including modules loaded and options. The environment allows quite a bit more flexibility than a standard shared hosting environment without the complexity or the cost of a dedicated server.
The actual Apache binaries and install directory could be centralized. The basic structure would be setup on a per account basis with a non-shell account provisioned with every user account. The developer could control their Apache instance from either a control panel or the shell.
The bonus is patching of the Apache server is done once and the entire server is upgraded. Also, since Apache is running under separate processes, limiting the allocation of CPU and memory on a per client basis is much easier.
Finally I will give some warnings because we all hate environments crashing. The developer essentially would take on management of his (or her) own Apache server. If the configuration is not configured correctly, then the website would die.
Safeguards could certainly be setup. For example, forcing a configuration check prior to a restart. If the test fails, then the server is not restarted. Also, since a separate process will eat up more resources than a single instance, the server must be powerful enough to handle the setup.
Now for the fun of the actual setup.
To start, do a standard Apache implementation. You can do this from the package management system of your OS, however, the example below is from a source install. Created a directory where the user logging in has access and duplicated the directory structure.
bin -> /usr/local/apache2/bin
conf
htdocs
icons -> /usr/local/apache2/icons
logs
modules -> /usr/local/apache2/modules/
Please note the '->' sign indicates a symbolic link. If you have not heard of this then you are really missing out (The short version is it is basically a shortcut, but far more useful). The (bin, icons, modules) directories are basically pointing to the installed versions, and the (conf, htdocs, logs) directories should start empty.
Start by coping a standard Apache configuration file (usually httpd.conf), into the conf folder. Then make sure the log files are writing to the local logs directory and not the server version. Test the setup before doing a mass duplication, and make sure to start the instance of apache with the '-k' option.
Let me repeat because this is the key for proper setup. You may want to setup a custom restart command instead of pointing directly to the bin folder of the server-installed version of Apache. To start the instance, run the following command:
/.../bin/httpd -k /.../conf/httpd.conf
Please make sure to edit appropriately. Again, you will probably want to make sure to wrap this in a script which takes the proper directory structure into account. Now you have the basic setup and the entire implementation should be pretty easy to script.
Some final considerations. You may want to control certain portions of the configuration file. For example, the port number or IP address on which the instances of Apache will run. Each instance of Apache needs a seperate port number or IP address. I would assign this centrally to avoid collisions.
Automating assignment should be easy enough. To make sure the developer's URLs for the domains are proper, you may considering running all of these on a private vlan and putting a proxy server in front. The added advantage is caching is possible prior to delivery to the client so performance and server resources are maximized.
I think I have covered everything so please leave any comments or complaints. I probably won't get to all of them, but hey, it works in theory right?
Wednesday, October 8, 2008
Wednesday, July 16, 2008
Developer's Dilemma
I have run into this problem time and time again. I have read several posts on the topic and while I did gain some insight I failed to improve my particular situation. In a conversation today I began to talk about my portfolio. I say I began because I couldn't finish.
I don't have a portfolio. I have done plenty of work, don't get me wrong. I just don't have anything to show for it. How? I am not a designer, I take care of everything underneath after the designer is done with the HTML and the CSS.
How do you show that? How can you display your work if people can't see it visually? Even the functional pieces I have done don't adequately present the time and the effort put in to make them tick.
Yes I could contribute to an open source project... which I've done. I could do a better job about showcases my work there, but do people really want to read through svn commits? Even if they did, does that do the work I've done any justice?
It's unreal I keep facing this problem over and over again. I need to figure out some way of producing something I can show proudly. Something that looks as brilliant from the outside as it does from the inside. Something anyone could understand and appreciate.
I don't know how yet... just give me some time and I'll figure it out.
I don't have a portfolio. I have done plenty of work, don't get me wrong. I just don't have anything to show for it. How? I am not a designer, I take care of everything underneath after the designer is done with the HTML and the CSS.
How do you show that? How can you display your work if people can't see it visually? Even the functional pieces I have done don't adequately present the time and the effort put in to make them tick.
Yes I could contribute to an open source project... which I've done. I could do a better job about showcases my work there, but do people really want to read through svn commits? Even if they did, does that do the work I've done any justice?
It's unreal I keep facing this problem over and over again. I need to figure out some way of producing something I can show proudly. Something that looks as brilliant from the outside as it does from the inside. Something anyone could understand and appreciate.
I don't know how yet... just give me some time and I'll figure it out.
Labels:
commentary,
development,
web
Monday, June 23, 2008
Throw Out Your Keyboard & Mouse
I have a request to any hardware developers out there who would like to develop the most practical futuristic input device possible today. If you heard of multi-touch input done on a small scale then you are getting close to what the device looks like.
The device I speak of is 16x9 in format and is no thicker than a few inches. It has a height adjustable stand with the ability to pivot. The device has a low center of gravity and is not likely to tip over with repeat use.
Now that I have described the foundation of this device I want to get into the fun bits. What I envision is a screen with multi-touch built in. It is about the size of a standard keyboard plus a bit of extra room. With a touch the keyboard overlay comes on the screen so I can type.
I hit another button and the overlay goes away. Underneath is what I see on my screen except the windows are just outlines of what I see on my wide-screen monitor. The background is customizable either with colors or a photo. If I move a window on my device it will move accordingly on my monitor.
I can resize, move and otherwise manipulate the windows on my monitor via finger movements. I can zoom in on my screen to get more detail and do quicksilver-like movements to perform certain actions. Now this is certainly a great step forward to getting rid of the traditional RSI causing mouse and keyboard.
The next step is a smart OS that can predict my next action. If I just moved 3 files to a folder, then allow me a quick way to move the next 5 to that same folder. If I am looking at a window, then let me move that window instead of moving a cursor all the way to that side of the screen.
First, I need my multi-touch sensory input device. I would like different sizes depending on my workspace and while I would expect it to be plugged into AC, please let there be bluetooth. My 10-key overlay should be available as well the correct keyboard layout if I want to type dvorak....which I do.
Any comments on the perfect input device?
Labels:
hardware,
input,
technology,
wishlist
Wednesday, June 4, 2008
The Incremental Web
After spending the last 20 minutes dealing with a certain popular website editing program, rhymes with DreenBeaver, I got to thinking. First a bit of background. Anytime you visit a website your browser downloads a copy of every page you look at. This is commonly known as caching.
The reason your browser caches any visited website is on the off chance you visit it again, it already has the information. If you do visit the page again, your browser will check to see if the page has expired. If it has not, then it will display the cached version instead of downloading a fresh copy.
Now since a large majority of the web is text, this works pretty well. I say pretty well because there is one technology missing that would really make life better especially in lower bandwidth situations. Incremental updates.
What I proposal in the caching process is instead of the browser downloading everything again, only download the pieces that have changed. It's a novel concept I know and some may argue it may not do much good....well until you think about it.
The amount of data downloaded that does not change could potentially be tremendous. If a designer adds a few lines of code to either a page, or a stylesheet, or any combination of the above then imagine the bandwidth savings.
If your browser understands incremental text changes then we are off to a good start. The next step is incremental binary. Images, Video, Podcasts, any of these could benefit from changing the way data is presented. Impossible you say? Dropbox has found a way to handle it.
Think it would do any good?
The reason your browser caches any visited website is on the off chance you visit it again, it already has the information. If you do visit the page again, your browser will check to see if the page has expired. If it has not, then it will display the cached version instead of downloading a fresh copy.
Now since a large majority of the web is text, this works pretty well. I say pretty well because there is one technology missing that would really make life better especially in lower bandwidth situations. Incremental updates.
What I proposal in the caching process is instead of the browser downloading everything again, only download the pieces that have changed. It's a novel concept I know and some may argue it may not do much good....well until you think about it.
The amount of data downloaded that does not change could potentially be tremendous. If a designer adds a few lines of code to either a page, or a stylesheet, or any combination of the above then imagine the bandwidth savings.
If your browser understands incremental text changes then we are off to a good start. The next step is incremental binary. Images, Video, Podcasts, any of these could benefit from changing the way data is presented. Impossible you say? Dropbox has found a way to handle it.
Think it would do any good?
Labels:
browser,
technology,
web
Wednesday, May 21, 2008
Sending Email with ASP.NET & C#
There was a change in the .NET framework that took the System.Web.Mail class away and replaced it with System.Net.Mail. Some of the documentation still points to the old method of mail and I always struggle to find the correct information.
I am including a link to Scot Gu's blog on the correct way to send an email using .NET with code examples in C#.
Labels:
asp.net,
development,
mail
Thursday, May 15, 2008
OS X Collection of Keyboard Shortcuts
I can't take credit for this as it was originally put together in the newsletter Kibbles & Bytes by Small Dog Electronics. Enjoy as it contains some excellent information.
Mouse Clicks and Key Combinations for the Dock
Mouse Click
Clicking on an item in the dock brings the item forward or opens it if it is not already open. It also brings minimized windows out of the dock.
Control-click
Reveals the contextual menu for that item. Menu choices vary per application or file. When used on the dock separator, it reveals the dock preferences. There you can turn magnification and hiding on or off, change the position of the Dock on screen, and change the minimization effect. Choose Dock Preferences to see more options.
Command (Apple or Clover leaf key)-click
Shows you the location of the original item in the Finder.
Control-Option-click
Force Quit replaces Quit in contextual menu. Menu choices vary per application or file.
Command-Option-click
Hides other open items, in addition to click action. This one is particularly handy if you have a lot of windows open and want to "hide others" to work on a particular application.
Press
Reveals contextual menu for item. Menu choices vary per application or file.
Option-press
Force Quit replaces Quit in menu, in addition to press action.
Shift-click
This one is pretty cool. It applies to minimized windows only. The item is de-minimized in slo-mo. You can see items minimized in slow motion by pressing Shift while minimizing.
Shift-drag
When used on the dock separator, it changes the dock position on screen (left, bottom, right).
Option-drag
When used on the dock separator, it resizes the dock to common icon sizes (128 by 128, 64 by 64, 32 by 32, 16 by 16).
Command-Option-D
Hides or shows the dock. This is the equivalent of choosing Dock from the Apple menu and then Turn Hiding On or Turn Hiding Off from the submenu.
Working with the Dock
Moving Items Around in the Dock
You can drag items into any position you want in the dock as long as they are on the proper side of the dock separator.
Bouncing Icons in the Dock
Just like a child waving his or her hand in class for attention, an application will bounce in the dock if it requires your attention.
Grabbing Screen Shots and Making PDFs
One of the handiest features of Mac OS X is the ability to quickly make PDF files from almost any application. We use this frequently to send copies of invoices or purchase orders from our accounting system. Making a PDF file is as easy as choosing the Print command and selecting PDF. But how do you make a PDF file of a screen shot?
All screen shots are saved as PDF files on your desktop. If you want to use the screen shot in a document instead and use the clipboard, modify the following options by holding down the Control key along with the other keys (got enough fingers?).
To take a picture of the whole screen, press Command-Shift-3.
To take a picture of part of the screen, press Command-Shift-4, then drag to select the area you want in the picture.
To take a picture of a window, the menu bar, the dock, or another area, press Command-Shift-4, then press the Space bar. Move the pointer over the area you want so that it's highlighted, then click. (If you decide you want to drag to select the area, press the Space bar again.)
If you press Command-Shift-4 and decide you don't want to take the screen shot, press the Escape key to, well, escape.
The Grab application in your Utilities Folder also can be used to make TIFF files of screen shots.
To make a TIFF of a window using Grab, launch Grab and select "Window" under the "Capture" menu item. You will then be presented with a dialog box that allows you to "Choose Window." If you click on the Choose Window button, your icon will change to a camera. Once you click on the window you want to capture, it creates a TIFF of that window. Make sureyou have your window in the shape and with the content you want before you select "Choose Window."
To make a TIFF of your entire screen using Grab, launch Grab and select "Screen" under the "Capture" menu item. You will then be asked to click outside of the dialog box to capture your screen image. You can choose from several pointer designs to have a pointer at a particular location in the screen shot. You choose your pointer in the Grab Preferences.
That pointer will be in the screen image at the spot you click to create the image. Choosing "Timed Screen" will give you 10 seconds to rearrange stuff before taking the screen shot. This is particularly useful if you want to show a menu in the screen shot. In this case, during the 10 seconds, click on the menu you wish to display and hold the mouse button down until the screen shot has been taken.
To make a TIFF of a selected portion of your screen using Grab, launch Grab and select "Selection" under the "Capture" menu item. This will give you a selection tool that will draw a red box around whatever you wish to capture and will create a TIFF of just that portion.
More Shortcuts!
Since we're talking about shortcuts for screen shots and working with the dock, did you know that there are a slew of keyboard shortcuts for working within the Finder?
Jump to the search field in a Finder window
Command + Option + F
Define a search using multiple criteria such as Name contains Apple and date modified within the last month.
Command + F
Open your home folder
Command + Shift + H
To open the next folder following the hierarchy. For example, if you're in the home folder, + + Up Arrow opens the User Folder.
Command + Up Arrow
Open your iDisk
Command + Shift + I
Open the Computer area (Computer area shows your connected hard drives, network drives, and iDisk)
Command + Shift + C
Open the Network browser
Command + Shift + K
Open the Applications folder
Command + Shift + A
Open the Utilities folder
Command + Shift + U
Select the next icon
Arrow keys
Select an icon by the first letter of its name
Letter key
Select the next alphabetic item in a window
Tab
Select the previous alphabetic item in a window
Shift + Tab
Select a group of icons
Drag the pointer across the icons
Add an icon to the selection
Shift + click
Select adjacent icons in a list
Shift + click
Select or deselect non-adjacent icons in a list
Command + click
Select the name of the icon
Return
Align icons as you drag them
Command + drag
Copy a file instead of moving it
Option + drag the file's icon to new location
Make an alias to a file instead of moving it
Command + Option + drag the file's icon
See the pathname of the current window
Command + Option + click window's titleChoose an item from the pop-up menu to open it
Open a folder in a separate window
Command + double-click
In list view, open the selected folder
Right arrow
In list view, open each level of folders within the selected folder
Command + Option + Right Arrow
In list view, open all folders within the selected folder
Option + click the disclosure triangle
In list view, close the selected folder
Left Arrow
In list or icon view, open the selected folder
Command + Down Arrow
In list or icon view, show the folder containing the current folder
Command + Up Arrow
(If no Finder windows are open, opens a window showing your home folder.)
Open a new window showing the folder that contains the current folder and close the current window
Command + Option + Up Arrow
Open a new window showing the contents of the current folder and close the current window
Command + Option + Down Arrow
Make the desktop active
Command + Option + Shift + Up Arrow
Move the selected item to the Trash
Command + Delete
Empty the Trash
Command + Shift + Delete
Empty the Trash without any warning or when it contains locked files
Command + Shift + Option + Delete or Option + choose Finder > Empty Trash
Mouse Clicks and Key Combinations for the Dock
Mouse Click
Clicking on an item in the dock brings the item forward or opens it if it is not already open. It also brings minimized windows out of the dock.
Control-click
Reveals the contextual menu for that item. Menu choices vary per application or file. When used on the dock separator, it reveals the dock preferences. There you can turn magnification and hiding on or off, change the position of the Dock on screen, and change the minimization effect. Choose Dock Preferences to see more options.
Command (Apple or Clover leaf key)-click
Shows you the location of the original item in the Finder.
Control-Option-click
Force Quit replaces Quit in contextual menu. Menu choices vary per application or file.
Command-Option-click
Hides other open items, in addition to click action. This one is particularly handy if you have a lot of windows open and want to "hide others" to work on a particular application.
Press
Reveals contextual menu for item. Menu choices vary per application or file.
Option-press
Force Quit replaces Quit in menu, in addition to press action.
Shift-click
This one is pretty cool. It applies to minimized windows only. The item is de-minimized in slo-mo. You can see items minimized in slow motion by pressing Shift while minimizing.
Shift-drag
When used on the dock separator, it changes the dock position on screen (left, bottom, right).
Option-drag
When used on the dock separator, it resizes the dock to common icon sizes (128 by 128, 64 by 64, 32 by 32, 16 by 16).
Command-Option-D
Hides or shows the dock. This is the equivalent of choosing Dock from the Apple menu and then Turn Hiding On or Turn Hiding Off from the submenu.
Working with the Dock
Moving Items Around in the Dock
You can drag items into any position you want in the dock as long as they are on the proper side of the dock separator.
Bouncing Icons in the Dock
Just like a child waving his or her hand in class for attention, an application will bounce in the dock if it requires your attention.
Grabbing Screen Shots and Making PDFs
One of the handiest features of Mac OS X is the ability to quickly make PDF files from almost any application. We use this frequently to send copies of invoices or purchase orders from our accounting system. Making a PDF file is as easy as choosing the Print command and selecting PDF. But how do you make a PDF file of a screen shot?
All screen shots are saved as PDF files on your desktop. If you want to use the screen shot in a document instead and use the clipboard, modify the following options by holding down the Control key along with the other keys (got enough fingers?).
To take a picture of the whole screen, press Command-Shift-3.
To take a picture of part of the screen, press Command-Shift-4, then drag to select the area you want in the picture.
To take a picture of a window, the menu bar, the dock, or another area, press Command-Shift-4, then press the Space bar. Move the pointer over the area you want so that it's highlighted, then click. (If you decide you want to drag to select the area, press the Space bar again.)
If you press Command-Shift-4 and decide you don't want to take the screen shot, press the Escape key to, well, escape.
The Grab application in your Utilities Folder also can be used to make TIFF files of screen shots.
To make a TIFF of a window using Grab, launch Grab and select "Window" under the "Capture" menu item. You will then be presented with a dialog box that allows you to "Choose Window." If you click on the Choose Window button, your icon will change to a camera. Once you click on the window you want to capture, it creates a TIFF of that window. Make sureyou have your window in the shape and with the content you want before you select "Choose Window."
To make a TIFF of your entire screen using Grab, launch Grab and select "Screen" under the "Capture" menu item. You will then be asked to click outside of the dialog box to capture your screen image. You can choose from several pointer designs to have a pointer at a particular location in the screen shot. You choose your pointer in the Grab Preferences.
That pointer will be in the screen image at the spot you click to create the image. Choosing "Timed Screen" will give you 10 seconds to rearrange stuff before taking the screen shot. This is particularly useful if you want to show a menu in the screen shot. In this case, during the 10 seconds, click on the menu you wish to display and hold the mouse button down until the screen shot has been taken.
To make a TIFF of a selected portion of your screen using Grab, launch Grab and select "Selection" under the "Capture" menu item. This will give you a selection tool that will draw a red box around whatever you wish to capture and will create a TIFF of just that portion.
More Shortcuts!
Since we're talking about shortcuts for screen shots and working with the dock, did you know that there are a slew of keyboard shortcuts for working within the Finder?
Jump to the search field in a Finder window
Command + Option + F
Define a search using multiple criteria such as Name contains Apple and date modified within the last month.
Command + F
Open your home folder
Command + Shift + H
To open the next folder following the hierarchy. For example, if you're in the home folder, + + Up Arrow opens the User Folder.
Command + Up Arrow
Open your iDisk
Command + Shift + I
Open the Computer area (Computer area shows your connected hard drives, network drives, and iDisk)
Command + Shift + C
Open the Network browser
Command + Shift + K
Open the Applications folder
Command + Shift + A
Open the Utilities folder
Command + Shift + U
Select the next icon
Arrow keys
Select an icon by the first letter of its name
Letter key
Select the next alphabetic item in a window
Tab
Select the previous alphabetic item in a window
Shift + Tab
Select a group of icons
Drag the pointer across the icons
Add an icon to the selection
Shift + click
Select adjacent icons in a list
Shift + click
Select or deselect non-adjacent icons in a list
Command + click
Select the name of the icon
Return
Align icons as you drag them
Command + drag
Copy a file instead of moving it
Option + drag the file's icon to new location
Make an alias to a file instead of moving it
Command + Option + drag the file's icon
See the pathname of the current window
Command + Option + click window's titleChoose an item from the pop-up menu to open it
Open a folder in a separate window
Command + double-click
In list view, open the selected folder
Right arrow
In list view, open each level of folders within the selected folder
Command + Option + Right Arrow
In list view, open all folders within the selected folder
Option + click the disclosure triangle
In list view, close the selected folder
Left Arrow
In list or icon view, open the selected folder
Command + Down Arrow
In list or icon view, show the folder containing the current folder
Command + Up Arrow
(If no Finder windows are open, opens a window showing your home folder.)
Open a new window showing the folder that contains the current folder and close the current window
Command + Option + Up Arrow
Open a new window showing the contents of the current folder and close the current window
Command + Option + Down Arrow
Make the desktop active
Command + Option + Shift + Up Arrow
Move the selected item to the Trash
Command + Delete
Empty the Trash
Command + Shift + Delete
Empty the Trash without any warning or when it contains locked files
Command + Shift + Option + Delete or Option + choose Finder > Empty Trash
Thursday, April 24, 2008
Cross System Search
Here is an interesting idea. A search that can access content beyond multiple types of authentication. Now on the surface this is no more of a request than what any other search company is doing. You may have already heard of the quest for finding information buried in the "dark web". Kinda like the Dark Portal only much less sinister.
The problem is present in any organization that uses multiple authentication providers. While many corporations have a consistent technology structure there exists another entity that is a bit more liberal when it comes to choosing a tool for the job. Namely Universities. The answer here is use whatever you want as long as it does not cost any money. Here leads to the dilemma.
Now authentication can be fairly standard in an organization, most of the time. The authenticating mechanism may be accessing the same database (Active Directory or LDAP) but it may look different on the front end. Apache mod_auth_krb to IIS Integrated Authentication to Pubcookie. Now, on an intranet with all these flavors, how can you search all information?
Let's assume you can authenticate the user so any search agent can impersonate the user logged in at the time. How can you pass through these portals to get the information hidden behind. Sure, they are probably different systems doing different jobs, but they are all rendering HTML to the browser. There must be a way to get to this information without clicking through each of the systems independently.
SharePoint can do some of this by indexing certain sites, however, it can't get to anything protected by Pubcookie. So now what? I don't have any answers, but the person who does could make quite a bit of money a good name for him or herself by creating a agent that can perform this small miracle. So..... can it be done?
The problem is present in any organization that uses multiple authentication providers. While many corporations have a consistent technology structure there exists another entity that is a bit more liberal when it comes to choosing a tool for the job. Namely Universities. The answer here is use whatever you want as long as it does not cost any money. Here leads to the dilemma.
Now authentication can be fairly standard in an organization, most of the time. The authenticating mechanism may be accessing the same database (Active Directory or LDAP) but it may look different on the front end. Apache mod_auth_krb to IIS Integrated Authentication to Pubcookie. Now, on an intranet with all these flavors, how can you search all information?
Let's assume you can authenticate the user so any search agent can impersonate the user logged in at the time. How can you pass through these portals to get the information hidden behind. Sure, they are probably different systems doing different jobs, but they are all rendering HTML to the browser. There must be a way to get to this information without clicking through each of the systems independently.
SharePoint can do some of this by indexing certain sites, however, it can't get to anything protected by Pubcookie. So now what? I don't have any answers, but the person who does could make quite a bit of money a good name for him or herself by creating a agent that can perform this small miracle. So..... can it be done?
Labels:
authentication,
intranet,
search
Subscribe to:
Posts (Atom)