Project Euler – took a challange ! ;-)

 

Leonhard Euler (1707-1783)Where should I start?

That depends on your background. In the Problems table you will be able to see how many people have solved each problem. As a general rule of thumb the more people that have solved it, the easier it is.

 

I've written my program but should it take days to get to the answer?

Absolutely not! Each problem has been designed according to a "one-minute rule", which means that although it may take several hours to design a successful algorithm with more difficult problems, an efficient implementation will allow a solution to be obtained on a modestly powered computer in less than one minute.

 

Does it matter if it takes more than one minute to solve?

Of course not, but that should provide the impetus to return to the problem and see how you can improve your approach. But remember that once you've solved a particular problem you will be able to access a thread relating to that problem and it is here that you may be able to pick some tips from others that have solved it.

 

I solved it by using a search engine, does that matter?

Making use of the internet to research a problem is to be encouraged as there could be hidden treasures of mathematics to be discovered beneath the surface of many of these problems. However, there is a fine line between researching ideas and using the answer you found on another website. If you photocopy a crossword solution then what have you achieved?

 

More information you can find here: https://projecteuler.net the github repository with my solved tasks is here: https://github.com/TomaszWaszczyk/projectEulerSolutions

Continue Reading

What Is The Most Valuable Programming Language To Know For The Future And Why?

I just have read an very interesting Q&A on http://www.Quora.com:

To quote William Ting‘s earlier answer: “JavaScript will stay relevant as long as people use the internet.”

1. So, JavaScript will be relevant forever.


2. JavaScript runs in other environments, outside of browsers, and can be compiled from a wide array of programming languages.

With the maturity and robustness of mobile frameworks like PhoneGap and end-to-end implementations like Node, JavaScript will be used more and more often, in more and more contexts.

So, my vote is—wait for it—JavaScript.

Not convinced?

JavaScript is the #1 most-used language on GitHub, and this trend is only going to increase:

– via @dberkholz on Twitter

Khan Academy teaches their Computer Science courses in JavaScript.

Stanford’s Computer Science 101 is taught using JavaScript.

Windows 8 treats JavaScript as a 1st-class citizenas does OSX Yosemite.

Entire Web browsers are being written in JS, and there is an implementation of git being built entirely with it.

GitHub’s Atom editor is built almost entirely around CoffeeScript, which compiles to JS.

You can even program hardware in JavaScript, including PLAYING DVDs.

Almost every public REST API returns JSON (JavaScript Object Notation) as their primary data format, and has done so for several years.

