Thursday, April 27, 2017

Usability

To start. It is necessary to read the source. The rules, which I will write below - were created as far back as 2002, but they are actually relevant up to now. Pulling them out of the network was another task, as they are all used by SEO firms to promote their own sites to sell the promotion of other sites for money. So I decided that, at least for me, it would be very useful to keep these rules somewhere where I will know where to look for them if that. Well, you will come in handy!

In the second part of the blog - by tradition - what I actually had to initially write, though, as usual about their additions. Namely - examples of bad and good use of heuristics.

Jakob Nielsen - 110 rules of usability

1-10
  • ·         The name and / or logo of the company must be of a suitable size and be located in a conspicuous place (for example, in the upper left corner)
  • ·         Add to the page an advertising slogan that clearly characterized what exactly the company does
  • ·         Highlight the features of the site from the point of view of users, its differences from the main competitors
  • ·         Clearly highlight the primary tasks, so that hitting the main page, the visitor immediately knew where to start
  • ·         The site should have only one "official" home page
  • ·         Within the main site, the word site should not refer to anything else, except as a website in general
  • ·         The design of the home page should clearly distinguish it from other pages of the website
  • ·         Group information about the company, its investors, public relations, available job openings and other similar information in one place
  • ·         It is necessary to add a link to the "About Us" section, which contains information about the company and links to more detailed information about its products, services, investments, business proposals, the management team
  • ·         It is necessary to add a link "Contact Us", which points to the corresponding page with contact information about the company


11-20
  • ·         To write about the company in the media, add to the home page "Press releases" or "Company news"
  • ·         From the user's point of view, the website and company must be integrated into one
  • ·         If you support the feedback mechanism, clarify - who will read the received messages
  • ·         Do not post "internal" information on a public website
  • ·         If the website collects information about visitors, add a link to the home page "Legal Information" or "Confidentiality"
  • ·         Explain how the website "earns" money, if it is not obvious
  • ·         When choosing words, be guided by the language of users. The names of the sections must correspond to their purpose in terms of the user, not the company
  • ·         It is necessary to avoid excessive
  • ·         Do not use too clever phrases or advertising jargon that make understanding difficult
  • ·         Strictly monitor the use of capital letters and the observance of speech formatting


21-30
  • ·         Do not give the name of a clearly marked area of ​​the page, if its contents and so speaks for itself
  • ·         Avoid singleton lists and categories
  • ·         When formatting, use non-breaking spaces between words that, for semantic reasons, should be placed together in the same row. When formulating tasks for visitors, it is necessary to use only the imperative mood. This form of the verb can be softened if necessary
  • ·         Before using an abbreviation not found earlier in the text, initials or acronym, her / his should be decoded
  • ·         Avoid exclamation marks
  • ·         Less often use words, typed only in capital letters, or do not use them at all
  • ·         Do not insert extra spaces or punctuation marks where you do not need them
  • ·         Examples should disclose, and not just describe the content of the site
  • ·         Each example should be accompanied by a link to a detailed description of this product, not the category to which it belongs
  • ·         Next to the description of specific examples, you must place a link to the category as a whole


31-40
  • ·         Links to detailed information about a particular product should be different from the links to the category as a whole
  • ·         Take care to ensure easy access to all the elements that have been on the home page lately. To do this, create a list of recent changes, as well as permanent archives of the deleted content
  • ·         The names of links should be different from each other and be legible
  • ·         Do not use general instructions in the title of links "Click here"
  • ·         The link at the end of the list of elements should not be called an undefined name like "More:" or "More:"
  • ·         The colors of viewed and unreviewed links should be different
  • ·         In the title of a link or a group of links, do not use the very word "reference". To show that a given word or phrase is a link, underline it / her and highlight it in blue
  • ·         If the function of the link is different from an ordinary transition to another web page, this should be explicitly stated
  • ·         The main navigation bar should be in a prominent place on the page, preferably near its main part
  • ·         Group the navigation areas so that similar items are next to each other


41-50
  • ·         Do not create multiple navigation areas at once, the purpose of which repeats each other
  • ·         The home page should not contain an active link to itself
  • ·      Do not use the invented artificial words in the names of navigation elements. The category names should have their distinction - if users do not understand the fictitious terminology, they will not be able to distinguish between categories
  • ·         If the site provides a "shopping cart" for purchases, create a link to it on the home page
  • ·     Pictograms to designate navigation elements are used only in cases when they are able to quickly attract the attention of visitors to a certain class of objects
  • ·      The home page should contain a field for entering search queries, and not just a link to the search page
  • ·      Input fields must be long enough for the user to enter and edit a medium-sized query
  • ·      To the search area to the right of the field, add the "Search" button
  • ·      If the advanced search on the site is not carried out too often, the home page should provide a simple search, followed by a link to the advanced search page or advice on how to conduct it
  • ·        By default, the search should cover the entire site


51-60

  • Do not include the Internet search function in the site's search engine (except for portals)
  • The home page should provide direct access to the primary services of the site
  • Do not add to the site services that are not relevant to its main topic
  • Do not put on the site services that repeat standard browser functions, such as selecting a start page or creating a bookmark
  • Graphics should display the real content of the site, and not only serve as its decoration
  • Photographs and drawings must be signed if their meaning is not fully understood from the context of the article to which they are attached
  • Photos and diagrams should be edited in accordance with the main screen resolution
  • For drawings, the use of "watermarks"
  • Do not use animation just to draw attention to some element of the home page
  • Never expose the main elements of the page, such as the company logo, advertising slogan or main title


61-70

  • Allow the visitor to decide whether he wants to see an animated screensaver to the site - do not run it by default (refers to Flash-screensavers)
  • Limit the use of various font sets and other text formatting (sizes, colors)
  • Use high-contrast font colors and page backgrounds
  • Try to do without horizontal scrolling for the most common screen resolution
  • All the main elements of the home page should be above the fold line for the most common screen resolution
  • Use the "flexible" structure of the home page so that its size can automatically adapt to different screen resolutions
  • It is necessary to be extremely careful in the use of logos, in addition to the company's main logo
  • Never use interface elements if the user does not need to click on them
  • Do not get carried away using drop-down lists, especially if their elements require any explanation
  • Avoid the use of input fields, especially at the top of the page, where it is customary to post search tools


