Increased the content font-size to 13pt and increased paragraph padding by 1m. I am not sure I like it as much, but I figured it might be more readable to get closer to 50-75 characters per line (it is still much more than that). Updated some articles to have introductions and sections. Added a short article about why you should localize.
parent
e6b55028e4
commit
ded5f5cb06
|
@ -165,7 +165,7 @@ img {
|
|||
background-color: #FFFFEE;
|
||||
color: #1F1F1F;
|
||||
margin-bottom: 1em;
|
||||
font-size: 12pt;
|
||||
font-size: 13pt;
|
||||
line-height: 125%;
|
||||
}
|
||||
#content h1, h2, h3, h4, h5, h6 {
|
||||
|
@ -176,17 +176,17 @@ img {
|
|||
background-color: #322222;
|
||||
}
|
||||
#content p {
|
||||
padding-left: 1em; padding-right: 1em;
|
||||
padding-left: 2em; padding-right: 2em;
|
||||
}
|
||||
|
||||
#content ul {
|
||||
padding-left: 1em; padding-right: 1em;
|
||||
padding-left: 2em; padding-right: 2em;
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
#content pre {
|
||||
width: auto;
|
||||
padding: 0.5em;
|
||||
padding: 0.75em;
|
||||
margin: 1em 1em 2em 2em;
|
||||
background-color: #D0D0D1;
|
||||
color: #121;
|
||||
|
@ -202,7 +202,7 @@ img {
|
|||
}
|
||||
#content pre {
|
||||
border: 0.1em solid #B0B0B1;
|
||||
padding: 0.25em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
/*#content pre code:after {
|
||||
content: 'code';
|
||||
|
|
|
@ -1,89 +1,49 @@
|
|||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Desktop Feng Shui ``2015-03-21``
|
||||
````````````````````````````````````````````````````````````````````````````````
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Desktop Feng Shui
|
||||
''''''''''''''''''''''''''''''''
|
||||
Every desktop and its surroundings possesses particular senses of balance and
|
||||
harmony that may influence the feelings of the user.
|
||||
Introduction
|
||||
````````````````````````````````
|
||||
This document expresses my thoughts on feng shui in the context of the software developer's environment. It emphasizes improving workflow and concentration through the minimization and removal of visual distractions.
|
||||
|
||||
For software developers, and in particular programmers, desktop feng shui is
|
||||
of particular importance, as visual distractions and imbalances can be
|
||||
detrimental to one's capability to work.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Balance and Harmony
|
||||
````````````````````````````````
|
||||
Every desktop and its surroundings possesses particular senses of balance and harmony that may influence the feelings of the user.
|
||||
|
||||
Although each developer's sense and needs of harmony will differ - and some
|
||||
may not even care or be affected much by such things - in general a sense of
|
||||
good order is of importance. Order is at the foundation of good program design
|
||||
and commenting quality, and as such, this should be emphasized by the
|
||||
environment as well.
|
||||
For software developers, and in particular programmers, desktop feng shui is of particular importance, as visual distractions and imbalances can be detrimental to one's capability to work.
|
||||
|
||||
Although not required, tiling window managers are excellent methods of
|
||||
enforcing balance and efficiency within the desktop. Even further, the
|
||||
organization of tiling itself, when combined with display sizes and aspect
|
||||
ratios, can enhance harmony and order greatly.
|
||||
Although each developer's sense and needs of harmony will differ - and some may not even care or be affected much by such things - in general a sense of good order is of importance. Order is at the foundation of good program design and commenting quality, and as such, this should be emphasized by the environment as well.
|
||||
|
||||
For non-tiling window managers, it is best to keep your desktop in good order,
|
||||
with minimal clutter and strong organization. Failing to do so introduces
|
||||
visual clutter that can easily distract the mind from concentration.
|
||||
Although not required, tiling window managers are excellent methods of enforcing balance and efficiency within the desktop. Even further, the organization of tiling itself, when combined with display sizes and aspect ratios, can enhance harmony and order greatly.
|
||||
|
||||
Colors, especially of IDEs and terminals, can play important roles in enhancing
|
||||
concentration and decreasing distractions. In general, muted colors can provide
|
||||
a peaceful sense to the environment, although sometimes can be detrimental when
|
||||
strong notifications are wanted.
|
||||
For non-tiling window managers, it is best to keep your desktop in good order, with minimal clutter and strong organization. Failing to do so introduces visual clutter that can easily distract the mind from concentration.
|
||||
|
||||
The guiding principles for colors should general be to draw focus to the areas
|
||||
one cares about the most. For programming, this generally means that comment
|
||||
areas and folded sections of code should not draw as much attention and should
|
||||
hold to colors that do not call as much attention to themselves. Types,
|
||||
variables, and values should generally call more attention and should be of
|
||||
brighter and more complex coloring. General text should be of a neutral tone
|
||||
at a sufficient brightness so as to not be drowned out by the emphasized
|
||||
texts.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Colors and Visual Theming
|
||||
````````````````````````````````
|
||||
Colors, especially of IDEs and terminals, can play important roles in enhancing concentration and decreasing distractions. In general, muted colors can provide a peaceful sense to the environment, although sometimes can be detrimental when strong notifications are wanted.
|
||||
|
||||
In general, color schemes fall into light and dark schemes, usually of
|
||||
complementary or partially complementary inverted schemes. Although varying
|
||||
from individual to individual, darker schemes can promote a strong sense of
|
||||
focus, especially if bordered by much brighter color schemes. In this way, a
|
||||
dark scheme in the primary programming editor window, if surrounded by
|
||||
brighter schemes containing more information or debugging information, acts as
|
||||
the center point, drawing focus to itself whilst also keeping contained and
|
||||
isolated from the others - i.e., a bastion of focus.
|
||||
The guiding principles for colors should general be to draw focus to the areas one cares about the most. For programming, this generally means that comment areas and folded sections of code should not draw as much attention and should hold to colors that do not call as much attention to themselves. Types, variables, and values should generally call more attention and should be of brighter and more complex coloring. General text should be of a neutral tone at a sufficient brightness so as to not be drowned out by the emphasized texts.
|
||||
|
||||
Additionally, the background also plays an important role. Whether it is the
|
||||
precise shade of the color scheme or a graphical background image seen through
|
||||
transparency, the background can promote a sense to the experience and promote
|
||||
particular thoughts in greater earnest. In this sense, it is usually wisest to
|
||||
choose backgrounds that motivate you or promote senses of peace. These
|
||||
backgrounds, if graphical, should likely change to match what you are
|
||||
developing, so as to promote subconscious thought and provide positive
|
||||
reinforcement.
|
||||
In general, color schemes fall into light and dark schemes, usually of complementary or partially complementary inverted schemes. Although varying from individual to individual, darker schemes can promote a strong sense of focus, especially if bordered by much brighter color schemes. In this way, a dark scheme in the primary programming editor window, if surrounded by brighter schemes containing more information or debugging information, acts as the center point, drawing focus to itself whilst also keeping contained and isolated from the others - i.e., a bastion of focus.
|
||||
|
||||
Such principles do not need to be isolated to just the virtual desktop, but
|
||||
can also be expanded to include multiple monitors, the physical desktop, and
|
||||
most everything that can fall within the visual field.
|
||||
Additionally, the background also plays an important role. Whether it is the precise shade of the color scheme or a graphical background image seen through transparency, the background can promote a sense to the experience and promote particular thoughts in greater earnest. In this sense, it is usually wisest to choose backgrounds that motivate you or promote senses of peace. These backgrounds, if graphical, should likely change to match what you are developing, so as to promote subconscious thought and provide positive reinforcement.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Beyond the Virtual Desktop
|
||||
````````````````````````````````
|
||||
Such principles do not need to be isolated to just the virtual desktop, but can also be expanded to include multiple monitors, the physical desktop, and most everything that can fall within the visual field.
|
||||
|
||||
In multi-monitor setups, the distance between monitors, orientations, and size
|
||||
discrepancies can play crucial roles in what feelings are emphasized in the
|
||||
user. Physical distances between monitors can play a similar role to the
|
||||
previously mentioned dark-amidst-light focus scheming. Orientation can promote
|
||||
certain patterns of usage, such as portrait for reading manual pages, or
|
||||
landscape for programming - these things differ, of course, by font size and
|
||||
how many rows and columns one can fit comfortably within the height and width.
|
||||
With size discrepancies and orientation differences, the virtual desktops'
|
||||
placement should be adjusted so the movement of the mouse from one screen to
|
||||
the other does not contain too much difference - i.e., if moving to the right
|
||||
from Screen 1 to Screen 2, the vertical distance changed between the two
|
||||
should be minimal, and if preferred, centered.
|
||||
In multi-monitor setups, the distance between monitors, orientations, and size discrepancies can play crucial roles in what feelings are emphasized in the user. Physical distances between monitors can play a similar role to the previously mentioned dark-amidst-light focus scheming. Orientation can promote certain patterns of usage, such as portrait for reading manual pages, or landscape for programming - these things differ, of course, by font size and how many rows and columns one can fit comfortably within the height and width.
|
||||
|
||||
Going further than this, what is beyond the physical monitors matter as well.
|
||||
Having an open view, such as a window, can be positive by enhancing moments of
|
||||
meditation and clarity, especially if a peaceful view is to be seen. However,
|
||||
if the view does not promote a sense of peace and is too distracting, the
|
||||
physical location should be adjusted. In a sense, what is behind the physical
|
||||
monitors plays the same role as desktop backgrounds and what sense you wish to
|
||||
have while developing.
|
||||
With size discrepancies and orientation differences, the virtual desktops' placement should be adjusted so the movement of the mouse from one screen to the other does not contain too much difference - i.e., if moving to the right from Screen 1 to Screen 2, the vertical distance changed between the two should be minimal, and if preferred, centered.
|
||||
|
||||
In conclusion, one should develop a strong sense for the entirity of their
|
||||
environment, both virtual and physical, and adjust both to promote the
|
||||
sensibilities they most require. If you wish to focus more on one particular
|
||||
aspect, then mute other portions by chosing softer color schemes, smaller
|
||||
fonts, or increasing the distance between them. Acquiring the proper feng shui
|
||||
of your desktop will require your own experimentation and analysis, but it
|
||||
should be approached if you wish to optimize your own productivity.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Beyond the Physical Desktop
|
||||
````````````````````````````````
|
||||
Going further than this, what is beyond the physical monitors matter as well. Having an open view, such as a window, can be positive by enhancing moments of meditation and clarity, especially if a peaceful view is to be seen. However, if the view does not promote a sense of peace and is too distracting, the physical location should be adjusted. In a sense, what is behind the physical monitors plays the same role as desktop backgrounds and what sense you wish to have while developing.
|
||||
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
A Holistic Feng Shui
|
||||
````````````````````````````````
|
||||
In conclusion, one should develop a strong sense for the entirity of their environment, both virtual and physical, and adjust both to promote the sensibilities they most require. If you wish to focus more on one particular aspect, then mute other portions by chosing softer color schemes, smaller fonts, or increasing the distance between them. Acquiring the proper feng shui of your desktop will require your own experimentation and analysis, but it should be approached if you wish to optimize your own productivity.
|
||||
|
|
|
@ -1,13 +1,22 @@
|
|||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Release Your ((Engine's)) Source ``2014-11-28``
|
||||
````````````````````````````````````````````````````````````````````````````````
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Release Your ((Engine's)) Source
|
||||
Preface
|
||||
````````````````````````````````
|
||||
This writing pertains to the concept of releasing full video game engine source code. It analyzes proclaimed reasons for maintaining proprietary ownership, potential issues, and ultimately claims that placing video game engines as free software or open source holds little personal risk and accomplishes much for global knowledge, development, and communities.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Introduction
|
||||
````````````````````````````````
|
||||
As a game developer and a free software advocate, an inevitable question comes up of whether or not to release one's video game engine under a free software or open source license. The immediate question that comes to mind when commercial video game production is held at the forefront is that such a release could endanger the commercial success or profit of the game due to competing products being released using the same code base. However, while this appears as an initial concern, there are, as far as I understand, no rational reasons for adhering to this belief.
|
||||
|
||||
To highlight the chances of risk, let us first analyze what could happen through a delayed source release pattern. Let us assume that Game A is a non-free video game that is being developed by a Studio. Game A uses Engine Z which does not include the art, sound, and other similar, non-engine related assets. In this way, Game A can be broken down into the Engine and the Assets.
|
||||
|
||||
After the initial release of the game, which is met with moderate success, the Studio decides to release the source code for Engine Z under a free software license. The Assets for the game are not included with the source code, as the users must generate their own content for Engine Z to allow for a new game to function. Various potentials crop up from this release, which are expounded upon and addressed in terms of probability below.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Risk 1: Competition
|
||||
````````````````````````````````
|
||||
1. A competing product is made that potentially impacts post-release profit.
|
||||
1. A competing product is made that potentially impacts post-release profit.
|
||||
|
||||
Although this could occur, the potential of it varies greatly depending on how specific the engine is towards particular game mechanics and logic. The more generalized the engine is, the greater potential there is for a new product to be made from said engine. If the engine is specialized, only similar games can be made.
|
||||
|
||||
|
@ -20,7 +29,10 @@ In the event of such a (thus far improbable) commercial game from a free softwar
|
|||
|
||||
In summation, given that no examples exist of a commercial game being made from a previously released commercial game's engine actually succeeding or even existing in the first place, it seems unlikely that it is even a concern. If a competing game was actually released, it would require a full body of new assets that take a great amount of time and effort to create, thus severely reducing chance for commercial competition. Furthermore, any engine modifications for the new game would have to be released under the same license as the original engine, thus maintaining freedom of and access to knowledge as per free software.
|
||||
|
||||
2. Game exploits are created.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Risk 2: Game Exploitation
|
||||
````````````````````````````````
|
||||
2. Game exploits are created.
|
||||
|
||||
This concern is far more legitimate than the first, for the reason that providing an absolute transparency and access to the engine's inner workings mean that reverse engineering does not need to be done. However, the amount of concern for this is dependent on both the type and the design of the game in question. For most games, exploits are inevitable. If the game is a single-player game or most any non-competitive game, the exploits are irrelevent as they only serve to change the game experience for the player. This does not impact profit.
|
||||
|
||||
|
@ -32,13 +44,18 @@ In a non-centralized server model, such as a client-to-client command relay desi
|
|||
|
||||
In summation, exploitation is inevitable and releasing source code may increase the frequency. However, any increase of exploitation due to source release is entirely speculative and could actually result in a decrease due to exploitation or security patches being found and created in the first place. Furthermore, the design of an engine will likely be the most authorative method of dealing with exploits, regardless of source code availability or not. Finally, anti-exploit measures, in the form of detection systems, are possible, however the most reliable form is that of community-based policing via admins or votekicking.
|
||||
|
||||
3. Easy Piracy of the Game
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Risk 3: Easy Piracy
|
||||
````````````````````````````````
|
||||
3. Easy Piracy of the Game
|
||||
|
||||
Of the two concerns provided thus far, piracy is the most legitimate concern, as most any protection scheme can be by-passed with greater ease due to source availability. Some methods can be created that reduce the chance of this, such as a centralized server that authenticates users based on a product key or account information, however such methods could also be by-passed. However, I hold that this is little different than the current and historical situation of game piracy. As it stands, DRM-style systems are not effective at preventing piracy and generally do best at hindering legitimate users from playing the game they paid for.
|
||||
|
||||
Combating piracy is a losing game in which the only vaguely effective method is to restrict the freedoms of legitimate purchasers to such an extreme level that would inevitably lead to a decrease in overall profit due to cumbersome and annoying user restriction.
|
||||
|
||||
In summation, even in the non-free world, fighting piracy with DRM is a losing battle that rarely stops illegitimite users and primarily hurts legitimate users. The best combat is to create a fun game with a strong community connection that values and empowers players. If players, regardless of piracy or not, are empowered and valued, they will feel a greater compulsion to support the original developers.
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Conclusion
|
||||
````````````````````````````````
|
||||
Given this analysis, it is clear that arguments against source code release of a game's engine ultimately hold little to no water. Competiting products made from the source code are highly unlikely due to the long development window required to create entirely new assets. Exploitation is ultimately the same regardless of source code release or not. Preventing piracy is as it is - a losing battle that fails at any real prevention and usually hurts legitimate players most in the process.
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ Desktop Recording: The Script
|
|||
````````````````````````````````
|
||||
To make this script work, we will: have the file, ``~/.record_poll`` act as both the ``stdin`` redirection for ``ffmpeg`` and as a check for if we are recording. Our capture directory is assumed to exist at ``~/capture/``.
|
||||
|
||||
#.include(record)
|
||||
##!/bin/bash
|
||||
#if [ -f ~/.record_poll ];
|
||||
#then
|
||||
|
@ -61,7 +60,6 @@ Camera Recording: The Script
|
|||
````````````````````````````````
|
||||
This script follows the exact order of the Desktop Recording:
|
||||
|
||||
#.include(record_camera)
|
||||
##!/bin/bash
|
||||
#if [ -f ~/.camera_poll ];
|
||||
#then
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Localization: Developing **The Right Way(tm)** ``2015-05-06``
|
||||
````````````````````````````````````````````````````````````````````````````````
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Introduction
|
||||
````````````````````````````````
|
||||
This brief document implores developers to create __localizable__ software, rather than linguistically biased software that passively decreases the potential for global knowledge and progress.
|
||||
|
||||
Knowledge should not function in a manner that biases one group of individuals over another simply due to a difference of locale. Indeed, for progress and extensive utility within software, ensuring the localization of the end-user experience __as well as__ the developer experience, is of utmost importance.
|
||||
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Why Localize?
|
||||
````````````````````````````````
|
||||
Continuing from the introductory section, while developing and deploying software, it is important to maintain accessibility for as many individuals or groups of individuals as is possible, as it not only increases one's own user and/or developer base, but increases knowledge and progress on a global level.
|
||||
|
||||
In other words, the localization of software to provide usability to as many users -- and developers -- is extremely important for the expediated growth of knowledge and the promotion of progress. Even if not directly providing localizations, one must provide the methods for others to create localizations - in this way, one must make software unbiased and force reliance upon abstractions rather than limitations.
|
||||
|
||||
Furthermore, if one is to develop for more than one locale or language, one is forced to not only address the needs of others, but is forced to create solutions that cause one to step outside of their limited domain.
|
||||
|
||||
Libraries that provide such functionality, such as GNU's gettext, are readily available for deployment and use in many languages and software available. In the event of such libraries not being available, one should strive to implement compatible -- or superior -- variants for the desired system.
|
||||
|
||||
From a developer's point of view, localization can seem difficult, but with existing libraries available, learning to implement localized designs is an easy task. After one learns how the localization works, implementation can be as easy as wrapping a function around already existing language-specific strings, such as:
|
||||
|
||||
#echo("Hello, world!");
|
||||
|
||||
to:
|
||||
|
||||
#echo(_("Hello, world!"));
|
||||
|
||||
In the above gettext-style case, one simply needs to load in available language files before-hand, and the messages will be printed in their proper locale.
|
||||
|
||||
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
In Closing
|
||||
````````````````````````````````
|
||||
In conclusion, there is no real reason to ever tie oneself or one's user to one language -- doing so only succeeds in isolating enormous populations of the world, thereby decreasing global knowledge and progress, and, of course, reducing one's own potential user and developer base.
|
||||
|
||||
Put succinctly, do things **The Right Way(tm)** and localize your software.
|
|
@ -0,0 +1,6 @@
|
|||
,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
//2015-05-06// - Minor updates
|
||||
````````````````````````
|
||||
Increased the content font-size to 13pt and increased paragraph padding by 1m. I am not sure I like it as much, but I figured it might be more readable to get closer to 50-75 characters per line (it is still much more than that).
|
||||
|
||||
I've updated a few articles to have proper section styling and introductions. I have also added a small article, [[Localization: Developing The Right Way(tm)]](http://kettek.net/?dox=localize_your_software.html) - the name implies the content.
|
Loading…
Reference in New Issue