And let’s not forget the demand of JavaScript in the job market (HTML5 is #1):


Simply put, more people are willing to pay money for JavaScript devs than any other platform or language right now. That is the very definition of the word “valuable”.

It seems that the enterprise agrees:


“Treat JavaScript experience and expertise as a basic requirement for most developers.” – @Gartner_inc Predicts 2014 App Development – Via Adobe’s Brian LeRoux on Twitter





Gartner predicts that through 2014, improved JavaScript performance will begin to push HTML5 and the browser as a mainstream enterprise application development environment.”

It’s hard to argue that any other language is more valuable for now, or for the future.

Answer by Boz Bundalo, CTO and Venture Partner at Venture51, onQuora

I will disagree with the whole Javascript thing and I’ll tell you why.

While Javascript might “exist” as long as web exists, the web/browser is dying. The next generation and revolution we are witnessing is the Internet of Things and interconnectivity of the devices (namely Android but as well as iOS and possibly Windows type of OS for mobile/devices – but that’s yet to be seen).

While Javascript is useful to know, the web stack will be more and more used for the back-end RESTful type of web services and less for front-facing web and this is where knowing Python/Django, Ruby/Rails and even PHP/Laravel will come more in handy as they are perfectly positioned for RESTful web services.

The latest numbers show that consumers/mainstream audience uses more and more native applications and less web based apps.

Javascript is a relic that has changed somewhat but not enough in since 1999. It still has the same problems it had 15 years ago. It’s not efficient, even though the Javascript engines have progressed (looking at V8, SpiderMonkey, Nitro etc), it’s just behind.

This is the reason why Google came out with Dart and tried to offer alternatives to Javascript, why Microsoft introduced Typescript etc. …  Not to mention that if you saw Google IO 2014, you can see that Google is clearly shifting Chromebooks to run native Android applications and is a signal that they might be moving away from the web app approach.

Javascript landscape is a wild, wild west. The way one person writes it differs from another, especially when you account gazillion frameworks that are trying to solve some kind of inefficiency with DOM/JS approach and overall issues.

But let’s talk about languages. Java has a new revolution. Why? Because it is a solid language that covers a lot of things and has HUGE backing and support from the community and is incredibly mature. You can build back-end services, you can build native Android applications, you will be building applications for cars, for TVs, etc.. and you will be doing it natively with the APIs from new devices.

There is a reason why many big companies have started with other languages and back-end architecture and they eventually went back to Java.

Granted, Java is not perfect, but if you acknowledge that Android rules the world and the new devices and services come out, you will have far more work and opportunities with it.  I would say a lot of people who have issues with some things Java, will tell you that Scala is better and I think Scala is pretty great. Twitter uses it.

I think knowing Java will also allow you to jump to other similar languages. Today, we see that Apple is moving to Swift, C# is very popular with Xamarin that allows you to build real native applications with it, and they are all very similar as they come from a C family.

I think a lot of people need to ask themselves whether or not they think Web apps will stay relevant or the native type applications with direct connection to hardware APIs will be the way forward.





All the statistics and what we are seeing are telling us that we are moving towards the latter.  Native applications with the web services/cloud back-end.

This is only intensifying.

While I agree that you should understand general computer programming principles, design patterns, OOP and data structures, I would tell you that you should learn the following languages for the next 10 years in this order:

1. Java (Java has matured so much and Java has some of the cool stuff like generics, lambda expressions, Improved type inference)


2. Swift


3. C#


4. Javascript (and mainly because of Node and less because of web-app front ends)

Github Javascript measurement is really not a good measurement of popularity.

If you look at job requirements across the world, the demand has skyrocketed for Java (holds number 1 place), Objective-C and Swift now, C#.

As I noted, this is really where technology is going. Javascript and traditional Web in general have really less and less place in that future.

We are moving towards mobile devices, cars with apps, powerful TVs that will add even more functionality, home automation etc etc and this is a world where web as we know it has little place in unless it is a cloud and web services that we use to store/retrieve data.

And if you think about it, we went full circle, from desktop apps without connectivity, to web only approach and now we are coming back to smart devices with desktop/native type applications and we use the web for what it’s really great for, network connectivity and less of front end usage.

In conclusion, if you are going to be taking a language, consider this and go native all the way.

This question originally appeared on QuoraWhat is the most valuable programming language to know for the future and why? More questions:

Continue Reading

"Robot EA nie męczy się nigdy. Rozmowa z Tomaszem Waszczykiem"

Robot EA nie męczy się nigdy

 

Automatyczne systemy transakcyjne powinny być spójne i kompleksowe. W końcu to one podejmują decyzję za inwestora. Jednak przede wszystkim muszą byćperfekcyjnie do niego dostosowane, co podkreśla trader i programista Tomasz Waszczyk.

W jaki sposób zbudować dobry automatyczny system transakcyjny?

Trudno w paru zdaniach zawrzeć przepis na dobry automat transakcyjny. Tym bardziej, że słowo „dobry” dla różnych ludzi może oznaczać zupełnie co innego. Jedna osoba akceptuje wyższy, tzw.drawdown czyli spadek na kapitale od jego szczytu. Natomiast ktoś inny wychodzi z założenia, że automat o wysokim DD nie jest skuteczny. Wracając do pytania, osobiście sądzę, że każdy system transakcyjny powinien pasować do korzystającego z niego inwestora. Niestety nie wszyscy są tego świadomi i próbują dopasować siebie do posiadanego systemu. A to jest błąd.

Na czym polega funkcjonowanie systemu – automatu?

W wielkim skrócie to jest program komputerowy, który w oparciu o zaprogramowane w nim reguły podejmuje decyzje inwestycyjne. Ważne, aby automat był spójny i kompleksowy. Podczas programowania automatu transakcyjnego powinniśmy przewidzieć każdą możliwą dla niego sytuację rynkową. Jest to o tyle istotne, że w przypadku pominięcia chociażby spreadu przy testowaniu automat jest zyskowny, ale w czasie handlu rzeczywistego może już tracić.

Jaka jest przewaga automatycznego systemu nad ręcznym handlem? Oferuje większą skuteczność?

Należy rozróżnić dwie rzeczy: system inwestycyjny oraz automat transakcyjny. System inwestycyjny jest zawarty w automacie transakcyjnym. Chodzi o zestaw reguł, jakim posługuje się przy otwieraniu, prowadzeniu oraz zamykaniu transakcji. Z pewnością jedną z największych zalet handlu automatycznego jest fakt, że robot nigdy się nie męczy. Pracuje nieprzerwanie 24h/dobę. Drugą ogromną zaletą automatów jest szybkość analizy rynku. Robot przeszukuje setki rynków jednocześnie w czasie ułamków sekund. Niestety człowiek nie jest w stanie tego zrobić. Są również roboty, których system inwestycyjny jest oparty na szybkości dostępu do notowań. Jeżeli chcemy wykorzystywać tego typu strategie, jesteśmy zmuszeni do handlu automatycznego. Dobre automaty transakcyjne pozwalają także na bardzo komfortowe od strony psychologicznej zarabianie, ponieważ oferują względnie wygładzoną krzywą kapitału.

Roboty EA są dedykowane początkującym czy zaawansowanym inwestorom?

Z własnego doświadczenia mogę powiedzieć, że handlowanie automatycznymi strategiami transakcyjnymi jest przeznaczone dla osób, które nie działają na rynku od wczoraj. Wynika to z kilku czynników. Jednym z nich jest fakt, że do napisania expert advisor, który zarabia, jest potrzebne doświadczenie rynkowe inwestora, zdobyte dzięki handlowi ręcznemu. Chciałbym zwrócić uwagę na to, że w Polsce jedynie ok. 4 proc. obrotu jest wykonywane za pomocą handlu automatycznego.

Czy początkujący inwestor może sam zbudować robota?

Napisanie robota wiąże się z dwoma podstawowymi problemami. Po pierwsze: jakie reguły wybrać, żeby system zarabiał? Po drugie: zakładając, że pierwszy warunek został spełniony, musimy bardzo dokładnie tę wiedzę przekuć na kod źródłowy rozumiany przez komputer. O ile początkujący inwestor może zlecić programiście wszystkie problemy techniczne związane z programowaniem, o tyle programista potrzebuje informacji, w jaki sposób ma programować. Osoba z małym doświadczeniem w handlu ręcznym nie jest w stanie przekazać programiście żadnego sensownego zestawu reguł, który później ma przynosić zysk. Wielu ludziom wydaje się, że kupi sobie robota za kilkaset dolarów i już do końca życia nie musi nic robić. Z przykrością stwierdzam, że to wyobrażenie jest oderwane od rzeczywistości. Prawda jest taka, że robota należy kontrolować. Zmieniać parametry tak, aby przystosowywał się do szybko zmieniających się realiów. To może być bardzo trudne dla początkującego inwestora.

Trzeba znać język programowania, aby stworzyć EA?

Tak, zdecydowanie tak. Ja miałem trochę łatwiej, ponieważ studiowałem informatykę. Kontakt z kodem źródłowym miałem praktycznie przez cały okres studiów. Mimo to nie należy zakładać, że programista ma dużo łatwiej przy tworzeniu EA. Niejeden broker pozwala swoim klientom na programowanie robotów w języku JAVA, którego nie miałem na studiach. Uważam to za porażkę polskiego szkolnictwa wyższego. Bardzo dużo musiałem nauczyć się sam bądź od bardziej doświadczonych ode mnie znajomych. Prawda jest taka, że nieustannie należy rozwijać się i dokształcać, żeby móc dopasowywać się do ciągle zmieniającego się rynku. Być na bieżąco z nowinkami technicznymi, które czasami są bardzo przydatne i pozwalają zaoszczędzić czas. Chciałbym jeszcze uczulić na kupowanie black box. Nie wiemy jak działa, nie rozumiemy, co w nim jest, a chcemy, żeby zarabiał. Ja nie wierzę, że można zarabiać w ten sposób. Niestety firm i osób sprzedających takie systemy jest mnóstwo, co powinno być tak samo karane, jak kradzież w sklepie.

Automaty sprawdzają się lepiej w inwestowaniu długoterminowym czy daytradingu?

Wszystko zależy od tego, czy wiemy, co tak naprawdę robimy. Zanim zaczniemy programować automatyczną strategię inwestycyjną, musimy zastanowić się nad wieloma rzeczami. Jedną z takich rzeczy jest horyzont inwestycyjny. Czy automat będzie zestawem reguł zaimplementowanych dla trendów czy dla okresów konsolidacji? Ewentualnie wybicia z konsolidacji, którą możemy mierzyć na prostym wskaźniku ATR. Wskaźnik określa zmienność, na podstawie której możemy podejmować dalsze decyzje inwestycyjne.

Jaki jest stosunek brokerów do automatycznych systemów? Szczególnie przy zyskownych transakcjach?

Aby odpowiedzieć na to pytanie, warto zastanowić się, co robi robot transakcyjny z punktu widzenia brokera lub innego pośrednika. Patrząc na zagadnienie z tej perspektywy, zlecenie wykonane za pomocą robota niczym nie różni się od zrealizowanego ręcznie przez inwestora. Brokerzy działający w modelu market maker zarabiają na spreadzie. W przypadku brokerów działających w modelu ECN, my ponosimy koszt prowizji. Zatem widzimy, że dla brokerów jest to zupełnie obojętne. Chciałbym jednak zwrócić uwagę na jedną dość istotną sprawę. Niektóre roboty generują bardzo dużą liczbę transakcji wysyłanych do serwera brokera. Nawet nie muszą to być zlecenia wysyłane na rynek czyli on the market, a – co zdarza się dużo częściej – zlecenia oczekujące. Zdarza się, że liczba tych zleceń jest tak duża, że dostajemy maila z informacją, aby przestać obciążać serwer. Jeżeli tego nie zrobimy, broker zmniejszy nam limit wykonanych transakcji do np. jednej transakcji w czasie trzech sekund.

U wszystkich brokerów jest możliwy handel przy pomocy EA?

Zdecydowana większość brokerów posiada platformę pozwalającą na handel automatyczny. Aczkolwiek są brokerzy, którzy ograniczyli tą możliwość. Zwykle brokerzy udostępniają bardzo popularną platformę transakcyjną Meta Trader 4/5 pozwalającą handlować za pomocą EA. Obecnie często słyszymy o nowych brokerach, wzrasta konkurencja. To z kolei implikuje, że firmy muszą dostosowywać się do szybko zmieniającej się rzeczywistości i walczyć o klienta. Znam takie, które przyciągają klientów nie tylko udostępnieniem handlu automatycznego, ale także możliwością skorzystania z usług programistów, którzy pomagają w tworzeniu robotów.

Korzysta Pan z takich robotów czy raczej otwieranie i zamykanie zleceń opiera na innej strategii?

Kiedy zaczynałem eksperymenty z handlem automatycznym, było możliwe zarabianie stosunkowo małej ilości pipsów, ale z podwyższonym prawdopodobieństwem trafności transakcji. Polegało to na zaprogramowaniu dwóch wzajemnie komunikujących się robotów, które wyszukiwały nieefektywności na rynku i wykorzystywały je, dokonując arbitrażu. Niestety rozwój technologii przyczynił się do zaniku tych nieefektywności, przez co metoda stała się mniej użyteczna z punktu widzenia inwestora indywidualnego. Aktualnie wykorzystuję EA do prowadzenia transakcji, automatycznych zmian poziomów stop loss, wyszukiwania tych zależności na rynku, których znalezienie przez fizyczną osobę pochłania sporo czasu. Pracuję nad aplikacją, która będzie zarządzać kilkoma współbieżnie działającymi EA w celu wygenerowania jak najbardziej zadowalającego zwrotu z kapitału.

 

Postanowiłem przekleić swój wywiad dla akademiaforex.com, gdzie oryginał znajduje się pod następującym adresem: http://akademiaforex.com/robot-ea-nie-meczy-sie-nigdy-rozmowa-z-tomaszem-waszczykiem/ 

Continue Reading

What is "-XX:+UseCompressedOops" ? – how to reduce of memory by Eclipse ?

Most HotSpot JVM in the last year have had it on by default. This option allows references to be 32-bit in a 64-bit JVM and access close to 32 GB of heap. (more than 32-bit pointers can) (You can have near unlimited off heap memory as well). This can save a significant amount of memory and potentially improve performance.

If you want to use this option I suggest you update to a version which has it on by default as there may have been a good reason, such as bugs, why it wasn't enabled previously. Try Java 6 update 23 or Java 7 update 5.

In short, don't turn it on, use a version which has it on by default.

Of course, the modification of Eclipse settings are in eclipse.ini file. 

Continue Reading

What is Alpha Epsilon Pi ΑΕΠ ?

It is the first post of series called "Interesting facts" with help the link: https://waszczyk.com/tag/interesting-facts/ you have access to all of them. 

 

Alpha Epsilon Pi (ΑΕΠ or AEPi), the global Jewish college fraternity, has 166 active chapters in the United StatesCanadaUnited KingdomFrance, and Israel with a membership of over 9,000 undergraduates. Alpha Epsilon Pi is a Jewish fraternity, though non-discriminatory and open to all who are willing to espouse its purpose and values.[4]

 

Mission statement[edit]

Alpha Epsilon Pi, the Global Jewish Fraternity, was founded to provide opportunities for Jewish men seeking the best possible college and fraternity experience. We have maintained the integrity of our purpose by strengthening our ties to the Jewish community and serving as a link between high school and career. Alpha Epsilon Pi develops leadership for the North American Jewish community at a critical time in a young man's life. Alpha Epsilon Pi's role is to encourage the Jewish student to remain dedicated to Jewish ideals, values, and ethics and to prepare the student to be one of tomorrow's leaders so that he may help himself, his family, his community, and his people.[1]

 

 

More info you can find https://en.wikipedia.org/wiki/Alpha_Epsilon_Pi where you can find some table with names called "Notable alumni".

Continue Reading

Kanban für Software Engineering und Trello

Kanban ist eine Methode der Produktionsprozesssteuerung. Das Vorgehen orientiert sich ausschließlich am tatsächlichen Verbrauch von Materialien am Bereitstell- und Verbrauchsort. Kanban ermöglicht ein Reduzieren der lokalen Bestände von Vorprodukten in und nahe der Produktion, die dort in Produkten der nächsten Integrationsstufe verbaut werden. 

Es gibt sehr gute Video an Trello:

 

 

 

Es gibt auch Folien an Kanban in Software Engineering: http://leanandkanban.files.wordpress.com/2009/04/kanban-for-software-engineering-apr-242.pdf und http://ocw.mit.edu/courses/mechanical-engineering/2-854-introduction-to-manufacturing-systems-fall-2010/lecture-notes/MIT2_854F10_tps.pdf

Continue Reading

Programming of Conwey Game

 

I want to show some interesting quite simple application coded in Swing. Here you can see the result:

 

 

Source code you can find here: https://github.com/TomaszWaszczyk/Conwey ,the application shows how small change in the system can have a big influence on the future. 

More reference: https://en.wikipedia.org/wiki/Conway's_Game_of_Life or https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens (in German)

 

I want to also recommend some great application for making gif files: http://www.cockos.com/licecap/

Continue Reading