Compare commits

..

10 Commits

Author SHA1 Message Date
1ca1cc8d27 Update résumé
Signed-off-by: Nicolás Ortega Froysa <nicolas@ortegas.org>
2023-06-26 18:22:30 +02:00
fcdcfba6bb Add post on parameters in C/C++ 2023-03-14 19:02:08 +01:00
root
82e45def99 Make webroot. 2022-11-26 17:33:18 +00:00
14d09d7bf1 Update CV. 2022-11-26 15:13:07 +01:00
ca8147fe3c Update invidious link to yewtube. 2022-11-15 21:18:30 +01:00
f69d1ef8f4 Remove sync target. 2022-10-15 16:33:21 +02:00
c7b5ea40cc Add install target. 2022-10-15 16:32:58 +02:00
8829b7d245 Changed the home page. 2022-09-26 16:42:05 +02:00
bcd69034f3 Remove commented directive. 2022-09-26 16:21:14 +02:00
8f4bcda542 Add résumé to website. 2022-09-05 14:19:05 +02:00
8 changed files with 153 additions and 50 deletions

View File

@ -1,10 +1,10 @@
OUTPUT_DIR=./output OUTPUT_DIR=./output
WEB_ROOT=/var/www/themusicinnoise.net/main
.PHONY: all pages blog sync clean .PHONY: all pages blog clean install
all: pages blog all: pages blog
cp -r static/* $(OUTPUT_DIR) cp -r static/* $(OUTPUT_DIR)
#cp nicolas@ortegas.org_pub.asc style.css favicon.png profile.png $(OUTPUT_DIR)
pages: pages:
mkdir -p $(OUTPUT_DIR) mkdir -p $(OUTPUT_DIR)
@ -17,10 +17,11 @@ blog:
cat blog/templates/index.html/footer-part.html templates/page/footer.html > blog/templates/index.html/footer.html cat blog/templates/index.html/footer-part.html templates/page/footer.html > blog/templates/index.html/footer.html
find blog/posts -type f -name '*.cfg' -print0 | sort -zr | xargs -0 saait -o $(OUTPUT_DIR)/blog/ -t blog/templates/ find blog/posts -type f -name '*.cfg' -print0 | sort -zr | xargs -0 saait -o $(OUTPUT_DIR)/blog/ -t blog/templates/
sync: all
rsync -avz --delete $(OUTPUT_DIR)/ nicolas@192.168.1.141::tmin-site
clean: clean:
rm -rf $(OUTPUT_DIR) rm -rf $(OUTPUT_DIR)
rm -f blog/templates/index.html/header.html rm -f blog/templates/index.html/header.html
rm -f blog/templates/index.html/footer.html rm -f blog/templates/index.html/footer.html
install: all
mkdir -p $(WEB_ROOT)
cp -r $(OUTPUT_DIR)/* $(WEB_ROOT)/

View File

@ -10,7 +10,7 @@
<p>We must also recognize that God is looking at a much larger picture than we are. Whereas an evil may have significant negative consequences for us here today, God may have planned to derive good from this evil 500 years from now. What's more, because God is beyond both space and time, He knows the outcome of everything that happens, and knows how we will freely choose to react to it. As such, it is impossible to disprove, even, that God has this capability! For in order to do this, one would have to be omniscient and omnipresent, i.e. God.</p> <p>We must also recognize that God is looking at a much larger picture than we are. Whereas an evil may have significant negative consequences for us here today, God may have planned to derive good from this evil 500 years from now. What's more, because God is beyond both space and time, He knows the outcome of everything that happens, and knows how we will freely choose to react to it. As such, it is impossible to disprove, even, that God has this capability! For in order to do this, one would have to be omniscient and omnipresent, i.e. God.</p>
<p>Now, back when I was an Atheist I enjoyed watching a YouTube channel called <i>Darkmatter2525</i>. The creator makes fun animations where he attempts to debunk religion, primarily Christianity - although I've seen him do videos on Islam as well. One of his videos, titled <i><a href="https://invidio.us/watch?v=XUhIvqWyrPM" target="_blank" >If God Answered Prayers</a></i> is ironically a great video explaining butterfly theory such that one can easily see how God can permit evils and still derive good from them 'down the daisy chain'. The video gives the scenario of a little girl who asks god for a kitten. God does not comply and explains to his angel, Jeffrey, how the eventual consequence of giving that girl a kitten would cause a person vital for preventing the Third World War to never exist. As such, by not giving the little girl the kitten, god leaves way for a person to be born who will prevent a world-ending catastrophe.</p> <p>Now, back when I was an Atheist I enjoyed watching a YouTube channel called <i>Darkmatter2525</i>. The creator makes fun animations where he attempts to debunk religion, primarily Christianity - although I've seen him do videos on Islam as well. One of his videos, titled <i><a href="https://yewtu.be/watch?v=XUhIvqWyrPM" target="_blank" >If God Answered Prayers</a></i> is ironically a great video explaining butterfly theory such that one can easily see how God can permit evils and still derive good from them 'down the daisy chain'. The video gives the scenario of a little girl who asks god for a kitten. God does not comply and explains to his angel, Jeffrey, how the eventual consequence of giving that girl a kitten would cause a person vital for preventing the Third World War to never exist. As such, by not giving the little girl the kitten, god leaves way for a person to be born who will prevent a world-ending catastrophe.</p>
<p>Now, the video has its issues, and obviously was not made with the intention of providing a solution to the problem of evil. His intention is instead to argue that God <i>never</i> answers prayers. He tries to argue that because granting even the smallest prayer would have such massive consequences for His plan, that it would be implausible or incredible for God to account for it. This, of course, is simply the fallacy of personal incredulity. God is beyond space and time, it is not as though He had a deadline by which He had to finish His divine plan. The second argument he makes is the typical argument that God cannot have a divine plan and allow us free will. Of course, there are some Christian denominations that have chosen one or the other, but Catholics know both from Sacred Scripture and from Sacred Tradition and the Magisterium of the Church that both can and do coexist. There are many ways to skin this cat, but my preferred method is to give an example that's closer to us. I'm fairly certain that there is someone in your life that you know very well. So well, in fact, that you can predict how they will react to certain stimuli. Yet, the ability to know their reaction does not mean they are without free will. Now, if we are to consider God who not only created you, but was also present at all moments of your life and knows you even better than you know yourself, would it be surprising if God were to know exactly how you will respond to certain stimuli from your environment? Add to this the dimension that God is beyond both space and (more importantly) time, and we can see how God already knows what you will choose out of your own free will.</p> <p>Now, the video has its issues, and obviously was not made with the intention of providing a solution to the problem of evil. His intention is instead to argue that God <i>never</i> answers prayers. He tries to argue that because granting even the smallest prayer would have such massive consequences for His plan, that it would be implausible or incredible for God to account for it. This, of course, is simply the fallacy of personal incredulity. God is beyond space and time, it is not as though He had a deadline by which He had to finish His divine plan. The second argument he makes is the typical argument that God cannot have a divine plan and allow us free will. Of course, there are some Christian denominations that have chosen one or the other, but Catholics know both from Sacred Scripture and from Sacred Tradition and the Magisterium of the Church that both can and do coexist. There are many ways to skin this cat, but my preferred method is to give an example that's closer to us. I'm fairly certain that there is someone in your life that you know very well. So well, in fact, that you can predict how they will react to certain stimuli. Yet, the ability to know their reaction does not mean they are without free will. Now, if we are to consider God who not only created you, but was also present at all moments of your life and knows you even better than you know yourself, would it be surprising if God were to know exactly how you will respond to certain stimuli from your environment? Add to this the dimension that God is beyond both space and (more importantly) time, and we can see how God already knows what you will choose out of your own free will.</p>

View File

@ -0,0 +1,5 @@
filename = 2023-03-14-in-out-parameters.html
title = In- and Out-Parameters
description = A sort of half-rant of mine on the sloppy use of references and pointers as parameters in C and C++ code.
created = 2023-03-14
updated = 2023-03-14

View File

@ -0,0 +1,105 @@
<p>
So at work I have to deal with a codebase that works with C and C++. In the part
of the code that is C++ specifically I'll often find lots of reference
parameters in functions. This is something great and good for objects, since
passing lots of information by copy is extremely inefficient, but there is one
thing that is extremely bothersome: not knowing which parameters are
in-parameters and which are out-parameters.
</p>
<p>
In case you're not familiar with this concept of in- and out-parameters, this is
something very common in the world of C and C++, but more from C. If you've ever
done any programming (or mathematics) you probably already know what an
in-parameter is: it's the parameter that serves as input for the function to do
what it needs to do. But there are cases where you may want a parameter not to
input something, but to output something. The idea is if you need to return an
object from your function, but you also want to return an integer code if
there's an error - or whatever other example you can think of, this just came to
my mind. In such a case you may have something like this:
</p>
<blockquote>
<code>
int init_obj(struct object *obj) { /* init object */ }<br />
...<br />
struct object obj;<br />
int res = init_obj(&amp;obj);<br />
if (res &lt; 0) { /* handle error */ }
</code>
</blockquote>
<p>
In this example, we want to initialize our structure object statically, so we
pass a pointer to it (<code>&amp;obj</code>) so it can be modified. Therefore we
cannot simply return the object, or if we did it might be costly since the
compiler might try to make a copy - leave arguments about compiler optimization
for another time. But also we want to know if this operation failed, and to have
an error code in the case that it does (in this case the code being less than
zero). Therefore, in this example, the <code>obj</code> parameter of the
<code>init_obj</code> function is an out-parameter.
</p>
<p>
These are extremely useful in C and even C++. What's more, in C++ they have
these wonderful things called <em>reference parameters</em>, which are great
because you don't have to deal with the pesky pointer syntax, and you basically
treat them like any other variable - the obvious downside being you may forget
you're actually dealing with memory that isn't yours. I use them a lot at work,
as will any good C/C++ programmer. But there's one problem: when pointers &amp;
references are used, but nowhere is it clarified whether they are in- or
out-parameters.
</p>
<p>
Imagine you're reading through some code and you come across a function with a
few different references in its parameters - or pointers, same thing. You look
at the parameter names, but they seem completely undescriptive. You check to see
if maybe you can discern something from the function name or the type definition
of the parameters... No, there's nothing. You think: "Okay, maybe I can just
read the function and figure this out." Only then you realize the function is
some 1000+ lines long. You check to see if someone wrote a comment at the head
of the function or its declaration, but no cigar, because if there's one thing
programmers hate it's documenting their code (or someone else's for that
matter).
</p>
<p>
There are technically three solutions to this problem... Well, three solutions
<em>you</em> can implement in good practice to avoid someone (like yourself)
falling into this problem. And they aren't mutually exclusive, you could do all
three.
</p>
<p>
The first is the most obvious: document your code! Yes, I know, it's hard. I
probably don't do it as often as I should either. (Who does?) But it's really
the easiest thing to do. Just write a small header to the function saying what
the function does, what each parameter is for, and what are the possible return
values. Should only take you less than a minute.
</p>
<p>
The second is perhaps easier than the first, and if you're into the philosophy
of "The Code Should Document Itself" then this is probably your way to go:
prepend the keywords <code>in_</code> and <code>out_</code> to each reference
parameter. It's simple, it's descriptive, and the next developer (or you in a
week) knows what they're doing with the function.
</p>
<p>
The third and final solution, which is truly my personal favorite because it
also gives optimization benefits: make all in-parameters constant. Seriously,
it's C/C++ efficiency 101 that when you have a parameter that is a
pointer/reference that you won't be modifying you make it <code>const</code>.
You may think this is less effective than the previous two strategies - and at
least compared to the first it is -, but considering how modern editors/IDEs
work, they generally show you the kind of parameter which is required as you're
filling in the function call, and even if you mess up, the linter will notice
you're trying to modify a constant parameter and it will yell at you.
</p>
<p>
Well, there you go. No more excuses. Now you can continue to write good C/C++
code like a boss, but without creating headaches for some poor future developer.
</p>

