Monday, February 04, 2013

LaTeX template for NSF-style Biographical Sketch

On large multi-university NSF grant proposals, NSF requires that senior personnel submit a 2-page biographical sketch ("biosketch") that is formatting according to certain rules in their Grant Proposal Guide (GPG). The format is pretty simple, and so there does not seem to be much demand for a solid LaTeX template for one. Nevertheless, I thought some people might find one helpful. I've posted a PDF of my NSF-style biosketch below along with the TeX source used to generate it. On a related note, you can also find my curriculum vitae (CV) tailored for faculty searches (PDF, TeX) as well as for industry searches (PDF, TeX).

Thursday, January 24, 2013

Discrete-time Phase Portraits?

I was contacted recently by e-mail asking how to produce a phase portrait of a discrete-time system. In my initial response, I explained that a true "phase portrait" wasn't defined for discrete-time systems because the technical notion of a phase portrait depends on a special structure that comes along with ordinary differential equations. The original poster needed some additional clarification, and so I sent a second e-mail that I have posted below. It touches a little bit on the original poster's question, it comments on differences between discrete-time and continuous-time systems, it talks a bit about chaos, and it gives a brief description of Poincaré/return maps that are often used in the study of approximately periodic systems.

My point is that a discrete-time system really cannot be interpreted within a field-theoretic framework. A "phase portrait" captures both position and momentum of a continuous-time system described by an ordinary differential equation. These momentum variables setup the "field" that gives structure to the phase portrait. In a discrete-time system, we don't have the same kind of momentum.

     For a continuous-time system, I can plot a point at an individual position, and I can also then draw a vector pointing away from that point representing the velocity at that instant of time. It is these velocity vectors that are put together to make a phase portrait of the system.

     For a discrete-time system, there is no point-based velocity. In order for me to calculate the approximate "velocity" at a point, I need to know the position at the next point. Then I can draw a line between those two points and approximate the "velocity" of the system as going from the first point to the second point. However, if I have to know the next point in future anyway, it's more useful to just draw the second point.

     Now, some discrete-time systems have a more predictable structure. For example, if you have a linear time-invariant discrete-time system like:

x[k+1] = M*x[k]

then the algebraic structure of the "M" matrix gives us insight into how trajectories will evolve. So for these special cases, it is possible to draw a kind of "phase portrait" for the discrete-time system. However, this is primarily because such a discrete-time system can be viewed as a sampled version of a continuous-time linear time-invariant system which does have a phase portrait.

     So, for an arbitrary discrete-time system, the best thing you can do is explore trajectories from different initial conditions. Gradually, as you explore the space more and more, you may find boundaries of attractors (possibly strange attractors). A complication with discrete-time systems is that the "next" point may be very far from the "previous" point. Take, for example:

x[k+1] = -1.1*x[k]

If you start at x[0]=1, the trajectory will bounce from point clustered above 1 to points clustered below -1. In a continuous-time system, you might expect to see initial conditions above 1 stay near 1 and initial conditions below -1 stay near -1. That is, in a continuous-time system, you wouldn't imagine trajectories could cross x=0 (which is an equilibrium/fixed-point of this system). However, the discrete-time system can jump wildly from point to point.

     Take, for example, the Henon map you mention. Wolfram's Mathworld has some nice plots:

http://mathworld.wolfram.com/HenonMap.html

