Skip to content

Commit

Permalink
Fix links
Browse files Browse the repository at this point in the history
  • Loading branch information
Gervasio Marchand committed Jul 18, 2018
1 parent 3115604 commit ba4fee4
Show file tree
Hide file tree
Showing 9 changed files with 11 additions and 11 deletions.
Expand Up @@ -34,6 +34,6 @@ Then, I went ahead and ordered a [Cisco SPA3102](https://www.cisco.com/c/en/us/p
Setting up the Cisco SPA3102 wasn't extremely complex (wasn't a piece of cake either), the two things that took me the most to figure out was:
* I wanted to have incoming calls automatically reach an extension at Asterisk, but by default it just returns the dial tone to the caller. What I did was, on the PSTN User, set an automatic forward... using caller id * to an extension I want, and that's how every call is transferred to it. This is how it looks
![](/public/images/cisco-transfer.png)
* The disconnect tone... the calls that came from the phone line were never terminated b/c it didn't recognise the Uruguayan disconnect tone... I found it on the PSTN Line tab (not in the regional one) and the value for Uruguay is `420@-30,420@-30;2(.2/.2/1,.2/.6/1)` I tried looking it up in an ITU document, but it was impossible for me (without any electrical background) to transform the amplitudes and frequencies there to something useful here... so I found it [in this forum](https://forum.voxilla.com/threads/disconnect-tone-tweaking-solution.2780/)
* The disconnect tone... the calls that came from the phone line were never terminated b/c it didn't recognise the Uruguayan disconnect tone... I found it on the PSTN Line tab (not in the regional one) and the value for Uruguay is `420@-30,420@-30;2(.2/.2/1,.2/.6/1)` I tried looking it up in an ITU document, but it was impossible for me (without any electrical background) to transform the amplitudes and frequencies there to something useful here... so I found it in a forum (link dead, it was `https://forum.voxilla.com/threads/disconnect-tone-tweaking-solution.2780/`)

Once I figured that out, it was pretty smooth... the [next post]({% post_url 2013-10-19-asterisk-twilio-making-calls %}) is about calling from Asterisk to twilio :)
4 changes: 2 additions & 2 deletions _posts/2013-12-17-asterisk-load-peers-db.md
Expand Up @@ -22,7 +22,7 @@ My goal with this blog was just sharing the interesting (technological) problems

I don't want to lose sight of the original blog goal though, and one of the requirements Seth had was getting the sip users from a mysql database, where he would update the passwords whenever the users changed them. As I think that's worth sharing, here it goes...