View File

@ -4,51 +4,39 @@
title="Profile picture." title="Profile picture."
id="profile" /> id="profile" />
<h2>Who Am I?</h2> <p>
<p>I'm a Spanish-American, living in Seville, Spain. I'm fluent in English and The Music in Noise is my personal website. From here you can access pretty much
Spanish, with a decent proficiency in Portuguese and Esperanto. My interests all my works. The name of the website comes from my (musical) artistic alias -
(and therefore the content of this website) are very diverse, e.g. computer which honestly I don't really use anymore. I'm a Spanish-American, living in
engineering, music composition, (Catholic) religion, language learning, etc.</p> Seville, Spain. I'm fluent in English and Spanish, with some proficiency in
Portuguese and Esperanto.
</p>
<h2>What's My Experience?</h2> <p>
<h3>SARUS</h3> I'm a Roman Catholic, and I take much interest in my faith. Many of my blog
<p><a href="http://sarus.es/" >Website</a></p> posts tend to be related to Catholicism; whether it be general theology,
<p>For a few years I've been helping the <i>Servicio de Asistencia Religiosa de apologetics, or simply my personal opinion on certain matters.
la Universidad de Sevilla</i> to maintain and update their website, as well </p>
as serving as general tech support for the university chaplain. I've also led
various activities, including some Bible study sessions on the epistles of Saint
Paul the Apostle. This is also the association that gave me catechesis for my
Confirmation.</p>
<h3>DMUX</h3> <p>
<p><a href="https://gitlab.com/CollectiveTyranny" > I also publish some techy content, as one of my hobbies is computers - low-level
GitLab computing in particular. I also work as a Junior C++ Developer at Zevenet. My
</a></p> favorite computer programming languages are C and C++, although I've recently
<p>For a year I was working with does some dabbling in Rust.
<a href="https://bkeys.org" >Brigham Keys</a> to develop a 3D </p>
derby-style shooter game in C++. The project did not end up
working out, due to a variety of factors, but it remains one of
the most rigorous projects I've ever worked on in collaboration
with a team. We used modern C++, extensively exploited the
Standard Template Library, developed a complex build system
using CMake, and even had to dig up an old code base to
interface with two different libraries (Irrlicht and Bullet
Physics).</p>
<h3>Private English Lessons</h3> <p>
<p>For a couple years now I've been giving private English There's also some music available here... but I haven't really done any new
lessons to some of my neighbors, as well as in-person songs since 2016. It's something I've (regrettably) not been able to spend a lot
conversations with people I know. I work hard to make sure that of time on.
their English improves, primarily focusing on recurring </p>
mistakes. I've worked with children as well as adults, helping
them to attain a better degree of English fluency.</p>
<h3>Conservation Corps. Minnesota</h3> <p>
<p><a href="https://conservationcorps.org/" > There are other things available on this site, but it's basically just
Website miscellaneous stuff. If you find something you like, good for you. If you don't,
</a></p> then I'm glad you stopped by.
<p>I worked for a summer as a youth crew member. We lived with </p>
our crew members for the duration of the job, and worked in
various national parks and lake access points. Our work was <p>
primarily trail construction, removal of invasive species, and Happy hacking, and God bless you!
clearing of lake access points.</p> </p>