71-80

  • Title must begin with a word that carries a semantic load
  • Do not include the top level domain name in Title, unless it is part of the official name of the company
  • Do not include in the Title the phrase "home page"
  • Title should contain a brief description of the website
  • Title must consist of no more than seven or eight words and contain no more than 64 characters
  • Home pages of commercial companies should have an address like http: // www.company.com, complex codes or page names like index.html should not be used.
  • If the content of the website is closely tied to a specific country - the URL must contain the top-level domain of the country
  • It is necessary to register domain names containing alternative, abbreviated, as well as the most frequently used incorrect variants of spelling a company name
  • If the website has several alternative domain names, select one of them as "official" and redirect to it all visitors who have used other addresses
  • The headings of the articles should be concise, but at the same time descriptive, and convey maximum information with the minimum number of words


81-90

  • Create a summary for each article or press release mentioned on the home page
  • As a link to the full version of the article, you must use its title, not the subtitle
  • If all the news mentioned on the home page refers to the events of the last week, there is no need to specifically indicate the date and time in the subtitle of each of the articles. The only exception is really important news that can be updated several times a day
  • No spectacular screen savers and intermediate pages should not be
  • Max to refuse pop-up windows (PopUp)
  • Do not use "route pages" to select the geographical location of visitors (excluding several language versions and none is the main one)
  • Advertising banners of other companies should be carried out "on the periphery" of the page
  • Advertisements of "outside" companies should be small and discreet
  • If advertisements are placed outside the standard "banner area". In this case, they should be marked as advertising, so that visitors are not confused with the main content
  • Avoid generally accepted design techniques for advertising banners in the design of the main content of the website


91-100

  • The site should not have Greetings (in the literal sense of the word)
  • If the website is "unavailable" or if important site elements have stopped working, you should immediately report this on the main page
  • Beforehand to think over the plan of work with a node in case of extraordinary events
  • No need to spend space on expressing gratitude to the search engine, design studio, favorite brand of browser or technology used
  • Respect the restraint in the transfer of awards and titles
  • Do not automatically update the contents of the page (autorefresh)
  • In the process of updating the page, update only the content that has really changed
  • If any element of the home page is displayed taking into account the already known information about a particular visitor, you do not need to show its "general version" for new visitors
  • Do not offer users the means of setting the general interface of the page (choosing a color scheme)
  • Do not limit yourself to simple links to the registration form. Detailed explanation of the benefits of registration for visitors


101-110

  • Before asking the visitor's e-mail address, inform him about the advantages and frequency of sending newsletters
  • If the website supports the communication of users through a chat or other similar means, do not limit themselves to only the general links to them (topics of discussion and the schedule of conferences)
  • Do not put guest books on business / corporate sites
  • The date and time should be specified only for information related to real time, news, chats, stock quotes
  • Show visitors the time of the last page refresh, not the current time
  • When referring to the time required to specify the time zone (for international sites)
  • Use the standard abbreviations "p.m." or "P.M." (for international sites)
  • When specifying a month, use its full name or common abbreviation, rather than the numeric designation
  • To display numbers having five or more digits, use the delimiter adopted in your country
  • Displaying a column of fractional numbers, you need to align them by the decimal point



I do not know ... you can certainly disassemble a single "knee-deep" site and tell where there is a bunch of errors and shortcomings. But this is not interesting. If you want to get this information - you can go to any SEO site and include a usability check of any site. Oh there ponavydaet mistakes !!!!! The main thing - do not leave koeridnatov their! And then you will not repudiate. You will have to talk to their manager once every six months.

It is much more interesting to make out a few mistakes in the usability of absolutely different things. Yes, even remotes from the TV! More so do not do the way, but I have one taco remote managed to see and use! And the truth was uncomfortable.

So.

Example 1. QIP. Add to the contacts list.

To you someone has written, or you to someone. It does not matter, there is a person who flashes gray and you decide to add it to your contact list. The idea is simple - click on his nickname and select the appropriate item in the menu. But it was not there:

As you can see from the screenshot, the item we need is literally ENVIRONLY directly opposite functions. At the same time, the font is rather small and it's easy to make a mistake.

The bottom line is that by deleting a contact or adding to ignored ones, you can not add it to your list. It must be manually found, deleted from the ignored, waiting for it to write something to you, and again try to add it manually.

Tell me, how could such an important item as an addition be put between two deletions?

Example 2. Program switch on TV

Another example concerns the unsuccessful location of the buttons on the remote control.


You click the channels back and forth, and very often (at least for me), the finger falls but the button Sleep. What does she even do here is not clear.

But that is not all. Well pressed not there and it is not terrible, we click further.

The problem is that the action of the Slip button is deferred. And so, when you chose the channel, watch it, after 10 or even 20 minutes you have bang - and the TV turns off! Just….

And you already forgot that you pressed something. After 10 minutes (the step of the button) - this is a very long segment between the action and the result.

The volume buttons, as well as the channel switching buttons - are the most used and cause instant, expected action. They should be separated from other buttons, especially since there is space (for example, to raise up, those buttons are not used at all).

Do not put frequent buttons with rarely used, especially with a different period of action (immediately switch or turn off after 20 minutes).

Example 3. Remove SMS in HTS

The most commonly used by me is the SMS removal. The fact is that I receive a lot of work and technical SMS every day: the protection code, the confirmation of the operation, the entrance to the private, the notification of the end of the balance, etc.

To perform some operations with the message, you must click on it in the text box. But if this, say, a message from WebMoney - it's not so simple and done. The fact is that there is a huge number of figures, and all the figures are considered working information and when you hit it - immediately tries to call it or send a message.

But, let's say, it turned out, we got in the right part, the window opens:

