Profile

Cover photo
Konstantin Solomatov
Works at JetBrains
Attended Saint Petersburg State University
Lives in Cambridge, MA
710,026 views
AboutPostsPhotosVideos+1'sReviews

Stream

Konstantin Solomatov

Shared publicly  - 
2
Yury Zholobov's profile photo
 
Bacon!!!!!
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
 
Per usual, we can all learn from the pros.
Research uncovers stark differences in security practices of experts, non-experts.
4 comments on original post
2
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
6
Add a comment...

Konstantin Solomatov

Shared publicly  - 
3
Саша Черников's profile photo
 
Собственно, у нас по подъезду такие и ходят со своей макулатурой. Но конечно, приспособление у неё забавное.
 ·  Translate
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
Very interesting product: http://docs.deis.io/en/latest/
Welcome to Deis, the open source PaaS.
1
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
 
Where Your #Luggage Goes After You Check It (And Why The #Airline Keeps Losing It) 
I just cannot stop watching this hypnotising video created by Amsterdam’s Schiphol Airport and edited by Thrillist. They strapped a 360-degree camera on a checked bag and documented a dizzying POV as the luggage made its way through an insane maze of elevators, conveyor belts and endless shelves.
2 comments on original post
2
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
 
It's better to have no website than a slow website. Learn why in this recorded session with Tammy Everts & Gopal Brugalette. Watch it at http://oreil.ly/1H7pPoi
1 comment on original post
1
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
 
Did I mention recently that MPS is a wonderful language engineering tool?

Recently I have mostly been doing architecture, management, marketing and sales tasks, with the occasional programming interlude, mostly fixing bugs. However, for the last three days I have worked on a new mbeddr feature: support for concurrency. In particular, I have added the following features to mbeddr C:

* Tasks that contain executable code that is to be scheduled concurrently
* Cyclic tasks that are executed with some specified period and offset
* Blocking tasks that are allowed to block their execution and reschedule themselves
* An event mechanism that can be used to signal between tasks (waiting up blocked tasks)
* Shared variables, plus an 'atomic' statement that provides locks to the shared variables (using global lock ordering to prevent races)
* Data queues for communication between tasks, with nice APIs that provide locks (non-blocking and blocking variants).
  
I have built the language extensions, the type system, IDE support, generation to a pthreads-based implementation plus tests for the type system and the semantics in 25 hours! There are still a few open language design questions that may need revisiting, but that low number is nonetheless a clear testament to the productivity of MPS. 

Let me explain where this productivity comes from. mbeddr already has a language extension for queues. I reused this queue extension when building the concurrent queues used in the concurrency extension. In particular, I designed an 'enqueue' and 'dequeue' statement that takes care of locking the queue itself. To do this, I relied on the 'atomic' statement I built earlier to coordinate access to shared variables. So in building the extension for queue-based communication between tasks, I reused other extensions I built earlier: the queue extension itself plus the atomic statement for coordinating access to shared variables. And of course the stuff runs inside of tasks, reusing the scheduling. Later I built blocking read access to queues: when grabbing an element from the queue, the task blocks until an element is available. To build this, I reused the event mechanism I built earlier. 

Here is the kicker: in both cases, the tests worked correctly on the first try! The generators ran through, the code compiled successfully and the tests ran through.

So why is this interesting? I think it is interesting for two reasons. First, I did "test-driven language development". I started with the language syntax (if you will, the API of the to-be-built system). Then I wrote type system tests that asserted the error messages I wanted to get from the IDE. I then implemented the type checks to satisfy these tests. Next I wrote tests for the execution semantics. They failed, because I had no generators yet. I then filled in the generators to generate low-level C code from the new concurrency extensions. So test-driven language development is a reality with MPS. 

Second, I stacked higher level extensions on lower-level extensions. This allowed me to reuse the generators for the lower-level extensions, making the generators for my high-level concurrency extensions much simpler (this is the reason that they worked on first try). Stacking abstractions is not a new idea, of course. Computer science is all about that. However, it is remarkable that MPS lets you do this with languages (syntax, type systems, IDE support, and, importantly, generators). And all while keeping the language definitions modular! This is a major ingredient to the productivity afforded by MPS.

There is a third important aspect of this exercise: I finally got to program a new mbeddr feature in one go. This was a lot of fun. Seems I am still a programmer after all :-)

If you want to check out the code, go to the mbeddr repository, check out the 'concurrency' branch, open the 'com.mbeddr.ext' project and look at the concurrency folder. It's still a prototype, but you can certainly inspect the stuff I wrote about here. Stay tuned for more news on concurrency support in mbeddr.
View original post
1
Add a comment...

Konstantin Solomatov

Shared publicly  - 
1
Add a comment...

Konstantin Solomatov

Shared publicly  - 
 
 
+Lenovo: make this laptop. I want that keyboard. Charge extra if you have to.  This would be our go-to laptop for new laptop replacements and new hires.  For serious.  You've ruined the tried and true ThinkPad keyboard.  Please bring back the good stuff.