BIN
static/docs/resume_en.pdf Normal file

Binary file not shown.

BIN
static/docs/resume_es.pdf Normal file

Binary file not shown.

View File

@ -3,6 +3,10 @@
<p><a href="http://ft2bvxji6lxfttqcjz6ed3iyzdhv4gbcdl2bt7cdxguk56xsvdkqnbid.onion/" >Onion Address</a> <p><a href="http://ft2bvxji6lxfttqcjz6ed3iyzdhv4gbcdl2bt7cdxguk56xsvdkqnbid.onion/" >Onion Address</a>
- -
<a href="https://themusicinnoise.net/" >Clear-Net</a></p> <a href="https://themusicinnoise.net/" >Clear-Net</a></p>
<p>
Résumé: <a href="/docs/resume_en.pdf" >EN</a>,
<a href="/docs/resume_es.pdf" >ES</a>
</p>
<p>Copyright &copy; 2016-${copyyear} Nicolás A. Ortega Froysa<br /> <p>Copyright &copy; 2016-${copyyear} Nicolás A. Ortega Froysa<br />
This document is licensed under the This document is licensed under the
<a href="https://creativecommons.org/licenses/by-nd/4.0/" >CC-BY-ND 4.0 License</a>.</p> <a href="https://creativecommons.org/licenses/by-nd/4.0/" >CC-BY-ND 4.0 License</a>.</p>