The first pair of side-by-side plots are colored "according to the number of iterations required to escape". That is, the plots were generated by starting at several initial conditions and recording the resulting trajectories. Each "iteration" gives the next point from the previous point. For a while, a trajectory will stay around its initial condition. Eventually, it will escape and move away from the region. The regions are colored based on how many iterations (i.e., how many calculations after the initial condition) it took for the trajectory to leave the region.

     The second pair of side-by-side plots show a SINGLE trajectory started at x[0]=0 and y[0]=0. Each point was recorded and gradually a pattern emerged. Notice how in the left plot the two regions appear to be disconnected. If you saw a phase portrait that looked like this in a continuous-time system, you would conclude that initial conditions within one region would not be able to join the other region for this set of parameters. However, this plot was generated from a SINGLE initial condition. So the plot jumps from points in the top left to points in the bottom right and back.

     So that's how you can explore something like the "phase space" for discrete-time systems. You can probe it with different initial conditions. For chaotic systems, you have to be very careful you don't accidentally jump over an interesting region of initial conditions that may have qualitatively different trajectories that follow from them.

     As an aside, I guess it's also worth mentioning that many popular discrete-time chaotic maps are actually Poincaré maps of continuous-time dynamical systems. Poincaré maps have other names, including "return maps." Consider, for example, the planets as they orbit the sun. The actual orbits of the planets in three dimensions looks like a tangled mess when you consider their histories over several cycles around the sun because each orbit is slightly different than the previous orbit (i.e., they aren't entirely planar). However, if you insert a plane perpendicular to their orbits at a single location, each planet pierces the plane at one point every cycle. The resulting shapes that are poked out of that cross section reveal structure in the orbits.

     I hope that helps! --
     Ted

Tuesday, October 09, 2012

natbib-like frontend for chicago-style macros

For some reason, the ACM has baked in chicago-like citation macros into the ACM SIG proceedings LaTeX templates instead of using the far superior natbib that literally everyone else on the planet uses. I'm much more accustomed to typing \citet as opposed to \shortciteN, \citeauthor as opposed to \shortciteANP, etc. So I decided to add this little translation table to my preamble:
\def\citet{\shortciteN}
\def\Citet{\shortciteN}
\def\citeauthor{\shortciteANP}
\def\Citeauthor{\shortciteANP}

\let\chicagociteyear\citeyear
\def\citeyearpar{\chicagociteyear}
\def\citeyear{\citeyearNP}

\def\citep{\shortcite}
Unfortunately, that means I can't use any of the optional arguments to \citep or \citet. If you are just looking for a translation table so you can use the chicago-style macros directly, try this:
natbibchicago
\citet or \Citet\shortciteN
\citeauthor or \Citeauthor\shortciteANP
\citeyear\citeyearNP
\citeyearpar\citeyear
\citep\shortcite
It's crazy how chicago-style macros sometimes use "N" to mean "noun" and other times to be the first half of "NP" being "no parentheses."

Thursday, August 09, 2012

CTAN search engine definition for Firefox