My G+ friends are tired of hearing me complain about laptop keyboards.  I returned my very much loved 2015 Chromebook Pixel LS because of the keyboard.  I gave my System76 Bonobo Pro to my wife because I couldn't stand the keyboard.  I'm still running a four-year-old W520 because the keyboard is the closest to traditional ThinkPad I can get.  (I liked my ThinkPad X60s keyboard even more {the keys were less squishy}, but it's a 32-bit machine... otherwise I'd still be using it)

I'll beg if I have to.
2 comments on original post
1
Alex Ott's profile photo
 
When I select laptop 3 years ago, most customizable laptop was Apple Macbook...
Add a comment...
Story
Introduction
Konstantin Solomatov
Education
  • Saint Petersburg State University
    Computer Science, 2001 - 2006
  • 239
    School, 1997 - 2001
Basic Information
Gender
Male
Birthday
September 22
Work
Occupation
Lead Developer
Employment
  • JetBrains
    Project Manager/Lead Developer/Senior Developer/Developer/Intern, 2003 - present
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Cambridge, MA
Previously
Saint-Petersburg, Russia
Konstantin Solomatov's +1's are the things they like, agree with, or want to recommend.
Dependent Types
plus.google.com

Dependent Types: Agda, Epigram, Idris, Coq, and Type Theory

Интернет-телевидение - Прямой эфир - Первый канал
stream.1tv.ru

уникальная возможность смотреть Первый канал онлайн! Доброе утро, модный приговор, Малахов, контрольная закупка, сериалы, все звезды и луч

Ars Technica
plus.google.com

Serving the technologist for over 1.3141592 x 10⁻¹ centuries

JetBrains .
plus.google.com

At JetBrains, we have a passion for making people more productive through smart software.

Backbone.js
documentcloud.github.com

Backbone.js (0.5.3) Introduction Events. – bind; – unbind; – trigger. Model. – extend; – constructor / initialize; – get; – set; – escape; –

NEWSru.co.il :: Новости Израиля и мира. События на Ближнем Востоке.
newsru.co.il

Новости Израиля на NEWSru.co.il. Лучшие фото и видео дня. Политика, Экономика, Криминал, Культура, Религия, Спорт.

Haskell - HaskellWiki
www.haskell.org

Haskell is an advanced purely-functional programming language. An open-source product of more than twenty years of cutting-edge research, it

VMware Virtualization Software for Desktops, Servers & Virtual Machi...
www.vmware.com

Deliver IT as a Service and reduce costs with a self-managed virtual infrastructure. Gain greater efficiency and agility while retaining con

AdBlock
chrome.google.com

The most popular Chrome extension, with over 3 million users! Blocks ads all over the web.

AngularJS — Superheroic JavaScript MVW Framework
angularjs.org

AngularJS is what HTML would have been, had it been designed for building web-apps. Declarative templates with data-binding, MVW, MVVM, MVC,

Home — Playframework
www.playframework.org

Fast turnaround. Edit your files, save, refresh your browser and see the results immediately! No need to compile, deploy or restart the serv

SpaceX
plus.google.com

SpaceX designs, manufactures and launches the world’s most advanced rockets and spacecraft.

TechCrunch
plus.google.com

Breaking technology news and analysis: the web, mobile, and much more.

Welcome to Google App Engine
appengine.google.com

Run your web applications on Google's infrastructure. Google App Engine enables developers to build web applications on the same scalabl

Google Launches QR Code-Based Login Security Measure
feedproxy.google.com

Google has released a new way to securely log into Google accounts on public computers. Using a smartphone, scan the QR code generated at ac

Lurkmore
lurkmore.ru

Личные инструменты. Представиться / зарегистрироваться. Луркоморье. Поиск. Навигация. Главная страница; Несвежие правки; Нужные статьи; Инку

Amazon Elastic Compute Cloud (Amazon EC2)
aws.amazon.com

Amazon Elastic Compute Cloud delivers scalable, pay-as-you-go compute capacity in the cloud.

AddyOsmani.com | jQuery & JavaScript Articles For The Community
addyosmani.com

A Web Developers blog that covers jQuery, AJAX, PHP, CSS, Javascript, MySQL, Usability, Accessibility, User Interface design, Facebook and T

Русский DMCA будет жёстче заокеанского оригинала
roem.ru

Новый проект Гражданского кодекса считает сайты, хостинг и продвайдеров заведомыми пособниками "пиратов"

Good enough coffee house.
Public - in the last week
reviewed in the last week
The restaurant not only offers tasty food but there're a lot of healthy (low sat fat) options.
Public - in the last week
reviewed in the last week
Great original pizzas and wonderful salads.
Public - a month ago
reviewed a month ago
Inexpensive sushi of good quality.
Public - a month ago
reviewed a month ago
12 reviews
Map
Map
Map
The best place to buy MIT press books. Often, they sell books ahead of release of them to other sellers.
Public - a month ago
reviewed a month ago
The best (and probably the only) place to buy sushi grade fish in Boston area. Very friendly and helpful staff.
Public - a month ago
reviewed a month ago
Great sushi for a good price.
Public - a month ago
reviewed a month ago