What engineers have in common (part 2)

(Part 1 of this series can be found here)

In my last post, I suggested the term physineer be used to describe engineers who deal with the physical realm. These are individuals employed in the traditional engineering fields, such as chemical, electrical, civil, and mechanical engineering. To see how the responsibilities of such engineers are similar to those employed in non-traditional engineering fields, say software or financial engineering, I want to take a closer look at what we consider to be “engineering” activities. In doing so, I’m going to wax philosophical for a bit—but only for a short while, I promise.

We live in a physical world. To survive in this realm we must eat sufficiently well, avoid facing extreme weather conditions without shelter, and protect ourselves from oncoming traffic. Thinking about how a mythical super-hero might catch a bullet in his or her teeth is a fairly harmless mental exercise, but attempting to replicate the feat in real life will lead (most likely) to a life-ending result. We cannot escape many of the consequences that result from our actions (and inactions) in this physical existence.

Despite our inability to escape the material realm, we humans have a natural proclivity for creating mental notions of how and why things work. These abstractions have no material embodiment; they exist only as a result of a particular pattern of brain waves. We can perceive a model to exist in our minds; but we are unable to separate it from our consciousness. I can explain to you the properties of my model, and suggest relevant analogies, but I cannot directly hand you my concept, nor can you hand me yours.

In contrast to our human traits, the physical world has no need for abstractions. (Okay, some of the quantum mechanics stuff is kind of freaky, so feel free to tell me that I’m wrong.) The apple that fell in front of Isaac Newton did not need to compute the gravitational force acting on it; it simply fell. Electrons passing through a wire do not know the wire’s resistance or the voltage drop across the wire; they simply jump from atom to atom. Force and voltage and resistance are human abstractions; models that allow us to comprehend how the world around us behaves. As we learn more about the universe, we update our models. I’m not aware of any evidence that the universe changes to accommodate our conception of how it should properly function.

So I propose a logical separation between the abstract and physical realms (with apologies to the true philosophers among you, who will accurately identify my lack of knowledge about metaphysical concepts such as Idealism and Platonic Realism.) This separation is illustrated in the figure above. The arrows represent our ability to move (mentally, not physically) between the two worlds. As mentioned above, we have a tendency to generate theories about how our universe operates. If our models (abstractions) are sufficiently accurate, then they can be used to “explain” physical phenomena. In some cases, they can potentially be used to predict events and interactions that have not yet been witnessed. Even more powerfully, our abstractions can be used to create new devices or methods that cause the physical world to behave in a manner that is more to our liking. (Think central air conditioning on a hot August afternoon in central Kansas, when the ever-present west wind has inexplicably died down for an entire week, and shimmering black tar bubbles have popped up along every inch of sealed crack in the dull, sun-baked asphalt.)

To further our discussion, I’ve added the names of certain disciplines to the diagram. These are the STEM subjects; science, technology, engineering, and mathematics. It seems to me that we can assign one of the STEM fields, in a somewhat meaningful manner, to each side of this figure. Associated with the upward arrow are scientists who observe the real world and try to explain its behavior through the creation of theoretical models. Their model development is guided by the rules of logic and analysis that mathematicians advance while working in the abstract realm, represented here by the upper box. In association with the downward arrow, traditional engineers (physineers) use models to assist in safely modifying physical behaviors, and in creating new physical embodiments. Finally, technologists utilize and operate mankind’s tools and creations while working in the physical realm, which is identified by the lower box.

As with all models, my diagram is an incomplete representation of reality (a notion better stated by Howard Skipper). One obvious flaw is that very few individuals employed in the STEM fields have the luxury (or curse, depending on your perspective) of limiting themselves to a single discipline. In addition to creating new methods and mechanisms, engineers must be able to develop new models, and should be adept in applied math. Scientists must, at times, design their own equipment and develop mathematical tools. Today’s mathematicians may interact with computer hardware or gather physical data, while technologists occasionally have to model physical phenomena or solve obtuse logic problems. But this diagram gives context to my proposed definition of an engineer:

engineer: an individual who designs novel methods, devices, or systems that can be practically implemented to meet specified constraints, or analyzes existing methods, devices, or systems for their capacity to meet such constraints, while making use of models and mathematics.

Physineers clearly fit into my definition of an engineer. But since those engaged in software, financial or social engineering do not design objects that can be physically embodied, can they really be engineers? Up until a few weeks ago, I would have said, “no.” However, note that my definition says nothing about the resulting designs being limited to the material world. In my next post, I will discuss the activities of engineers working in alternate realms.