Because the touch screen of the HTS is still cheap, very often instead of deleting the message - I save it. And then I have to delete it twice. And the chance of making a mistake also doubles.

It seems to me that the removal should be separate. So that it can not be confused with anything (and you can not accidentally delete it, and when you delete it, it is not saved).

The most interesting is that when working with a message through the menu, the removal is in additional functions, which I personally do not understand.

Well, now the flagships are usability. A couple. So already a blog as a book as usual !!!

Google Play Store
The Google Play Store online store has thousands of applications and paid / free software products that can be downloaded directly from a website or phone under the management of the Android OS. Competently organize such a huge and diverse amount of information - this is not an easy task for developers of usability online store. The example Google Play Store shows that you can create a navigation system that allows you to find any of the necessary programs in one or two clicks.

The design of the resource is simple and attractive. The screen is free of unnecessary information, which is partly due to the navigation menu on its left.
Mozilla
The company Mozilla Corporation - the creator of the third most popular in the world free browser Mozilla Firefox

The official website of the company seems simple and brilliant at the same time. Having identified the main goals of their target audience, Mozilla did not play hide-and-seek with clients, but placed the information they needed (information about the company and products) right on the home page. You can download the browser right there.

Knowing the needs of the target group is important for all marketers, and the company using this information can make your site or lending convenient, friendly and, of course, profitable.

 Apple
Computer giant Apple never disappoints its usability. A convenient and attractive interface of absolutely all devices is one of the reasons why people will always choose "iPhones", "iPads" and "MacBooks". Have you noticed that the official Apple page does not require scrolling?

All that you might need, "apple" designers have managed to place on one screen, without scrolling! Definitely, Apple understands usability.

Monday, April 17, 2017

Software development models

Today we were asked to give an example of the real use of one of the software development models, and, of course, to expand it on the shelves. Of course, most of us have never participated in anything like that, including me (the creation of an online store does not count - the level, to put it mildly, not the one !!!). Therefore, I concluded that I have the right to bring in an example and disassemble someone else's work.

As a result of searches I came across the article "Scientists from Tomsk State University created a microtomograph. It allows to know, with an accuracy to a micron, the internal structure of various materials. For example, diamonds. "

As a result, I decided that this is exactly what you need, because for sure everyone will write about the most advanced versions of models, and this mechanism, which I wrote above - was created on the simplest - the first model. Pretty funny.

But for understanding, we still have to go through all the models. This will be the first part of the article.

Software development knows many worthy methodologies - in other words, established best practices. The choice depends on the specifics of the project, the system of budgeting, subjective preferences and even the temperament of the leader.

1. "Waterfall Model" (cascade model or "waterfall")

One of the oldest, involves the sequential passage of the stages, each of which must be completed completely before the beginning of the next. In the Waterfall model it is easy to manage the project. Due to its rigidity, the development takes place quickly, the cost and time are predetermined. But this is a double-edged sword. Cascade model will give an excellent result only in projects with clearly defined requirements and methods of their implementation. There is no way to step back, testing begins only after the development is completed or almost completed. Products developed for this model without a valid choice of it can have shortcomings (the list of requirements can not be adjusted at any time), which becomes known only at the end due to a strict sequence of actions. The cost of making changes is high, because to initialize it you have to wait for the completion of the entire project. However, the fixed cost often outweighs the disadvantages of the approach. Correction of the deficiencies realized in the process of creation is possible, and, in our experience, requires from one to three additional agreements to a contract with a small TOR.

When to use the cascading methodology?


  • Only when the requirements are known, understandable and fixed. Contradictory requirements are not available.
  • No problem with the availability of programmers of the required skills.
  • In relatively small projects.

2. "V-Model"

It inherited the structure "step by step" from the cascade model. The V-shaped model is applicable to systems that are particularly important for trouble-free operation. For example, applications in clinics for monitoring patients, integrated software for emergency airbag control mechanisms in vehicles, and so on. The peculiarity of the model can be considered that it is aimed at thorough testing and testing of the product, which is already at the initial stages of design. The testing phase is carried out simultaneously with the corresponding development stage, for example, unit tests are written during the coding.

When to use the V-model?


  • If thorough testing of the product is required, then the V-model will justify the inherent idea: validation and verification.
  • For small and medium-sized projects, where requirements are clearly defined and fixed.
  • In conditions of availability of engineers of necessary qualification, especially testers.

3. "Incremental Model"

In the incremental model, the total system requirements are divided into different assemblies. Terminology is often used to describe the phased assembly of software. There are several development cycles, and together they make up the life cycle of "multi-waterfall". The cycle is divided into smaller easily created modules. Each module goes through the phases of requirements definition, design, coding, implementation and testing. The development procedure for the incremental model assumes the release at the first major stage of the product in the basic functionality, and then the sequential addition of new functions, the so-called "increments". The process continues until a complete system is created.

Incremental models are used where individual requests for change are clear, can be easily formalized and implemented.

An example of one increment for a simpler understanding. The network of electronic libraries Vivaldi replaced DefView. DefView connected to one server of documents, and now can connect to many. On the site of the institution, which wants to broadcast its content to a certain audience, a storage server is installed, which directly accesses the documents and converts them into the desired format. There was a root element of the architecture - the central server Vivaldi, acting as a single search system for all storage servers installed in various institutions.

When to use the incremental model?


  • When the basic requirements for the system are clearly defined and understandable. At the same time, some details can be modified over time.
  • An early withdrawal of the product to the market is required.
  • There are several risky features or goals.

4. "RAD Model" (rapid application development model)

The RAD model is a variation of the incremental model. In the RAD model, components or functions are developed by several highly qualified teams in parallel, like several mini-projects. The time frame of one cycle is strictly limited. The created modules are then integrated into one working prototype. Synergy allows very quickly to provide the client with feedback.

The rapid application development model includes the following phases:

  1. Business modeling: the definition of the list of information flows between different units.
  2. Data Modeling: The information collected in the previous step is used to identify the objects and other entities necessary for the circulation of information.
  3. Process modeling: Information flows connect objects to achieve development goals.
  4. Assembling the application: automatic assembly tools are used to convert models of the automatic design system into code.
  5. Testing: new components and interfaces are tested.
