Category Archives: Tech

Bitcoin

What is the most interesting feature of Bitcoin? Unlike fiat money controlled by governments nowadays, emission of Bitcoin is not controlled by anybody, and it is limited by design.

Emission of fiat money is the primary cause of inflation, and leads to disproportionate benefits of organizations and persons which are in the beginning of money distribution chain (mostly government, government contractors and banks which get loans from central bank).

Bitcoin monetary base is limited, emission will get to nearly zero in a few years, when most of bitcoins are mined: https://bitcointalk.org/index.php?topic=130619.0

Continue reading

Micro Services from Language Viewpoint

Micro services is apparently a new buzzword in software engineering world, despite of the fact that it is essentially just another term for something known as SOA for many years (yes, I know that there is some difference in perception of these two terms, but underlying idea has not changed). Attention to such architecture was heated by example of large internet companies like Netflix and Amazon. Some companies publish code of infrastructure components as open source.

Though micro services architecture is more suitable for polyglot technology than monolithic, language and platform still matters. It might be beneficial to use the same infrastructure for all micro services, to reuse deployment, messaging, logging and monitoring components. It is even better if some of these components can be available for free as open source libraries.

Now if you are Java developer, you have huge advantage, because so many large companies use it. If you search for “Java micro services” you will find hundreds of articles and presentations, libraries as Finagle by Twitter, Hystrix by Netflix, even meetup events.

If you search for “.net micro services” you will get… nothing! With less strict search phrase it is possible to find couple of articles (1, 2), and even an open source monitoring solution. But it is far from what is available for Java, and even not comparable to Javascript.

Is it because .NET is mostly for enterprise solutions and enterprise developers have not yet adopted micro services? Or just because Microsoft licensing is not working well with scale-out approach of service-oriented architectures?

BrightstarDB the First Decent RDF Storage For .NET Projects

In recent Hanselminutes podcast episode Scott Hanselman was talking about a new NoSQL database BrightstarDB. It is interesting that this is graph DB based on RDF (Resource Definition Framework, a data format from Semantic Web world).

I was learning Semantic Web and assessed it for one of my projects back in 2010. Then I needed to develop a solution to manage data for agricultural companies: knowledge about plants, diseases, pests, chemicals to fight diseases and pests, their relative efficiency, etc. I found that a graph representation could be good enough for this task, and made a research of available libraries which could be used in .NET application to read/write/process RDF. I posted results of that research in my Russian blog: http://surmenok.ru/2010/10/31/semantic-web-na-net/. In short, there were some quite expensive solutions (up to $160,000), and few free ones. At that time the best free library was SemWeb.NET:

“SemWeb.NET is a Semantic Web/RDF library written in C# for Mono or Microsoft’s .NET. The library can be used for reading and writing RDF (XML, N3), keeping RDF in persistent storage (memory, MySQL, etc.), querying persistent storage via simple graph matching and SPARQL, and making SPARQL queries to remote endpoints. Limited RDFS and general-purpose inferencing is also possible.”

Continue reading

Neural network training using encog

Neural networks are widely used to solve image recognition problems: detecting pedestrians and vehicles for self-driving car, identifying people for security systems, identifying gestures for a videogame controller.

I wanted to learn how to use neural networks for image recognition, so I should have a quite large dataset of labeled images to train a neural network. Preparing such a dataset is not an easy job. Hopefully there are open source datasets for different purposes. Most frequently used dataset for image recognition is MNIST (Mixed National Institute of Standards and Technology database). It is a large database of labeled hand-written digits like these:

MNIST example

 

Continue reading

Installing Theano with GPU on Windows 64-bit

Theano is a numerical computation library for Python. It allows to use GPU for computation, and nicely fits for machine learning calculation, which is perhaps because Theano is primarily developed by a machine learning group at the University of Montreal.

I tried to install Theano to my Windows-powered machine to try GPU computations. And it was hard, as any UNIX software on Windows. To make it work these things should be set up:

Continue reading

Switching from Android to iPhone

I have been using Android phones since 2010. The first was HTC Desire, the flagman of Anrdoid devices then. Then Samsung Galaxy Nexus.

Recently I have decided to try switching to iPhone. In part because of terrible behavior of my Android phone: slowness, battery draining. In part because iOS has more and better apps. You know that developers mostly target iOS platform first, not only because iOS users are more willing to pay for apps, but also because development for Android is much more expensive and painful: http://techcrunch.com/2014/04/06/the-fallacy-of-android-first/

Continue reading

How to Release Web Sites

How all these large websites like Facebook, Twitter, Amazon, or web apps like Gmail, are being updated on production environment? They should have millions (or billions?) of users, and they should have tons of machines to serve these users. They release new features frequently, and seamlessly, without interruption of service.

How do they do it exactly? I have no idea. If you know something or if you have links to anything related – please tell me :)

Continue reading

Update on GTD

The other day I described the method that helps me to Get Things Done.

You know, it is just a text file with prioritized list of things. Very simple, very efficient.

Since that post, I tried two changes. When I was using simple text file operated by good old Notepad.exe, I was feeling the lack of mobility. The file was stored in my home computer, and I could not have access from other devices. I tried to move the file to Dropbox, but I needed to reopen Notepad each time to synchronize changes made from other devices. Using of OneNote with outlook.com online storage solved this problem completely – the data are in the cloud, changes are synchronized automatically. Almost perfect solution, if not counting lack of OneNote clients for some platforms.

Another change that I tried – grouping tasks by topics. For example, move to new OneNote tab all tasks that are related to relocation to SFBA. After a few days of using this regrouped GTD I found that I don’t use the special tabs, and only manage the first tab with tasks that are not related to any specific topic. It is a consequence of making the system more complicated. When I understood it – I returned to the single prioritized list. GTD is one of the things where simplicity is the king.

How Technology Is Destroying Jobs

Interesting article, where author describes an interesting trend in US economy:

http://www.technologyreview.com/featuredstory/515926/how-technology-is-destroying-jobs/

IT increases productivity, but also increases unemployment. For many jobs, in not only agriculture and manufacturing, but also information working jobs, robots replace humans. Clerks, customer support, analysts. IT allows doing the same work by fewer employees. Moreover, things like IBM Watson (they call it cognitive computing) empower even so human professions as medical, finance, science.

Where will this trend lead us? Nothing is clear, the world changes faster and faster. Definitely “smart” jobs will be valuable for a long time, and industries like software development, data science and robotics will need more and more smart guys to do all this amazing stuff that improves our productivity, and makes our lives more convenient.

What I am afraid of is possible high unemployment which can lead us to more socialistic world, and therefore to stagnation. I hope that we will find some kind of new meaningful jobs for all these people, whose work now robots do.

A/B Testing

If you have a website, you probably want to constantly change appearance and behavior of website to increase some important metrics: revenue, conversion rate, happiness of users, etc.

To figure out what changes will help you to move toward your goal you can use different sources of information. You can read marketing research papers, you can use your own user experience to make decisions, and you can ask end users about their feelings. All this can help, but you will not have solid quantitative analysis about what approaches are better, and what is significance of the change.

A/B testing (also known as multivariate testing) is more scientific, more pragmatic, experimental approach.

Continue reading