Posted in Engineering Roles | Tagged , , | Comments closed

What do engineers have in common?

While I see many articles concerning new initiatives in STEM education, relatively little is said about the types of duties that engineers perform in the workplace. Any design process has to begin with certain constraints on the finished product, and it seems to me that an informed choice of curriculum and educational methods should begin with an understanding of the skills needed by newly graduated engineers. We live in a rapidly changing world, but are relying on an educational system that is rather dated. Simply doing more of what we’ve always done seems rather inefficient. It is also strikes me as unfair to students to make them endure an education process that is misaligned with their career interests. So I am curious if we can determine the overarching commonalities that exist in the career category we call “engineering.”

Operators of railroad trains, broadcasting equipment, boilers, and aircraft systems have long been given the title of  “engineer.” However, these duties are different from the math-intensive skills that are taught in most engineering classes. Further, just about any activity that involves planning or scheming is now described as “engineering.” I cringe each time I come across the term “social engineer” being used to describe someone who manipulates the emotions and trust of others. Alas, my discomfort with the nomenclature does little to remove it from the common vernacular. So let me be more specific in describing a particular set of engineering functions.  I’m going to identify those who graduate from traditional engineering programs (mechanical, electrical, chemical, nuclear, civil, etc.) as “physical” engineers, or physineers. Central to their skill set is a knowledge of how the physical world behaves.

A story that received a lot of attention at the beginning of last month was Facebook’s plan to open an engineering office in New York City. I have previously expressed some concern over software professionals being called “engineers.” As recently as last week, I was prepared to write a post to argue that the “engineer” moniker has been co-opted to the point of becoming meaningless. It’s not that I don’t appreciate the skills of these software experts, but rather that I believe they solve a different type of problem than do physineers. However, after giving it some thought, I’m of a less dogmatic mindset. Efforts of software engineers, financial engineers, and social engineers do, in fact, share some commonalities with those who work in traditional engineering fields. We just need better naming conventions to describe the duties that each group of engineers perform for society.

The whole naming issue is important because of the disconnect that exists between the skill sets that employers are asking for, that universities are providing, and that students are expecting to learn. A recent article on the Forbe’s website heralded the strong demand for engineering talent, but neglected to point out that most of the job openings are for software engineers. Think that becoming a computer hardware engineer is a closely related safe bet? Sorry, while the Bureau of Labor Statistics predicts that software engineering employment will grow at a mean rate of 2.1% per year, the forecast is that jobs for computer hardware engineers will grow at only one-fifth that rate. Additionally, the forecast is for 1.2 million software engineers in 2018, but only seventy-seven thousand computer hardware engineers. Employment opportunities will not be evenly distributed across the engineering terrain. We need to be far more specific in the skill sets we ask young engineers to attain. So I want to look more closely at what engineers (of all stripes) actually do, and how we might better distinguish between their various responsibilities and activities. I’ll proceed with this discussion in my next post.

Posted in Engineering Roles | Tagged , , | Comments closed

Refocusing Engineering Revision

When I started this blog two years ago, I was convinced there had to be a better way for students to learn engineering concepts. Having professors talk monotonously at an overhead screen while showing page after page of convoluted equations offers, at best, a modicum of useful insight into how one would go about solving real-world engineering problems. Having spent twenty years in industry before returning to school for my doctorate, I’ve got a fair idea as to what skills engineers use outside of the university. And, Lord knows, as I conclude my seventh year in a PhD program, I’ve sat through my share of incredibly dry lectures.

Back in 2010, I thought that better presentations, maybe Khan Academy style, would provide a simple solution. I kept pointing out to my (very patient) friends the ridiculousness of having half the calculus students in the country learning from below-average instructors. Well-produced videos seemed to me a means for addressing this problem. But it appears that mere window dressing is not what learners need. There is evidence that active learning, social engagement and spaced repetition are critical components in effective learning. The relative important of these factors, however, and the precise role they play in enhancing the education of engineering students is as yet unknown (at least to me). For this reason, I’ve not written a lot of posts in the past year and a half; I’ve simply not been able to intelligently address the issue of how engineers can best be taught.