When is the RAD model used?

  • It can be used only with highly qualified and highly specialized architects. The project budget is big to pay for these specialists along with the cost of ready-made tools for automated assembly. The RAD-model can be chosen with confident knowledge of the target business and the need for urgent production of the system within 2-3 months.
5. "Agile Model" (flexible methodology of development)

In the "flexible" development methodology, after each iteration, the customer can observe the result and understand whether it satisfies it or not. This is one of the advantages of a flexible model. Its disadvantages include the fact that, because of the lack of specific wording of the results, it is difficult to estimate the effort and cost required for development. Extreme programming (XP) is one of the most well-known applications of a flexible model in practice.

At the heart of this type - short daily meetings - "Scrum" and regularly recurring meetings (once a week, every two weeks or once a month), which are called "Sprint". At daily meetings, team members discuss:

  • A report on the work done since the last Scrum;
  • A list of tasks that an employee must perform before the next meeting;
  • Difficulties encountered in the course of work.
The methodology is suitable for large or long-term projects that are constantly adapted to market conditions. Accordingly, requirements change during implementation. It is worth remembering the class of creative people who tend to generate, give out and try out new ideas weekly or even daily. Flexible development is best suited for this psychotype of executives.

When to use Agile?

  • When the needs of users are constantly changing in a dynamic business.
  • Changes to Agile are realized at a lower price due to frequent increments.
  • In contrast to the waterfall model, in a flexible model, only a small planning is sufficient to start a project.
6. "Iterative Model" (iterative or iterative model)

An iterative life-cycle model does not require a complete specification of requirements to begin. Instead, the creation begins with the implementation of part of the functional, which becomes the basis for determining further requirements. This process is repeated. The version may be imperfect, the main thing is that it works. Understanding the ultimate goal, we strive for it so that each step is effective, and each version is workable.

An example of iterative development is voice recognition. The first research and preparation of the scientific apparatus began long ago, in the beginning - in thoughts, then - on paper. With each new iteration, the recognition quality improved. Nevertheless, perfect recognition has not yet been achieved, hence, the problem has not yet been fully solved.

When is it optimal to use an iterative model?

  • The requirements for the final system are clearly defined and understood in advance.
  • The project is big or very big.
  • The main task should be defined, but implementation details can evolve over time.
7. "Spiral Model" (spiral model)

The "spiral model" is similar to incremental, but with an emphasis on risk analysis. It works well for solving mission-critical business tasks, when failure is incompatible with the company's activities, in the conditions of issuing new product lines, if necessary, scientific research and practical testing.

The helical model assumes 4 stages for each turn:

  • Planning;
  • Risk analysis;
  • Design;
  • Evaluation of the result and a satisfactory quality of the transition to a new coil.
This model is not suitable for small projects, it is reasonable for complex and expensive, for example, such as the development of a document circulation system for a bank, when each next step requires more analysis to assess the consequences than programming.

Now we can consider the concrete solution, the concrete task, about which I spoke at the very beginning!

How to create a software for a microtomograph using a cascade model?

I want to tell you more about the interesting project of Edison. Before the developers set the task to write software for the microtomograph, they coped with it perfectly, and then pushed seeds, bolts, capacitors and moth into this tomograph. A serious man, this tomograph is needed to check diamonds and not buy leaky.

I want to tell you more about the interesting project of Edison. Before the developers set the task to write software for the microtomograph, they coped with it perfectly, and then pushed seeds, bolts, capacitors and moth into this tomograph. A serious uncle, this tomograph is needed to check diamonds and not to buy holes. The tomograph can enlighten the material with a resolution of up to a micron. It is 100 times thinner than a human hair. After scanning, the program creates a 3D model, where you can see not only the exterior of the part, but also to find out what's inside it.

Mathematical algorithms used.

  • Inverse Radon transform.
  • Marching / walking cubes.
  • Gauss filter.
  • Filtration / convolution, normalization of projections.
  • Implementation and technology.
  • C ++ / Qt.
  • Ubuntu, Windows.
  • CUDA.
  • Volumetric-voxel model rendering.
  • Own format for storing images with grayscale depths of 12 bits.
  • Separation of reconstruction to the client-server.
  • Preservation of volumetric data in the form of "Octographs".
  • Labor costs: 5233 person-hours.
Debugging was performed on raw data (projection images) obtained from a tomograph.

Algorithms

First of all, it was necessary to select a mathematical apparatus for solving the problem. The main algorithm - the inverse Radon transform - was laid down in the formulation of the problem, but it had to be adapted to the peculiarities of our work and to use several additional, auxiliary algorithms. For example, in view of the fact that the object was illuminated by a single "bulb", it was necessary to adapt the formulas of the inverse Radon transform to conic rather than direct projections. The standard algorithm implies that the object is illuminated by a beam of parallel X-rays emanating from an infinitely remote source. In reality, the source of the rays is a point source, and therefore the beam of rays has the shape of a cone. In this connection, the Radon inverse transformation algorithm required the introduction of a coordinate transformation from a conical system to a rectangular one.

At the first stage of the calculations, preliminary filtration / convolution is performed, normalization of the projections. This is necessary in order to mute the noise on the projections, and more clearly isolate the densities.
To build 3D models of surfaces of objects in a standard format, the algorithm "Marching (walking) cubes" was used for viewing in 3D editors Compass, SolidWork, 3D Max Studio. The essence of the algorithm is that it runs through a scalar field, at each iteration, it looks through 8 neighboring positions (the vertices of the cube parallel to the coordinate axes) and determines the polygons needed to represent the part of the isosurface passing through the given cube. Next, the polygons forming the given isosurface are displayed.

Under the Gaussian filter, the project refers to matrix image processing filters using a convolution matrix. The convolution matrix is a coefficient matrix that is "multiplied" by the pixel value of the image to obtain the desired result. The filter is used to smooth out the voxel data and the projections of the slices, which in turn makes it possible to improve the quality of the generated 3D models.

