Fri 1 Aug 2014
The following letter is not about what "old hands" know and newcomers do not. Instead, it is about lessons that we all need to learn more than once, and remind ourselves of. It is about tendencies that are common, and understandable, and come with the flush of excitement of learning any new thing that we understand is important, and about the difficulty, always, in trying to decide how best to convey that excitement and sense of importance to others, in a way that they will listen. It is written more specifically, but only because I have found that if we don't talk specifics as well as generalities, the generalities make no sense. This holds for algebraic structures, and it holds for other, vaguer concepts no less. It is a letter full of things I want to remember, as well as of advice I want to share. I expect I will want to remind myself of it when I encounter somebody who is wrong on the internet, which, I understand, may occur on rare occasion.
You’ve recently entered the world of strongly typed functional programming, and you’ve decided it is great. You’ve written a program or two or a library or two, and you’re getting the hang of it. You hop on IRC and hear new words and ideas every day. There are always new concepts to learn, new libraries to explore, new ways to refactor your code, new typeclasses to make instances of.
Now, you’re a social person, and you want to go forth and share all the great things you’ve learned. And you have learned enough to distinguish some true statements from some false statements, and you want to go and slay all the false statements in the world.
Is this really what you want to do? Do you want to help people, do you want to teach people new wonderful things? Do you want to share the things that excite you? Or do you want to feel better about yourself, confirm that you are programming better, confirm that you are smarter and know more, reassure yourself that your adherence to a niche language is ok by striking out against the mainstream? Of course, you want to do the former. But a part of you probably secretly wants to do the latter, because in my experience that part is in all of us. It is our ego, and it drives us to great things, but it also can hold us back, make us act like jerks, and, worst of all, stand in the way of communicating with others about what we truly care about.
Haskell wasn’t built on great ideas, although it has those. It was built on a culture of how ideas are treated. It was not built on slaying others’ dragons, but on finding our own way; not tearing down rotten ideas (no matter how rotten) but showing by example how we didn’t need those ideas after all.
In functional programming, our proofs are not by contradiction, but by construction. If you want to teach functional programming, or preach functional programming, or just to even have productive discussions as we all build libraries and projects together, it will serve you well to learn that ethic.
You know better than the next developer, or so you think. This is because of something you have learned. So how do you help them want to learn it too? You do not tell them this is a language for smart people. You do not tell them you are smart because you use this language. You tell them that types are for fallible people, like we all are. They help us reason and catch our mistakes, because while software has grown more complex, we’re still stuck with the same old brains. If they tell you they don’t need types to catch errors, tell them that they must be much smarter than you, because you sure do. But even more, tell them that all the brainpower they use to not need types could turn into even greater, bigger, and more creative ideas if they let the compiler help them.
This is not a language for clever people, although there are clever things that can be done in this language. It is a language for simple things and clever things alike, and sometimes we want to be simple, and sometimes we want to be clever. But we don’t give bonus points for being clever. Sometimes, it’s just fun, like solving a crossword puzzle or playing a tricky Bach prelude, or learning a tango. We want to keep simple things simple so that tricky things are possible.
It is not a language that is “more mathematical” or “for math” or “about math”. Yes, in a deep formal sense, programming is math. But when someone objects to this, this is not because they are a dumb person, a bad person, or a malicious person. They object because they have had a bad notion of math foisted on them. “Math” is the thing that people wield over them to tell them they are not good enough, that they cannot learn things, that they don’t have the mindset for it. That’s a dirty lie. Math is not calculation — that’s what computers are for. Nor is math just abstract symbols. Nor is math a prerequisite for Haskell. If anything, Haskell might be what makes somebody find math interesting at all. Our equation should not be that math is hard, and so programming is hard. Rather, it should be that programming can be fun, and this means that math can be fun too. Some may object that programming is not only math, because it is engineering as well, and creativity, and practical tradeoffs. But, surprisingly, these are also elements of the practice of math, if not the textbooks we are given.
I have known great Haskell programmers, and even great computer scientists who know only a little linear algebra maybe, or never bothered to pick up category theory. You don’t need that stuff to be a great Haskell programmer. It might be one way. The only thing you need category theory for is to take great categorical and mathematical concepts from the world and import them back to programming, and translate them along the way so that others don’t need to make the same journey you did. And you don’t even need to do that, if you have patience, because somebody else will come along and do it for you, eventually.
The most important thing, though not hardest, about teaching and spreading knowledge is to emphasize that this is for everyone. Nobody is too young, too inexperienced, too old, too set in their ways, too excitable, insufficiently mathematical, etc. Believe in everyone, attack nobody, even the trolliest.* Attacking somebody builds a culture of sniping and argumentativeness. It spreads to the second trolliest, and soforth, and then eventually to an innocent bystander who just says the wrong thing to spark bad memories of the last big argument.
The hardest thing, and the second most important, is to put aside your pride. If you want to teach people, you have to empathize with how they think, and also with how they feel. If your primary goal is to spread knowledge, then you must be relentlessly self-critical of anything you do or say that gets in the way of that. And you don’t get to judge that — others do. And you must just believe them. I told you this was hard. So if somebody finds you offputting, that’s your fault. If you say something and somebody is hurt or takes offense, it is not their fault for being upset, or feeling bad. This is not about what is abstractly hurtful in a cosmic sense; it is about the fact that you have failed, concretely, to communicate as you desired. So accept the criticism, apologize for giving offense (not just for having upset someone but also for what you did to hurt them), and attempt to learn why they feel how they feel, for next time.
Note that if you have made somebody feel crummy, they may not be in a mood to explain why or how, because their opinion of you has already plummeted. So don’t declare that they must or should explain themselves to you, although you may politely ask. Remember that knowledge does not stand above human behavior. Often, you don't need to know exactly why a person feels the way they do, only that they do, so you can respect that. If you find yourself demanding explanations, ask yourself, if you knew this thing, would that change your behavior? How? If not, then learn to let it go.
Remember also that they were put off by your actions, not by your existence. It is easy to miss this distinction and react defensively. "Fight-or-flight" stands in the way of clear thinking and your ability to empathize; try taking a breath and maybe a walk until the adrenaline isn't derailing your true intentions.
Will this leave you satisfied? That depends. If your goal is to understand everything and have everybody agree with regards to everything that is in some sense objectively true, it will not. If your goal is to have the widest, nicest, most diverse, and most fun Haskell community possible, and to interact in an atmosphere of mutual respect and consideration, then it is the only thing that will leave you satisfied.
If you make even the most modest (to your mind) mistake, be it in social interaction or technical detail, be quick to apologize and retract, and do so freely. What is there to lose? Only your pride. Who keeps track? Only you. What is there to gain? Integrity, and ultimately that integrity will feel far more fulfilling than the cheap passing thrills of cutting somebody else down or deflecting their concerns.
Sometimes it may be, for whatever reason, that somebody doesn’t want to talk to you, because at some point your conversation turned into an argument. Maybe they did it, maybe you did it, maybe you did it together. It doesn’t matter, learn to walk away. Learn from the experience how to communicate better, how to avoid that pattern, how to always be the more positive, more friendly, more forward-looking. Take satisfaction in the effort in that. Don’t talk about them behind their back, because that will only fuel your own bad impulses. Instead, think about how you can change.
Your self-esteem doesn’t need your help. You may feel you need to prove yourself, but you don't. Other people, in general, have better things to do with their time than judge you, even when you may sometimes feel otherwise. You know you’re talented, that you have learned things, and built things, and that this will be recognized in time. Nobody else wants to hear it from you, and the more they hear it, the less they will believe it, and the more it will distract from what you really want, which is not to feed your ego, not to be great, but to accomplish something great, or even just to find others to share something great with. In fact, if anyone's self-esteem should be cared for, it is that of the people you are talking to. The more confident they are in their capacity and their worth, the more willing they will be to learn new things, and to acknowledge that their knowledge, like all of ours, is limited and partial. You must believe in yourself to be willing to learn new things, and if you want to cultivate more learners, you must cultivate that self-belief in others.
Knowledge is not imposing. Knowledge is fun. Anyone, given time and inclination, can acquire it. Don’t only lecture, but continue to learn, because there is always much more than you know. (And if there wasn’t, wow, that would be depressing, because what would there be to learn next?) Learn to value all opinions, because they all come from experiences, and all those experiences have something to teach us. Dynamic typing advocates have brought us great leaps in JIT techniques. If you’re interested in certain numerical optimizations, you need to turn to work pioneered in C++ or Fortran. Like you, I would rather write in Haskell. But it is not just the tools that matter but the ideas, and you will find they come from everywhere.
In fact, we have so much to learn that we direct our learning by setting up barriers — declaring certain tools, fields, languages, or communities not worth our time. This isn’t because they have nothing to offer, but it is a crutch for us to shortcut evaluating too many options all at once. It is fine, and in fact necessary, to narrow the scope of your knowledge to increase its depth. But be glad that others are charting other paths! Who knows what they will bring back from those explorations.
If somebody is chatting about programming on the internet, they’re already ahead of the pack, already interested in craft and knowledge. You may not share their opinions, but you have things to learn from one another, always. Maybe the time and place aren’t right to share ideas and go over disputes. That’s ok. There will be another time and place, or maybe there won’t be. There is a big internet full of people, and you don’t need to be everybody’s friend or everybody’s mentor. You should just avoid being anybody’s enemy, because your time and theirs is too precious to waste it on hard feelings instead of learning new cool stuff.
This advice is not a one-time proposition. Every time we learn something new and want to share it, we face these issues all over again -- the desire to proclaim, to overturn received wisdom all at once -- and the worse the received wisdom, the more vehemently we want to strike out. But if we are generous listeners and attentive teachers, we not only teach better and spread more knowledge, but also learn more, and enjoy ourselves more in the process. To paraphrase Rilke’s “Letter to a Young Poet”: Knowledge is good if it has sprung from necessity. In this nature of its origin lies the judgement of it: there is no other.
Thanks to the various folks in and around the Haskell world who have helped me refine this article. I don't name you only because I don't want to imply your endorsement, or give what is still, at base, a very personal take, any particular sort of imprimatur of a broader group of people, all of whom I suspect will disagree among themselves and with me about various specifics.
*: It has been pointed out to me that this advice is not universal. Clearly there are some things that deserve more pointed responses. Bigotry, outright harassment and poisonous behavior, etc. So please read this paragraph only as it applies to talking about technical issues, not as regards to many other things, where there are people better equipped than me to give advice.
August 1st, 2014 at 2:00 am
This is an article I will try to re-read every 6 months because it is not only applicable to haskell. Thanks for sharing.
August 1st, 2014 at 4:56 am
This is wonderful.
Just earlier today, I got flamed in a non-Haskell channel for asking a beginner question. It made me think about how community is often more important than the tools the community is founded around.
August 1st, 2014 at 6:17 am
I call “The Enlightened” returning to the cave, in Allegory of the Cave (Plato).
August 1st, 2014 at 7:09 am
Nice words. Thanks for sharing.
August 1st, 2014 at 8:36 am
Once again, empathy triumphs all. I will have to return to this and reflect on my own behavior, continuously! Thank you!
August 1st, 2014 at 9:15 am
This is an excellent description of how it feels to learn Haskell as a newbie and then presenting this knowledge to others. There is a tendency to wield something over someone that we found difficult, almost like that was the reward.
I feel this post mainly offers incredible advice about how to excel as a teacher and a human being. The minute we start taking things personally, we fail.
August 1st, 2014 at 9:22 am
This is a wonderful post. If I may offer a small suggestion, the claim “you must be much smarter than I am if you don’t need types” is not a good thing to say, because it never comes across as sincere.
August 1st, 2014 at 9:39 am
Thank you.
August 1st, 2014 at 10:06 am
Thanks for sharing the words of wisdom!
August 1st, 2014 at 12:15 pm
If you rewrote this post to be more general, particularly on how to interact with people who don’t necessarily share your views, it would quickly become a classic. Excellent article.
August 1st, 2014 at 12:43 pm
Wow,
That was one of the best blog article/letters-to-self I’ve ever read. I’m somewhat new to statically typed functional programming (Haskell and OCaml) but an old hat at programming, software, hardware, etc. I teach on a variety of non-programming, non-technical subjects as well. I think this advice applies equally to all. I think it even applies to getting along with family, friends, etc. Thanks, I’ll be back to read that in a few months as a reminder.
August 1st, 2014 at 2:02 pm
Wonderful article with applicability in far more than Haskell. Well written too, this one is being printed!
August 1st, 2014 at 2:40 pm
There are programmers who also excel at life. A beautiful thing!
August 1st, 2014 at 4:17 pm
“The only thing you need category theory for is to take great categorical and mathematical concepts from the world and import them back to programming, and translate them along the way so that others don’t need to make the same journey you did.”
Hi, I’m a young Haskell enthusiast, and I want to do exactly this. I’d love some advice if anyone has any. I just finished my MS in applied math but have no large-scale software development experience, so I’m wondering where to start, and what might help (eventually) land a job I actually enjoy. GHC (and what part, if so)? A smaller project/library? Any thoughts?
August 1st, 2014 at 6:26 pm
Brilliantly crafted, and very eye opening. Thsnks for sharing.
August 2nd, 2014 at 12:05 am
Beautiful. Thank you
August 2nd, 2014 at 1:20 am
This article captures what I believe to be the true scholarly spirit. It’s a way of thinking and living that, in my opinion, makes one happier and more enthusiastic about living.
August 2nd, 2014 at 2:01 am
Wow!, among one of the best articles I have came across. Thia post correctly addresses how to be good at presenting your views and ideas and interact with other people while discussing. Also it taught me some new ways how to relearn some things and not behave like a fanboy all the time
Thank you so much for sharing such a great piece of wisdom.
August 2nd, 2014 at 3:10 am
Very nice article! Thank you for sharing. I agree with the majority of it but there’s one point I vehemently disagree with: “if somebody finds you offputting, that’s your fault. If you say something and somebody is hurt or takes offense, it is not their fault for being upset, or feeling bad.” People interpret you not exclusively through your words or actions, but largely through they own experiences and associations. That is something that you rarely have control over, not ability to predict and sometimes when people get upset, it’s 100% their problem. Empathy is still desirable but the blame and onus needn’t be your burden. If we all did then over enough time, the entire human race would slow to absolute silence.
August 2nd, 2014 at 12:26 pm
A long time ago on a Haskell IRC, I asked about argument passing in Haskell and whether an array would be passed as a pointer, or copied. I was told I had a “strange mental model” by a helpful snob.
August 2nd, 2014 at 9:54 pm
Thank you. If I had a cruel unwieldly amount of power, I would force every user of the internet to read this article.
August 4th, 2014 at 8:43 am
This actually describes Simon Peyton Jones very well, a staggering and beautiful testimony to true greatness. The Haskell community is indebted to him for more than Haskell alone.
August 14th, 2014 at 10:40 am
[...] Letter to a Young Haskell Enthusiast – programmer ethics [...]
September 15th, 2014 at 4:50 am
These have been my 15 minutes of day well invested. Thanks for this great article.
October 6th, 2014 at 5:15 pm
Came here by https://github.com/bitemyapp/learnhaskell
Very good article/letter, every developer should read this without matter their skills.
November 13th, 2014 at 11:54 pm
[...] Learning, Teaching & Empathy Posted on November 14, 2014 by Sara Every time we learn something new and want to share it, we face these issues all over again — the desire to proclaim, to overturn received wisdom all at once — and the worse the received wisdom, the more vehemently we want to strike out. But if we are generous listeners and attentive teachers, we not only teach better and spread more knowledge, but also learn more, and enjoy ourselves more in the process. — Gershom Bazerman, Letter to a Young Haskell Enthusiast [...]
November 18th, 2014 at 10:22 pm
You hit the hammer on the head with this article. Fantastic words!
I came to Haskell looking for a way to get into programming with the idea that by leveraging more abstraction, we can get more powerful tools to program with. I’m still a newbie, but I’m learning quickly, and it’s always helpful to see articles like this that pull some of the more snobbish parts of the community back down to Earth.
Good advice, not just for spreading Haskell awareness, but for spreading knowledge in general.
November 25th, 2014 at 7:44 pm
David Berri is correct.
If I say something and the other person feels insulted then you say I am to be blamed? Let me show you are wrong…
No person has any control over another’s feelings. I could very well have feelings from prejudice, diet, religious beliefs, or just being a complete fool. To believe we are responsible for another person’s feelings is completely idiotic. You’re no doubt suffering from a victim complex and should go see a therapist to develop a healthy ego.
So how did the above comments feel? You should know that it’s your fault I wrote them–that was my reaction. Or was it? I’m sure most people with a healthy ego agree that it’s not your fault but mine for being a complete jerk. If this is true (that I am a jerk), then I have proven you wrong. If this is false, then your own writing now condemns you. i.e. it’s your own fault that I had a negative reaction and you have much to learn. Either way, I’ve proven a point.
January 23rd, 2015 at 5:53 pm
These are nice sentiments but it is strange that, at the end of the essay, the author links to a site, — “ModelViewCulture” — which embodies a dispensation (shrill, hostile, partisan, divisive, sanctimonious, etc, etc) that is the exact opposite of that which the essay itself recommends.
September 30th, 2015 at 5:06 am
[...] The Comonad.Reader » Letter to a Young Haskell Enthusiast http://comonad.com/reader/2014/letter-to-a-young-haskell-enthusiast/ [...]
July 21st, 2016 at 5:34 am
[...] hargup wordpress theme by initheme.com [...]
September 23rd, 2022 at 3:02 am
Viagra from canada https://500px.com/p/skulogovid/?view=groups...
Whoa lots of very good facts….
September 23rd, 2022 at 7:09 am
Tadalafil 5mg https://500px.com/p/bersavahi/?view=groups...
Great write ups. Thanks….
September 23rd, 2022 at 3:38 pm
Sangithas Kitchen…
[...]just beneath, are numerous absolutely not related sites to ours, having said that, they’re certainly really worth going over[...]…
September 23rd, 2022 at 4:42 pm
Sangitha’s Kitchen…
[...]Wonderful story, reckoned we could combine a handful of unrelated information, nonetheless actually worth taking a search, whoa did 1 study about Mid East has got a lot more problerms too [...]…
September 24th, 2022 at 3:52 am
canadian pharmacy king https://www.provenexpert.com/canadian-pharmaceuticals-online-usa/...
Truly loads of great knowledge….
September 24th, 2022 at 6:14 pm
Food Delivery london…
[...]very handful of websites that transpire to be detailed below, from our point of view are undoubtedly very well really worth checking out[...]…
September 24th, 2022 at 7:28 pm
9mm Ammo…
[...]check beneath, are some completely unrelated sites to ours, nonetheless, they are most trustworthy sources that we use[...]…
September 24th, 2022 at 7:44 pm
45 ACP Ammo…
[...]Sites of interest we have a link to[...]…
September 24th, 2022 at 8:23 pm
Guns on Sale…
[...]although internet sites we backlink to below are considerably not associated to ours, we really feel they’re in fact really worth a go through, so have a look[...]…
September 25th, 2022 at 12:39 am
Ammunition for Sale…
[...]always a large fan of linking to bloggers that I like but do not get a great deal of link adore from[...]…
September 25th, 2022 at 6:27 am
Lamborghini rental miami…
[...]Every as soon as inside a while we pick out blogs that we read. Listed beneath are the most recent web pages that we decide on [...]…
September 26th, 2022 at 7:50 am
Buy generic viagra https://melaninterest.com/user/canadian-pharmaceuticals-online/?view=likes...
You stated this wonderfully….
September 26th, 2022 at 11:54 am
Viagra 5mg https://haikudeck.com/canadian-pharmaceuticals-online-personal-presentation-827506e003...
Thank you, Ample material!
…
September 26th, 2022 at 4:05 pm
online canadian pharmacies https://buyersguide.americanbar.org/profile/420642/0...
Thank you. Plenty of tips.
…
September 26th, 2022 at 5:01 pm
Anonymous 180mg MDMA…
[...]one of our visitors lately recommended the following website[...]…
September 26th, 2022 at 11:47 pm
Tadalafil 20 mg https://experiment.com/users/canadianpharmacy...
This is nicely put! ….
September 27th, 2022 at 5:45 am
Buy viagra https://slides.com/canadianpharmaceuticalsonline...
Incredible many of useful advice!…
September 27th, 2022 at 9:21 am
Viagra sans ordonnance https://challonge.com/esapenti...
Good write ups, Regards!…
September 27th, 2022 at 1:50 pm
Discount viagra https://challonge.com/gotsembpertvil...
Incredible many of beneficial data!…
September 28th, 2022 at 3:39 am
Viagra purchasing https://challonge.com/citlitigolf...
Thanks, Useful information….
September 28th, 2022 at 7:14 am
Viagra for daily use https://order-stromectol-over-the-counter.estranky.cz/clanky/order-stromectol-over-the-counter.html...
Lovely stuff, Regards….
September 28th, 2022 at 1:40 pm
Viagra sans ordonnance https://soncheebarxu.estranky.cz/clanky/stromectol-for-head-lice.html...
Amazing many of fantastic advice….
September 29th, 2022 at 3:11 am
stromectol for crabs https://lehyriwor.estranky.sk/clanky/stromectol-cream.html...
With thanks. Useful stuff!…
September 29th, 2022 at 7:00 am
Viagra generic https://dsdgbvda.zombeek.cz/...
Whoa all kinds of awesome tips….
September 29th, 2022 at 1:24 pm
stromectol tablets https://inflavnena.zombeek.cz/...
Cheers, Excellent stuff….
September 29th, 2022 at 2:39 pm
افضل جامعة فى مصر…
[...]Wonderful story, reckoned we could combine a couple of unrelated information, nonetheless actually worth taking a search, whoa did one particular master about Mid East has got additional problerms as well [...]…
September 30th, 2022 at 1:00 am
خالد عزازى…
[...]that is the finish of this article. Right here you will locate some websites that we assume youll enjoy, just click the links over[...]…
September 30th, 2022 at 7:42 am
Viagra prices https://www.myscrsdirectory.com/profile/421708/0...
Nicely put, Regards!…
September 30th, 2022 at 2:51 pm
Viagra levitra https://supplier.ihrsa.org/profile/421717/0...
Seriously a good deal of terrific advice….
October 1st, 2022 at 5:13 am
canadian medications https://wefbuyersguide.wef.org/profile/421914/0...
Very good posts. Kudos….
October 1st, 2022 at 9:15 am
Viagra generico online https://legalmarketplace.alanet.org/profile/421920/0...
Valuable content. Appreciate it!…
October 2nd, 2022 at 2:51 am
Viagra kaufen https://moaamein.nacda.com/profile/422018/0...
You’ve made the point!…
October 2nd, 2022 at 7:19 am
Viagra generico online https://www.audiologysolutionsnetwork.org/profile/422019/0...
Awesome facts. Thanks….
October 2nd, 2022 at 10:36 am
Buy viagra https://network.myscrs.org/profile/422020/0...
With thanks! Loads of posts.
…
October 3rd, 2022 at 4:22 am
Viagra 5 mg https://sanangelolive.com/members/canadianpharmaceuticalsonlineusa...
Truly plenty of beneficial facts!…
October 3rd, 2022 at 7:45 am
treating scabies with stromectol https://sanangelolive.com/members/girsagerea...
You definitely made your point….
October 4th, 2022 at 6:24 am
Viagra generika https://www.ecosia.org/search?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
You actually said this superbly….
October 4th, 2022 at 10:07 am
highest rated canadian pharmacies https://www.mojomarketplace.com/user/Canadianpharmaceuticalsonline-EkugcJDMYH...
Regards! I like this….
October 4th, 2022 at 2:31 pm
list of reputable canadian pharmacies https://seedandspark.com/user/canadian-pharmaceuticals-online...
Very good knowledge. Thanks a lot….
October 5th, 2022 at 2:24 am
Viagra canada https://www.giantbomb.com/profile/canadapharmacy/blog/canadian-pharmaceuticals-online/265652/...
Nicely put, Cheers!…
October 5th, 2022 at 11:24 am
Viagra 20 mg best price https://feeds.feedburner.com/bing/Canadian-pharmaceuticals-online...
Really a good deal of valuable facts!…
October 5th, 2022 at 4:15 pm
Viagra generika https://search.gmx.com/web/result?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
You actually mentioned this superbly!…
October 6th, 2022 at 1:22 am
Viagra 20 mg best price https://search.seznam.cz/?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
Truly lots of great info….
October 6th, 2022 at 3:18 pm
Viagra 5mg https://swisscows.com/en/web?query=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
Wonderful stuff. Thanks a lot!…
October 7th, 2022 at 1:18 am
liberty village condos…
[...]Sites of interest we’ve a link to[...]…
October 7th, 2022 at 2:29 am
Viagra generico https://www.dogpile.com/serp?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
You said it well….
October 7th, 2022 at 2:46 am
markham condos for sale…
[...]below you will locate the link to some web pages that we think you need to visit[...]…
October 7th, 2022 at 4:05 am
toronto condos…
[...]one of our visitors recently suggested the following website[...]…
October 7th, 2022 at 6:37 am
humber bay condos for sale…
[...]one of our guests recently encouraged the following website[...]…
October 7th, 2022 at 9:38 am
canadian pharmacies mail order …
You expressed that really well….
October 7th, 2022 at 1:39 pm
Men’s Dress Shirts…
[...]we prefer to honor a lot of other net internet sites around the web, even if they arent linked to us, by linking to them. Underneath are some webpages really worth checking out[...]…
October 7th, 2022 at 6:30 pm
$15 dollar unlimited phone plan…
[...]The data talked about within the report are several of the ideal readily available [...]…
October 8th, 2022 at 5:38 am
canada pharmacies online https://search.givewater.com/serp?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
Superb content. Many thanks!…
October 8th, 2022 at 11:06 am
Viagra generico online https://www.bakespace.com/members/profile/Сanadian pharmaceuticals for usa sales/1541108/…
Whoa quite a lot of superb information….
October 8th, 2022 at 1:31 pm
tracker for vehicle…
[...]that will be the finish of this post. Here youll discover some web sites that we consider youll appreciate, just click the links over[...]…
October 8th, 2022 at 3:15 pm
personal gps tracker…
[...]The information and facts mentioned in the article are several of the top out there [...]…
October 8th, 2022 at 4:52 pm
tracker device…
[...]the time to study or check out the material or web-sites we have linked to beneath the[...]…
October 8th, 2022 at 11:34 pm
real estate agents in etobicoke…
[...]just beneath, are various absolutely not related web pages to ours, nonetheless, they are surely really worth going over[...]…
October 9th, 2022 at 4:15 am
Viagra lowest price …
Really plenty of amazing info….
October 9th, 2022 at 9:23 am
Viagra bula https://results.excite.com/serp?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
Factor well taken!….
October 9th, 2022 at 1:53 pm
Viagra uk https://www.infospace.com/serp?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
Whoa lots of great knowledge….
October 9th, 2022 at 4:01 pm
curly girl method…
[...]we like to honor numerous other world wide web sites on the net, even when they arent linked to us, by linking to them. Below are some webpages worth checking out[...]…
October 9th, 2022 at 8:36 pm
cảm ơn tiếng anh…
[...]below you will find the link to some internet sites that we believe you should visit[...]…
October 10th, 2022 at 6:06 am
pharmacy https://headwayapp.co/canadianppharmacy-changelog...
Seriously a lot of terrific knowledge!…
October 10th, 2022 at 4:56 pm
hàm căn bậc 2 trong excel…
[...]below you will find the link to some web sites that we believe you ought to visit[...]…
October 10th, 2022 at 8:39 pm
Thất bại là gì…
[...]Wonderful story, reckoned we could combine some unrelated information, nevertheless seriously really worth taking a look, whoa did one particular find out about Mid East has got extra problerms at the same time [...]…
October 10th, 2022 at 9:32 pm
Ý chí nghị lực…
[...]Wonderful story, reckoned we could combine a handful of unrelated information, nevertheless seriously worth taking a look, whoa did a single learn about Mid East has got a lot more problerms also [...]…
October 11th, 2022 at 4:02 am
Viagra vs viagra vs levitra https://results.excite.com/serp?q=“My Canadian Pharmacy – Extensive Assortment of Medications – 2022″…
Thanks a lot, A good amount of advice.
…
October 11th, 2022 at 9:25 am
canada viagra https://canadianpharmaceuticalsonline.as.me/schedule.php...
Helpful write ups. Many thanks….
October 11th, 2022 at 1:27 pm
Cách làm sữa tươi trân châu đường đen…
[...]we like to honor many other net web pages on the web, even when they arent linked to us, by linking to them. Under are some webpages worth checking out[...]…
October 11th, 2022 at 1:32 pm
Luyện tập thuyết trình tranh luận…
[...]that is the finish of this article. Here you will uncover some web pages that we assume you will value, just click the links over[...]…
October 12th, 2022 at 2:26 am
Cách làm cơm cuộn…
[...]check beneath, are some absolutely unrelated web sites to ours, on the other hand, they may be most trustworthy sources that we use[...]…
October 12th, 2022 at 4:20 am
Cách làm bánh bao…
[...]here are some hyperlinks to sites that we link to mainly because we believe they’re really worth visiting[...]…
October 12th, 2022 at 5:17 am
Cách làm chuối chiên…
[...]we came across a cool web-site that you could love. Take a appear for those who want[...]…
October 12th, 2022 at 12:17 pm
5 Axis CNC Machining…
[...]very couple of sites that take place to be comprehensive beneath, from our point of view are undoubtedly properly worth checking out[...]…
October 12th, 2022 at 12:39 pm
machining titanium parts…
[...]Here are a few of the sites we suggest for our visitors[...]…
October 12th, 2022 at 1:29 pm
CNC Milling: 5 Advantages and Disadvantages You Don’t Know About…
[...]Every after inside a although we choose blogs that we study. Listed below are the most current web sites that we pick [...]…
October 12th, 2022 at 7:49 pm
Lĩnh vực kinh doanh…
[...]check below, are some totally unrelated internet sites to ours, even so, they’re most trustworthy sources that we use[...]…
October 12th, 2022 at 9:35 pm
Kế hoạch kinh doanh…
[...]we came across a cool web site that you could possibly take pleasure in. Take a search if you want[...]…
October 13th, 2022 at 12:39 am
Các hình thức kinh doanh…
[...]check below, are some totally unrelated websites to ours, on the other hand, they may be most trustworthy sources that we use[...]…
October 13th, 2022 at 3:02 am
Phần mềm kế toán…
[...]please stop by the internet sites we follow, including this one, as it represents our picks from the web[...]…
October 13th, 2022 at 11:16 am
Kỹ năng giao tiếp trong kinh doanh…
[...]Wonderful story, reckoned we could combine a few unrelated data, nevertheless definitely really worth taking a look, whoa did one understand about Mid East has got much more problerms too [...]…
October 13th, 2022 at 11:23 am
Viagra daily https://feeds.feedburner.com/bing/stromectolnoprescription...
Many thanks, An abundance of write ups.
…
October 13th, 2022 at 12:42 pm
Bán bánh mì…
[...]just beneath, are several completely not connected web-sites to ours, even so, they are surely really worth going over[...]…
October 13th, 2022 at 2:45 pm
Stt hài hước…
[...]Wonderful story, reckoned we could combine several unrelated information, nevertheless truly worth taking a appear, whoa did a single study about Mid East has got a lot more problerms too [...]…
October 13th, 2022 at 2:45 pm
Mai Kiều Liên…
[...]very handful of internet websites that come about to be in depth beneath, from our point of view are undoubtedly properly worth checking out[...]…
October 13th, 2022 at 3:02 pm
Câu nói hay về tình bạn…
[...]please check out the websites we follow, which includes this one particular, as it represents our picks in the web[...]…
October 13th, 2022 at 8:21 pm
những câu nói hay về tinh thần lạc quan…
[...]just beneath, are many absolutely not related web-sites to ours, nonetheless, they are certainly worth going over[...]…
October 13th, 2022 at 11:18 pm
Tư duy logic…
[...]check beneath, are some entirely unrelated web sites to ours, on the other hand, they may be most trustworthy sources that we use[...]…
October 13th, 2022 at 11:24 pm
Văn hóa đọc là gì…
[...]The facts mentioned in the report are a few of the most effective available [...]…
October 14th, 2022 at 12:16 am
Phương pháp đọc sách hiệu quả…
[...]the time to read or take a look at the content or internet sites we’ve linked to below the[...]…
October 14th, 2022 at 1:11 am
Vẽ chân dung…
[...]The data talked about in the article are some of the most beneficial readily available [...]…
October 14th, 2022 at 3:55 am
Buy generic viagra https://reallygoodemails.com/orderstromectoloverthecounterusa...
Kudos! A good amount of forum posts!
…
October 14th, 2022 at 1:01 pm
Quyết tâm…
[...]usually posts some really fascinating stuff like this. If youre new to this site[...]…
October 15th, 2022 at 12:04 pm
trần thị ngọc hoài…
[...]Here are several of the web pages we suggest for our visitors[...]…