However, a recent stream of news articles related to STEM education seems to indicate that a lot of others think they know how the job should be done. To me, these approaches seem intent on doing more of what we’ve always done; and I must admit to being apprehensive of cranking up the rate at which engineers are being produced, without a considered modification of instructional methods or curriculum focus. Thus, my intent is to refocus this blog on asking questions about what engineers do, how they think, and what duties they perform. In doing so, it is my hope that answers about engineering education will arise. If I can’t offer solutions, then perhaps I can perform a useful service by asking the right questions.

Posted in Engineering Revision | Tagged | Comments closed

Building Sandcastles

As a life-long Midwesterner, I haven’t spent a lot of time on the beach. However, I managed to build enough sandcastles during my youth to know that hours of effort can quickly disappear underneath the waves of a rising tide. No matter how beautiful the structure, how perfect its lines and curves, it stands no chance against a powerful sea that seeks to level everything it can touch. If the sandcastle is to be admired for more than a few hours, it has to be rebuilt. Time and time again, one must construct the sculpture, fully aware that it will erode as high tide sweeps in. Of course, the joy of construction disappears after a few days. But the destructive nature of the tides is unrelenting, so one must build the sandcastle once more.

Although I’ve long since forgotten where I picked up this sandcastle metaphor, I often use it when thinking about the life cycle of engineering projects. It is deceptively easy to believe that the job is finished once a device, or system, or methodology has been designed. However, as soon as that design is released into the real world, it will begin to erode. Surfaces idealized as perfectly smooth by the designer acquire minute ripples during the machining process. Electronic signals pick up noise, hydraulic pumps leak, bearings seize, and chemical solutions degrade. As a result, maintenance is a large portion of the engineering workload. Many engineers spend their careers doing nothing but keeping industrial processes operating smoothly. And anyone responsible for maintaining a house built more than twenty-five years ago knows that there is a significant cost, both in time and currency, associated with keeping a once-pristine structure in proper working order.

Although nature can do significant damage to an engineered system, the most severe problems are often people-related. Managers forget the caveats placed on equipment specifications, and begin demanding unrealistic production rates. Operators forget rules about proper usage, and begin to utilize machinery in applications for which it was not intended. Engineers fail to ask enough questions when integrating equipment into larger systems. And so the erosion accelerates. Devices, systems, and methodologies, once so lovingly designed to serve a particular purpose, begin to break down as they are misused, misapplied, or misappropriated.

System failure is not always a bad thing, as it may lead to knowledge of how the scheme might be improved. But it is usually a unwanted outcome, and keeping a system running smoothly requires diligent observation. A supervision style known as Management By Wandering Around involves checking in with employees, in a casual and unstructured manner, and asking questions about how things are going—so as to discover how processes and procedures might be improved. This methodology emphasizes identification of unexpected complications, as it focuses on newly-arisen issues, and is not intended as a replacement for standard performance reports. In a similar manner, frequent inspections are required to keep engineered systems operating on a reliable basis.

Although failures can be reduced via analysis during the conceptual and design phases, the most difficult problems are usually unanticipated. Thus, one can never assume that a system is “done.” I regard as cruel any engineer who tosses a design “over the wall” and walks away without regard for others who must subsequently maintain system functionality. All physical processes have to be observed, analyzed, maintained, and tweaked to offset the unrelenting tendency of nature to maximize randomness. Steel will rust, capacitors will short circuit, and out-of-spec materials will find their way into the process.

Likewise, interpersonal understandings may have to be reconstructed on a regular basis. Managers may need to be reminded as to their original agreements about specified performance. (Keeping a contemporaneous notebook is quite useful in this regard.) Operators may require a bit of nudging to return to proper operating procedures—although this should be done with an open mind, as they may be ready and able to show why the procedures should be revised. Colleagues may benefit from a better understanding of how a prior-generation system was intended to operate. But none of this can happen if an engineer holes up in a cubicle, and refuses to interact with others. There has to be a willingness to walk the beach, just to see how the sandcastle is fairing.

When engineering students are asked to carry out design projects in a period of a few weeks, just getting their design to function properly is a sufficient challenge. However, during semester-long activities, such as a senior design project, young engineers need to be made aware of the multitude of forces that may cause their designs to decay. Where possible, designs should account for the eventualities of repair, maintenance, and disposal. These issues are certainly of less immediate importance when one is thrashing about, trying to get a new design to simply work. However, as a design is refined and improved, the life cycle of the system deserves serious consideration.