Implementation and technology

In the course of the work, a number of specialized technical solutions were also created: a library for volumetric-voxel rendering of the model; Recording video while performing operations with the model; Own image storage format with grayscale depth of 12 bits; Preservation of volumetric data in the form of "Octographs"; Algorithms for polygonization of 3D models.

Volumetric-voxel model rendering in the project was used to view the model with the ability to rotate and scale in real time. A voxel is a three-dimensional pixel. Also, with the help of voxel rendering, the operator is provided with convenient tools for determining the viewing area with an automatic increase in the level of detail and the possibility of locating the cutting plane at any angle in two clicks. On the basis of the cutting plane, you can later obtain a cut image with the maximum resolution.

Oktotree (octant tree, octree tree, English octree) is a type of tree data structure in which each inner node has exactly 8 "descendants". Octal trees are most often used to separate three-dimensional space, recursively dividing it into eight cells. In the project, an octree allows you to display data in preview mode, when there is no need for data that is not visible to the user. For example, volumetric rendering receives a set of data for display with detail depending on the selected area using an octree, which provides a high FPS when the entire model is visible, and at the same time, an increase in detail if a smaller part of the model is selected.

Debugging

Then the optimization step followed. For one object, the scanner produces 360 images, each with a resolution of 8000x8000. Since the amount of data processed is large, solving the problem "on the forehead" would be completely unsatisfactory. This was taken into account at the design stage, however, after obtaining the first version, the algorithms had to be optimized and adapted several times. The task required that the time to create a three-dimensional model of the microstructure should not exceed 2 hours, so the optimization phase was laid down initially. During the testing of the first version, we were faced with the fact that the use of a standard format for storing projected images is not suitable for the project. The input data contains TIFF images with 16-bit gray-scale encoding. Such a color depth for calculations is excessive, and disk space, network channel, RAM and processor time processing of such images requires a lot. On the other hand, the standard 8-bit color depth was not enough for us to maintain the accuracy of the reconstruction. Therefore, a format for storing images with a 12-bit color depth was developed.

In the technical design was laid the horizontal scaling of calculations. The reconstruction of the 3D model, that is, the main computational task, was divided into small task packages that the central software module distributed over a network of servers in the cluster. The servers used CUDA technology, which allows to use the computing power of graphics processors for calculations. The time required to calculate one model is reduced in proportion to the number of servers in the cluster, since the computational tasks are ideally parallelized, and all servers are 100% loaded.

The CUDA architecture is applicable not only to high-performance graphics computations, but also to various scientific calculations using nVidia graphics cards. Scientists and researchers widely use CUDA in various fields, including astrophysics, computational biology and chemistry, fluid dynamics modeling, electromagnetic interactions, computed tomography, seismic analysis and much more. In CUDA, you can connect to applications that use OpenGL and Direct3D. CUDA is a cross-platform software for operating systems such as Linux, Mac OS X and Windows.

In this project CUDA is used for the main process - reconstruction of volumetric data from projections. Since the graphics processors have a dedicated set of commands, the reconstruction calculations fit well on the graphics cards through the CUDA technology. On the CPU, this task is solved longer at the design stage and at the execution stage.

Maps supported by the created software:

  • Nvidia Tesla K80 24GB (scientific);
  • EVGA GeForce GTX TITAN X 12GB (for playing).


The task provided that the software should work in a Microsoft Windows XP / Vista / 7, Linux environment. In this regard, the cross-platform solution was laid down initially. C ++ / Qt was chosen as the development language, which allowed to have a single source code and to assemble software for different OS.

Radon transform formula, if somebody do not know))))


Monday, April 10, 2017

How to become a hacker

Today I had to write a review of Eric Raymond's open letter "How to become a hacker."

All is probably true i thinck. I'm not a hacker to know it in exact. It is very interesting and accurately formed the experience of the development of intelligence by analogy with the development of physical culture of those who like to train physical strength.

But who am I to argue, or on the contrary, to agree with a man of this level. And it's not interesting. Just copy-paste his work, I will not. To whom it is interesting - can see it ... yes even in the task it can be seen.

Instead, I suggest that you learn about who this person is. And get acquainted with the terminology used by hackers. So.

Eric Raymond - open source soft evangelist!

Eric is one of the most important whales on which the open source movement was built and is worth. This was mainly due to his publication on the methods of software development, based on the analysis of the process of developing the Linux kernel and the personal experience of managing the open project fetchmail - "The Cathedral and the Bazaar".

Some biographies:

Eric Steven Raymond; Genus. December 4, 1957, Boston, Massachusetts, USA - American hacker, author of the trilogy "Cathedral and Bazaar", "Populating the Noosphere" and "Magic Kettle", describing the ecology and etology of software development, co-founder of the Open Source Initiative.

Raymond is an active libertarian, has a black belt in taekwondo, he is a neo-pagan, a political anarchist and stands for the right to wear and use firearms.

Has become an active Internet user since 1970. In general, it was a little forced hobby, because in childhood he suffered from an easy form of cerebral palsy.

Raymond says that he began his career with programming writing his own software, between 1980 and 1985.

As a programmer Eric worked on fetchmail, a number of libraries used in GNU \ Linux, the legendary Emacs and other software products.

Eric Raymond finally formulated the "Law of Linus", which states that with enough eyes, all errors lie on the surface. A deep mistake is one that is difficult to find, but if enough people are looking for errors, then they all become superficial. Eric Raymond's views on open source differ slightly from the views of Linus Torvalds and Richard Stallman, they all share the open source ideology, but if you briefly outline their positions, then the following is true: Linus and Eric disagree about what is more important - openness of code or "freedom "Distribution programs (a supporter of" freedom "is Raymond), well, Stallman, in general (imho) completely against proprietary software. Eric received 150,000 shares of VA Linux, which was valued at $ 32 million on the day of the first public sale of company shares (IPO), although exactly in a year their value decreased by about 17 times = ($ 1.88 million).