If you're looking for search engine definitions for CTAN that are compatible with Firefox's search toolbar, then visit:While on that page, click on the down arrow in the icon in your your Firefox search toolbar. You should see several "Add" options at the bottom. That lets you add several different types of CTAN search to your toolbar. You can then "Manage Search Engines" and add a keyword to some of them. I use the keyword "ctan" to search package ID's and the keyword "ctanp" to search over package ID's and descriptions. The keyword lets me search directly from the awesome bar without having to use the search bar. [ These definitions were inspired by firefox_ctan_plugins by Martin Engler, but those don't work with CTAN anymore. ]

Sunday, July 29, 2012

Bookmarklets for ASU library proxy

This message goes out to ASU faculty, staff, and students. Doesn't it make you mad when you're off campus and you want to read a paper and the research database that holds the paper doesn't let you view it because you're not a subscriber? I hate that.

Luckily, the ASU library system provides an off-campus scholarly portal from my.asu.edu (under the "Library" option on the left) that can be used to make your off-campus connection look like an on-campus one so research databases will grant you ASU-caliber access. Unfortunately, if you've clicked on a link to a paper, you have to re-do your search within their portal to get your off-campus access, and that's really inconvenient. So I've come up with a shortcut (similar to my OSU LOCSI shortcut).

Drag the following bookmarklets to your "bookmarks toolbar" (that strip of bookmarks that rides just below the "location bar" in your browser).
  • ASU LOCSI ("LOCSI" = "Library Off-Campus Sign-In")
When you're on a page you'd like special access to (e.g., the official site of an academic paper of interest to you), click on the bookmarklet and you'll be transported to that site via ASU's off-campus sign in. You may have to use your ASU username and password to login the first time you click on the bookmarklet, but after that you should be granted ASU-level access quickly.

(feel free to rename that bookmarklet as you wish; the name "ASU LOCSI" isn't important to their function)

I hope that helps.

Tuesday, June 19, 2012

Printing from your Android device (tablet or phone)

I know someone who recently purchased an Asus Transformer TF300T from MicroCenter in the store for a cool $350, which means that after tax it was still cheaper than it was selling for at Amazon ($384). Strangely, I can find no mention of the TF300T on MicroCenter's website (maybe local store was just clearing inventory and they don't plan on selling them in the long term?). Anyway, this is the first Android tablet this person has ever used, and they were interested in getting the ability to print from it to the printers in their home. Here's how I responded (text copied from an e-mail and then marked up a bit).
    Here are some tablet printing options that I've tried that appear to still be popular. I've put some footnotes at the bottom of this message that are tangential topics that may still be interesting to you. For example, the first footnote [*] is about a way to pick printers in the future that allow for cloud printing without the aid of a PC being on.

    The first two apps I currently have installed on my phone and am happy with. You would probably only need one of them. The third app is one I tried, but I gave up on because I thought the first two apps were just as good or better. I have not used the fourth app, but you should know it exists as it would be handy if on the go and you need a hard copy of something.
  1. First, here's "Cloud Print," which is a free app with no limitations but will display ads unless you donate to it:

    https://play.google.com/store/apps/details?id=com.pauloslf.cloudprint

    To give it the ability to print, you have to also install Google Chrome (Google's web browser) on one or all of your machines. You can get Google Chrome web browser [**] from:

    https://www.google.com/chrome/

    After you install it, complete these steps to connect your PC's printers to the web where "Cloud Print" can access them:

    http://support.google.com/cloudprint/bin/answer.py?answer=1686197

    Note that if Chrome is already installed on another computer in the house, and if that person has shared her printers with you, you should already be able to print to printers connected to her computer even if your computer isn't on (but hers has to be on). Once printers are connected to your Google account's Cloud Print, then you can use the "Share" button (it looks a little like a tree with two branches, typically) from any app to export whatever you're looking at to the "Cloud Print" app. That document will then get printed to the Cloud Print printer you choose. Note that "Print to PDF" is always available (and it will store that PDF on your Google Drive, I think, which you can access using the "Google Drive" app I just e-mailed you about). There are competing Android apps to Cloud Print, like "Easy Print:"

    https://play.google.com/store/apps/details?id=com.flipdog.easyprint

    but I don't think they're as well developed as Cloud Print.

  2. Next, there's "PrinterShare," which has limited printing for free, but unlimited printing if you're willing to buy their premium key for a pricey $12.95:

    https://play.google.com/store/apps/details?id=com.dynamixsoftware.printershare

    PrinterShare's features largely overlap with Cloud Print. That is, Cloud Print does a couple of things PrinterShare doesn't, and PrinterShare does a couple of things that Cloud Print doesn't. For example, you can use Google Cloud Print with PrinterShare, and so any printer that you can use with Cloud Print, you can also use with PrinterShare. One major difference is that PrinterShare also supports WiFi printing to network-enabled printers (e.g., the HP LaserJet 2055dn) and some print servers. Initially, the support was spotty. However, I'm noticing more and more printers start to pop up on my WiFi list when I check. It's a solid app, but it's a little annoying that if you switch printers frequently, it has to re-download print drivers nearly every time. Downloading print drivers is very fast, and it's not much of an annoyance, but it's a little confusing why it can't keep these installed. Otherwise, it's a solid application that's a tough competitor, which is why it maintains such a high price for it's premium key.

  3. I have also used the "PrintBot" app, which allows for 3 printouts a month unless you pay $4.50 for the full version (which is unlimited). It supports printing directly to a print server (no Google Cloud Print required), but it is not as easy to setup as PrinterShare. So unless they've improved things a bit since I used it last, I don't recommend it. In theory, it may be the only tool that can print to the print server connected to the HP LaserJet 5 upstairs without using Google Cloud Print; however, PrinterShare may have improved to be able to do that natively anyway:

    https://play.google.com/store/apps/details?id=net.jsecurity.printbot

  4. Alternatively, HP and others(?) have apps like this one:

    https://play.google.com/store/apps/details?id=com.hp.eprint.ppl.client

    that allow you to print to public printing locations, like FedEx Office stores, UPS Office stores, Walmart photo kiosks, hotels, and others. This is a neat idea if you're on the go and need a paper copy of something. The downside is that although the app is free, the place that prints your document may charge you per page.

    In summary, if you're OK with having a computer on and connecting your legacy printers to the Google "cloud print" service, then give the first free app ("Cloud Print") a shot. If you want the ability to print over WiFi directly without computers being on, then consider the second app ("PrinterShare", which is pretty expensive for an app if you want to print more than 3 things a month). Note that the WiFi option only works if you're on the same network as the printer. You cannot print from remote with PrinterShare unless you're using Google's cloud print service (and thus have a PC turned on).

    --Ted


Footnotes:

[*]: If you find yourself buying a new printer in the near future (not likely), you can choose a "Cloud Ready" printer:

http://www.google.com/cloudprint/learn/printers.html

These printers connect to servers at HP, Kodak, Epson, or Canon that allow access to them from remote provided the correct username and password. Google Cloud print can print directly to these without the aid of a computer being on.

In general, any network-enabled printer will probably have good Android support even if it's not "cloud ready." In fact, some vendors release their own apps to make it simpler to print to them from Android, like Lexmark (but I think generic network printer apps will connect to these too, in most cases):

https://play.google.com/store/apps/details?id=com.lexmark.print


[**]: If you like Google Chrome as a web browser, you can use it instead of Firefox. If you have Firefox bookmarks, Chrome will import them. Also (and this might be interesting to you), you can share your Chrome bookmarks and tabs to your tablet and so you can easily go from one to the other. If you don't like Chrome but like the idea of getting your same bookmarks and tabs on your tablet as is on your Desktop, that's possible with Firefox too. Either way, we should probably install the "Chrome to Phone" app

Friday, April 13, 2012

Instagram and Tumblr, in case you didn't notice

In case you didn't notice the extra links, I now maintain a couple of Tumblr microblogs and photos via Instagram. Here are the Tumblr microblogs: You can catch my Instagram feed (@tedliman) via several places, including: I have an Instacanvas gallery for buying of my Instagrams on stretched canvas: Finally, you can check out the Twitter feeds too: Thanks for your interest!

Saturday, February 11, 2012

Your iPad/iPhone/iPod not showing up on wireless sync on iTunes in Windows XP?

UPDATE: This solution appears to work for Windows 7 as well. As the problem is likely in the Apple software, the solution should work across Windows operating systems.
Last year for my mom's birthday, we bought her an iPad 2. When iOS 5 came out, she took advantage of the cool wireless sync feature to iTunes running on her Windows XP machine. It worked great for a few months, but then suddenly her iPad stopped showing up in the sync list unless it was physically plugged into her computer. On the iPad, it said it couldn't see her computer.

After tweaking some settings and doing a few reboots, I managed to get her computer to start wireless sync'ing again. I had an idea about what it was, but I wasn't sure.

Then, after a few weeks, I hear from her that it has started again. So I did a little more searching, and after combining multiple people's error reports and extracting the common thing that seemed to fix them all, I think I came up with the fix. It's a simple fix, and she's able to do it herself whenever the iPad loses connectivity. For the last few weeks, every time the iPad stops talking to her computer, she's able to recover immediately. So I think we've figured it out.

The fix? Restart the Apple Mobile Device service. Here's how:
  1. Quit iTunes.
  2. Right-click on "My Computer" and go to "Manage".
    • Alternatively (e.g., on Windows 7), open up your "Control Panel". Then click to see "All Items." Then look for "Administrative Tools." You should find "Services" in there. That's the ultimate destination we're heading to.
    • Alternatively, click on "Start" and then "Run" and type "services.msc" (without the quotes) and hit enter.
  3. Click on "Services and Applications" inside the "Computer Management" console.
  4. Double-click on the "Services" that shows up.
  5. Find the "Apple Mobile Device" service in the list and select it by clicking on it.
  6. Click the link that says "Restart the service".
    • Alternatively, you can right-click on the service and select "Restart."
    • Alternatively, you can double-click on the service and then click the "Stop" button and then the "Start" button.
  7. Close the management console.
Now that you've restarted the "Apple Mobile Device", your system should start working like normal again (you may want to start up iTunes again though). Eventually when your iOS device starts looking again, it will find your system and sync as needed.

This problem appears to be caused by some sort of race condition dealing with the Apple Mobile Device and the network. As the computer starts, the order in which things start is non-deterministic. Due to some random delays, the network may not come up quick enough. Consequently, the Apple Mobile Device gets confused by the network being in this state. Re-starting it manually later when the network is definitely up and running seems to fix this problem every time.

Thursday, February 02, 2012

What it means for GMail's web interface to use a different grammar for labeling and searching...

I have been having a hard time explaining this to the Google Apps support team. I originally contacted them because I had a lot of labels with leading special characters that I use to affect their sort order. For example, I have a "?Bulk" label grouped together with other "?Bulk/sublabels" (e.g., "?Bulk/Facebook"). The leading question mark prevents them from showing up in the middle of other labels I have that start with "B". Moreover, using leading special characters lets me put certain important labels at the top of my list where they are easy to see and access.

Now, the search bar at the top of the GMail web interface doesn't have much problem with this. It will match such labels regardless of whether I include the leading special character:



Note that it's not just finding partial matches in the middle of a label. If you drop the first alphanumeric character after the special characters, you get no matches:


Now, you would expect the "Move To" and "Copy To" quick searches to behave the same way. At first, it seems like they do. They'll do partial matches from the front of the label if you include the special character:


But if you drop the special character, you're doomed.


Pretty annoying, huh? See, "Move To" and "Copy To" are using some special grammar to extract information from the list of labels. Apparently this grammar is overly simple. Now, I might be able to live with that if it wasn't the case that GMail Search knows how to get labels right. In fact, Gmail Search can even handle nested labels with leading special characters. Check it out:



See? It was able to recognize that the "/" in big version of the label name separated parent from child label (which actually can be a problem if you're not intending to use nested labels). It then looks for matches at the start of the sublabel, which is in the middle of the big label shown. Pretty cool. Moreover, if you drop the leading alphanumeric character, the match fails:


Now, apparently "Move To" and "Copy To" have some of this matching behavior. That is, they'll properly chop the label into parent and child and look for matches in just the child part:


Unfortunately, you need the special character for the match to work:


So, again, for some reason GMail has developed the quick search for "Move To" and "Copy To" independently from GMail Search in general. Maybe this was an optimization, but it seems like it wouldn't be too slow to call out to GMail Search to find these labels. Then everything would be consistent.

Now, I tried explaining this to the Google Apps support team initially. You know what they told me? That "Gmail Search" doesn't do partial matches, and so it's the expected behavior. Can you believe they actually had the nerve to forward me to a GMail Search page when the real problem is that "Move To" and "Copy To" are in fact acting DIFFERENTLY than GMail Search? IF ONLY the issue was with GMail Search; I could live with that.

Well, Thunderbird gets it right. I guess that's a nice workaround.

Monday, January 30, 2012

The Sony SMP-N200 (or SMP-N100) is the only streaming player you need; eschew the Roku!

After much searching, buying, and evaluating, I'm convinced that the Sony SMP-N200 (or maybe the older SMP-N100 if you can find it) is probably the best streaming device you can buy. Well, it's at least the best value streaming device you can buy (under US$80). It does everything that a Roku device does plus a little more and is substantially cheaper when you compare apples to apples. The only thing you really lose is the ability to watch trailers in the Amazon Instant/Video-on-Demand application. However, trailers are available in basically every other movie app plus a Flixster application with plenty of trailers.

For US$66.99 on Amazon (and US$69.99 on Best Buy) at the time of this post, you get:
  • HDMI output for full 1080p video and 5.1 channel audio
  • Optical audio output (if your receiver doesn't do HDMI audio)
  • Analog audio output (via RCA connectors)
  • Composite video output
  • Component video output
  • Wired ethernet support
  • Wireless 802.11b/g/n support built-in
  • USB port (videos, pictures, music)
  • DLNA client (and maybe server for that USB?)
  • HDMI wake-up (i.e., device turns on and off automatically based on HDMI signal; moreover, this behavior is configurable if you don't like it)
  • Very thin and simple remote control powered by a watch battery
    People say this remote is an improvement over the one that came with the old SMP-N100 model, but I disagree. For one, the "Home" button is too close to the down arrow. More importantly, the old remote control was quasi-universal in that you could program it to your TV and it would control your TV's volume, power, and video input. So I basically only need one remote with the SMP-N100 to do everything.
  • Android phone and tablet remote control apps
  • iOS remote control app
  • ...probably more that I overlooked because I personally didn't care
With all of that hardware support, the device is great for a wide variety of home theater systems (e.g., with old TV's or old receivers). You can contrast this with the more expensive Roku that has an HDMI output and a composite output. Those people with older receivers and/or older TV's are not going to enjoy all of the advanced features of modern streaming content on a Roku. This is not as much the case with the Sony players.

And the applications that come on board the Sony SMP-N200 include:
For some reason, Amazon Instant/Video-on-Demand was not advertised anywhere on the box or on the Sony website like it used to be. However, the application still exists on the device. Despite it being the same application that is used to access Sony's own "Video Unlimited" service that supports movie trailers, the Amazon app has no trailer support. That's frustrating and makes me think that Sony has been given financial incentive to de-emphasize Amazon over its other providers. One of those providers includes Vudu, which is provided by the full-featured Vudu application you get on every other streaming device (minus the "Vudu apps" support you might see on a Blu-ray player). Regardless, if you're OK with getting your trailers elsewhere, this is a fine selection of applications. UPDATE: As of a recent software update on my Sony SMP-N100 (and so also likely on the Sony SMP-N200), trailers are available now in the Amazon VoD app. So it is much nicer now to browse for movies within the single app.

And if that's piqued your interest, you should also take a look at the previous model, the Sony SMP-N100. It is nearly identical to the SMP-N100 except that it lacks support for a few providers, of which the only one you should care about is Vudu. It still has Netflix, Hulu Plus, Amazon Instant/Video-on-Demand (no trailers though), DLNA (which means PlayOn too), Crackle, YouTube (but no movie rental support), Pandora, and much more. However, it sells for at least US$20 less (so US$49.99 on Amazon (same price at Best Buy) at the time of this post) because the new version exists.

So if you're looking for a nice streaming player for a good value, I think most people will point you at the Roku. However, the Sony players (both the SMP-N200 and SMP-N100) are cheaper and do more. The interface is not as clean and cozy as Roku though. Moreover, it might be annoying to you that you cannot play Amazon video trailers. However, trailers are available through lots of other services, and there's a lot of value to having them all on one device (as opposed to having, say, Vudu on your Blu-ray player and Amazon VOD on your Roku).