A B C D E F G H I L M N O P R S T U W Y misc
| above.ma | Trading indicators |
| analog | Trading indicators |
| apply | Apply Function |
| as.data.frame.fts | Convert from/to fts |
| as.fts | Convert from/to fts |
| as.fts.data.frame | Convert from/to fts |
| as.fts.default | Convert from/to fts |
| as.fts.matrix | Convert from/to fts |
| as.fts.zoo | Convert from/to fts |
| as.matrix.fts | Convert from/to fts |
| below.ma | Trading indicators |
| cbind.fts | Fts: a fast timeseries library |
| col.all | Logical subsets of objects |
| col.any | Logical subsets of objects |
| column.apply | Apply Function |
| cor.by.row | Moving Functions |
| diff.fts | Trading indicators |
| down | Trading indicators |
| ema | Trading indicators |
| event.dates | Extract Dates |
| expanding | Expanding Window Functions |
| expanding.cor | Expanding Window Functions |
| expanding.cov | Expanding Window Functions |
| expanding.max | Expanding Window Functions |
| expanding.mean | Expanding Window Functions |
| expanding.min | Expanding Window Functions |
| expanding.product | Expanding Window Functions |
| expanding.rank | Expanding Window Functions |
| expanding.sd | Expanding Window Functions |
| expanding.sum | Expanding Window Functions |
| fill | Fill Missing Values |
| fill.bwd | Fill Missing Values |
| fill.fwd | Fill Missing Values |
| fill.value | Fill Missing Values |
| filter.min.obs | pad and trim dates |
| frequency.convert | Change Frequencies |
| fts | Fts: a fast timeseries library |
| fts.logical | Logical subsets of objects |
| gap.continue | Trading indicators |
| gap.direction | Trading indicators |
| gap.down | Trading indicators |
| gap.down.continue | Trading indicators |
| gap.down.reverse | Trading indicators |
| gap.reverse | Trading indicators |
| gap.up | Trading indicators |
| gap.up.continue | Trading indicators |
| gap.up.reverse | Trading indicators |
| higher.high | Trading indicators |
| higher.low | Trading indicators |
| hl.oc.ratio | Trading indicators |
| indicators | Trading indicators |
| inside.day | Trading indicators |
| inside.day.direction | Trading indicators |
| inside.day.down | Trading indicators |
| inside.day.up | Trading indicators |
| intersect.all | find date intersection among multiple fts objects |
| lag.fts | Shift an Fts ojbect in time |
| lead | Shift an Fts ojbect in time |
| lead.fts | Shift an Fts ojbect in time |
| lead.lag.fts | Shift an Fts ojbect in time |
| lower.high | Trading indicators |
| lower.low | Trading indicators |
| ma.crossover | Trading indicators |
| ma.crossover.down | Trading indicators |
| ma.crossover.up | Trading indicators |
| ma.d | Trading indicators |
| ma.distance | Trading indicators |
| mday | Trading indicators |
| month | Trading indicators |
| monthly.sum | Trading indicators |
| moving.cor | Moving Functions |
| moving.cov | Moving Functions |
| moving.functions | Moving Functions |
| moving.max | Moving Functions |
| moving.mean | Moving Functions |
| moving.min | Moving Functions |
| moving.product | Moving Functions |
| moving.rank | Moving Functions |
| moving.sd | Moving Functions |
| moving.sum | Moving Functions |
| new.high | Trading indicators |
| new.low | Trading indicators |
| Ops.fts | Fts: a fast timeseries library |
| outside.day | Trading indicators |
| outside.day.direction | Trading indicators |
| outside.day.down | Trading indicators |
| outside.day.up | Trading indicators |
| pad | pad and trim dates |
| pad.trim | pad and trim dates |
| pct.chg | Trading indicators |
| plot.fts | Fts: a fast timeseries library |
| print.fts | Fts: a fast timeseries library |
| rbind.fts | Fts: a fast timeseries library |
| read.csv.fts | Read / Write Files |
| read.write.fts | Read / Write Files |
| remove.all.na.rows | Remove Rows |
| remove.na.rows | Remove Rows |
| remove.rows | Remove Rows |
| repeated | Trading indicators |
| row.all | Logical subsets of objects |
| row.any | Logical subsets of objects |
| row.apply | Apply Function |
| rsi | Trading indicators |
| rsi.crossover | Trading indicators |
| rsi.crossover.down | Trading indicators |
| rsi.crossover.up | Trading indicators |
| since.na | Count distance since an NA has occurred |
| template.fts | Trading indicators |
| to.daily | Change Frequencies |
| to.day.of.week | Change Frequencies |
| to.hourly | Change Frequencies |
| to.minute | Change Frequencies |
| to.monthly | Change Frequencies |
| to.quarterly | Change Frequencies |
| to.second | Change Frequencies |
| to.weekly | Change Frequencies |
| to.yearly | Change Frequencies |
| trend.day | Trading indicators |
| trend.day.down | Trading indicators |
| trend.day.up | Trading indicators |
| trim | pad and trim dates |
| up | Trading indicators |
| wday | Trading indicators |
| write.csv.fts | Read / Write Files |
| year | Trading indicators |
| [.fts | Fts: a fast timeseries library |
| [<-.fts | Fts: a fast timeseries library |


🙋🏻♂ About me
I began working on part-time in an agency while still in high school. This started my career as a full-stack developer with PHP & jQuery back in 2016.
Since then I've came across different technologies and projects; I also worked with Python, switched jQuery for ReactJS and later moved to NodeJS.
Later on I joined STRV, which was my dream job from high school, and became a backend developer, leaving my FE skills in the past.
After working and seeing only the backend side for a few years, I started discovering cloud and DevOps.
I really liked it and decided to get an AWS Solutions Architect certificate to learn more about it.
Nowadays, I'm still primarily a NodeJS developer, but I'm interested in technologies like Terraform, Kubernetes, networking and distributed systems.
When writing code, I'm always trying to think a few steps ahead and guess the possible issues or raise questions. I love learning from more experienced developers and I always appreciate a constructive feedback.
I'm a minimalist with an eye for detail. I'm always curious about how things work under the hood, that's why I'm currently studying Kubernetes and one day I'd love to take a closer look at Linux and assembler 🤓. I'm not afraid to get in touch with unknown or start new things which I don't know much about. I prefer learning by doing, therefore working on something new while figuring out how it works is always my way to go.
When I'm not coding or reading some cool nerdy stuff, I very much enjoy travelling ✈, hiking 🏔 and riding my motorcycle 🏍.
You can follow me on instagram to see more.
Also, I try to write this blog.
Speaking
- Intro to Load Testing [internal] (Slides) January 2023
- Node.JS Beers: Lightning talk about STRV dating apps (Slides) August 2021
- Online Backend Talk: Migrating Data Between Clouds (YouTube) February 2021
- Migrating Data Between Clouds [internal] (Slides) December 2020
- WebElement: ReactJS introduction (Slides) October 2017
As I'm an introvert, public speaking was a nightmare for me for a long time.
It took me a lot of time, courage and stepping out of my comfort zone
to be able to finally have my first internal presentation at work 😰.
After that I kept pushing and had two public talks within half a year !!! As one would say, it's not a lot but it's honest work. Keeping that in mind I still try to overcome my fears and continue with that challenge of mine 💪.
After that I kept pushing and had two public talks within half a year !!! As one would say, it's not a lot but it's honest work. Keeping that in mind I still try to overcome my fears and continue with that challenge of mine 💪.


Contributing guidelines
In general:
For submitting .js updates:
- When submitting new features, add tests.
- When submitting fixes, try to add a test for the failing case.
For submitting .css updates:
- Be sure to make your changes to the stylus (.styl) files.


It does have a simple syntax for testing exception. Pretty much what I did long time ago.
It looks like this:
[Test] public void ThrowsAndGivesMessage() { Assert.Throws<FormModelProviderException>(() => new XmlFormModelProvider().CreateModel()); }BUT, it does not allow me to verify the actual message of the exception. I want to write the code like this to do that:
[Test] public void ThrowsAndGivesMessage() { Action act = () => new XmlFormModelProvider().CreateModel(); act.Throws<FormModelProviderException>() .Message .Should().Contain("Form/Form element is not found"); }
The point here is that I verify the exception type thrown AND get the TYPED exception as the result of the verification so I can do whatever I want with it. One more thing I like is that we explicitly see the acting code.
Ohh, yes. The code to support this:
public static TExpected Throws<TExpected>(this Action a) where TExpected : Exception { try { a.Invoke(); } catch (TExpected expected) { return expected; } catch (Exception other) { Assert.Fail(string.Format("Expected exception of type {0} but {1} was raised.", typeof(TExpected).Name, other.GetType().Name)); } Assert.Fail(string.Format("The expected exception {0} has not been raised", typeof(TExpected).Name)); return null; // This NULL smells - should be refactored :) }
Enjoy.


{% include 'includes/error_summary.html' %}{# include if this page has validation requirements #}
{{main_question}}
We will only contact you if there is a problem with your application.
We will only contact you if there is a problem with your application.


We welcome all feedback, comments, and suggestions. Thank you in advance for sharing your thoughts with us.