In more detail, you can find out all the above in the documentary "Revolutionary OS", which gives a qualitative and very clear material: what is GNU, GNU / Linux, GPL, and what were the motivations for the movement of Free Software and Open Source.

Also a lot of attention is paid to how you can and should make money on a business model using Open Source.

To play on the nerves in Microsoft, Eric Raymond was especially good!

February 3, 1976
Open letter to fans of the Open Source community:

For me, the most critical moment in the amateur market at the moment is the lack of good software courses, books, and the software itself. Without a good software and its owner who understands programming, an amateur computer is useless. But will quality software be written for the amateur market?

The feedback we received from hundreds of people who claimed to have used BASIC was all positive. However, two surprising things were evident: 1) Most of these "users" never bought BASIC (less than 10% of all Altair owners bought BASIC), and 2) The size of the royalties we received from the sale in the amateur market made the cost of time , Which we spent on Altair BASIC, less than $ 2 per hour.

Why would it? Like most lovers should be aware, most of you steal your software. You have to pay for hardware, but you can share the software. Who cares if the people who worked on it will get it?

Is it honest? Of course, when you steal software, you do not contact MITS (Micro Instrumentation and Telemetry Systems) with problems that you may encounter. But anyway, MITS does not profit from the sale of software. Royalties paid to us, manuals, tapes (carriers), and overheads made it for us a non-profit operation. One of the consequences of your actions is that they do not write a good software. Who can afford professional work for free? What amateur can spend three man-years on programming, searching for bugs, documentation of his product and distribution for free? For information, no one except us has invested tons of money in amateur software. We wrote 6800 BASIC, and write 8080 APL and 6800 APL, but we have no reason to make this software available to amateurs. To put it bluntly, what you are doing is stealing.

And what about those who resell Altair BASIC, they make a profit on the sale of amateur software? Yes, but those about whom we will be informed can eventually lose. These are the ones who spoil the name of amateurs, and who must be driven from any meeting of the club, if they appear.

I would be glad of letters from those who decide to pay for the software they use, or has suggestions and comments. Just write to me at 1180 Alvarado SE, # 114, Albuquerque, New Mexico, 87108. Nothing would please me more than the opportunity to hire ten programmers and flood the amateur market with a good software.

Bill Gates
General Partner, Micro-Soft

For Bill Gates, Open Source looked like partisans, and Eric Raymond himself looked like Darth Vader!

In 1998, he received and published a Microsoft document expressing concern about the quality of an opponent with open source.

In 2000-2002, Raymond wrote a series of FAQs still included in the Linux documentation project. His personal archive also lists a number of non-technical, Linux frequently asked questions.

Raymond is the current editor and custodian of Jargon File, a network encyclopedic dictionary dedicated to hacker slang and hacker culture. In addition, it was Raymond who in 2003 proposed the use of one of the figures of the game "Life" as an emblem of hackers.

Raymond had a number of public disputes with other figures in the Free Software movement such as Richard Stallman and he resigned as president of Open Source on his initiative in February 2005.

Raymond is currently the administrator of the GPSD project (GPSD is a daemon that receives data from a GPS receiver, and provides data back to several applications such as Kismet or GPS navigation software), a demon that makes GPS data from the receiver available in the Format JSON. In addition, some versions of NetHack include its manual. It also contributes to the code and content of the Battle for Wesnoth (turn-based strategy games, the battle for Wesnoth is an open-source game and is available under the GPL license in the form of source code and for various operating systems).

Founded in June 2009 with the help of Raymond, the group hacktivist group of the NedaNet site aims to influence the internal opposition to the Iranian government in the case of 2009. Iranian elections protests. Named after Ned Soltan, a young woman died in unrest after the elections in Iran, he plans to offer help with proxy servers and anonymizers.

Here such here the person. In addition to the image, you can add that he owns a black belt in taekwon-do.

Now a little about the terminology that people like Eric use.

Hackers and Jargon File.

The word "hacker" is habitually associated with the image of a cybercriminal - an intellectual thief who breaks into licensing programs and bank accounts, or vice versa, a sort of Robin-Hood, a fighter exposing the malicious intentions of corporations. But it was not always so. Hackers in the original sense of the word are idealists of cyberspace, whose core values ​​are disinterested curiosity, creativity and freedom of information. It's hackers who stand at the source of free software. The most famous documents about the origin and development of the hacker movement: Stephen Levy's book "Hackers: Heroes of the Computer Age" and the famous Jargon File. About the latter, and there will be a speech.

Jargon File - a network dictionary of hacker slang, containing more than 2300 articles, on the terminology and culture of hackers. The original version of this document was created by Rafael Finkel at the Stanford Artificial Intelligence Laboratory (SAIL) in 1975. Then it was called AIWORD.RFUP or AIWORD.RFDOC, the current name was given a year later, after it went outside its own laboratory and began to be replenished and edited by Mark Crispin and Guy Steele at the Massachusetts Institute of Technology (MIT).

Rafael Finkel - creator of Jargon File.

In 1983, the file was published in a printed version (before that there was a small magazine publication in 1981), and for a while "freezes". Changes in it did not make for a whole seven years. In 1990, a new version appears, which is replenished with the lexicon of new hacker communities. The last of the existing editions of the dictionary refers to 2003. Currently, editing is in the hands of Eric Raymond with the participation of Guy Steele.

Ethics of hackers.

1. The belief that sharing information is a force capable of doing good, and that the ethical duty of hackers is to share their achievements by creating free (free) programs and providing access to information and computing resources as far as possible. (Erick is the believer of that).

2. The belief that hacking of systems for pleasure and research is ethically acceptable, as well as the fact that hacking can not be qualified as stealing, vandalism or breach of confidentiality. (Erick tell that theese people are cruckers).

Both of these ethical principles are widely (but not universally) accepted among hackers. Most hackers understand hacker ethics in the first sense, and many act in harmony with it, creating and distributing free software. Some go further and believe that ALL information should be free and ANY access control is evil, such a philosophy stands behind the GNU project.