Engineering graduates should also understand that, during the course of their careers, they will likely run into financially-focused managers who will tell them to put off maintenance, or goal-driven managers who may ask them to run systems outside of specification. There are sometimes quite legitimate reasons for doing such things, and the political clout to countermand such decisions is frequently beyond the engineer’s reach. But they should attempt, to the best of their abilities, to reconstruct the agreements and understandings that constrained the original design work. In a perfect world, this should not have to be done. But it usually falls to an engineer to deal with the physical consequences that result from such managerial decisions. So engineers should learn early on that, sooner or later, someone will have to go out and rebuild the sandcastle.

Posted in Engineering Roles | Tagged , , , | Comments closed

Bringing Ustream and Justin.tv back to life

Tried to watch the Make: Live! webcast about the Arduino this evening, but was unable to view the video stream on my computer. All I got was a black screen. Tried viewing the webcast directly from the Ustream site, but still got nothing.

Marching through the standard troubleshooting steps, I removed all script blockers and ad-blockers, and shut down my software firewall. Still nothing.

To verify that I could still view video, I went to the TWiT Live page and confirmed that my computer handled the BitGravity stream without difficulty, but both the Ustream and Justin.tv streams failed to function properly. As a final check, I went to YouTube, where videos displayed without a problem. To see if this problem was limited to my preferred browser, I shut down Firefox and launched Internet Explorer. Same results. So something was acting on a system-wide basis.

After several rounds of searching on Google, I eventually stumbled upon the solution. It seems that you must tell the Flash browser plugin to permit third parties to store information on your system. I’m not happy about allowing Flash cookies, but if you don’t permit this, you won’t be watching Ustream or Justin.tv. I haven’t (intentionally) changed these settings in months (maybe years?), so I don’t know why I’m just now having problems. Anyhow, I thought I’d make this post just in case somebody else is experience the same difficulty.

If you are a Firefox user, you might want to install the Better Privacy add-on, just to simplify the process of removing Flash cookies, which are now going to be added to your system every time you view Ustream or Justin.tv videos. Be sure to “protect” the settings.sol folder in Better Privacy, or your settings will be forgotten every time you shut down Firefox.

[Update: After submitting this post, I went back and returned the Flash plugin settings to their original values. After deleting the other Flash cookies and restarting the browser, I had no problem viewing the Ustream and Justin.tv feeds on the TWiT page. Still don’t know exactly what caused the problem, but allowing third-party data storage on a temporary basis seemed to clear the logjam.]

[Update 2: Nope, I had accidentally deleted the settings.sol folder cookie. Once I locked things down solidly, Justin.tv would no longer work. So ignore the prior update… you apparently must allow Flash cookies to watch certain webstreams.]

Posted in Computer Tips and Tricks | Tagged , , | Comments closed

Making Beamer Better

I use Beamer a lot for presentations, and I’ve gotten pretty good at the editing cycles that it requires. Unlike in PowerPoint, Beamer doesn’t allow me to simply click and drag an object to a new spot. Rather, to move something on the slide, I have to edit the LaTeX code, entering a command like \vskip0.2in to give me an additional bit of space between a couple of equations or text elements. It sometimes takes numerous iterations to get things right. This doesn’t both me, as I love being able to write entire presentations in LaTeX. What I want, however, is an ability to speed up the iterations.

If I could place the document preamble in one file, and the code for each slide in individual files, then it should be possible to create a script for compiling just one slide at a time. Then, I wouldn’t have to wait while Beamer compiled all 100+ slides in a presentation deck every time I make an edit. (Yes, that’s a lot of slides, but the count goes way up when I use multiple slides to reveal an equation one line at at time.) I can comment out code to limit compilation time, but it’s slow and cumbersome, and I once found myself in the middle of a presentation with missing slides because I forgot to uncomment about a third of my presentation file. So I want a supervisory program that will handle the individual code blocks, and allow me to compile the entire document when I’m finished.

If such a program exists, I’d sure like to know about it. If not, then maybe I’ll get around to writing it someday. 🙂

Posted in Research Tools | Tagged , , | Comments closed

When to introduce the matrix exponential?

In the study of linear systems, a familiar relationship is the homogeneous state-space equation , where is an -vector, and is an matrix. The time-invariant solution, (i.e., when is a constant matrix), is . When this subject is first introduced, the solution is often assumed, rather than derived.