After reading about how to do that, the first thing I found was [Asterisk Realtime Architecture](https://www.voip-info.org/wiki/view/Asterisk+RealTime) and that looked really promising. Despite having to use their table structure, the main issue is that (from that link)
After reading about how to do that, the first thing I found was [Asterisk Realtime Architecture](https://www.voip-info.org/asterisk-realtime) and that looked really promising. Despite having to use their table structure, the main issue is that (from that link)
> The **database peers/users** are not kept in memory. These are only loaded when we have a call and then deleted, so **there's no support for NAT keep-alives (qualify=) or voicemail indications** for these peers.
Which is definitely not acceptable if you have mobile clients.
Expand All @@ -35,6 +35,6 @@ asterisk -r -x "dialplan reload"

This works just fine, it doesn't disconnect already registered peers and, as the cron does it only if it detects changes, it should be the same as doing it manually.

However, it feels like cheating... specially when there's Asterisk Realtime Architecture to load the peers and [Asterisk RealTime Extensions](https://www.voip-info.org/wiki/view/Asterisk+RealTime+Extensions) to load the extensions from a db (why would they build it if you can do it easily with a cron?).
However, it feels like cheating... specially when there's Asterisk Realtime Architecture to load the peers and [Asterisk RealTime Extensions](https://www.voip-info.org/asterisk-realtime-extensions) to load the extensions from a db (why would they build it if you can do it easily with a cron?).

If you find issues with this approach (and feel like sharing) please add a comment.
4 changes: 2 additions & 2 deletions _posts/2014-01-14-asterisk12-raspberrypi.md
Expand Up @@ -18,7 +18,7 @@ It's been a long trip since [I started playing with Asterisk]({% post_url 2013-1

After doing that, I compared flowroute with Anveo (which works great for outgoing calls, but had issues with an incoming number on Argentina. I ended up using Anveo for most of my outgoing calls and it works just fine.

But, I wanted to be able to forward calls to my mobile phone (or my wife's) for free... ooor, as close to free as it gets. I then bought a [Portech MV-372](http://www.portech.com.tw/p3-product1_1.asp?Pid=14) on Ebay... yeah, that's probably the opposite to free... but once I got my hands on it, I bought 2 SIM cards... one of them can call me for free, the other can call my wife for free (as long as I put $5 on them every month).
But, I wanted to be able to forward calls to my mobile phone (or my wife's) for free... ooor, as close to free as it gets. I then bought a Portech MV-372 (link dead) on Ebay... yeah, that's probably the opposite to free... but once I got my hands on it, I bought 2 SIM cards... one of them can call me for free, the other can call my wife for free (as long as I put $5 on them every month).

I quickly realized that the NAS (a Synology DS112j) didn't have enough power to deal with the calls. I read that Asterisk needs a kernel with a clock interrupting at least at 1000 HZ. When I first read that, I didn't have a clue on what that meant... but then, I found [this great post](https://www.advenage.com/topics/linux-timer-interrupt-frequency) that explained it with an app that lets you figure out yours. The NAS had 96 HZ.

Expand All @@ -28,4 +28,4 @@ Also, at that point, the friends from Asterisk released Asterisk 12... with a RE

My good friend Juan lent me his Raspberry Pi to try it out. I know there are some images around with Asterisk already installed, but I preferred to go ahead and cherry pick what would be installed. I followed the steps at Mathew Jordan's blog (now offline) and voilá... I won't say that the compilation was fast... but it got there :) and here I am, placing calls through the Raspberry.

I still perceive a small delay on the calls (way better than on a VPS though) even when I set `ulaw:10` and `alaw:10` as codecs... not exactly sure why that happens (I'm just getting started here), but I've already ordered an [ODROID U3](http://www.hardkernel.com/main/products/prdt_info.php?g_code=G138745696275) to discard that it's due to the Raspberry Pi's lack of power.
I still perceive a small delay on the calls (way better than on a VPS though) even when I set `ulaw:10` and `alaw:10` as codecs... not exactly sure why that happens (I'm just getting started here), but I've already ordered an [ODROID U3](https://www.hardkernel.com/main/products/prdt_info.php?g_code=G138745696275) to discard that it's due to the Raspberry Pi's lack of power.
2 changes: 1 addition & 1 deletion _posts/2015-02-25-defeating-oauth-phantomjs.md
Expand Up @@ -39,7 +39,7 @@ I originally set it so that my redirect url was `http://127.0.0.1:1234` but that
Requirements for this code to work:

* Have PhantomJS installed (running `npm -g install phantomjs` if you have [nodejs](https://nodejs.org/en/) installed)
* Have the [selenium](https://pypi.python.org/pypi/selenium) package (running `pip install selenium`)
* Have the [selenium](https://pypi.org/project/selenium/) package (running `pip install selenium`)
* If you're on a mac and installed nodejs with brew, you may need to do `sudo ln -s /usr/local/bin/node /usr/bin/node` (thanks to [this answer](https://stackoverflow.com/a/15699761/920295)!)

Here is the extremely simple code
Expand Down
2 changes: 1 addition & 1 deletion _posts/2016-06-30-asterisk-13-ubuntu-docker-container.md
Expand Up @@ -18,7 +18,7 @@ Hello world! It's been a while! but I'm trying to get back at blogging :)

I've been reading tweets about how great Docker is but I've never had the chance to try it out... until... I decided it was my next adventure... and boy am I enjoying it!

I started my Docker journey by buying [The Docker Book](https://www.dockerbook.com/), it's awesome... I read it in two days just because I couldn't stop.
I started my Docker journey by buying [The Docker Book](https://dockerbook.com/), it's awesome... I read it in two days just because I couldn't stop.

Then, I started thinking about how I would dockerize all the services I run on my servers... I started a migration a few months ago and I've never got the nerve to complete it... so getting to try Docker to actually do something useful (and finish that migration) sounds like a great plan.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2017-01-01-I-got-a-job-at-stackoverflow.md
Expand Up @@ -14,7 +14,7 @@ Alright, this is something I've been wanting to write about for a while now. But

First, make sure you check out the posts from my amazing coworkers talking about their experiences:

* [Haney's experience](http://www.haneycodes.net/how-i-got-a-job-at-stack-exchange/)
* [Haney's experience](https://www.haneycodes.net/how-i-got-a-job-at-stack-exchange/)
* [Dave's first year as a data scientist at Stack](http://varianceexplained.org/r/year_data_scientist/)
* [Jon's first six weeks](https://jonhmchan.com/blog/2014/1/16/my-first-six-weeks-working-at-stack-overflow)
* [Jon's first year](https://jonhmchan.com/blog/2014/12/2/my-first-twelve-months-working-at-stack-overflow)
Expand Down
2 changes: 1 addition & 1 deletion _posts/2017-08-13-shiny-detect-mobile-browsers.md
Expand Up @@ -8,7 +8,7 @@ If you have a shiny app, you don't pay for the pro version, and you want to dete
<!--more-->
# Why I wanted to do so

[My wife](https://d4tagirl.com) is working on a [shiny](https://shiny.rstudio.com/) app... and she needed to show a [plotly](https://plot.ly/) graph to desktop users and a [ggplot2](http://ggplot2.org/) graph to mobile users.
[My wife](https://d4tagirl.com) is working on a [shiny](https://shiny.rstudio.com/) app... and she needed to show a [plotly](https://plot.ly/) graph to desktop users and a [ggplot2](https://ggplot2.tidyverse.org/) graph to mobile users.

# Check the user agent, he said

Expand Down
2 changes: 1 addition & 1 deletion _posts/2017-08-20-htmlwidgets-jekyll-rstats.md
Expand Up @@ -20,7 +20,7 @@ There's a significant group of data scientists that work with R, blog with R and

But... the whole experience becomes frustrating when they want to use a javascript powered library. On my wife's [4th blog post](https://d4tagirl.com/2017/05/how-to-fetch-twitter-users-with-r) she wanted to use a `DT::datatable` to show a long table in an friendly way. All it does is adding some javascript so that you can do searches and pagination... but she hit a dead end when trying to set it up by herself.

I then gave it a try, and after some time copy-pasting bits that I didn't understand, I made it work. Then, by using the already proven copy-this-here-and-then-that-there method, we also set it up on [Maëlle's blog](http://www.masalmon.eu/).
I then gave it a try, and after some time copy-pasting bits that I didn't understand, I made it work. Then, by using the already proven copy-this-here-and-then-that-there method, we also set it up on [Maëlle's blog](http://masalmon.eu/).

Last week, [Kasia asked for help on twitter](https://twitter.com/KKulma/status/896497101772734465)... and what could I do if not helping out? she uses a different method for building her blog, so this time, I had to _actually understand_ what I was doing.

Expand Down
2 changes: 1 addition & 1 deletion _posts/2018-07-18-csharp-random-forest.md
Expand Up @@ -20,7 +20,7 @@ Of course, [wikipedia has the answer](https://en.wikipedia.org/wiki/Random_fores
And that, if you're good at choosing the underlying trees, this approach works very well for some problems.

## What is the problem then?
After we had our random forest working (we used some nice packages in R to build them)... they mentioned that at that time, we didn't really have a way of productionizing it. Our data team was looking into [running R in SQL Server](https://docs.microsoft.com/en-us/sql/advanced-analytics/r/sql-server-r-services), but I figured that if a random forest is just a collection of decision trees... then it shouldn't be complicated to run them in c#.
After we had our random forest working (we used some nice packages in R to build them)... they mentioned that at that time, we didn't really have a way of productionizing it. Our data team was looking into [running R in SQL Server](https://docs.microsoft.com/en-us/sql/advanced-analytics/r/sql-server-r-services?view=sql-server-2017), but I figured that if a random forest is just a collection of decision trees... then it shouldn't be complicated to run them in c#.

Then... I started trying to make it happen. Not because we had a use case for it (although secretly I was hoping we would to prove this was better than relying on SQL Server running R) but mainly to see if I could do it. I could :)

Expand Down

0 comments on commit ba4fee4

Please sign in to comment.