Skip to content ↓


Marat Tanalin on web-development and IT

  • Visual Studio 2015 Update 2 — solving issues (+)

    After installing Update 2 for Microsoft Visual Studio 2015 Community, there were two issues when building some C++ projects:

    1. the IDE was unable to find the windows.h header file (main WinAPI header), and that was causing a fatal error;
    2. there was an “Unresolved external” error when using functions from the standard WinAPI library Psapi.

    Fortunately, both issues can be solved by changing some project settings.

  • UsableHomeButton 1.3 (+)

    Features of the author’s extension UsableHomeButton for Firefox are expanded with the new items of context menu of the “Home” button:

    “Remove query string”, “Canonical URL”, “Minimal URL”, “Open in private window”, and “Copy” submenu.

  • On primary and secondary things

    25 years after publication of my first academic papers involving C++, I’m retiring from active involvement with the language.

    I’ve spent the last quarter century focusing almost exclusively on C++, and that’s caused me to push a lot of other things to the sidelines. 25 years of deferred activities begets a pretty long to-do list. The topmost entry? Stop trying to monitor everything in the world of C++. :-)

    Scott Meyers
  • Fixing the bug of Windows 7’s Explorer at zoom of 200%

    ExplorerHiDpiFix is a free author’s program to work around the bug of Windows 7’s Explorer which causes that, at system-level zoom of more than 188%, the address bar gets very short, and almost entire width of the window is occupied by the search box, while changing the ratio of their lengths by drag-n-dropping the gap between them does not work.

    The program forcedly sets lengths of the address bar and the search box at ratio of 3:1 (75% / 25%) and is intended for those not in a hurry to upgrade their Windows 7 to Window 10 which is free of this issue.

    The fix is applied automatically to Explorer windows already opened on the program start, and, during the program is running, the fix is applied to new Explorer windows right after their opening as well as after each change in their size.

    Happy second half of the decade to all dear readers.

  • On security and PHP

    Many of the servers running unsupported versions of PHP aren’t even running the secure version of their branch.

    PHP code has flaws, much like Python code, node.js code, and Ruby code. We’ve got fewer this year than last, and hopefully, we will have fewer next year. Sadly, not all applications get better at the same rate. Some people just will not bother to patch old code. That is not a language problem, that is a people problem.

    Cal Evans, Zend Developer Zone
  • On ARIA and HTML

    ARIA allows developers to re-invent and extend native HTML features in meaningful ways. But like all bolt-on technologies its features are brittle compared to its built-in counterparts.

    By using native HTML features, wherever practical, over custom HTML with bolt-on semantics and interaction behaviours, you will save yourselves and users a lot of grief and ensure that your User Interfaces work robustly across the largest number of devices, operating systems, input devices, browsers and assistive technologies.

    Steve Faulkner, HTML5 Doctor
  • New author’s software

    Three author’s applications for Windows are added to the “Projects” section:

    • MultilinePathEnv — multiline editor of the Path system environment variable;
    • WhiteScreen — screensaver that smoothly changes its transparency when starting and closing;
    • DoNothing — stub application that closes itself immediately after start.

    The applications are freeware and do not need installation — just unpack the downloaded archive.

  • CSS Global Order — Flexbox-free order

    CSS Global Order is an author’s JavaScript library that implements support for visual reordering of HTML elements with the standard order CSS-property without need for turning-on Flexbox mechanism (display: flex / display: inline-flex) for their parent element.

    The library works in all Flexbox-capable browsers and Internet Explorer 7+.

    File size with minification and Gzip compression applied is 1 KB.

  • On new features

    Why should we push the web forward? And forward to what, exactly? Do we want the web to be at whatever we push it forward to?

    The innovation machine is running at full speed in the wrong direction. We need a break.

    Peter-Paul Koch
  • How to remove empty query string from URL (+)

    Sometimes, there is an undesired question mark at the end of URL. This happens, for example, when using link buttons in browsers based on WebKit (Safari) and Chromium (Opera 15+).

    There is a workaround: trailing question mark when query string is empty can be automatically removed with server-side redirection.

  • On circular dependencies in CSS

    Letting implementation complexity leak into the UI is a common antipattern.

    ALL cycles can be detected by “keeping track of a dependency graph and using common cycle-detection algorithms”. Worst case scenario, we can just be very aggressive about what depends on what and it’s still better than rejecting entire features that are needed by thousands of authors daily on the grounds of “but if used nonsensically it could result in a cycle and then the world would explode!!!11”.

    Potential cycles come up all the time with any reasonable styling mechanism that supports the kinds of constraints needed by real designs.

    There’s something utterly perverse in thinking it’s an acceptable compromise to throw more work on the shoulders of the thousands (if not millions) of authors to prevent the handful of implementors from doing extra work.

    Lea Verou (1, 2)
  • Dell P2415Q. Author’s review of the 4K monitor (+)

    Detailed personal impressions of the 23.8-inch IPS-based modern computer monitor Dell P2415Q with 4K Ultra HD (3840×2160) resolution.

    Impressive clarity, full 60 Hz without MST, no PWM, barely noticeable crystal inversion, heavy Glow effect, and other specifics.

  • Fixing Copy Link Name in Firefox 39 (+)

    The useful Firefox extension Copy Link Name that allows to copy text of a link on a webpage to clipboard has stopped to work in Firefox 39 (Aurora / Developer Edition).

    The official support email does not work, while website of the extension author is just a stub without ability to contact him. However it is possible to fix the extension easily by ourselves.

  • Semantic HTML markup of DT/DD groups (+)

    Sometimes, it is needed to apply styles to each group of DT/DD elements integrally.

    But wrapping DT and DD elements in a common container like DIV is disallowed by the HTML specification: DL is the only valid parent element of these elements.

  • On hidden URL in Chrome

    The security issue is that browsers need to make the domain name portion of the URL clearly visible. I hope that the smart folks working on Chrome can figure out a way to do that without castrating the browser’s ability to easily share links.

    It’s a classic case of:

    1. Something must be done!
    2. This (killing URLs) is something.
    3. Something has been done.

    Technically, obfuscating the URL seems to solve the security issue. But technically, decapitation seems to solve a headache.

    Jeremy Keith
  • getElementsByClassName() in IE8 (+)

    Internet Explorer 8 (IE8) web-browser does not support the getElementsByClassName() DOM-method, but supports querySelectorAll() that allows to achieve the same goal without using any JS libraries.

  • Resetting styles in CSS (+)

    CSS Cascading and Inheritance Level 3 specification that has recently reached the CR (Candidate Recommendation) status contains two important new features.

    • unset value allows to reset value of a CSS property.
    • Shorthand property all allows to set a value to all CSS properties supported by browser without need to list them explicitly.

    Using both features in conjunction should allow to easily and gracefully reach the result currently reached via multiline “reset” stylesheets.

  • Gaps in sprites (+)

    To speed up downloading small images like icons, they are often united into one image called sprite. This minimizes delays caused by waiting for server response for each of image files.

    However using sprites is connected with some nuances. One of most common errors is placing images in sprite without gaps between them.

  • On expertise and specialization

    For nearly 15 years, I’ve called myself a web developer.

    In those 15 years I’ve had job titles like Technical Architect, Project Manager, Lead Designer, and even Director of Technology. Underneath it all, though, I just built web sites. Ask me what I did and I’d tell you that I was a web developer.

    Over a month ago, I took a new title: Product Manager.

    I’m not coding anymore. And I’m feeling a little uneasy about it.

    Why does this make me uneasy? Because I’ve always shared my experience as a web developer and I suddenly find myself wondering how long I can continue to do that.

    Jonathan Snook
  • Proper method to make a button acting as a link (+)

    Sometimes there is a need to style a link as a standard button. This is typically undesirable; however, if we have the task anyway, then it makes sense at least to do this properly.

  • Mozilla on switching Opera to WebKit (+)

    People of Mozilla — company developing Firefox web-browser — on switching Opera to WebKit (Chromium) layout engine and dropping development of Opera’s own engine — Presto.

  • Almost native matchesSelector() for IE8 (+)

    In modern browsers, a handy JavaScript method is available — matchesSelector() (renamed to matches() in latest versions of the standard). It allows to determine if an element matches specified CSS selector. It is one of key features allowing to go without libraries like jQuery to bind live event-handlers conveniently.

    Internet Explorer supports matchesSelector() (with ms prefix) as of version 9 only. But what to do with IE8 which we are still forced to support in many cases? Fortunately, there is a compact solution that does not need any third-party libraries.

  • Using Sizzle separately from jQuery (+)

    Sizzle is a crossbrowser CSS-selectors engine implemented in JavaScript and used in the popular jQuery library.

    But if advanced features of jQuery are unneeded for a specific task or project, Sizzle can be used as a standalone library, resulting in 5-6-x faster loading compared with jQuery.

  • On classes, identifiers, and descendant selectors

    If you have the misfortune to work on a huge, poorly developed site where you will never have permission to refactor the templates and CSS according to common sense and best practices, you may have to rely on class names and avoid descendant selectors and ids.

    But under almost any other circumstance, properly used ids with descendant selectors are preferable because more semantic and lighter in bandwidth.

    As for descendant selectors, in a site not designed by 100 monkeys, it is safe to assume that elements within an id’d div or HTML5 element will be visually styled in ways that are compatible, and that those same elements may be styled differently within a differently id’d div or HTML5 element.

    There is nothing wrong with id when it is used appropriately (semantically, structurally, sparingly). There is plenty wrong with the notion that class is always preferable to descendant selectors and semantic, structural ids.

    L. Jeffrey Zeldman
  • Do-Not-Track by default in IE10

    IE10 sends a “Do Not Track” signal to Web sites by default.
    The Sixth IE10 Platform Preview

    …thus making Do Not Track (DNT) request header in fact useless. Entire point of DNT is exactly that it is informed choice of user, and noway a default setting that most users do not know of at all.

    Consequently, DNT will stop perform a function of informing website about intent of user, and web developers will almost certainly stop taking DNT into account.

    Unlike IE10, in Firefox browser, DNT is disabled by default, which is right solution.