The thinking is that since the solution to the homogeneous scalar equation is , then students will willingly accept a matrix-friendly equivalent that solves the state-space differential equation. So the definition for the exponential matrix is given, and is shown to work for the homogeneous case:

$$\begin{aligned} \dot{\mathbf{x}}(t) & = \frac{d}{dt} \left( e^{At} \mathbf{x}_0 \right) \\ & = \frac{d}{dt} \left( e^{At} \right) \mathbf{x}_0 + e^{At} \frac{d}{dt} \left( \mathbf{x}_0 \right) \\ & = A e^{At} \mathbf{x}_0 + e^{At} \left( 0 \right) \\ & = A e^{At} \mathbf{x}_0 \\ & = A \mathbf{x}(t) \end{aligned}$$

It seems to me that this presentation sequence, however, masks what is really going on with the system; that there is an infinite recursion on the initial state, , that converges to a value for :

$$\begin{aligned} \mathbf{x}(t) & = \mathbf{x}_0 + A \int_0^t \mathbf{x}(\tau)\, d\tau \\ & = \mathbf{x}_0 + A \int_0^t \left[ \mathbf{x}_0 + A \int_0^t\mathbf{x}(\tau)\, d\tau \right]\,d\tau \\ & = \mathbf{x}_0 + A \int_0^t \left[ \mathbf{x}_0 + A \int_0^t \left[ \mathbf{x}_0 + A \int_0^t\mathbf{x}(\tau)\, d\tau \right] d\tau \right]\,d\tau \end{aligned}$$

This recursion obviously repeats ad infinitum. However, the matrix exponential can now be defined by collecting terms on the right hand side, leading to:
$$\begin{aligned} \mathbf{x}(t) & = \left[ \mathbf{I}_n + At + \frac{1}{2!} \left( At \right)^2 + \dots \right] \mathbf{x}_0 \\ & = e^{At} \mathbf{x}_0 \end{aligned}$$

Presented in this order, the exponential matrix is developed based on system response, rather than the other way around. This strikes me as being easier to comprehend than “guessing” that some seemingly arbitrary function might solve the problem. Is this conceptually easier for anyone else?

Posted in Engineering Curriculum | Tagged , , | Comments closed

Getting Inkscape to play nicely with PSfrag

While browsing through some of the old TeXtip posts on Twitter, I was reminded of the possibility of using Inkscape to generate LaTeX-compatible illustrations. Given the vast amount of cruft that Illustrator includes in its EPS files, this sounded like it might be a good alternative.

However, Inkscape seems to be having some of the same problems as I was recently experiencing with Adobe Illustrator. Long story short, the only way I could find to make Inkscape play nicely with PSfrag was reverting to version 0.46. (The most recent Inkscape release is version 0.48.)

This problem is related to the use of the Cairo package from the GTK+ Project to export EPS files. Rather than store strings directly, references are made to a structure of characters actually used in the file. This is done to reduce file size, and improve performance. However, this is a real problem for those of us that use PSfrag. Specifically, string “abc” is no longer identified in the EPS file as (abc)Tj, but rather <01020304>Tj . This makes it impossible for PSfrag to find a matching string. There is some indication that a newer release of Cairo will fix this problem, but it hasn’t yet worked its way into the public release.

While some nice LaTeX-rending features are being introduced into the more recent releases of Inkscape, the benefit of PSfrag was nicely expressed by commenter emw on a Inkspace forum:

The reason for using psfrag is a kind of “coding style”, because I use a lot of complex symbols/equations defined by \newcommand statements in the latex document. For a consistent layout, I’d highly prefer to reuse these commands via psfrag in the figures.

I heartily concur.

Posted in Research Tools | Tagged , , , | Comments closed

Getting Illustrator to play nicely with PSfrag

When creating diagrams for inclusion in a Beamer presentation, I used to use the drawing package in Open Office. Then I could use PSfrag to replace drawing text with text rendered in in [latex]\LaTeX[/latex]. This made all the symbols in the presentation match symbols on the diagram. Alas, I am no longer able to make Open Office work with PSfrag. (My old trick of modifying the EPS “textmode” value in the OO configuration file no longer works.)

No problem, I thought. I’ll use Adobe Illustrator instead. However, I could only get this arrangement to work if the drawing text consisted of single letters. Not a huge problem, I suppose, as there are 52 possible identifiers just using upper and lower case letters in the English alphabet. However, it is sometimes a bit difficult to remember if [latex]x_3[/latex] is being represented by “p,” or “q,” or some other letter.