The second meaning is not so unambiguous: some consider the act of breaking in itself as unethical. But this principle at least affects the behavior of people who imagine themselves to be "benign" crackers. From this point of view, this is the highest form of hacker politeness: (a) hacking the system and then (b) explaining the sysop, preferably by e-mail on behalf of the superuser, how exactly it was done, and how to close this hole better; While they are free (and without extortion).

A more accurate expression of both versions of hacker ethics is that almost all hackers are driven by the will to share technical tricks, programs and (if possible) computing resources with other hackers. Gigantic cooperative networks such as Yuznet, Fidonet and the Internet can function without central control because of the following stroke: they are strengthened and rely on a sense of community, which, perhaps among the hackers, is the most valuable intangible asset.

Some definitions.

Hacker - the initial meaning is a person who makes furniture with the help of an ax (at least, so it is written in Jargon File).

1. A person who loves the study of details (details) of programmable systems, studying the issue of improving their capabilities, as opposed to most users who prefer to limit themselves to learning the minimum required. RFC 1392 reinforces this definition as follows: "A person enjoying a thorough understanding of the internal actions of systems, computers and computer networks in particular."

2. Somebody programming with enthusiasm (even obsessively), or loving programming, and not just theorizing about programming.

3. A person who can appreciate and understand hacker values.

4. A person who is strong in fast programming.

5. An expert in relation to a particular computer program, or a person who often works with it; Example: "Unix hacker". (Definitions from the first to the fifth are interrelated, so one person can fall under several of them.)

6. Expert or enthusiast of any kind. Someone can be considered a "hacker of astronomy", for example.

7. Anyone who loves intellectual tests, consisting in creative overcoming or circumvention of restrictions.

8. (Not recommended) An attacker who exploits system vulnerabilities. The correct term for its designation is cracker.

9. Also the word "hacker" denotes belonging to the global community in the network.

Cracker - by definition, Jargon File, cracker - "Someone who hacks the security of the system. The term was created by hackers in 1985 specifically to protect against the misuse of the word "hacker" by journalists. " Also, crackers are called "dark side hackers", a hacker who legally engaged in burglary, for example, being involved in the investigation, is called a samurai.

In the attachment to Jargon File "Help in spreading hacker culture" we read:

"If you are a writer or a journalist, do not say or write {hacker} when you mean the word {cracker}. If you work with writers or journalists, then teach them this and encourage them to act correctly. If you catch a newspaper or magazine on the wrong use of the word "hacker", write to them and point out their mistake (this application includes a sample letter) "

Lamer:

1. A synonym for looser (a loser), not used by most hackers and distributed mainly in crackers and phreakers. A person who loads a lot (download) from the network, but does not upload anything to it (upload). A synonym - leacher (leacher), falls into the jargon of users of peer-to-peer networks and now.

2. A man who is trying to hack into a BBS conference.

3.Tot who bothers the system operator of the BBS conference and other users with stupid replicas, uploads files infected with viruses to the network and so on. A modern synonym for this value, not mentioned in the Jargon File, will most likely be a "troll".

Portrait of J. Random Haker

Incomplete translation of one of the applications to the dictionary. The names of the application in the original are A Portrait of J. Random Hacker, a pun that should be understood as "Portrait of a random hacker".

Clothing.

The general style is everyday, posthippies. Hacker's are: jeans, a T-shirt (often with an ingenious intellectual inscription), sports shoes and sandals, and completely barefoot hackers come across. At the same time appeared in the mid-nineties T-shirts with inscriptions and computer images did not meet with hackers of great popularity because of too direct interpretation. By that time, they already had their own folklore and a system of signs. However, it also indicates that at present this rate has changed and a modern hacker can often be found in a T-shirt with a Linux penguin or BSD demon.

Faced with the variety of symbols used by hackers from different communities, Eric Raymond proposed in 2003 to use the glider as a single symbol that unites hackers of all stripes. The source for the symbol was the game, or rather the "cellular automaton" "Life".

For less warm conditions suits soft suede jackets, tourist boots. A common sign of hackers were also long hair, a mustache, a beard.

Since the mid 90's in the clothing of hackers there are elements of various subcultures - ravers, punks, ready. In general, you can not talk about clothing as an identifying sign. Rather, the appearance of the hacker is determined by the preference for convenience over the impression produced and the desire to give clothes as little attention as possible.

Hobby.

Many of the hacker hobbies are widespread and outside the movement. This is science fiction, music, historical reconstruction, chess, go, backgammon, wargames, in general any intellectual games. For some time, desktop role-playing games such as Dungeons & Dragons have been popular, but they lost most of the adherents in the hacking environment when they turned into the mainstream and finally commercialized. Among the last mass hobby hackers is the collectible card game Magic: The Gathering. Other hobbies do not correlate so much - it can be anything, anything, from linguistics to acting.

Physical activity and sport.

Many hackers, and even most of them, do not go in for sports and even are definitely "antiphysical." Those who do not disdain sports, the audience's interest in it is vanishingly small. Sport - this is what you need to do, but do not look at all.

Hackers like the plague avoid team sports, but a notable exception is volleyball, the authors suggest that in all probability this is due to the lack of physical collisions and a friendly atmosphere. For similar reasons hackers liked and Ultimate Frisbee "Hacker" sports are more a competition with yourself than with someone else. As a rule, they mean concentration, endurance and training skills. These include: martial arts, skydiving, skydiving, skating and skiing, hiking and so on.

A particular mention deserves the hobby of hackers martial arts. Many observers note that over time it is increasing. In the 1970s, hackers delighted with martial arts exclusively from the outside, erecting in the ideal honed skills of fighters, achieved by severe self-discipline and concentration. As the various martial arts began to gain weight in the US and Western countries, hackers began to not only watch, but also do something themselves. Already in 1977, the editor of Jargon File Erik Raymond, at the first Perl conference, discovered that of five unfamiliar people sitting with him at the same table, four actively practicing one of the martial arts. The most interesting thing was that such a high percentage of anyone present did not seem strange.

