Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "asterisk"
-
A while back, I had a lot of telemarketers were calling me daily, and I mean A LOT of them.
I got so frustrated with he calls that I decided I had to figure out a better way to handle those calls.
At the time, I was working with a PBX software called Asterisk, which is used to handle hardware interfaces and network applications for phone calls.
I needed a suitable side project and there was a version of Asterisk designed for Raspberry Pi, so I made a fun little answering service for myself.
Whenever a telemarketer called, I asked them to call back later, but to "my personal number", and gave them the number to my phone robot. (which had a pre-paid SIM card in a GSM dongle mounted)
When it received a call, it would play a pre-recorded phrase, wait for 1000 ms of silence and then play the next phrase.
After all 16 phrases had been played, it would start from phrase 7 again and repeat until the caller gave up.
I had this set up running for a while, and then added another robot for english speaking callers.
The calls stopped after a few months.
MISSION ACCOMPLISHED!13 -
Used to work for a company that used asterisk for telecommunications.
Boss asked me to quickly change the call charge costs effective immediately. Finished 3diting. Went to piss. Some douche from sales came and pressed asdffggkl into the code, went down 50 lines and left it there.
Got back. Saved the code, pushed through live without testing.
Get a call three minutes later asking what the fuck did I do. There were already 450 call tickets from clients moaning they couldnt call.
So I went and checked the file I pushed. Tested it. What. Line 460 asdffggkl? What the fuck.
Removed it and boom it worked.
Got called in and said I cost the company four times my salary. Said it wasn't me, I wouldn't make a mistake like that. Told him that it was my fuck up for leaving my pc open, and that it probably was best to lock the screen.
Said I'm lying. Pulled the fucking camera footage and there was the fucker changing my code.
I got pardoned, he got a warning (just a warning). For 15 Min, I thought my ass was fired.
Will never make that naive mistake again.14 -
===rant
So I have been freelancing as web developer for 5 years. I was also playing basketball professionally so I was only working part-time, building websites here and there, small android apps to learn the job and I was also reading a lot to challenge my brain.
When I stopped playing basketball about a year ago, I thought I would really enjoy coding full time so I pursued a job.
With no formal education and just a basketball background on paper, in the collapsed Greek economy, as you may assume chances of landing a job are minimal.
After about 40 resumes sent I only got an internship. It was a 4 month, part-time, no pay deal, and then the company would decide if they would like to hire me later.
The company had 4 employees and they are one of the largest software distribution businesses in my area. They resell SaaS bought from a third company, bundled with installation support, initial configuration, hardware support, whatever a client may need.
I was the only one with any ability to code whatsoever. The other people were working mostly on customer support with the occasional hardware repair.
After the 4 month period they owner (small company, owner was also manager and other roles) told me that they are very happy with my work and would like to keep me part-time with minimum pay.
Just to give you and idea if the amounts of money involved, in Greece, after taxes, my salary was 240euros per month. And the average cost of surviving (rent, cheapest food possible, no expenses on anything but super basics) is about 600euros.
I told him I needed more to live and he told me ok, we will reevaluate a few months later, at the end of May 2017.
I just accepted it without having many options. The company after all was charging clients 30euros per hour for my projects so I kept thinking that if I worked a lot and delivered consistently I would get a full time job and decent money.
And I delivered. In the following months I made a Magento extension, some WordPress themes, a C# application to extract data from the client's ERP and import it to a third application, a click to call application to use Asterisk to originate calls from the client's ERP, a web application to manage a restaurant's menu and many more small projects. Whatever they asked, I delivered.
On time, version controlled, heavily documented solutions (my C# ones are not exactly masterpieces but it was my first time with the language and windows).
So when May ended I was pretty excited to hear they wanted to keep me full time. I worked hard for it, I was serious, professional, I tried a lot to learn things so I can deliver, and the company recognized that. YAY.
So the time comes to talk money. The offer was 480euros per month. Double my part-time pay, minimum wage. I asked for about 700. Manager said it's hard but I will see what I can do. So we agreed to keep the deal for June while they are working on a better offer.
During the first half of June I finished my last project, put all my work on a nice folder with a nice readme on every project's directory, with their version control and everything.
The offer never improved, so I said no deal, and as of today, I am jobless.
I am stressed as fuck and excited as fuck at the same time.
I will do my best to survive in the shitstorm that is called Greece.
Bring it on.9 -
Windows notepad is starting to get really freaky features.
It will actually show an asterisk in the title bar if you have unsaved changes. So now you won't have to spam Ctrl-S a hundred times more often than you do anyway.
Congratulations.
"Modified indicator: Notepad will now show an asterisk (*) in the title bar before the title of a document to indicate that a document has unsaved changes."
https://blogs.windows.com/windowsex...11 -
In C++ we don't say "Missing asterisk" we say "error C2664: 'void std::vector<block,std::alocator<_Ty> >::push_back(const block &)': cannot convert argument 1 from 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<block> > >' to 'block &&'" and i think that's beautiful
(not mine, source: https://goo.gl/Akxjih)4 -
Interested in the "If 42 is the answer? What is the question?" diversity. 🤔
*me going to wikipedia*
searching for 42
buncha math stuff whatever
matrix sum... interesting 🤨
(is 42 maybe related to dimensions?)
*sees a lot of programs relations where 42 is considered magical in themselves*
"The ASCII code 42 is for the asterisk symbol, being a wildcard for everything."
*literally speechless* 😮8 -
Having one of those days where the code works on the development VM but not on the production box.... FML
-
I remember the days when your only problem is creating an asterisk pyramid with for loops. Unlike now when you are thinking how idiotic a user can get.
Good old days1 -
```
cursee@potato-2: sudo apt update && sudo apt upgrade
[sudo] password for cursed: ********
```
Hello asterisk, it's about time we acquittance. 😆3 -
Saw some desk pic yesterday; here's mine at home. Mostly for gaming, but I do some work occasionally at it. Laptop's setup so I can monitor some Asterisk servers at work.
Gaming rig is:
4690k@4.5ghz
16gb RAM
GTX 980
Acer 24in 1080p 144hz Gsync monitor
Laptop:
2009 MacBook Pro
2.53ghz Core 2 Duo
8gb RAM
SSD6 -
- They had an error in production
- Almost one year without looking in this codebase
- Last backend dev in the building
- 1h debugging and reading the Stack Trace
- Had a feeling, and changed the place of a single asterisk (groovy's spread operator in the wrong place)
- Now everything is working, our PM is happy, and the client didn't even noticed
- Probably the shortest commit I've ever done
It was a good day :D -
Fuck Google analytics .. seriously .. fuck it .. I understand it's a free tool that doesn't mean you mask your incompetency behind that banner.
Im pretty sure minecraft mods have better documentation than this POS.
I really like the user demographics data it gives , but with the asterisk on literally every other metric it gets harder to believe the ones that are functional.
I cant express exactly how many times I end up with hordes of articles that point out small caveats with this shit.
FUCK IT2 -
For a long time I was of the opinion that pointer variables in C/C++ should have the asterisk immediately after the type name (e.g. int* foo).
Eventually I became convinced that it makes more sense to have it before the variable (e.g. int *foo).
Now I find routines that return pointers look weird, e.g.: void *allocate_something() so I am considering adopting the original style I used.
The only advantage of having the asterisk before the variable name I am aware of is that it is easier to remember to add an asterisk if you define more than one pointer on that line.
Anyone else find it hard to settle on code style guidelines for their own personal projects?12 -
Oh boyyy, I just had to work with Asterisk again. And holy shit it is still the clusterfuck it was many years ago.
We got:
- Inconsequent documentation that is mixed through all versions.
- The config sprinkled over what feels like 20 gazillion files.
- AEL being a half assed attempt at a "pRoGRamMinG LanGuAgE"
- The fuck you mean with extensions, endpoints and AOR's?
- Inconsistent config parameter naming. Some are snake case, some camel case some are just everything smushed into a single word.
- queue_log determines wheter to write a log to a file. queue_log_to_file Says to do so independent of you having a realtime backend. Whatever the fuck that is.
- Log compression is done by executing a gzip command after a rotation??!!?!! -
Why do people put the asterisk in pointer types right before the name, thus having it separated from the type? This doesn't really make sense to me, since in this case it isn't a runtime operator but a part of the type definition.2
-
YGGG IM SO CLOSE I CAN ALMOST TASTE IT.
Register allocation pretty much done: you can still juggle registers manually if you want, but you don't have to -- declaring a variable and using it as operand instead of a register is implicitly telling the compiler to handle it for you.
Whats more, spilling to stack is done automatically, keeping track of whether a value is or isnt required so its only done when absolutely necessary. And variables are handled differently depending on wheter they are input, output, or both, so we can eliminate making redundant copies in some cases.
Its a thing of beauty, defenestrating the difficult aspects of assembly, while still writting pure assembly... well, for the most part. There's some C-like sugar that's just too convenient for me not to include.
(x,y)=*F arg0,argN. This piece of shit is the distillation of my very profound meditations on fuckerous thoughtlessness, so let me break it down:
- (x,y)=; fuck you in the ass I can return as many values as I want. You dont need the parens if theres only a single return.
- *F args; some may have thought I was dereferencing a pointer but Im calling F and passing it arguments; the asterisk indicates I want to jump to a symbol rather than read its address or the value stored at it.
To the virtual machine, this is three instructions:
- bind x,y; overwrite these values with Fs output.
- pass arg0,argN; setup the damn parameters.
- call F; you know this one, so perform the deed.
Everything else is generated; these are macro-instructions with some logic attached to them, and theres a step in the compilation dedicated to walking the stupid program for the seventh fucking time that handles the expansion and optimization.
So whats left? Ah shit, classes. Disinfect and open wide mother fucker we're doing OOP without a condom.
Now, obviously, we have to sanitize a lot of what OOP stands for. In general, you can consider every textbook shit, so much so that wiping your ass with their pages would defeat the point of wiping your ass.
Lets say, for simplicity, that every program is a data transform (see: computation) broken down into a multitude of classes that represent the layout and quantity of memory required at different steps, plus the operations performed on said memory.
That is most if not all of the paradigm's merit right there. Everything else that I thought to have found use for was in the end nothing but deranged ways of deriving one thing from another. Telling you I want the size of this worth of space is such an act, and is indeed useful; telling you I want to utilize this as base for that when this itself cannot be directly used is theoretically a poorly worded and overly verbose bitch slap.
Plainly, fucktoys and abstract classes are a mistake, autocorrect these fucking misspelled testicle sax.
None of the remaining deeper lore, or rather sleazy fanfiction, that forms the larger cannon of object oriented as taught by my colleagues makes sufficient sense at this level for me to even consider dumping a steaming fat shit down it's execrable throat, and so I will spare you bearing witness to the inevitable forced coprophagia.
This is what we're left with: structures and procedures. Easy as gobblin pie.
Any F taking pointer-to-struc as it's first argument that is declared within the same namespace can be fetched by an instance of the structure in question. The sugar: x ->* F arg0,argN
Where ->* stands for failed abortion. No, the arrow by itself means fetch me a symbol; the asterisk wants to jump there. So fetch and do. We make it work for all symbols just to be dicks about it.
Anyway, invoking anything like this passes the caller to the callee. If you use the name of the struc rather than a pointer, you get it as a string. Because fuck you, I like Perl.
What else is there to discuss? My mind seems blank, but it is truly blank.
Allocating multitudes of structures, with same or different types, should be done in one go whenever possible. I know I want to do this, and I know whichever way we settle for has to be intuitive, else this entire project has failed.
So my version of new always takes an argument, dont you just love slurping diarrhea. If zero it means call malloc for this one, else it's an address where this instance is to be stored.
What's the big idea? Only the topmost instance in any given hierarchy will trigger an allocation. My compiler could easily perform this analysis because I am unemployed.
So where do you want it on the stack on the heap yyou want to reutilize any piece of ass, where buttocks stands for some adequately sized space in memory -- entirely within the realm of possibility. Furthermore, evicting shit you don't need and replacing it with something else.
Let me tell you, I will give your every object an allocator if you give the chance. I will -- nevermind. This is not for your orifices, porridges, oranges, morpheousness.
Walruses.16 -
When the Javascript you're working on works fine the first few times; then inexplicably starts throwing an error and breaking on one box while continuing to work on another....
-
When you're trying to fix a bug in your project and realize the problem is a bug in the platform your project is built on.... FML
---
Searches mailing lists for the problem
-- Hours later --
Finds that bug might be fixed in the new unreleased build.
--
Installs release candidate of new build.
--
Still broken.... *Facepalm*
Now to try an old build and see if that works...2 -
Back in time i was monitoring an asterisk server on a friday night. Usually it's monitoring cli is a calm terminal with infos and periodic notifications. On a random check i saw about a KM length red shit / blue shit. As it turned out my boss was using the password 2500 with the same username on a fucking SIP server and while watching football (heard from the voice logs) some romanian script kiddie's brute force script fucked it up. The journey wasn't stopped here. Next step was to them to foreach some calls with high rates to their own special phone number on about 30-50 lines. The first step was to stop the service but because it is a nice app it wont stop till you have an active call, took about 5 mins to realise it . Had to kill it a few times until it gave up. That was the moment when the 'now they are gonna fire me' feel kicked in. Do not use weakass passwords kids!
-
I swear, the semicolon in asterisk will be the death of me...
Two hours sifting through a dialplan to find the culprit.1