So here’s a solution to the problem, that I found on Giovanni Lanzani’s blog. When saving the EPS file in Illustrator, select “Illustrator 3 EPS” in the “version” pulldown. Don’t use “Illustrator CS3 EPS.” The newer versions write out the text one letter at a time, thus preventing the PSfrag routine from finding a matching string. Apparently the older EPS export routine doesn’t mangle the drawing text in this manner.

Posted in Research Tools | Tagged , , , , | Comments closed

Adding MathJax to WordPress

If your blog is hosted on WordPress.com, you can already render mathematical equations using LaTeX code (at least, that is my understanding). However, since I run WordPress on my own server, I would have to add a bit of software to produce similar results. A long time ago I tried using jsMath to generate math equations, but I tired of all the warning messages it produced if a user didn’t have the proper fonts installed. However, after seeing Robert Talbert mention MathJax on Twitter this morning, I decided to see if I could add it to this site. MathJax is apparently the successor to jsMath, and appears to be gaining some momentum in the mathematics community.

MathJax and WordPress have obviously been joined together before, as I quickly found the MathJax-LaTeX plugin for WordPress. While I could have installed MathJax on its own, I decided to install the plugin also, as it promised to inject MathJax javascript only on those pages that require it. Here is evidence (hopefully) that everything works: [mathjax] $$df(X_t)= \sum_{i=1}^d f_{,i}(X_t)\,dX^i_t + \frac{1}{2}\sum_{i,j=1}^d f_{,ij}(X_{t})\,d[X^i,X^j]_t$$

My knowledge of Linux is pretty limited, but I’ll share how I got my WP blog working. Be forewarned, however, that I likely won’t be able to answer questions about other installations; I’m barely capable of getting things working on my own system.

To begin, I used the WP plugin manager to add the MathJax-LaTeX plugin. I noted that it created a folder labeled mathjax-latex in my WP plugins directory, which I reference below. I next needed to install the MathJax files onto my WordPress server. My first approach was to download the files to my desktop, unzip them, and then FTP them back to my server. Bad idea! The MathJax folder is 16MB when compressed, much larger than that when uncompressed, and contains over 30,000 files! It would have taken hours to upload them via FTP.

So I launched Putty, logged into my webhost via SSH, and went to site-folder/wp-content/plugins/mathjax-latex/. From there, I issued the command wget http://sourceforge.net/projects/mathjax/files/MathJax/v1.0.1/MathJax-v1.0.1a.zip/download to download the MathJax files directly onto the server. Then, to unzip the downloaded file, I used the command unzip MathJax-v1.0.1a.zip. This put all the needed files into the directory .../plugins/mathjax-latex/MathJax, just as required by the MathJax-LaTeX plugin.

Next, to accommodate recent Firefox releases, it was necessary to download some updated font files. First, I went to directory .../MathJax/fonts/HTML-CSS/TeX and deleted the otf folder with rm -rf otf. Then I sucked down the new fonts with wget http://www.mathjax.org/dl/MathJax-Font-Update.zip, using unzip MathJax-Font-Update.zip to inflate the files. Unfortunately, this created an unwanted MathJax-Font-Update folder containing the needed otf subfolder. So I moved into the MathJax-Font-Update directory, then shoved the otf folder up a level with mv otf ../otf. Finally, I moved back up a level into the TeX directory, and removed what was left of the unneeded folder with rm -rf MathJax-Font-Update.

Lastly, I went back to the WP plugin page and activated the MathJax-LaTeX plugin. To put [latex] \LaTeX [/latex] code on a page, enclose your equation inside the tags [latex] and [/latex]. So [latex]e=mc^2[/latex] produces [latex]e=mc^2[/latex]. If you want to use dollar sign notation, simply include the tag [mathjax] somewhere on your page. Then $$e^{j\pi} = -1$$ generates $$e^{j\pi} = -1$$

When I first installed everything, Firefox would waste about 45 seconds trying to load web fonts, before rendering equations with image files. Reading through the MathJax documentation, this appeared to be a permission problem, and I created a suitable .htaccess file as suggested. However, the problem went away after I cleared the browser cache, and didn’t come back when I deleted the .htaccess file. So if you run into this problem, try clearing your browser cache first!

Posted in Mathematics | Tagged , , , | Comments closed