Now, in 2000, martial arts have firmly established themselves as a favorite kind of physical discipline among hackers. The culture of martial arts, combining elite concentration on skillfulness and at the same time openness to all who want to join, is the closest parallel to the ideology of hackers from all existing.

It's funny that in the slang of hackers there are many parallels, ironically likening the art of programming to kung fu, for example, code-fu or more specific skills: HTML-fu. With even more irony, modern hackers liken the process of integration into the hacker community to Jet Li movies: a single-minded newcomer goes to science to the masters of tradition, exercises deep meditation, performs heroic hacker exploits at their command, and finally becomes a master ready to instruct new "noobs" On the path of a hacker.

Education.

All hackers who have left adolescence have graduated from college or have an equivalent level of self-education. At the same time, self-taught hackers are considered (at least in a hacker's environment) more motivated and thorough and, accordingly, are more respected than their opposite - those who have been trained "officially." In academia, in addition to programmers, electronics professionals and other specialties directly related to computers, physics, mathematics, linguists and philosophers gravitate toward hacking.

What hackers avoid.

All the work of Microsoft. Smurfs, Ewokes, and other such varieties of "offensive cuteness" - obsessive emotion. Bureaucracy. Foolish people. Light music. Television (with rare exceptions for cartoons, movies and good science fiction series, such as Star Trek in its original form or Babylon 5). Business suits. Insincerity. Incompetence. Boredom. Programming languages COBOL and BASIC. Alphabetic menu-interfaces.

Nationality and gender.

The hacker community is still predominantly male, but female hackers still exist, and their percentage is even higher than the percentage of women in the technical and computer professions in general. Mainly female hackers are respected and keep on par with the strong gender.

Nationally among hackers in the United States are representatives of the Caucasian race (not to be confused with the Caucasian nationalities), there is also a stable Jewish minority on the West Coast of the United States and Asian on the East. Jews have a sustained impact on hacker culture, which is expressed in a general bias towards the Jewish national cuisine, as well as borrowing from Yiddish some elements of jargon.

The ethnic composition of hackers is determined primarily by the availability of education for representatives of various national groups. Racial prejudice is met with cold contempt among hackers.

When asked about their "blindness" to sex, cultural characteristics and skin color, hackers often respond that these are the advantages of text communication on the network, and this impact is of tremendous power. In addition, the hackers' passion for developments in the field of artificial intelligence and science fiction affected the development of the idea of ​​"inclusive" rather than "exclusive" definitions of personality. If your imagination willingly gives rights equal to human computer programs, robots, dolphins and aliens from space, then the other skin color or sex seems insignificant.

Religious Worldview.

Among the hackers are: atheists, agnostics, secular Jews (non-observant Jewish), neo-pagans, and very often three or more of the worldviews listed can be combined in one person. Hackers professing traditional Christianity is so rare that no one ever heard of them.

Even hackers who have a strong religious affiliation are mildly referring to "hostile" religions, as well as neglecting religious intolerance in general. Some profess "parodic religions", such as Discordianism (in Russian translations there are interpretations of discordinism and discordianism) and the church of SubGenius.

Zen and, to a lesser extent, Taoism, which they easily combine with the "native" religion, had a noticeable influence on the world view of the hackers.

There are certain mystical beliefs even among those hackers who are not involved in any of the listed religions. Hacker folklore pays tribute to "wise men", and stories about reincarnation and demons are too believable psychologically to be just a joke.

Personal characteristics.

The most obvious personal characteristics of a hacker are high intelligence, curiosity and ease in handling intellectual abstractions. Also, most hackers are "neophiles", lovers of novelty (especially intellectual). Most of them are by nature individualists and nonconformists.

Despite the high level of common intelligence among hackers, this is not at all an obligatory quality (sine qua non - lat.) Without which the hacker can not be imagined. Even more important is the ability to absorb, hold in memory and connect among themselves a large number of meaningless details, relying on the fact that in the future, as the experience is gained, their context and meaning will become clear. A person with an average analytical mind, endowed with this quality can become a very effective hacker, but the creative genius, devoid of it, will quickly find out that he lags far behind people who load the contents of thick reference manuals into their own brain. [Eric Raimonds's note. In the process of working on the first printed version of this document, for example, I studied the rather complex language of computer imaging TeX in just four working days, just "swallowing" the Knut manual from 477 pages. My editor was amazed, what surprised me a bit - the years spent in communication with hackers have taught me to think of this as a routine].

Contrary to the established stereotype, hackers are not narrow intellectuals. They are interested in any topic capable of giving food to the thought process and can often conduct a conversation on almost any topic, if you certainly can get them off the case and get them to talk.

It has long been noted (although contrary to expectations) that the better the hacker knows his business, with the greater interest he refers to extraneous things in which less competent.

Hackers are fanatics of control, which has nothing to do with coercion, or other authoritarian interpretations of the word. Just like children enjoy, forcing the toy train to move forward and backward with the click of the switch, hackers adore doing the same with the computer, but at a much more complex level, creating for him a cunning stuffing. But it must be their own stuffing. They do not like monotony, uncertainty, boredom of small, poorly defined tasks that go beyond maintaining their own existence. Therefore, they are usually very careful and orderly in intellectual life and chaotic in everything that goes beyond it. The hacker code will be fine, even if the desktop is buried under three feet of garbage.

Normal rewards and incentives, such as general acceptance and money, motivate little hackers. They are attracted by complex tasks and intellectual toys, and interest in work or other activities is determined by the complexity of the abandoned call and the interest of "toys."

By the Mayer-Briggs typology and in equivalent psychometric systems, hackers are defined as an introvert, intuitive and mental type, as opposed to an extrovert-sensitive dominant culture in the mainstream. The latter also occur among hackers, but are in the minority.

So. I can say that. If you are 30 and you still not hacker - you will never be it!!! Joke. Ofcource you can try!

I will not become a hacker myself. Before writing this blog i thought that this will never happen, not i just know it!!! But it is ok! I will be someone else!!!